lunes, 12 de enero de 2009

Análisis básico de ejecutables (por Furious Logic [aRC])

Lectura recomendada, enviada por Furious Logic


Todas las herramientas comentadas están disponibles en la sección aRC
Spamanario en: www.furiouslogic.co.cc o aquí



SUMARIO
-------
Las razones que nos lleven a analizar un archivo ejecutable pueden
ser diversas dependiendo del área en que el informático se desenvuelva:
análisis de código vírico, ingeniería inversa, análisis forense,
prevención contra malware, etc. En este artículo comentaremos algunas
formas básicas para identificar archivos ejecutables y descomprimirlos.
Está dirigido al usuario promedio. No se requieren conocimientos
avanzados. Sin embargo, las herramientas aludidas, debido a su
versatilidad de personalización, pueden aplicarse en niveles más
avanzados por usuarios de mayor experiencia.


2 mitos sobre los ejecutables
-----------------------------
Es un mito pensar que la presencia de un archivo ejecutable
infectado, significa que nuestro sistema está infectado. Dicho de otro
modo, es un mito creer que por manipular un archivo ejecutable infectado
(mientras no se lo ejecute) vamos a infectar nuestra PC. Un archivo
ejecutable no es más que un conjunto de instrucciones que UNICAMENTE se
llevarán a cabo si lo ejecutamos directamente (doble click o ENTER en el
mismo) o si lo depuramos sin cuidado alguno. Es esto último ha causado
infecciones por culpa de usuarios que desconocían a cabalidad lo que
significa "depurar".
Es un mito pensar que estamos 100% seguros si ejecutamos un programa
sospechoso en una máquina virtual. El nivel de seguridad nunca es del
100%. Estimamos que en todo caso estaríamos seguros quizá un 90% ó 95% a
lo sumo. No obstante, desde el punto de vista de la programación es
posible utilizar la documentación de una máquina virtual para
conectarnos con el sistema host.


Herramientas básicas
--------------------
Antes de poder analizar un archivo recomendamos al usuario
familiarizarse con la siguiente herramienta básica:

(imprescindible)
Total Commander Ultra Pack ó Total Commander Ultima Prime (en
adelante TC) como explorador de archivos. Las 3 razones básicas de esta
sugerencia son:

- TC no autocarga los archivos autorun.inf, desktop.ini y similares que
sí se autocargan bajo el explorador de archivos incluido en windows. De
esta forma, cuando analicemos un archivo sospechoso o una unidad de
memoria que se sospecha está infectada, no corremos el riesgo de que el
supuesto programa dañino se autoinstale o autoejecute. Además y como una
característica interesante, TC puede configurarse para autocargarse al
insertar un CD/DVD o una unidad de memoria USB (pendrive, memoria SD,
MiniSD, MicroSD, MMC, disco slim, etc.) siempre sin leer los archivos de
configuración antes aludidos.
- TC incluye una importante cantidad de utilitarios y plugins en lo
referente al análisis de archivos.
- TC reconoce los más conocidos (y también los no muy conocidos)
formatos de compresión de archivos ejecutables incluyendo plugins para
extraerlos de manera sencilla.


Procedimiento rápido
--------------------
Obs.: No ejecute el archivo a menos que lo indiquemos explícitamente.

1ro. Identificar si el ejecutable está comprimido y/o encriptado.
2do. De ser así proceder a descomprimirlo.
3ro. Examinar los archivos resultantes en busca del archivo legítimo.

Ese es en resumen el procedimiento a seguir por supuesto con
algunas variantes para casos especiales. Seguido describiremos el
procedimiento de manera más detallada.


1ro. Identificar el ejecutable
------------------------------
En honor a nuestro público objetivo, el usuario promedio, haremos
la identificación lo más simple que sea posible. Es decir, nos
dedicaremos a la utilización de programas especializados. Esta
especialización debe comprenderse en al menos 2 aspectos: la
identificación del sistema de compresión/encriptación y la
identificación del compilador con que se creó el ejecutable. Existen
varios niveles para estos 2 tipos de identificación. También existen
sistemas de protección múltiples y existen sistemas diseñados para
engañar a los programas identificadores. Para nuestro caso no nos
interesa determinar específicamente qué sistema se utiliza, sino que nos
interesa saber si el ejecutable está o no comprimido/encriptado para
proceder de la manera en que explicaremos en las líneas posteriores.
Algunos de los programas que utilizaremos a continuacion pueden
despertar naturales alertas en los antivirus debido a las técnicas que
utilizan. Por este motivo sugerimos tomar todas las precauciones del
caso evitando que el software protector elimine nuestras herramientas.
Uno de los canales de distribución más importantes de los
ejecutables sospechosos es la proliferación de sitios web de
pseudo-cracks y pseudo-warex. Estos abundan y los buscadores devuelven
cada vez más resultados de páginas con cracks que en el mejor de los
casos cumple con su función, pero que además están infectados para
cumplir con un objetivo macabro en contra de nuestra de por sí muy
maltratada PC. También encontraremos torrents y warez de supuestas
versiones de un programa de hasta varios cientos de megabytes, pero que
en realidad son virus/troyanos disfrazados.
Existen varios programas identificadores. Mencionemos los 2 mejores:

- PEiD 0.94. A nuestro parecer es el mejor identificador de ejecutables
entre todos.
- Exeinfo 0.0.0.1.9C. Este es un candidato estupendo para sustituir a PEiD.

Con estos 2 programas se puede resolver la mayoría de casos de
identificación de ejecutables para el propósito que nos conduce.
Una vez instalado PEiD lo ejecutamos, pulsamos el botón Options,
marcamos las opciones "Hardcore Scan", "Register Shell Extensions",
"Load Plugins" y "Use External Signatures". Grabamos los cambios,
cerramos PEiD y a partir de este instante al hacer click derecho en
cualquier archivo ejecutable aparecerá la opción "Scan with PEiD" que al
selecccionarla lanzará la pantalla del programa.
Una vez instalado Exeinfo PE lo ejecutamos, pulsamos el botón
Options, marcamos las opciones "Fast Scan", "Shell integration" y
"Disable Log". Grabamos los cambios, cerramos Exeinfo PE y a partir de
este instante al hacer click derecho en cualquier archivo ejecutable
aparecerá la opción "--> Exe Info PE Scan <--" que al selecccionarla
lanzará la pantalla del programa.


2do. Descomprimir el ejecutable
-------------------------------
En caso de que esté comprimido obviamente procederemos a
descomprimirlo. Para lograrlo por lo general seguiremos la información
que devuelve Exeinfo. Cuando Exeinfo detecta que un ejecutable está
comprimido/encriptado sugiere la herramienta a utilizar para la
descompresión. De ello se deduce que habrán muchos programas para
descomprimir y en nuestro caso sería imposible explicar todas esas
herramientas. Por ello nos limitaremos a las más generales.

UPX:
Es el más conocido y reconocido compresor de ejecutables. Se utiliza
tanto para comprimir un ejecutable como para restaurar un ejecutable
comprimido a su tamaño original. Si el ejecutable estuviese comprimido
con UPX abriremos una consola y aplicaremos el comando:

upx -d NombreDelEjecutable.exe

Obs.: Existen programas comprimidos con UPX que no pueden descomprimirse
con el propio UPX.

Universal Extractor 1.5
Este programa es muy interesante porque no nos pregunta nada más que el
nombre del archivo a descomprimir. Automáticamente creará un directorio
con el mismo nombre del ejecutable y colocará allí el contenido
descomprimido. Automáticamente reconocerá el formato del archivo
comprimido entre archivos comprimidos ZIP, RAR, ACE, etc. también
archivos ejecutables (exes) comprimidos, encriptados, archivos
instaladores, etc.

Quick Unpack 2.1
Para instalarlo correctamente lo descomprimimos, lo ejecutamos,
seleccionamos el menú Options / Preferences, marcamos la casilla
"Register shell extension", presionamos "Save" y cerramos el programa. A
partir de este momento el menú contextual de todos los ejecutables
presentará una nueva opción llamada "Unpack by Quick Unpack".
Este programa es algo más sofisticado y con más opciones. Una vez
cargado un ejecutable (leer el párrafo anterior) que se presume comprimido:

- buscamos en la pantalla la sección "Options"
- presionamos el botón ">" que está a la izquierda de "Code"
- doble click a ForceOEP
- presionamos el botón "Full unpack" y esperamos hasta que aparezca una
nueva ventana titulada "Import Table - OK"
- En dicha ventana presionamos el botón "Save" y volvemos a esperar
hasta que en la ventana principal aparezca al final el mensaje "11:52:35
Done" (la hora puede ser otra).
- Se habrá creado en el mismo directorio, una copia descomprimida del
ejecutable llamada NombreDelEjecutable__.exe

RL!dePacker 1.4
Este es otro de los programas clásicos para descompresión previa al
análisis básico de ejecutables. Insistimos por nuevamente que cualquiera
de estos programas especializados despertará alertas falso-positivas en
los programas antivirus.

- ejecutamos RL!dePacker.exe
- presionamos el botón "Browse" y seleccionamos el archivo ejecutable a
descomprimir (también se puede arrastrar el ejecutable hacia la ventana)
- presionamos el botón "Find OEP!"
- dejemos las opciones tal cual están. Por lo general funcionan sin
modificaciones.
- presionamos el botón "Unpack" y esperamos el mensaje informativo de
operación sa
tisfactoria
- Se habrá creado en el mismo directorio, una copia descomprimida del
ejecutable llamada unpacked.exe

VM Unpacker
Esta es solo 1 muestra de las joyas chinas. El programa está en chino
pero debería ser fácil intuir su modo de funcionamiento.

- Cargar VMUnpacker_CN.exe luego de descomprimir el programa en un
directorio apropiado.
- presionamos el botón "..." y seleccionamos el archivo ejecutable a
descomprimir (también se puede arrastrar el ejecutable hacia la
ventana). Al hacerlo de inmediato aparecerá en la ventana la
identificación del programa compresor.
- presionamos el botón con letras en chino. Es el botón para descomprimir.
- esperamos unos segundos y en la ventana aparecerá el nombre del
archivo descomprimido.
- Se habrá creado en el mismo directorio, una copia descomprimida del
ejecutable llamada NombreDelEjecutable_unpacked.exe


3ro. Examinar el ejecutable
---------------------------
Existen tantas razones para identificar un archivo ejecutable que
sería prácticamente imposible mencionarlas todas. Queda a buen criterio
del usuario la utilización de las técnicas básicas mencionadas.
Nos permitimos sugerir que luego del paso (2) repitamos el paso (1)
para verificar que efectivamente no existan más protecciones. Aún así,
los programas del paso (1) podrían indicar erróneamente que aún existe
compresión. Por ello siempre es útil tener a la mano un programa tal
como eXeScope 6.50 que es un editor de recursos muy útil que incluimos
para quienes desean continuar su aventura con la identificación de
ejecutables.
Con TC es muy sencillo examinar el interior de un ejecutable.
Basta con cambiar la extensión .exe por .zip por ejemplo, luego
presionamos en el archivo .zip y encontraremos todos los recursos del
ejecutable listos para ser extraidos. Esta técnica es muy importante
porque hay una cantidad notable de troyanos que incorporan en su sección
recursos variantes de archivos infectados y librerías para ser
insertados en sus víctimas.


CONCLUSION
----------
Varios programas antivirus actuales emiten alertas falso-positivas
sobre software legítimo. Algunos sitios como:

VIRUS CHECK - Virus Scan - http://virusscan.jotti.org/
VIRUS CHECK - Virus Total - http://www.virustotal.com

también pueden emitir falsas alarmas. La mejor forma de salir de dudas
es determinar si la alarma se debe a que un programa está comprimido. Lo
que es cada vez más frecuente en nuestros días. Si bien el procedimiento
descrito es casi mecánico, esperamos que seá de suma utilidad para todos.


bytes y que disfruten de un buen año 2009,


FL

sábado 10 de enero del 2009
16:51 pm

No hay comentarios: