Título: Los antivirus y sus "poderosas" heurísticas Publicado por: [ANTRAX] 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
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. (http://r.i.elhacker.net/cache?url=http://2.bp.blogspot.com/_cxkEcBi2N6Y/TA4svQp4nQI/AAAAAAAABO8/1Hy06uZnys4/s320/1.bmp) 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
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 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 ... (http://r.i.elhacker.net/cache?url=http://2.bp.blogspot.com/_cxkEcBi2N6Y/TA5SUg8TVTI/AAAAAAAABPE/9vGIJ_DSSIc/s1600/Screenshot+-+08_06_2010+,+16_21_23.png) Fuente: Código: http://hacking-avanzado.blogspot.com Título: Re: Los antivirus y sus "poderosas" heurísticas Publicado por: [Zero] 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 Título: Re: Los antivirus y sus "poderosas" heurísticas Publicado por: Karcrack 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: ;) Título: Re: Los antivirus y sus "poderosas" heurísticas Publicado por: [ANTRAX] 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 Título: Re: Los antivirus y sus "poderosas" heurísticas Publicado por: kisk en 23 Junio 2010, 03:23 am Si es Mov edi,edi es ridiculo ponerlo XD
Título: Re: Los antivirus y sus "poderosas" heurísticas Publicado por: Karcrack 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 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 :) Título: Re: Los antivirus y sus "poderosas" heurísticas Publicado por: kisk 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 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 Título: Re: Los antivirus y sus "poderosas" heurísticas Publicado por: Debci en 23 Junio 2010, 21:36 pm Muy interesante, pero creo que al final acabaran cubriendo estos tips tan simples.
Saludos |