Es común encontrarse malware que llevan como medida de protección un packer, esto dificulta tanto la
parte de detección por parte de las casas de antivirus como por parte del
analista cuando realiza la ingeniería inversa.
Un Packer es un programa que toma como entrada un fichero ejecutable y devuelve otro
fichero ejecutable con la misma funcionalidad pero con ciertas protecciones
añadidas que dificultan su análisis.
En el análisis del binario nos podemos encontrar
con ciertas dificultades, una de ellas es que al contener el packer existirán
diversas partes del binario que estarán cifradas, esto dificulta el análisis del
código de manera que tendremos que extraer el packer para poder ver el
contenido del binario. Existen multitud de packers, de los mas famosos podemos
encontrar UPX, FSG, Themida etc…
El primer paso para poder ver el contenido del
binario es averiguar con que Packer ha sido empaquetado. Es en este paso es donde
intervienen ciertos programas que se encargan de analizar la cabecera del
binario para tratar de analizar con que Packer esta protegido dicho binario.
Este tipo de programas no son 100% fiables y son
capaces de darnos falsos positivos y de esto trata la entrada de hoy.
PEID
PEID es uno de esos programas capaces de dar información de
como está empaquetado, estos software se basan en firmas que pueden buscar en
bases de datos que se van actualizando, esas firmas se encuentran a lo largo
del binario con el binario en si o bien mirando solo el Entry Point.
Ahora haremos la prueba con un binario
PEID nos indica que el binario está empaquetado con UPolyX.
¿Será esto cierto?
El software se puede configurar para que haga los análisis
mas profundo del binario
Configuramos PEID de esta forma y volvemos a analizar el
binario.
El packer detectado es otro, no el encontrado anteriormente,
PEID se basa en firmas para la detección del tipo de packer.
RDG Packer Detector
RDG igual que PEID nos ayuda a identificar el packer con el
que se haya empaquetado el binario.
También se basa en firmas igual que PEID, pero en este caso
también nos da un resultado distinto.
RDG detecta el packer por heurística y nos da un resultado
distinto a PEID.
¿Fallo en las comprobaciones automáticas?
Una pregunta que nos podemos hacer es porque PEID y RDG han
detectado packers distintos, y en el caso de PEID si se configuraba para que la
comprobación se hiciera de manera más profunda detectaba un packer distinto,
esto es debido a que este tipo de programas se basan en firmas, si miramos el
fichero de firmas
Como las firmas se van actualizando, hay firmas que solo
están completadas la mitad de la firma, si buscamos en algunos casos de los
packers detectados, como Upolyx, Aspack y Extreme Protector, nos encontramos.
Este es el caso de Upolyx, detecta la firma porque parte
delos Bytes del packer se encuentran en el binario
Parte de la firma del packer de Aspack también se encuentra
en el binario.
Y por último el packer detectado por RDG que encontraba
Xtreme Protector, también es encontrado en el binario.
Además algunos de los packers permiten poner una firma
falsa, de manera que dificulta la detección en base a éstas.
Detección del packer manualmente
Otra de las opciones que disponemos es de analizar el
binario manualmente con un debugger, no es tan rápido como usar PEID o RDG pero
nos aseguramos de tener mas fiabilidad a la hora de detectar el packer.
Para el análisis usaremos OllyDBG, abrimos OllyDBG y
empezamos.
Cargamos el binario a analizar, nos dirigimos al image base
+ 1000h bytes (es donde se mapea/empieza el código, para este caso), el packer
sustituye al programa colocándose él en esta dirección, es por eso que veremos
el contenido cifrado.
En la ejecución del programa en primer lugar se ejecuta el
código del packer, que se encargará de descifrar y descomprimir el código
previamente protegido.
Colocamos un breakpoint y vamos ejecutando el programa en
Olly para ver si podemos ver que packer es.
En la ejecución del sample el Olly podemos ver el string
“oreans” ; oreans es la empresa que distribuye software comercial como Themida,
es posible que se trate de este software así que seguimos buscando entre los
distintos productos que distribuye la compañía, hasta encontrar el software.
Se trata de WinLicense, uno de los productos que distribuye
la empresa Oreans para la protección de binarios, que en este caso ha sido
utilizado para proteger malware de la detección de antivirus y de un posible
análisis del mismo.
El uso de los packers es muy frecuente cuando se trata de
malware, muchos aprovechan packers como por ejemplo UPX, los modifican y los
usan para volver sus samples modificados indetectables.
Las mafias profesionales ya usan packers privados que son
indetectables por los motores antivirus, además en el mundo Underground ya
existen servicios que por unos pocos dólares pueden empaquetar un binario con
un packer/cripter privado de manera que será difícil detectarlo por los motores
antivirus.
No hay comentarios:
Publicar un comentario