jueves, 24 de mayo de 2012

Nuevas versiones del malware de la policía y cómo eludirlas


Sí, el virus de la policía sigue activo e infectado a usuarios. Lo interesante es que continúa evolucionando. Veremos en esta entrada qué novedades traen las últimas versiones, y cómo recuperar el control del sistema de manera muy sencilla si ha quedado infectado.

El malware de este tipo que secuestra el sistema, parece dar pasos en falso. A veces avanzan las técnicas de manera muy efectiva, y otras simplemente empeoran la efectividad de su producto. Veremos ahora algunos ejemplos.

La nueva moda es distribuir este tipo de troyanos en forma de DLL. Una librería de Windows no es más que un ejecutable, en realidad. De hecho, su "magic number" es el mismo, MZ. ¿Cómo se ejecuta una DLL? Existen dos formas, con regsvr32.exe (pasándole como parámetro la DLL) o con rundll32.exe, pasándole como parámetro la DLL y además, una función que se encuentre dentro.



¿Y si no conocemos la función dentro de la DLL? No importa. Se invocará al main (la rutina de iniciación principal) de la DLL y ejecutará su código igualmente. Por tanto, realmente el segundo parámetro de rundll32, en este caso, da igual. Para una víctima, esto es irrelevante puesto que todo el código (sea en forma de ejecutable o DLL) se ejecutará a través de vulnerabilidades.

Una vez lanzado el malware, se copia a la carpeta de inicio del usuario. En ella introduce un enlace (.lnk) que apunta al lanzamiento de la DLL.



No os dejéis engañar por la extensión (modificada por el troyano). Police.exe sigue siendo una DLL, no un ejecutable. Posicionándose en la carpeta de inicio, es fácilmente eludible, puesto que simplemente se puede arrancar con otro usuario o bien en modo a prueba de fallos. Pero veremos otra manera de eludir el troyano más adelante.


¿Por qué distribuirse en forma de DLL?

Puede tratarse de un intento de despiste para los antivirus. Al ser lanzado como parámetro de un programa legítimo (rundll32.exe, que seguro se encuentra en las listas blancas de todos los motores), cabe la posibilidad de que algún antivirus se "relaje". Una vez en memoria, el troyano estará a salvo del antivirus.

Otra razón que se nos ocurre es por intentar evitar las sandboxes que ejecutan automáticamente malware. Casas antivirus, investigadores, sandoboxes públicas, etc, suelen contar con máquinas que lanzan automáticamente los ejecutables con la idea de estudiarlos y tener una primera aproximación del comportamiento de la muestra. Si es sospechoso pasa a un análisis manual. En principio, una DLL con extensión de ejecutable daría error de ejecución, y por tanto se tomaría de forma automática como ejecutable corrupto, a no ser que el sistema esté específicamente diseñado para comprobar que se trata de una DLL y lanzarla como tal, cosa que no ocurre normalmente...…

Internet Explorer en modo kiosko, cómo eludirlo

Una vez lanzado el malware, encontramos otra novedad. Ahora, en vez de mostrar una aplicación sin bordes que ocupe toda la pantalla, o un BMP que impide acceder al escritorio, se cierran todas las aplicaciones abiertas y se lanza un Internet Explorer en modo kiosko. Esta es una opción legítima del navegador, diferente a pantalla completa, que permite navegar sin acceso al sistema y con muchas otras restricciones. Cualquiera puede probarlo lanzando en el sistema el comando:

C:\Program Files\Internet Explorer>iexplore.exe k

Desde este punto, escapar del troyano se reduce a intentar escapar del modo kiosko. El troyano, aunque intenta restringir de varias formas el acceso a la máquina, no lo consigue. De hecho, es perfectamente posible escapar con sencillos pasos. Algo que que se puede hacer es desconectar la máquina de Internet, para que la visita a la web que aloja la imagen que bloquea el sistema no pueda ser accedida. De esta manera Internet Explorer dará un error de conexión. En XP, por ejemplo, se puede aprovechar el diagnóstico de conexión, en el apartado de más información.


Aunque, a causa de las restricciones impuestas por el troyano, no se podrá acceder al disco libremente.


Aun así, poco después de aparecer este error, Internet Explorer dejará de funcionar, se podrá recuperar el escritorio.

En Windows 7 todavía es más sencillo. Se puede usar por ejemplo el menú contextual del envío de correo por Mail.


Y, en ese nuevo navegador, ir hacia c:\windows\system32 y ejecutar un explorador.


Más información:

una-al-dia (21/06/2011) Vídeo: Troyano secuestra el ordenador en nombre de la policía nacional acusando al usuario de terrorista zoofílico

una-al-dia (28/02/2012) Vuelve el troyano que se hace pasar por la policía: Cómo protegerse (de verdad)

una-al-dia (02/03/2012) El virus de la policía "evoluciona" e impide el acceso en modo seguro

una-al-dia (06/03/2012) Más información sobre el virus de la policía

una-al-dia (09/03/2012) El malware de la policía aprovecha un exploit de Java "in-the-wild" y el secreto su "éxito"

una-al-dia (18/03/2012) WhitePaper: Estudio técnico del troyano de la policía




Sergio de los Santos
Twitter: @ssantosv

miércoles, 23 de mayo de 2012

Utilidad para vigilar el uso del Modo Protegido en Internet Explorer


El modo protegido de Internet Explorer es, en realidad, el uso de control de integridad aplicado al navegador de Microsoft. Una especie de sandbox. Esta funcionalidad aporta una medida extra de seguridad a Internet Explorer, además de ser, junto a Chrome de los pocos navegadores que la utilizan. Pero en Internet Explorer existe una forma "por diseño" de eludirla. Hemos creado una pequeña herramienta que permite vigilar qué aplicaciones se pueden "saltar" la sandbox.

Desde su versión Vista, Windows implementa MACL ("Mandatory Access Control List"). Todos sus objetos tienen un "nivel de integridad" asociado. Normalmente "medio". Los objetos (procesos, ficheros, carpetas…) que tengan asociado un nivel de integridad "bajo", no podrán acceder a niveles superiores ("medio" o "alto"), mientras que los de nivel "medio" o "alto" sí podrán acceder a los objetos definidos con nivel de integridad "bajo". Esto deja a los procesos o archivos definidos con nivel de integridad "bajo", en una especie de sandbox, puesto que no pueden acceder a nada con nivel "medio"… o sea, al disco duro.

¿Cómo se definen estos niveles de integridad?

Aunque es una herramienta muy útil, no existe forma gráfica de hacerlo en Windows. Sólo es posible con la utilidad icacls.exe o a través de APIs específicas en los procesos. Tampoco existen demasiados programas que las utilicen de forma predeterminada. Uno de ellos es Internet Explorer, y al hecho de usarlo en sus procesos, Windows lo llama "Modo protegido".


Pero claro, ¿cómo es posible grabar a disco algo descargado desde el navegador, o realizar cambios en el sistema, si en teoría con el modo protegido el navegador no puede acceder a esa parte? Tanto Chrome como Internet Explorer manejan el concepto de "broker" que es un proceso en modo de integridad "medio", que siempre se ejecuta y  hace de intermediario para que el navegador no se encuentre totalmente aislado. Esto puede suponer un punto de exposición. ¿Quién es "broker" en Windows? ¿A qué otros programas se les permite actuar de esta manera? Los que están definidos en esta rama de registro:

SOFTWARE\Microsoft\Internet Explorer\Low Rights\ElevationPolicy

Tanto en su versión de LocalMachine como de CurrentUser. La mayoría de las extensiones y plugins de Internet Explorer necesitan de estas políticas de elevación para poder funcionar cómodamente. Si no fuese así, muchas de estos programas integrados en el navegador, esperarían confirmación cada vez que son ejecutados, y aparecería un diálogo como este:


Así que si la rama "Policy" del programa "broker" tiene el valor 3, una instancia del programa que se ejecute con integridad "baja" podrá invocarlo de forma silenciosa (sin que apareciese el diálogo) y manejará la petición en modo de integridad "medio"... lo que supone un peligro. Otras opciones de ejecución de estos programas "brokers" son: el valor 0, que impide que sea lanzado; el valor 1 que haría que se lanzase el proceso desde Internet Explorer siempre con  nivel "bajo" sin preguntar; y el nivel 2 que lanzaría el programa con nivel "medio" preguntando.

Una buena parte del adware que se instala en forma de barra en Internet Explorer, también se introduce en esa rama del registro para ejecutarse de forma transparente.

MICBypassCheck

Hemos creado una pequeña herramienta (no demasiado elaborada estéticamente) que, simplemente, recorre esa lista de programas y muestra de forma cómoda sus políticas. Un código de colores ayuda a diferenciar qué política tiene cada programa. Además, marcará en rojo las rutas a programas que no existen. Por ejemplo, ciertos programas desinstalados pueden "olvidar" el eliminar esa rama. Estos pueden ser eliminados sin problemas. El programa también permite grabar un fichero con la información.



Ha sido programado en C# por Sergio de los Santos y  necesita .NET 4 para funcionar. Está disponible desde:

Por cierto, durante su elaboración descubrimos algo muy curioso:


Sergio de los Santos
Twitter: @ssantosv