Incident Response, Security and Forensics"

.

lunes, 24 de noviembre de 2008

MEMORYZE contra Malware

Dice el INTECO que de cada tres ordenadores uno esta infectado con algún tipo de Malware.
Lo que me sorprende es que afecte a servidores, los cuales yo creía que estaban más protegidos.

Esto es un indicador preocupante y en el que los administradores en algunos casos utilizan en extremo la cuenta de administrador para navegar (por donde no se debe) en un servidor o instalar aplicaciones sin ningún tipo de buenas practicas.También indica que no se instalan los antivirus en servidores o no esta correctamente 'parcheado' el sistema.

El caso que vamos a ver hoy es un servidor Windows 2003 con un Rootkit y troyano emisor de Spam y pornografía. El como fue a parar al servidor lo dejamos para la especulación.

Primero comprobamos los procesos activos en memoria, para ello utilizamos las pstools y concretamente pslist., como podemos observar en la pantalla no aparece nada extraño. Pero nos quedamos con la idea de que hay en exceso muchos procesos lanzados por 'svchost'























Para no fiarnos vamos a ver los puertos que tiene activos y donde se conecta, para ello procedemos a ejecutar 'fport'. La sorpresa con la que nos encontramos es que dice que tenemos que ser administrador para ejecutarlo, cuando realmente ya lo somos... caso raro. Empieza a 'oler' mal



Voy a ejecutar el netstat y comprobamos que se conecta a una ip de la red donde pertenece , con terminal server. Tras diversas pruebas vuelvo a ejecutar el netstat y...¡¡.sorpresa!!!, ved vosotros mismos. No aparece nada, y de ahora en adelante ya no volverá a mostrar nada el netstat. Algo o alguien a activado un proceso que me oculta las conexiones.



Voy a volver a ejecutar el pslist para ver si se ha ejecutado un proceso en memoria...y...¡¡¡upss!!!
!!NO FUNCIONA!!.

El comando pslist existe dado que lo baje yo de internet, pero algo lo esta tocando, porque si que lo ejecuta pero no ofrece ninguna salida por pantalla. Tiene toda la pinta de un rootkit, a este paso no me dejara ejecutar ningún comando legitimo.



LLegado a este punto y con toda la probabilidad de que sea un troyano voy a pasarle el rootkit revealer, dado que parece que el NOD32 no se entera. Voy a descargarmelo de sysinternals y otra 'sorpresa' .Ni firefox ni chrome me dejan acceder al anti-rootkit. Muchas sorpresas para este servidor. Sin embargo permite navegar a otras url's.



No queda otro remedio, vamos a estudiar en profundidad los procesos, para ello me decanto por hacer una copia del disco duro y estudiarlo tranquilamente, pero parece que en la empresa todo corre prisa y no se puede apagar el equipo.

Es hora de llamar a nuestro super héroe 'memoryze'.

LA LLEGADA DE MEMORYZE

Memoryze permite llevar a cabo un amplio estudio de lo que se está ejecutando en un sistema o lo que se ejecuta en el. Memoryze puede identificar todos los procesos y controladores cargados. En el caso de los procesos, puede profundizar para encontrar todos los puertos abiertos por un proceso, todas las cadenas utilizadas por un proceso abierto y todos los componentes de un proceso incluido los nombres de archivo, las claves del Registro, y muchos más.

Para descargarnos 'Memoryze' se puede hacer desde aquí. Este software es gratuito y no se dispone del código fuente.

Memoryze dispone de una serie de scripts basados en ficheros bat y xml, que le pasan parámetros a un ejecutable (memoryze.exe) y obtiene los resultados también en formato XML. Cada script tiene una función especifica.

MemoryDD.bat ejecuta AcquireMemory.Batch.xml:
Permite crear una imagen de la memoria

ProcessDD.bat ejecuta AcquireProcessMemory.Batch.xml:
Permite adquirir un proceso especifico como direcciones de memoria, stack, heap, DLLs, EXEs, y ficheros NLSs

DriverDD.bat ejecuta AcquireDriver.Batch.xml:
Permite adquirir un driver de la memoria o todos los drivers

Process.bat ejecuta ProcessAuditMemory.Batch.xml:
Muestra información de puertos abiertos, ficheros,claves del registro y cadenas de texto

DriverWalkList.bat ejecuta DriverAuditModuleList.Batch.xml:
Permite enumerar llamadas al Kernel

HookDetection.bat ejecuta RootkitAudit.Batch.xml:
Permite identificar llamadas al kernel en modo memoria manteniendo la integridad del sistema

Nosotros vamos a ejecutar diversos scripts para ver el resultado que nos dan en la maquina comprometida dado que no puedo apagar el equipo. Lo que expongo a continuación esta en formato resumen, dado que casi todo se encuentra en el manual, sobre todo en cuanto a las configuraciones se refiere.

Proccess.bat

Una vez configurado el fichero Bat, lo lanzamos y después de unos veinte minutos nos ofrece el resultado de procesos, en el aparecen en color amarillo aquellos que pueden resultar sospechosos.



A continuación modificamos el script con los parámetros adecuados para capturar (repito todo esta en el manual) los procesos sospechosos y le indicamos al programa que realice un volcado de 'strings' para ver si podemos observar algo relevante. Una vez realizado, este es el resultado de uno de los procesos que se llama IG95MEM



Para su comprensión mas sencilla, se exporta a texto los procesos y fijaros que cositas nos dice:

Captura como sospechoso entre ciento de otras cosas:

----> Combinación de teclas
----> ¿post? y URL. (De china y con un SQL inyection de caballo)



Vamos a pulsar la combinación Ctrl+Alt+Shift y ¡Guao!

Este es el resultado, aparece en forma residente un programa espía, (que por cierto se salta el antivirus NOD32)



Esta ¿utilidad? es un programa que se puede descargar de 'http://www.monitoring-spy-software.com/' y es un producto con la finalidad de monitorizar y espiar el acceso al equipo.

El producto es comercial y te garantizan tras el pago de 30$ que te dan mantenimiento para que los antivirus no lo detecte.

Estos programas legítimos o no, rompen la barrera de la privacidad, además de no saber muy bien si esos datos viajan a otros ordenadores sin nuestro consentimiento. Particularmente sospecho de este tipo de programas

CONCLUSIONES

Entiendo, que este servidor fue comprometido de forma intencionada con la idea de administrar o espiar. También podría ser como comentaba anteriormente que se hubiera administrado de forma muy relajada o que incluso no hubiera sido un administrador.

Lo curioso del tema es que siguiendo con la investigación te das cuenta de varias cosas:

1.- Todo se ejecuta con cuenta administrador, no hay usuarios ¿?. Quizás sea parte de la actuación del troyano.

2.- Después de revisar el 'timeline', fechas,accesos y creación de ficheros nos damos cuenta que el comando netstat es un fichero BAT que contiene lo siguiente: Es evidente que ha sido sustituido y manipulado.



3.- Memoryze es una buena herramienta para ejecuciones 'en vivo' ya que mostró los procesos extraños y sus entradas, pero además en sucesivas ejecuciones con otros scripts y con diversos parámetros, dedujo que tenia un rootkit 'FU' inyectado en el ejecutable notepad.exe ' Era uno de los procesos del admon de tareas con nombre svchost' (mas tarde se confirmo pasándole un antivirus actualizado después de pasar el NOTEPAD por virustotal)

4.- Ejecutando 'filemon' de sysinternals mostró una entrada 'WRITE' que apunta a un directorio temporal con ficheros con pornografía. (se procedió a realizar una copia de seguridad) :)

5.- Se detecto envío de trafico por el puerto 80 de salida a la dirección IP troyanizada de China anteriormente mostrada. Para analizarlo se capturo el trafico con TCPDUMP para Windows y se dedujo dado el tamaño y contenidos de los paquetes que se enviaban imágenes.

REFLEXION:

En el caso que nos aborda, la desinstalación de este malware es muy complicada, ya que no sabemos que otros programas de la instalación de Windows pueden estar modificados o troyanizados. Lo mejor es formatear y empezar a recuperar datos de la copia de seguridad, dudo mucho de recuperar ficheros ejecutables de la copia, dado que esta puede contener malware embebido en los propios ficheros de Windows.

En fin, me temo que el INTECO esta en la razón de la verdad. Me temo que hay mas casos, mucho mas de lo que se dice o se sabe.

Chiao.

Agradecimientos a José Romero, Administrador de servidores del departamento de sistemas de la Universidad Rey Juan Carlos por proporcionarme todas las comodidades necesarias.

3 comentarios:

Hola Pedro:

Yo en estos casos también uso una aplicación que es el process Explorer de Sysinternals, la verdad es que me parece una gran aplicación ya que te salen todos los procesos que corren en la máquina (logicamente si se trata de un rootkit ya tendremos que trabajar de otra manera) y puedes incluso buscar por DLLs usadas por los procesos. También puedes verificar si los procesos son reales o no, si se están conectando a Internet y que threads usan, la verdad es que es una maravilla.

P.D: Ahora el process Explorer se puede ejecutar desde web directamente, y también hay opción de quitar el administrador de tareas de toda la vida y dejar puesto el process explorer :)

Si, así es. Yo también lo empleo para debuggear ya que permite utilizar las Kbtools de Microsoft. Quizas la diferencia o particularidad de Memoryzer es que permite obtener esta información de una imagen del disco duro o Dump de memoria.
Lo que no sabía es que process Explorer funciona sobre web.

Saludos

Memoryze now has a much needed UI to view the rich data set it returns about each process.

See http://blog.mandiant.com/archives/50

Thanks for the write-up.

Jamie