Incident Response, Security and Forensics"

.

viernes, 12 de diciembre de 2008

Escuela de reciclaje

No todas las basuras son iguales.

"Basura" es un término que utilizamos a menudo en nuestro lenguaje cotidiano, siempre aplicado a algo sin valor o desechable. Sin embargo, hay muchos tipos de basura y es conveniente aprender a distinguirlas.

El reciclado, es una de las alternativas utilizadas en la reducción del volumen de los residuos sólidos

En este post y en el siguiente vamos a ver tres cosas:

1.- Como 'parsear' la memoria en busca de procesos malignos (basura)
2.- Como extraer un proceso de la memoria y convertirlo en un EXE (reciclaje)
3.- Como dibujar esos procesos de memoria en un JPG.

En Mayo del 2005, Chris Betz desarrollo unas 'utilities' llamadas MEMPARSER las cuales permitían entre otras cosas los puntos que anteriormente he descrito. Actualmente Chris Betz comercializa esas herramientas en una suite muy mejorada que permite parsear cualquier versión de Windows.

Si queréis saber más sobre MEMPARSER os recomiendo la lectura del post de mi amigo juanito.

Para realizar el análisis, previamente hemos obtenido la memoria de un servidor w2003 comprometido con un malware, exactamente con el rootki FU como veremos más abajo de esta explicación.

El fichero obtenido en formato DD se llama WFU2003.vmem. (Este fichero contiene el estado de la memoria, procesos y programas en ejecución.)

También para analizarlo dispondremos de las utilidades del memparser en perl y compiladas para windows. Estas están disponibles en código fuente desde aquí. Si estáis interesados me podéis mandar un correo ya que las tengo compiladas en EXE y así os evitáis trabajo.

Una vez tenemos todo pasamos a trabajar.

PARSEANDO LA MEMORIA

La utilidad 'LSPROC.EXE' permite extraer del fichero, los procesos que se estaban ejecutando momentos antes de volcarse a disco. Esto es muy importante porque nos permite ver que procesos están abiertos y corriendo. Muy útil para analizar. Entre los datos obtenidos observamos los offset de inicio de los procesos y las fechas de creación de estos.



Si quiero saber que hace un determinado proceso utilizo la utilidad 'LSPD.EXE' , en este ejemplo me centro en el proceso CMD (tras probar antes con el svchost e inetinfo, sin éxito ninguno).

Para ejecutarlo nada mas sencillo que poner:
lspd.exe wfu2003.vmem

Y fijaros en el resultado: Este CMD realmente apunta a un path y ejecutable que no es el original de Windows. Es decir cualquier usuario que ejecute el CMD.EXE estará ejecutando realmente CMMD.EXE.



Una vez visto el ejecutable y donde reside, se procede a comparar, comprobando y utilizando los hash de un CMD.EXE de un sistema windows limpio con el CMMD.EXE de la supuesta máquina comprometida. Para ello voy a utilizar MD5SUM.EXE que se puede descargar desde aquí.

Estos son los resultados, aparentemente tanto el tamaño, como el HASH no coincide, todo apunta a que el fichero CMMD.EXE esta alterado o es otro tipo de programa.



EXTRAER UN PROCESO

Como este ejecutable es sospechoso de primer grado voy a proceder a extraerlo del fichero de memoria y convertirlo en un ejecutable para su posterior estudio.

Para ello se ejecuta el siguiente comando:

lspm wfu2003.vmem



Como podemos comprobar a extraido y volcado del fichero de memoria 'wfu2003.vmem' a otro fichero con extensión dmp, el cual procederemos a moverlo a una máquina virtual para su ejecución y análisis. Una vez en la máquina virtual procederemos a renombrarlo a .EXE.

En este caso lo mandamos a Virustotal con este resultado:



Esto significa que como sospechabamos el CMMD.EXE no solo ejecuta una shell de comandos, también es un rootkit y según el informe remitido se trata del rootkit FU. Este rootkit empieza a ser muy extendido dada la versatilidad de pasar inavertido dentro de otros programas.

Según Microsoft, los rootkits FU e Ispro se han convertido en los principales códigos maliciosos de los equipos basados en Windows XP.

¿Qué hace el antivirus?

La detección de un rootkit ya instalado en el sistema operativo requiere el uso de técnicas especiales. La mayoría de ellas aplican principios similares a los de los rootkits: solicitan examinar la memoria o el disco duro utilizando varios métodos distintos, uno de los cuales, como mínimo, está lo más cerca posible del sistema y comparan después los resultados.

Si algunos archivos o procesos aparecen en la última lectura pero no en las otras, hay muchas probabilidades de que haya un rootkit activo. Desafortunadamente, esta técnica es compleja y no ofrece resultados plenamente satisfactorios.

Por fortuna, un antivirus sigue siendo muy útil: puede tener problemas para detectar un rootkit una vez que éste ha empezado a trabajar, pero puede identificarlo fácilmente cuando llega al sistema a través de, por ejemplo, un virus o spyware, en cuyo caso puede impedir su ejecución e instalación. También en el caso de los rootkits, la solución es la misma: un antivirus actualizado.

En el siguiente post vamos a dibujar el mapa de los procesos de memoria en un fichero con formato JPG.

6 comentarios:

Hay que andarse con cuidado con tanto rootkit suelto y malware en general.... :/

Buenos dias, las herramientas lspd, lspm, lsproc son del pack de memparser?.

Saludos

Hola Diego: Como tu bien dices son utilidades del pack de memparser.

Un saludo

Pedro

Gracias por la respuesta, seria interesante y si no molesta, que si alguno ya las tiene compiladas las pase. :)

Diego:

En breves días insertare un post donde podéis descargaros los ejecutables ya compilados.

Está muy interesante Gracias por la aportación