Autor
|
Tema: Evadir emulacion de AVs. (Leído 12,954 veces)
|
APOKLIPTICO
Desconectado
Mensajes: 3.871
Toys in the attic.
|
Hola! Como va, bueno, como todos sabemos, hay varias maneras que utilizan los AVs para saber si algo es un virus o no lo es. Tenemos las Firmas detectadas, firmas probables, heurística y emulación de código. La pregunta principal es si hay una manera de saber con algún programa o método qué método utilizó el anti virus para detectar un virus.
La segunda pregunta es cómo puedo hacer para evadir la emulación de código, es decir, maneras de por ejemplo, cerrarse al descubrir emulación o hacerlo tan pesado que el AV se resigne al tratar de emularlo (pidiendo demasiados recursos por ejemplo).
Un abrazo APOKLIPTICO.
|
|
|
En línea
|
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
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
Los AVs incluyen el método de detección que ha saltado en el nombre de la propia detección.
Respecto a tu segunda cuestión; Los emuladores de los AVs mejoran constantemente, aún así algunos emuladores tienen un límite temporal para analizar cada fichero y así no ralentizar el PC en exceso. Como ya habrás adivinado el secreto reside en hacer que el malware tarde en hacer las tareas sospechosas.
|
|
|
En línea
|
|
|
|
APOKLIPTICO
Desconectado
Mensajes: 3.871
Toys in the attic.
|
No entendí tu primera oración XDDD
En cuanto a lo segundo, se podría decir que si hago que la primera instrucción del programa sea armar un buffer en la heap de 1 GB y llenarlo de información pseudoaleatoria utilizando la funcion rand(), eso ayudaría?? Hay alguna instrucción que los emuladores no puedan emular y que no haga saltar el anti virus por si misma???
|
|
|
En línea
|
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.
|
|
|
[L]ord [R]NA
Desconectado
Mensajes: 1.513
El Dictador y Verdugo de H-Sec
|
Nop... si llenas la heap con 1GB ten de seguro que se notara la presencia (Eso es lo que se trata de evitar). podrias hacer algo como /*Tarea Sospechosa*/ //codigo sospechoso... for(int i(0);i<rand()%1000;i++) //continuacion de codigo sospechoso.
Esto seria un ejemplo de aproximadamente que quiere decir Karcrack... Seria bueno recalcar que con un poco de ofuscacion adicional podrias evadir con creces el AV.
|
|
|
En línea
|
|
|
|
zu-zu
Desconectado
Mensajes: 31
|
Los sleep no siempre son emulados. Sería mejor resumir la ejecución si la posición del cursor cambió a usar un sleep.
|
|
|
En línea
|
|
|
|
fary
|
No entendí tu primera oración XDDD
En cuanto a lo segundo, se podría decir que si hago que la primera instrucción del programa sea armar un buffer en la heap de 1 GB y llenarlo de información pseudoaleatoria utilizando la funcion rand(), eso ayudaría?? Hay alguna instrucción que los emuladores no puedan emular y que no haga saltar el anti virus por si misma???
En la primera oración se refiere a que segun la forma de detecar en virus los AV le ponen una firma u otra, por poner un ejemplo cuando avira analiza un fichero desde su emulador y detecta el virus de pone la firma TR.Dropper.Gen (Nose si esa firma de avira sera por eso, es un ejemplo). Respecto a lo segundo, Swash tenia una teoría de que si hacia varios bucles largos al inicio del programa para que superara un tiempo determinado que tiene el AV para analizar el archivo el AV no lo emulaba por completo y no lo detectaria... En cuanto a las instrucciones, si hay alguna que no es capaz de emular... pues seguramente! pero es cuestion de descubrir cual y para que AV funciona. saludos.
|
|
|
En línea
|
Un byte a la izquierda.
|
|
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
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: pminsw xmm0,xmm1
Con esa instrucción cualquier aplicación detectada por NOD32 se vuelve invisible
|
|
|
En línea
|
|
|
|
|
APOKLIPTICO
Desconectado
Mensajes: 3.871
Toys in the attic.
|
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: pminsw xmm0,xmm1
Con esa instrucción cualquier aplicación detectada por NOD32 se vuelve invisible Casualmente para el NOD32 es indetectable XDD. Había un POC que decía que si se trataba de utilizar las instrucciones mmx y se evaluaba el resultado, esto podría dar la pauta de si el código está siendo emulado. El problema es que el AV detecta estas instrucciones en momentos y lugares sospechosos y poco comunes y las flaggea como malas...
|
|
|
En línea
|
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.
|
|
|
Иōҳ
Desconectado
Mensajes: 563
|
@mDriny, es que no es una teoría, ya hay un escrito de eso, y lo vi hace uffff mucho tiempo.
pd: no probé el poc
Saludos.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
emulacion de GTA3 con PCSX2
Juegos y Consolas
|
cortex
|
0
|
1,554
|
1 Febrero 2005, 06:46 am
por cortex
|
|
|
emulacion en ps2??
Juegos y Consolas
|
thehiphapper
|
0
|
2,971
|
2 Mayo 2005, 01:17 am
por thehiphapper
|
|
|
Emulación de juegos.
Juegos y Consolas
|
Randomize
|
0
|
26,269
|
1 Mayo 2008, 12:05 pm
por Randomize
|
|
|
emulación de un hasp usb
Juegos y Consolas
|
JAMOFE2005
|
3
|
5,354
|
5 Diciembre 2009, 16:18 pm
por Alamasy
|
|
|
EMULACION DE DATOS DE RED
Dudas Generales
|
Fimosin
|
0
|
2,039
|
6 Febrero 2012, 11:38 am
por Fimosin
|
|