The purpose of this paper is simply to help you grasp an idea on how to track down the Control and Command center for a Botnet, What you do after that is completely up to you??.
Requirements
1) Zombie IP list
2) Snmpscanner (or a port scanner)
3) Net-snmp (snmpwalk)
4) Previous knowledge of the snmp protocol comes helpful.
5) Your brain.
So what your basically doing is scanning your list of Zombie IP addresses to see which have snmp open, You can do this with nmap (i.e: nmap -sV -iL zombieIPlist -p161). This will take the IP from a file called zombieIPlist and scan to see which host have port 161 open. Even tho the port is open, doesnt mean you'll be able to get any info from it without the community string, You can also do this a little easier and more automated with a variety of programs such as
Code:
Onesixtyone - http://www.phreedom.org/solar/onesixtyone/ (linux)
SNScan - http://www.foundstone.com/resources/proddesc/snscan.htm (w32)
These programs check a lit of IP's to see wether snmp is open and then tries to bruteforce the community string (public, private are common community strings), Once you have you results of ip's + community string then you can begin to snmpwalk the MIB (Management Information Base). I only snmpwalk the TCP-MIB which has the info we need.
Concentrate on only snmpwalking the windows boxes from your results since they seem to be the ones that provide the most useful information. Here is an example of what running onesixtyone on a list of zombie IPS looking to see which ones have SNMP enabled and a community string of either public, or private looks like
Code:
dni@logan:~/onesixtyone-0.3.2$ ./onesixtyone -i ../leamington_4-8-07
Scanning 59997 hosts, 2 communities
125.254.130.65 [public] WebCAM Server
218.14.26.91 [public] Unable to decode SNMP packet: unrecognized integer length
218.16.190.44 [public] 218.56.145.194 [public] HOS-GW (version 2.2 Release 02.18.00)
Compile time : Aug 24 2004 21:09:22 . BootRom Version: 1.8 Release time at 08:00, 2004/03/18 NetHammer G908: BackBoard Hardware Version 1.30
218.69.216.104 [public] Router
218.75.93.150 [public] 218.202.158.134 [public] Cisco Internetwork Operating System
Software IOS (tm) C2600 Software (C2600-I-M), Version 12.0(3)T3, RELEASE SOFTWARE (fc1) Copyright (c) 1986-1999 by cisco Systems, Inc. Compiled Thu 15-Apr-99 15:41 by kpma
86.106.166.97 [public] Hardware: x86 Family 15 Model 4 Stepping 1 AT/AT COMPATIBLE -
Software: Windows 2000 Version 5.1 (Build 2600 Multiprocessor Free)
As we can see: 86.106.166.97 is a win2k machine with a community string of public so lets run snmpwalk on it.
Code:
dni@logan:~$ snmpwalk 86.106.166.97 -c public tcp
Code:
TCP-MIB::tcpRtoAlgorithm.0 = INTEGER: vanj(4)
TCP-MIB::tcpRtoMin.0 = INTEGER: 300 milliseconds
TCP-MIB::tcpRtoMax.0 = INTEGER: 120000 milliseconds
TCP-MIB::tcpMaxConn.0 = INTEGER: -1
TCP-MIB::tcpActiveOpens.0 = Counter32: 12125
TCP-MIB::tcpPassiveOpens.0 = Counter32: 2212
TCP-MIB::tcpAttemptFails.0 = Counter32: 5377
TCP-MIB::tcpEstabResets.0 = Counter32: 3305
TCP-MIB::tcpCurrEstab.0 = Gauge32: 29
TCP-MIB::tcpInSegs.0 = Counter32: 3486328
TCP-MIB::tcpOutSegs.0 = Counter32: 3832754
TCP-MIB::tcpRetransSegs.0 = Counter32: 147401
TCP-MIB::tcpConnState.0.0.0.0.135.0.0.0.0.2092 = INTEGER: listen(2)
TCP-MIB::tcpConnState.0.0.0.0.445.0.0.0.0.6258 = INTEGER: listen(2)
TCP-MIB::tcpConnState.0.0.0.0.3898.0.0.0.0.32788 = INTEGER: listen(2)
TCP-MIB::tcpConnState.0.0.0.0.5051.0.0.0.0.2208 = INTEGER: listen(2)
TCP-MIB::tcpConnState.0.0.0.0.5101.0.0.0.0.2064 = INTEGER: listen(2)
TCP-MIB::tcpConnState.86.106.166.97.135.86.106.166.147 .2190 = INTEGER: finWait2(7)
TCP-MIB::tcpConnState.86.106.166.97.135.86.106.166.147 .3446 = INTEGER: finWait2(7)
TCP-MIB::tcpConnState.86.106.166.97.139.0.0.0.0.2176 = INTEGER: listen(2)
TCP-MIB::tcpConnState.86.106.166.97.1151.216.155.193.1 57.5050 = INTEGER: established(5)
TCP-MIB::tcpConnState.86.106.166.97.1311.195.160.162.2 1.6969 = INTEGER: established(5)
TCP-MIB::tcpConnState.86.106.166.97.1332.195.160.163.1 46.411 = INTEGER: established(5)
TCP-MIB::tcpConnState.86.106.166.97.1343.68.142.233.17 0.5061 = INTEGER: established(5)
TCP-MIB::tcpConnState.86.106.166.97.1556.208.65.153.25 3.80 = INTEGER: established(5)
TCP-MIB::tcpConnState.86.106.166.97.1562.193.108.95.10 5.80 = INTEGER: established(5)
TCP-MIB::tcpConnState.86.106.166.97.1568.72.14.221.99. 80 = INTEGER: established(5)
TCP-MIB::tcpConnState.86.106.166.97.1572. 217.12.18.73.6667 = INTEGER: established(5)
see this last entry Bingo!! we see the client 86.106.166.97 connecting to server 217.12.18.73 on port 6667, thats our bot connecting to the Control and Command center which is in this case a ircd, once you have you results from onesixtyone or SNscan and have a list of windows boxes running snmp with a comm string of "public" you can put all of them in a file and automate your snmpwalking by doing something like.
Code:
#!/bin/sh
for i in `cat $1` ; do {
echo $i
snmpwalk -Os -v1 -c public $i tcp.tcpConnTable.tcpConnEntry.tcpConnState
} ; done
This cat a file filled with ip's and snmpwalks each value in the file, you run this by
Code:
./script.sh listofIPsthen you can pipe this into a file for later reviewing with add > fileOut to the code.
This is not the only way to track down botnets, You can also use a honeypot or simply tcpdump or packetsniff on a machine that is infected. Make sure you have the ASCII flag set when tcpdumping in order to capture the communication back and forward between the server and infected box.
.............................................................................
El propósito de este trabajo es simplemente para ayudarle a entender una idea sobre la forma de localizar el centro de control y mando de una botnet, ¿Qué hacer después de que se totalmente de usted?.
Requisitos
1) Zombie PI lista
2) Snmpscanner (o un puerto de escáner)
3) Net-SNMP (snmpwalk)
4) conocimiento previo de la ayuda proviene de protocolo SNMP.
5) Tu cerebro.
Así que básicamente lo que hace es escanear tu lista de direcciones IP Zombie para ver que han abierto snmp, Usted puede hacer esto con el nmap (es decir: nmap-SV-iL zombieIPlist-p161). Esto tendrá el período de investigación de un archivo llamado zombieIPlist y de exploración para ver qué acogida tiene el puerto 161 abierto. THO incluso el puerto está abierto, doesnt significa que será capaz de obtener toda la información de la comunidad sin cadena, usted también puede hacerlo un poco más fácil y automatizada con una variedad de programas como
Código:
Onesixtyone - http://www.phreedom.org/solar/onesixtyone/ (linux)
SNScan - http://www.foundstone.com/resources/proddesc/snscan.htm (W32)
Estos programas de verificación de la propiedad intelectual un iluminado para ver el clima en la snmp está abierto y, a continuación, intenta bruteforce cadena de la comunidad (público, privado son comunes comunidad cuerdas), Una vez que haya usted los resultados de la ip + comunidad cadena entonces usted puede comenzar a snmpwalk MIB ( Management Information Base). Sólo snmpwalk TCP-MIB que tiene la información que necesitamos.
Concentrarse en sólo snmpwalking cajas de las ventanas de sus resultados, ya que parecen ser las únicas que ofrecen la información más útil. Aquí está un ejemplo de lo que ejecuta onesixtyone en una lista de zombie en busca de IPS para ver cuáles han permitido SNMP y una cadena de comunidad, ya sea público o privado parece
Código:
DNI @ Logan: ~ / onesixtyone-0.3.2 $. / onesixtyone-i ../leamington_4-8-07
Escaneo 59997 anfitriones, 2 comunidades
125.254.130.65 [público] Servidor Webcam
218.14.26.91 [público] No se puede descodificar paquetes SNMP: unrecognized entero longitud
218.16.190.44 [público] 218.56.145.194 [público] HOS-GW (la versión 2.2 la versión 02.18.00)
Tiempo de compilación: Aug 24 2004 21:09:22. BootROM Versión: 1.8 tiempo de lanzamiento a las 08:00, 2004/03/18 NetHammer G908: tablero de hardware, versión 1.30
218.69.216.104 [público] Router
218.75.93.150 [público] 218.202.158.134 [público] Intercambio de Cisco sistema operativo
Software IOS (tm) C2600 Software (C2600-IM), versión 12.0 (3) T3, LA LIBERACIÓN DE SOFTWARE (FC1) Copyright (c) 1986-1999 por Cisco Systems, Inc. Compilado jue 15-abr-99 15:41 por kpma
86.106.166.97 [público] Hardware: x86 Familia 15 Modelo 4 Stepping 1 AT / AT compatible --
Software: Windows 2000 Version 5.1 (Build 2600 multiprocesador Gratis)
Como podemos ver: 86.106.166.97 es una máquina Win2K con una comunidad de la cadena pública a fin de ejecutar snmpwalk permite en ella.
Código:
DNI @ Logan: ~ $ 86.106.166.97-c snmpwalk público tcp
Código:
TCP-MIB:: tcpRtoAlgorithm.0 = INTEGER: Vanj (4)
TCP-MIB:: tcpRtoMin.0 = INTEGER: 300 milisegundos
TCP-MIB:: tcpRtoMax.0 = INTEGER: 120000 milisegundos
TCP-MIB:: tcpMaxConn.0 = INTEGER: -1
TCP-MIB:: tcpActiveOpens.0 = Counter32: 12125
TCP-MIB:: tcpPassiveOpens.0 = Counter32: 2212
TCP-MIB:: tcpAttemptFails.0 = Counter32: 5377
TCP-MIB:: tcpEstabResets.0 = Counter32: 3305
TCP-MIB:: tcpCurrEstab.0 = Gauge32: 29
TCP-MIB:: tcpInSegs.0 = Counter32: 3486328
TCP-MIB:: tcpOutSegs.0 = Counter32: 3832754
TCP-MIB:: tcpRetransSegs.0 = Counter32: 147401
TCP-MIB:: tcpConnState.0.0.0.0.135.0.0.0.0.2092 = INTEGER: escuchar (2)
TCP-MIB:: tcpConnState.0.0.0.0.445.0.0.0.0.6258 = INTEGER: escuchar (2)
TCP-MIB:: tcpConnState.0.0.0.0.3898.0.0.0.0.32788 = INTEGER: escuchar (2)
TCP-MIB:: tcpConnState.0.0.0.0.5051.0.0.0.0.2208 = INTEGER: escuchar (2)
TCP-MIB:: tcpConnState.0.0.0.0.5101.0.0.0.0.2064 = INTEGER: escuchar (2)
TCP-MIB:: tcpConnState.86.106.166.97.135.86.106.166.147 .2190 = INTEGER: finWait2 (7)
TCP-MIB:: tcpConnState.86.106.166.97.135.86.106.166.147 .3446 = INTEGER: finWait2 (7)
TCP-MIB:: tcpConnState.86.106.166.97.139.0.0.0.0.2176 = INTEGER: escuchar (2)
TCP-MIB:: tcpConnState.86.106.166.97.1151.216.155.193.1 57,5050 = INTEGER: establecido (5)
TCP-MIB:: tcpConnState.86.106.166.97.1311.195.160.162.2 1,6969 = INTEGER: establecido (5)
TCP-MIB:: tcpConnState.86.106.166.97.1332.195.160.163.1 46,411 = INTEGER: establecido (5)
TCP-MIB:: tcpConnState.86.106.166.97.1343.68.142.233.17 0,5061 = INTEGER: establecido (5)
TCP-MIB:: tcpConnState.86.106.166.97.1556.208.65.153.25 3,80 = INTEGER: establecido (5)
TCP-MIB:: tcpConnState.86.106.166.97.1562.193.108.95.10 5,80 = INTEGER: establecido (5)
TCP-MIB:: tcpConnState.86.106.166.97.1568.72.14.221.99. 80 = INTEGER: establecido (5)
TCP-MIB:: tcpConnState.86.106.166.97.1572. 217.12.18.73.6667 = INTEGER: establecido (5)
esta última entrada de Bingo! vemos que el cliente 86.106.166.97 conexión con el servidor 217.12.18.73 en el puerto 6667, esa es nuestra conexión con el robot de control y mando el centro que en este caso es un ircd, una vez que ha resultado de onesixtyone o SNscan y tienen una lista de ventanas snmp cajas ejecutando con una cadena de comunicación "públicos" se puede poner todo en un archivo y automatizar su snmpwalking haciendo algo así como.
Código:
#! / bin / sh
i en `cat $ 1»; hacer (
echo $ i
snmpwalk-Os-v1-c $ i tcp.tcpConnTable.tcpConnEntry.tcpConnState público
); Hacer
Este gato un archivo lleno de ip's y snmpwalks cada valor en el archivo, se ejecuta por este
Código:
. / script.sh listofIPsthen puede tubería esta en un archivo para añadir más tarde con el examen de> fileOut al código.
Esta no es la única manera de localizar botnets, también puede utilizar un honeypot o simplemente tcpdump o packetsniff en una máquina que está infectada. Asegúrese de que tiene el pabellón conjunto ASCII cuando tcpdumping con el fin de captar la comunicación atrás y hacia delante entre el servidor y el cuadro de infección.
.................................................................................

No hay comentarios:
Publicar un comentario