Cazador de Botnets: [Zeus]
¿Quién no fantaseó alguna vez con tener miles y miles de ordenadores bajo su poder? No me refiero con el objetivo de desatar un caos o incluso robar masivamente información, sino para simplemente, tener el profundo sentimiento de "control". O hablando desde el otro "lado", a quién no se le ocurrió la idea de desbaratar botnets alguna vez?, cazarlas por el simple hecho de ver que ahí adentro, descubrir el número de máquinas que cayeron bajo su poder? y quizá hasta tomar el control?. Bueno, este post va dedicado a esta última fantasía.
¿Cómo encontramos una botnet?
Vamos a lo primero, para cazar una botnet hay que localizarla, existen diversos servicios online que se dedican al traceo de estas, en los que se publican el path del C&C, información de los ejecutables usados para la infección, el tipo de botnet, etc.
Cybercrime-tracker
La cual mantiene archivado una gran diversidad de malware como la botnet Blackhole, Citadel, Zeus, Pony, IceIX, VertexNet, entre otras.
Abuse.ch
Otra de gran utilidad es abuse.ch contando con un tracker para la Zeus, Feodo, Palevo y la SpyEye.
Posiblemente existan otras listas de botnets, pero por el momento son las únicas que conozco.
También podemos hacer uso de algún motor de búsqueda como Google. Implementando uno que otro google dork llevándonos por las estructura del panel que deseemos localizar, por ejemplo, la ruta del C&C por defecto en la botnet Zeus es el siguiente: /cp.php?m=login.
Código: Text
- inurl:/cp.php?m=login
De ahí en mas podríamos ir variando, ya que probablemente el responsable haya hecho algunas modificaciones al script, incluso cambiado el nombre, en fin todo va en el ensayo y error. Tal vez nos topemos con alguna que otra semi camuflada.
Código: Text
- intext:"Remember (MD5 cookies)" ext:php
Hosting1
Partamos por el punto de que una botnet puede estar montada en un:
-Servicio de hosting free
-Servicio de hosting pago
-Hosting hacked
-VPS
En mi caso, se hallaba alojada en lo que parecía ser un servicio de hosting pago, llamémoslo hosting1.com.
A simple vista, me atrevía a decir que el encargado del malware obtuvo acceso ilícito, por lo que lo mas seguro es que la web presentara alguna que otra vulnerabilidad que me permitiese la entrada, si es que no fue parcheada por el atacante, para alejar a los curiosos.
Realmente aún quedaba alguna que otra brecha.
Fijémonos, a ver que hay detrás del panel.
Un upload bastante jodido y otra SQLI. Luego de realizar varios intentos decidí dejar de lado la subida de ficheros, pero si podía inyectar comandos en la db, solo tenía que buscar la tabla con las credenciales de la botnet.
Por desgracia, no había rastros de la Zeus
Lo mas probable es que corra con un usuario diferente.
Después de navegar por la aplicación, me encontré con la zona de acceso a clientes.
Evidentemente trabajaba con otro user ya que las credenciales del formulario no estaban en la anterior base de datos. Así que me registré para ponerme en busca de alguna inyección u otra abertura que me de acceso.
Al rato, terminé por darme por vencido y decidí ir por otra vía, enumerar los dominios en el servidor, tratar de acceder mediante alguno de ellos y así escalar hasta hosting1.com.
Evilnet
El proveedor de hosting, llamémoslo "Evilnet", por motivos obvios no voy a dar nombres. Evilnet ofrece servicio de hosting, diseño y programación web, varios dominios que pertenecen a Evilnet, usan la misma estructura de CMS, el mismo con el que corre nuestro hosting1.com por acá tenemos otro similar y por supuesto junto con la misma SQLI
Si no leíste el artículo "Engañando al WAF con XMP" podes ingresar al siguiente link donde detallo como conseguí acceso al servidor mediante hosting2.com.
Siguiendo con el apartado, cabe destacar algo interesante que me encontré mediante la recolección de información:
-Ambas webs usan el mismo password en el formulario de administración.
-Ambas webs cuentan con el mismo password en la base de datos (el mismo que usan para acceder al panel, no es joda!).
Parece que el administrador de Evilnet no tiene buena memoria y prefiere usar la misma llave para todo, podría apostar que este "descuido" por llamarlo de manera elegante, se repite en los demás dominios bajo su autoría. Con este criterio quién sabe, si llegara a probar, hasta me podría cargar el facebook y el twitter del admin o hasta la sesión ssh personal, espero no llegarle hasta abajo de la cama jeje!.
Pero en fin, ya estaba dentro de hosting2.com, solo me faltaba escalar hasta hosting1.com. Lo primero que hice fue tratar de leer el fichero de configuración de la botnet que se encuentra en el directorio base /system/config.php, mediante la creación de un enlace simbólico, pero para mi mala suerte no funciono. Entonces recordé el descuido del administrador e intente ingresar con la llave maestra por así decirlo, mediante otro usuario en la db que pertenezca a hosting1.com, por lo que veía, la estrutura de nombres tiene la siguiente regla:
"Nombre que hace referencia al dominio"_XXXXXXX
Ya había intentado loguearme como hosting1_xxxxxxx, entonces fui probando diversas combinaciones de usuarios.
Hasta que logré ingresar como hosting1 solamente, el cual tenia acceso a todas las dbs dentro de la aplicación.
Ya habiendo identificado la preciada base de datos.
Restaba consultar las credenciales en la tabla cp_users y rogar obtener el hash md5 en claro.
Afortunadamente el hashe del admin estaba presente en md5online.
La Zeus
Una vez dentro terminé un poco decepcionado al respecto, creí que podía encontrarme con una mayor cantidad de bots, y para peor no había uno solo en pie.
Aunque contaba con una respetable cantidad de reportes sobre credenciales pop3 y http.
Una cosa interesante, es que el reports path de la botnet apuntaba al home de hosting1.
Por lo tanto podía navegar libremente a través del file browser y descargar ficheros a diestra y siniestra.
De no haber sido así, solo tenia que ir a options y editar el path con tantos directorios transversales sean necesarios para llegar al home.
Fuente: SecuritySignal