He creado una pequeña aplicación en .NET que sirve como loader para mis otras aplicaciones.
Esencialmente, cuando se abre, esta aplicación obtendrá una lista de las aplicaciones disponibles, y cuando se selecciona una opción, descarga la última versión de la aplicación en la memoria y la abre.
La aplicación en sí misma está ofuscada (aunque dudo que eso importe) y hace lo siguiente:
- Navega a una ubicación HTTP codificada de forma rígida
- Descarga una cadena codificada en base 64 de un mensaje cifrado AES-256 que contiene la lista de aplicaciones disponibles, sus rutas, dependencias y clave de descifrado.
- Una vez que se selecciona una aplicación, descarga el archivo binario cifrado (y las dependencias) que figuran en la configuración, todo en la memoria
- Se realiza un conjunto básico de funciones simples de manipulación de cadenas en la clave de descifrado que se encuentra en la configuración y se genera un SecureString
- Esta clave se usa para descifrar AES y luego cargar la aplicación (una vez más, todo en la memoria).
- La clave se establece inmediatamente para su eliminación
Problemas de seguridad
-
Creo que el punto de entrada principal es la propia aplicación. Creo que, aunque ofuscado, se puede analizar fácilmente de todos modos.
- ¿Puedes protegerte contra esto?
-
Al usar Fiddler / WireShark u otras aplicaciones, uno puede determinar fácilmente de dónde se está leyendo la configuración, y posiblemente puede configurar una respuesta, por lo que para futuras llamadas, la aplicación se alimentará con el mismo resultado (sin realmente recuperarlo). la ubicación prevista).
- ¿Existe alguna forma de verificar que se haya descargado del destino deseado?
-
El hecho de que la clave para descifrar los archivos binarios pueda recuperarse mediante un conjunto de funciones de manipulación de cadenas, creo que se puede reproducir fácilmente, si la aplicación tiene ingeniería inversa.
- ¿Sugiere otra forma de tratar con la clave específica de la aplicación?
-
¿Qué tan fácil / probable es guardar el estado de una aplicación que se ejecuta en la memoria para que pueda reutilizarse sin pasar por la aplicación loader ?
-
¿Qué otras preocupaciones consideraría?
Información adicional
La aplicación actualmente verifica si un proxy está registrado actualmente en el sistema e intenta recuperarlo sin pasar por el proxy, sin embargo, para mí esto suena como un hack en lugar de una característica de seguridad.