Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Análisis de un malware que detecta el entorno virtual

  • 3 Respuestas
  • 3853 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Conectado Gabriela

  • *
  • Co Admin
  • Mensajes: 904
  • Actividad:
    1.67%
  • Reputación 18
    • Ver Perfil
    • Email
« en: Marzo 12, 2015, 11:07:12 am »


El análisis del malware se recomienda hacerlo en entornos controlados.

Antes de continuar, entre otros muchos, aquí podéis profundizar en el tema:

http://underc0de.org/foro/tutoriales-y-manuales/analisis-de-malware-enfoque-y-caso-practico-seguridad-informatica/


Sigamos...no obstante lo dicho, la ejecución de un malware en una máquina virtual, no nos exime que las nuevas generaciones de aquéllos contengan código que permita detectar si se ejecutan en un contexto virtualizado y en consecuencia, ocultar su   su verdadero comportamiento, el caso práctico a continuación explora esta hipótesis.


Para comenzar con el análisis, tomaremos un ejecutable de nombre Notificacao-Infracao.cpl  (#). Si bien a simple vista este archivo puede no parecer ejecutable. No obstante, si intentamos ejecutar este archivo en nuestra máquina virtual, no observaremos ningún comportamiento malicioso. En otras palabras, del análisis dinámico de la amenaza no obtendremos nada útil, pero del análisis estático vemos algunas strings sospechosas, como dos URL de descarga de archivos ejecutables, entre otras cosas. Luego, podríamos pensar que la muestra probablemente esté dañada, pero hay una string que nos llama la atención: “vmware”. Por ello, abriremos la muestra con IDA Pro y buscaremos dónde se hace referencia a esa string. Obtenemos lo siguiente:



Como se ha resaltado en la imagen, no sólo encontramos una referencia a VMWare, sino también a Wine y Virtual PC. También observamos que esas strings son utilizadas por sub_404720, que se encarga de almacenarlas en algún sitio. Bajo esta premisa, primeramente se almacena la cadena “Native”, que indicaría la ausencia de virtualización. Luego, se comprueba la presencia de Wine dos líneas más abajo, en sub_4ABAE8. Si esta sub-rutina determina la existencia de una emulación bajo Wine, la cadena “Wine” es almacenada, remplazando a “Native”. Caso contrario, se comprueba la presencia de VMWare en sub_4AB9E8 y de Virtual PC en sub_4ABB2C.

En la siguiente imagen vemos el código de comprobación para Wine. No nos detendremos demasiado en esta parte, pero podemos observar que se carga ntdll.dll en memoria y se realizan llamadas a wine_get_version ywine_nt_to_unix_file_name. Dichas rutinas no forman parte de la API de Windows, pero sí están presentes en Wine.


Luego, viene la parte del código que nos interesa y aquella que está disparando la detección en nuestro caso: la de comprobación de VMWare. En este caso, los autores del malware han utilizado un mecanismo bastante conocido: solicitar la versión de VMWare mediante la comunicación con los puertos de E/S. Esto es posible dado que VMWare monitorea e intercepta el uso de la instrucción in, acción necesaria para poder garantizar la comunicación entre la máquina virtual y el host.

En particular, cuando se ejecuta la instrucción “in eax, dx” con el número mágico 0x564D5868 (o “VMXh” en ASCII) en EAX, a través del puerto 0x5668 (“VX”) especificado en DX, se obtiene una respuesta que depende de la operación especificada en ECX y se almacena en EBX. Puede que todo esto suene a trabalenguas, pero es más sencillo de lo que parece: si se llama a la instrucción in con los registros como se ha especificado y con el código de operación 0x0A en ECX, y se obtiene como resultado el número mágico en EBX, sabremos que la aplicación está corriendo en VMWare. Esto puede observarse en la siguiente imagen:



Ahora, si abrimos la muestra con OllyDbg, probablemente nunca llegaremos a ejecutar estas instrucciones, y el programa terminará su ejecución prematuramente, al igual que nos ocurría inicialmente. Para evitar esta situación, debemos recordar que un CPL es en realidad una DLL. Así, el código de comprobación que estamos buscando se encuentra en DllMain, rutina que se ejecuta al momento de cargar el CPL en memoria, luego de una llamada a LoadLibrary. Por lo tanto, para poder esquivar el mecanismo de detección en Olly, sólo basta con parchear el salto luego de la comparación con el número mágico.

Además, si lo que buscamos es que la muestra también se ejecute fuera del debugger, podemos editar manualmente el archivo binario, y cambiar el valor del número mágico en la comparación.
No nos detendremos a explicar el mecanismo utilizado para la detección de Virtual PC, pero pueden verlo en la siguiente imagen. Se ve la utilización de la instrucción vpcext, la cual no existe en una arquitectura x86 nativa, pero sí en Virtual PC. De hecho, Olly no es capaz de interpretarla.




Luego de parchear la detección, podemos ver que la aplicación maliciosa continúa corriendo y ejecuta su payload: descarga dos archivos ejecutables desde dos URL distintas y los levanta con ShellExecuteA.




Si bien los mecanismos utilizados no son demasiado difíciles de encontrar, especialmente considerando que las strings no se encuentran cifradas en esta muestra, la inclusión del código en DllMain podría jugarnos una mala pasada.


(#) El tema de los archivos cpl podéis mirar aquí:

http://underc0de.org/foro/tutoriales-y-manuales/archivos-cpl-metodo-para-propagar-malware/


Fuente: welivesecurity.com


Desconectado rush

  • *
  • Underc0der
  • Mensajes: 383
  • Actividad:
    0%
  • Reputación 7
    • Ver Perfil
  • Skype: iruxh1773
« Respuesta #1 en: Marzo 12, 2015, 02:53:03 pm »
pfff entendi la mitad de lo que dice ahi, no se mucho de ensamblador, seria bueno poner unos tutoriales de lenguaje ensamblador :/

Desconectado circunsxik

  • *
  • Underc0der
  • Mensajes: 7
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #2 en: Agosto 17, 2016, 02:13:36 pm »
Pues yo tampoco entendí la mitad...  ;D ;D

Pero es interesante!!  ;)

Cual es el riesgo real de ejecutar estos CPL?

Desconectado Unname

  • *
  • Underc0der
  • Mensajes: 33
  • Actividad:
    0%
  • Reputación 2
    • Ver Perfil
    • Email
« Respuesta #3 en: Agosto 18, 2016, 12:08:20 pm »
@Gabriela

Muy buena publicación, me encantó.

De igual manera el post referido a los archivos CPL.

Estaré loco pero esto si que es arte...

BR,
U.


 

¿Te gustó el post? COMPARTILO!



Malware se propaga mediante "etiquetas" en Facebook

Iniciado por CodePunisher

Respuestas: 8
Vistas: 6356
Último mensaje Julio 02, 2013, 01:31:35 pm
por elshotta
[WinLockLess] Protege tu inicio contra el Malware en Windows.

Iniciado por Baku

Respuestas: 7
Vistas: 6149
Último mensaje Octubre 23, 2014, 05:50:24 am
por Gabriela
Creacion de BOT MSN + Infeccion de Malware ING SOCIAL + Automatizado

Iniciado por Cronos

Respuestas: 9
Vistas: 6126
Último mensaje Octubre 26, 2012, 09:57:38 am
por munter
Ocultar malware usando ataques de precarga de dll

Iniciado por blackdrake

Respuestas: 2
Vistas: 3325
Último mensaje Agosto 09, 2014, 10:20:30 pm
por Baku
Archivos CPL: mecanismo para propagar malware

Iniciado por Gabriela

Respuestas: 4
Vistas: 4866
Último mensaje Agosto 17, 2016, 02:54:49 pm
por circunsxik