Existen muchas herramientas que pueden sernos muy últiles dependiendo del S.O. y tipo de red por ejemplo. Una de estas herramientas, un sniffer de red, basada en la librería de captura de paquetes (pcap) y que además funciona en plataformas tanto windows como LInux/UNIX es TCPDump ( Linux ) / Windump ( Windows ) esta última hace uso de la librería Winpcap. Estas dos librerías son unsadas por otras herramientas como Ethereal o Snort e incluyen un lenguaje de filtro común para todos. Quizás Windump/TCPDump no sea la herramienta perfecta atendiendo a la interpretación fácil de los datos reportados, pero si que es de las mejores en cuanto a su potencia y cantidad de datos de que nosp provee.
Una vez instalada la libreria y el programa en si, tan sólo debemos de introducir en la línea de comandos: ( haremos referancia a Windump, para windows, aunque casi todo es válido para su versión Linux.
Código:
vaya, a parte de unas peticiones ARP, parece que no nos enteramos de casi nada. A aparte de esto windump capturará TODOS los datos de tráfico de nuestra red y puede ser que los datos a través de la consola vayan tan rápido y de tal cantidad que nos sea imposible discifrar o ver algo C:\scan>windump windump: listening on\Device\Packet_{604C8AE3-5FAC-45A 17:18:16.375082 FIERY.138 > 192.168.4.255.138: >>> NBT UDP PACKET(138) Res=0x1102 ID=0xE IP=192 (0xc0 0xeb) Port=138 (0x8a) Length=187 (0xbb) Res2=0x0 SourceName=FIERY X2E NameType=0x00 (Workstation) DestName= WARNING: Short packet. Try increasing the snap length 17:18:16.679312 INFO2.1027 > INFO8.3233: udp 256 17:18:16.792878 arp who-has FIERY tell INFOGRAFIA3 17:18:16.793204 arp reply FIERY is-at 0:c0:85:27:39:15 17:18:16.793217 INFOGRAFIA3.137 > FIERY.137: >>> NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST 17:18:16.793729 FIERY.137 > INFOGRAFIA3.137: >>> NBT UDP PACKET(137): QUERY; POSITIVE; RESPONSE; UNICAST 17:18:16.898314 INFO8.3233 > INFO2.3234: udp 256 17:18:17.185571 0:a0:c9:1c:c1:f5 > Broadcast sap e0 ui/C >>> Unknown IPX Data: (43 bytes)
Veamos entonces como funciona Windump, como interpretar sus datos y como sacar el máximo partido de el.
NOTA: Esta mini-explicación de windump es muy básica y me saltaré algunas cosas, si hay interes por este tema pues profundizamos lo que haga falta.
Hay que decir que windump interpreta los datos dependiendo del protocolo involucrado en la captura, esto es obvio, ya que no es lo mismo una captura de consulta DNS que un inicio de sesión o establecimiento de conexión TCP o una captura icmp. Aunque las diferencias son pocas. En una captura icmp aparece la palabra icmp, sin embargo en una captura tcp no aparece esta palabra.
Veamos el establecimiento de una conexión TCP.
Código:
Estas tres trazan se refieren a un inicio de sesión de TCP. En este caso INFOGRAFIA3 ( que soy yo mismo ) quiere iniciar una sesion con ABANCECOMU al proxy establecido en el para consultar una determinda página web usando http. Vemos el modelo de establecimiento de conexión a tres bandas de forma muy clara.9:24:00.494825 INFOGRAFIA3.1087 > ABANCECOMU.8080: S 2740385268:2740385268(0) w in 64240 <mss 1460,nop,nop,sackOK> (DF) 09:24:00.495018 ABANCECOMU.8080 > INFOGRAFIA3.1087: S 4260015886:4260015886(0) a ck 2740385269 win 64240 <mss 1460,nop,nop,sackOK> (DF) 09:24:00.495039 INFOGRAFIA3.1087 > ABANCECOMU.8080: . ack 1 win 64240 (DF)
El formato para la salida de los datos es la siguiente:
fecha src > dst: flags data-sqno ack window urgent options
fecha nos da la hora en que se produjo el evento en formato
hora:minutos:segundos.microsegundos o milisegundos
src y dst son las direcciones IP y puertos TCP/UDP de las conexiones fuente y
destino.
> dirección de flujo de los datos
flags son una combinación de los posibles banderas de un segmento/datagrama TCP/UDP: S (SYN), F (FIN), P (PUSH), R (RST) y "." (no hay flags).
data-sqno1describe el número de secuencia de la porción de datos.
ack es el número de secuencia del próximo byte que espera recibir el otro extremo TCP/UDP.
window es el tamaño de la ventana que advierte el receptor al transmisor.
urgent indica que hay datos urgentes en ese segmento/datagrama.
options son las opciones TCP que suelen estar entre corchetes del tipo < >, por ejemplo el tamaño máximo del segmento (ej. <mss 1460,nop,nop,sackOK>)
Hemos dicho que el ejemplo anterior trata de una conmexión TCp. Pero como se realiza esta:
Una conexión TCP se realiza en tres pasos. Es lo que técnicamente se llama three-way handshake:
1. En el sistema / host que inicia la conexión o cliente (INFOGRAFIA3.1087), envía un paquete de SYN con un número de secuencia inicial (740385268) y final (740385268) asociado a esta conexión al sistema / host destinatario o servidor (ABANCECOMU.8080). Como no se transmiten datos, el numero de secuencia inicial y final son los mismos y los datos 0 (0).
2. Este responde con un paquete SYN-ACK (acuse de recibo) confirmando la recepción del SYN inicial enviado por (INFOGRAFIA3.1087) y enviándole a su vez su propio número de secuencia inicial (4260015886) y final (4260015886) y ACK+1 (2740385269).
Estos números de secuencias son absolutos. Windump/TCPDump para no mostrar números demasiado grandes muestra números desecuencia relativos. En el paso siguiente pasa esto mismo.
3. Para finalizar, el cliente (INFOGRAFIA3.1087) reconoce la recepción del SYN del servidor (ABANCECOMU.8080) mediante el envío de un ACK (1). Vemos que hay un "." con lo que deducimos que no hay flag (en este caso SYN). Este es el momento en que queda establecida la conexión. Ya se puede iniciar la transferencia de datos entre (INFOGRAFIA3.1087) y (ABANCECOMU.8080).
Veremos más adelantes capturas de consultas DN0, UDP, escaneos de puertos, troyanos, etc.
Algunas opciones de Windump.
Para ver las interfaces de que disponemos:
Código:
No queiro que me resuleva los nombres de host.C:\scan>windump -D 1.\Device\Packet_{604C8AE3-5FAC-45A5-BFAA-81175A8C32BF} (3Com EtherLink PCI) 2.\Device\Packet_NdisWanIp (NdisWan Adapter)
Código:
Cantidad de información que nos devuelve.C:\scan>windump -n
Código:
Filtros de Windump.C:\scan>windump -v o -vv
Puede ser que no nos interese ver todo el tráfico, sino sólo un determinado protocolo o un sólo host, etc.
Captura el tráfico de origen y destino sólo en el host INFOGRAFIA3 (se puede poner tambien la IP)
Código:
Captura el tráfico de origen host INFOGRAFIA3 C:\scan>windump host INFOGRAFIA3
Código:
Captura todo el tráfico cuyo puerto de destino sea 8080C:\scan>windump src host INFOGRAFIA3
Código:
C:\scan>windump dst port 8080 windump: listening on\Device\Packet_{604C8AE3-5FAC-45A5-BFAA-81175A8C32BF} 09:50:18.618057 INFOGRAFIA3.3039 > ABANCECOMU.8080: S 3194034207:3194034207(0) w in 64240 <mss 1460,nop,nop,sackOK> (DF) 09:50:18.618224 INFOGRAFIA3.3039 > ABANCECOMU.8080: . ack 1114838386 win 64240 ( DF) 09:50:18.643251 INFOGRAFIA3.3039 > ABANCECOMU.8080: P 0:611(611) ack 1 win 64240 (DF)
Captura todo el tráfico cuyo puerto de origen o destino sea 8080
Código:
Captura todo el tráfico icmpC:\scan>windump port 8080
Código:
Combinando filtros.C:\scan>windump icmp windump: listening on\Device\Packet_{604C8AE3-5FAC-45A5-BFAA-81175A8C32BF} 09:53:00.509648 SERVING > 192.168.2.75: icmp: echo request 09:53:00.509729 192.168.2.75 > SERVING: icmp: echo reply 09:53:00.811224 SERVING > INGEN12: icmp: echo request 09:53:00.811410 INGEN12 > SERVING: icmp: echo reply
Código:
Bueno hay muchísimos filtros más y maneras de combinarlos, anidarlos, etc. si el tema este es de interés podemos seguir adelante. C:\scan>windump tcp and port 8080 windump: listening on\Device\Packet_{604C8AE3-5FAC-45A5-BFAA-8117 09:55:49.116908 ABANCECOMU.8080 > INFO8.3132: P 1224555679:122455 805272 win 63910 09:55:49.119780 ABANCECOMU.8080 > INFO8.3132: FP 348:802(454) ack 09:55:49.119872 INFO8.3132 > ABANCECOMU.8080: . ack 803 win 7958 09:55:49.211881 INFO8.3132 > ABANCECOMU.8080: F 1:1(0) ack 803 wi 09:55:49.211970 ABANCECOMU.8080 > INFO8.3132: . ack 2 win 63910