• Analisis de Malware II (Editado)

  • Soluciona aquí tus preguntas frecuentes. Temas recomendados antes de preguntar.
Soluciona aquí tus preguntas frecuentes. Temas recomendados antes de preguntar.
 #282597  por DSR!
 02 Abr 2011, 01:00
Análisis de Malware II


Análisis en entorno seguro:
Se recomienda hacer todas estas pruebas en un entorno virtualizado como VirtualPC, VMware, etc. Estas herramientas permiten que usted interactue con el malware sin la necesidad de reconstruir el sistema en caso de fallos graves, restaurando inmediatamente el sistema virtualizado a su configuración original. Si un malware real infecta un entorno virtualizado no habrán daños o consecuencias al sistema principal. Se recomienda también configurar la maquina virtual para que no tenga salida a internet o contacto en red con la maquina real. Configurando un entorno de esta manera se puede mirar con seguridad todas las funciones del malware al ejecutarse y evitar así problemas serios. VMware y otros entornos virtuales ofrecen la simulación de múltiples computadores corriendo sobre un mismo sistema, por lo que puede también simular varios sistemas operativos y ver las diferencias entre ellos cuando el malware es ejecutado.

Creando un mini-laboratorio en LINUX
"La mejor forma de asegurar una puerta es dejarla abierta", a esto me refiero para aplicarlo al análisis de malware. LINUX en este caso es nuestra puerta abierta, pues si queremos analizar virus que funcionan en Windows, debemos trabajar en otra plataforma para no vernos afectados directamente en caso que nuestra plataforma virtual falle ante alguna vulnerabilidad que explote la aplicación que estamos ejecutando. Esto nos permite darle total libertad al malware para que haga de las suyas, le crearemos un entorno en el que se pueda ejecutar de forma segura y no nos perjudique nuestro sistema de pruebas.

Vamos a ver todos los elementos poco a poco, por ahora veamos un esquema general del sistema al cual queremos llegar:



Asegurando la red

Si necesitamos analizar el trafico que hace una aplicación hacia internet podríamos recurrir a sniffarlo, mas seria una medida insegura ya que tendríamos que generar trafico como mínimo. Un FIREWALL como lo conocemos podría ser útil para restringir el trafico, pero lo que necesitamos es habilitar el trafico, pero teniendo un control sobre el.
Usaremos entonces algo llamado HONEYWALL, este captura los puertos (inicia una conexión listening para capturar el trafico que pase sobre ellos), de esta forma el trafico no va directamente a internet sino al honeywall, que lo filtra y captura clasificándolo según su actividad.
Usaremos como honeywall uno llamado NEPENTHES, este captura los puertos a espera de conexiones y trae predefinida una gran base de configuraciones y acciones avanzadas que pueda detectar como shellcodes, ircbots, etc.

Usando Nepenthes como honeypot/honeywall

Mas informacion: [ Debe registrarse para ver este enlace ]
[ Debe registrarse para ver este enlace ]
Nepenthes es un honeypot/honeywall que permite emular servicios vulnerables y capturar el trafico de sus puertos para poder obtener información sobre lo que intente atacarlo (sea por métodos de spreading, conectándose a algún sitio, explotando un fallo en el servicio... nepenthes cubre muchísimas cosas, entre ellas una gran variedad de bots, shellcodes, exploits, ms-0days tales como Agobot, Phatbot, Sdbot, etc.



¿Para que abrir tantos puertos?
El malware no siempre sera la típica forma de ejecución, sino que también se puede valer de otros recursos como spreading, toma de servicios o conexiones locales usando shellcodes, 0days y demás vulnerabilidades. Si creamos un sistema emulado (honeypot) en donde le otorgamos al malware todos esos servicios 'vulnerables', sera mas fácil identificar que haría en caso de ejecutarse en una maquina real. veamos por ejemplo
como puede filtrar un honeypot cualquier amenaza que se le programe.



Otras funciones de nepenthes

Este puede ser configurado para que envie los archivos .exe que ejecutemos o descarguemos directamente al sitio de análisis de norman sandbox y mostrarnos el reporte, también cuenta con una red abierta de análisis en la que puedes recibir muestras de otros nepenthes o enviar las tuyas a algún nepenthes de la red. Esto facilitaría las cosas si quisiéramos atrapar el malware y analizarlo directamente acelerando así su detección.
La configuración de los scripts es abierta y podemos establecer una dirección e-mail en la cual recibir los reportes, o bien desactivar esa opción y trabajar solo en local sin distribuir las muestras.

ANALISIS DE MALWARE EN LINUX
Sabemos que en LINUX la extensión .EXE no es ejecutable, usaremos entonces una herramienta llamada WINE para poder emular la ejecución de los .EXEs como si estuvieran en Windows, pero con la gran ventaja de no tener que virtualizar el sistema operativo. ¿Todo esto para que? Los métodos que detectan maquinas virtuales estarían obsoletos ante WINE y podríamos aprovechar la puerta abierta para analizarlo.

Usando WINE para ejecutar aplicaciones WIN 16/32 (EXE,COM,BAT)
Mas información: [ Debe registrarse para ver este enlace ]



Usando Zerowine para analizar los métodos ANTI que posea un archivo:
Mas información: [ Debe registrarse para ver este enlace ]
Algunos requisitos mínimos:
* Tener instalado WINE en su ultima actualización 1.1.13 (synapse ayuda en eso, o desde la web oficial).
* Tener python como IDE (Ubuntu lo trae por defecto asi que no problem), ademas de eso tener la librería pefile-1.2.10 (para analizar las propiedades del .exe malware) y python-ptrace (para dumpear el proceso) instaladas correctamente.
* Instalar ZEROWINE, otorgarle permisos de ejecución a los archivos .py que se crean tras la instalación de zerowine.
* Configurar el fichero en cgi-bin/config.py con las rutas que vaya a manejar para los archivos. Configurar ademas el puerto en donde correrá el framework y la IP que le vamos a asignar.

¿Zerowine como source o como imagen para QEMU?
Podemos tomar el source del zerowine y ponerlo en marcha, o descargarnos una imagen (.img) para QEMU con todos los ingredientes ya preparados.
Obviamente si elegimos la opción de la imagen no tendremos que tener nada especial instalado, solamente el QEMU, ya que lo que haremos sera iniciar un
virtual a partir del archivo .img. Miremos como podríamos arrancar una imagen usando QEMU:



Una vez iniciemos tendremos abierto el puerto 8000 donde trabaja Zerowine y recibe nuestros datos. Bastaría acceder a 127.0.0.1:8000 para trabajar en el.



Resultados de zerowine:
Tomaremos primero un análisis con zerowine antes de someter al archivo a la virtualización
en nuestra maquina virtual, así sabremos si dispone de alguna defensa especial que nos dificulte el camino.



Análisis de dumpeo del proceso con zerowine
Si elegimos la opción de dumpear proceso, zerowine nos brindara un log con detalles avanzados sobre la ejecución de este archivo,
Miremos por ejemplo un log en donde podemos identificar claramente que se crea un nuevo archivo en temp llamado asd.exe



Maquinas virtuales y LINUX:
Mas información: [ Debe registrarse para ver este enlace ] ... heron.html
Hay una serie de aplicaciones que podemos usar, entre ellas QEMU, VIRTUALBOX, VMWARE, VIRTUAL PC, etc. No todas presta compatibilidad completa con linux, dependen de la versión del kernel que tengamos instalado. Usaremos VirtualBox OSE (Open Source Edition) por ser la mas compatible para este entorno y poseer la mayor gama de paquetes compatibles con diferentes kernels.



Configurando la red en el virtual
Usualmente tenemos el problema al tratar de establecer una comunicación en red con la maquina
virtual ya que esta usa un patrón de IP diferente (10.0.0.X). Crearemos entonces un puente (bridge)
en la conexión para cambiar ese 10.0.0.X por un 0.0.0.0. Al no asignarle una IP el virtual asignara la
configuración que posea la interfaz eth0 (la que usamos en linux para acceder a internet)



Luego de esto bastaría configurar en las propiedades en la configuración IPv4 cuando iniciemos
windows en la maquina virtual y podremos comunicarnos bajo una IP asignada por eth0.

Restauración de la maquina virtual después del análisis



Analizando malware en virtual
Ya que contamos con un entorno Windows para correr nuestras herramientas ( y el malware también ), tenemos un honeypot que emula
puertos y servicios vulnerables a spreading, ahora veamos medidas mínimas para proteger la red de nuestro virtual.
En este caso sera un firewall y un sniffer para cubrir el resto de amenazas que traten de conectarse a internet.



Haremos un recorrido breve por algunos de los procedimientos que podríamos implementar fácilmente desde un virtual.

Detectando empaquetado o protección



Analizando con debugger (OLLY, IDA, etc)



Analizando comportamiento con Sysanalyzer



Analisis de cambios en el sistema