Español | English
rss facebook linkedin Twitter

Análisis automático de VMs?

Últimamente me he interesado bastante por los métodos de ofuscación basados en máquina virtual ( VM ) y sobre todo por su creciente uso en el mundo del malware, quizás lo más "novedoso" desde la creación de algunos de los mejores engines de metamorfismo: zmist & simile.

Las VMs son sencillas en su concepto inicial, la complejidad depende de la imaginación del autor, el contexto y la finalidad. Debido a su propia naturaleza, son métodos de ofuscación puros y como pasa con el resto de métodos la dificultad de su análisis radica en "cuanto tiempo vas a tardar?". En esta presentación de un conocido reverser se puede ver una pequeña introducción gráfica.

Si estuviéramos en los días de oro de los virus con mochila de engines, una VM hubiera sido una pesada compañera de viaje y poco habría ayudado a su amigo el engine de metamorfismo para evadir la heurística de los Antivirus.

A día de hoy el tema ha cambiado bastante y la gran mayoría del malware no se replica por infección clásica, sino que simplemente se hospeda en nuestra máquina, mediante nuestro navegador favorito, como un binario fresco gracias al uso de server-side polymorphism.

En este contexto el uso de VMs se vuelve muy poderoso puesto que su único objetivo es el de dificultar al máximo el trabajo del analista de turno que debe comprender que hace el bicho, una vez ha sido detectado. Así pues, cuantas más rutinas críticas estén gestionadas por la VM, más tiempo tardará el analista, más dinero se robará y más máquinas quedarán comprometidas.
El autor del malware solo tiene que programar su generador de VMs y comienza la pesadilla.

Esta situación ha dado lugar a la necesidad de buscar formas "automáticas" de análisis de VMs, surgiendo documentos y presentaciones muy interesantes en el último año. De todos los documentos que he visto estos son los que me han parecido más relevantes o que más me han gustado:
  • presentación de Boris Lau ( SophosLabs ) en la que se expone un método experimental para la identificación y desofuscación de VMs: "Dealing with Virtualization packer".
  • uno de los que he leído recientemente y me ha parecido muy bueno, de los autores de metasm, se explica paso a paso como han utilizado su framework para resolver un reto crackme que incorpora VM: "Semi-automatic binary protection tampering".
Los que estéis más interesados en ver los detalles técnicos de VMs reales, sobre todo las generadas por algunos de los packers más conocidos, podéis encontrar algo de información en la web de ARTeam (destacan los documentos y código de Deroko) y el foro chino Unpack.cn.

Espero que todos los enlaces que he puesto os ayuden a conocer mejor un tema que a mí, particularmente, me parece muy interesante :)

Rubén Jiménez
S21sec e-crime

3 comentarios:

eduardo abril dijo...

Hola,

Llevo algo de tiempo desconectado del mundo de la ingeniería inversa (demasiada auditoría de seguridad), pero las VMs eran un auténtico horror de crackear. La cosa es que son muy fáciles de programar, pero una pesadilla para mirar con un debugger.

Themida, por poner un ejemplo, no ha sido realmente crackeado nunca. Nadie ha conseguido jamás hacer nada, al menos hasta donde yo sé (sabía) con su VM. Los rusos quitaban la protección que metía en las interrupciones, hacían un dump de memoria y conseguían que funcionase ... pero el código era impenetrable. Y otro ejemplo es execryptor: dumpear + reconstruir.

Lo que pasa es que la tecnología de desensamblar + ofuscar se ha perdido mucho, porque ahora mismo los programadores de troyanos no la usan, al menos eso me parece a mí. Ya nadie programa en asm y, por lo tanto, mucho menos va a haber nuevos motores polimórficos o VMs. Pero en los tiempos en los que sí se programaban virus DE VERDAD (léase 29A, etc), encontrarte con algo para crackear con una VM era una p***.


saludos,
Eduardo.

Mario Ballano dijo...

Muy bueno el post ;-))

Ocho dijo...

Exacto Edu :)

Que tiempos aquellos y que de horas....bufff

Como no hace falta hacerlo para ser crackeado, pues lo de siempre, dumpear y listo.

Que me pones anti-dumps? Pues reedirijo ese anti y a otra cosa mariposa.

Es lo mismo que pasa con Execryptor pese a que lleve + de 3 o 4 años abandonado pese a que el autor siga vendiendo licencias xD

Nadie se ha puesto a estudiar e interepretar los opcodes de la VM pese a que realmente no sea una VM como Themida.

Aunque recientemente he visto un estudio muy interesante de un cracker creo que indio creo o por lo menos sé que era árabe sobre la "VM".


PD_Eduardo: Te mandé un cutre mail, lo recibiste? xD
PD_Mario: Fulano sigues cayendote alguna vez por Pucela?


(+34 902 222 521)


24 horas / 7 días a la semana



© Copyright S21sec 2013 - Todos los derechos reservados


login