Evadir emulacion de AVs.

Iniciado por APOKLIPTICO, 31 Julio 2012, 04:18 AM

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

The Swash

Hola,

@APOKLIPTICO, ¿podrías especificar el motor sobre el cual quiere pasar la emulación?
Y hago referencia al emulador sobre el que quiere pasar ya que son bastante diferentes y cada uno puede emular distintas cosas, parsear opcodes que no soportan, etc.

Un saludo,
Iván Portilla.

APOKLIPTICO

AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.

Karcrack

Una lectura muy interesante que me compartió [Zero]:
http://computervirus.uw.hu/ch11.html

Karman

#13
virtualización manual: http://www.codigofuente.tk/index.php?topic=5272.msg7603#msg7603

y no hay emulación que funque :P

S2

PD: la idea no es virtualizar todo, pero si partes críticas :P

Karcrack

Vaya Karman, pedazo de código. Virtualizar código es algo que está en otro nivel :laugh: además añadir soporte a las instrucciones necesarias puede llegar a ser un quebradero de cabeza. Sin duda un trabajo increíble :D

0xDani

Que proposito tiene la virtualizacion de codigo?
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

APOKLIPTICO

Evade heurística, pero dudo que evada emulación...
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.

Newhack32

Cita de: Karcrack en  1 Agosto 2012, 21:04 PM
Tal y como aclara mDrinky me refería a que en el propio nombre que le da el AV a la detección suele suele incluirse esa información. Por ejemplo el "Heur" que añaden en algunos tags que viene de heurística, obviamente.

Como apunta zu-zu los emuladores de los AVs no son estúpidos y hay ciertas acciones que obvian por su poca relevancia en el flujo de ejecución de la aplicación (como los sleeps). Pero hay muchas otras formas de redireccionar el flujo de la aplicación u obfuscarlo, como por ejemplo usando handlers personalizados para errores que generes.

Como dato añado que había una forma de saber si estabas siendo emulado dentro del Kaspersky (si no recuerdo mal) que era haciendo un gethostbyname() y obteniendo el error generado, ya que para evitar conexión a internet se emulaban las llamadas a las APIs de WS y devolvía un error incorrecto.

Lo importante es que los emuladores van mejorando, ya sea obviando sleeps o reparando errores que ellos mismos hacen... eso sí, el NOD32 lleva más de 6 años petando con una instrucción de FPU que no emula correctamente:
Código (asm) [Seleccionar]
pminsw xmm0,xmm1
Con esa instrucción cualquier aplicación detectada por NOD32 se vuelve invisible :laugh: :laugh:
y como meteria ese code con olly  :huh: