elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Análisis y Diseño de Malware (Moderador: fary)
| | |-+  Evadir emulacion de AVs.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Evadir emulacion de AVs.  (Leído 12,954 veces)
APOKLIPTICO


Desconectado Desconectado

Mensajes: 3.871


Toys in the attic.


Ver Perfil
Evadir emulacion de AVs.
« en: 31 Julio 2012, 04:18 am »

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 Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: Evadir emulacion de AVs.
« Respuesta #1 en: 31 Julio 2012, 16:19 pm »

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 Desconectado

Mensajes: 3.871


Toys in the attic.


Ver Perfil
Re: Evadir emulacion de AVs.
« Respuesta #2 en: 31 Julio 2012, 20:09 pm »

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 Desconectado

Mensajes: 1.513

El Dictador y Verdugo de H-Sec


Ver Perfil WWW
Re: Evadir emulacion de AVs.
« Respuesta #3 en: 1 Agosto 2012, 06:04 am »

 ::) 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

Código
  1.  
  2. /*Tarea Sospechosa*/
  3.  
  4. //codigo sospechoso...
  5.  
  6.  
  7. for(int i(0);i<rand()%1000;i++)
  8.       Sleep(rand()%100);
  9.  
  10.  
  11. //continuacion de codigo sospechoso.
  12.  
  13.  

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 Desconectado

Mensajes: 31



Ver Perfil
Re: Evadir emulacion de AVs.
« Respuesta #4 en: 1 Agosto 2012, 09:11 am »

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
Moderador
***
Desconectado Desconectado

Mensajes: 1.075



Ver Perfil WWW
Re: Evadir emulacion de AVs.
« Respuesta #5 en: 1 Agosto 2012, 15:18 pm »

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 Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: Evadir emulacion de AVs.
« Respuesta #6 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
  1. pminsw xmm0,xmm1
Con esa instrucción cualquier aplicación detectada por NOD32 se vuelve invisible :laugh: :laugh:
En línea

[L]ord [R]NA


Desconectado Desconectado

Mensajes: 1.513

El Dictador y Verdugo de H-Sec


Ver Perfil WWW
Re: Evadir emulacion de AVs.
« Respuesta #7 en: 1 Agosto 2012, 21:10 pm »

:¬¬ vamos hombres... fue un ejemplo. No lo di como valido. No me crucifiquen.
En línea

APOKLIPTICO


Desconectado Desconectado

Mensajes: 3.871


Toys in the attic.


Ver Perfil
Re: Evadir emulacion de AVs.
« Respuesta #8 en: 2 Agosto 2012, 18:11 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
  1. pminsw xmm0,xmm1
Con esa instrucción cualquier aplicación detectada por NOD32 se vuelve invisible :laugh: :laugh:

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 Desconectado

Mensajes: 563


Ver Perfil
Re: Evadir emulacion de AVs.
« Respuesta #9 en: 2 Agosto 2012, 18:47 pm »

@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

Eres adicto a la Ing. Inversa? -> www.noxsoft.net
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
emulacion de GTA3 con PCSX2
Juegos y Consolas
cortex 0 1,554 Último mensaje 1 Febrero 2005, 06:46 am
por cortex
emulacion en ps2??
Juegos y Consolas
thehiphapper 0 2,971 Último mensaje 2 Mayo 2005, 01:17 am
por thehiphapper
Emulación de juegos.
Juegos y Consolas
Randomize 0 26,269 Último mensaje 1 Mayo 2008, 12:05 pm
por Randomize
emulación de un hasp usb
Juegos y Consolas
JAMOFE2005 3 5,354 Último mensaje 5 Diciembre 2009, 16:18 pm
por Alamasy
EMULACION DE DATOS DE RED
Dudas Generales
Fimosin 0 2,039 Último mensaje 6 Febrero 2012, 11:38 am
por Fimosin
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines