Una de las actividades más comunes en la administación de una red o administración de seguridad es la del análisis de tráfico de dicha red. No sólo el tráfico que fluye a través de nuestra LAN si no que también debemos analizar el tráfico entrante y saliente hacia internet a tráves de los servicios que tengamos instalados, proxies, etc. Esto es así porque, como ya sabeis, es necesario para la detección de problemas y sobre todo para detectar trafico no esperado, presencia de puertas traseras, escaneos y cualquier otra intrusión.
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:
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)
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
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:
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)
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.
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:
C:\scan>windump -D
1.\Device\Packet_{604C8AE3-5FAC-45A5-BFAA-81175A8C32BF} (3Com EtherLink PCI)
2.\Device\Packet_NdisWanIp (NdisWan Adapter)
No queiro que me resuleva los nombres de host.
Cantidad de información que nos devuelve.
Filtros de Windump.
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:
C:\scan>windump host INFOGRAFIA3
Captura el tráfico de origen host INFOGRAFIA3
Código:
C:\scan>windump src host INFOGRAFIA3
Captura todo el tráfico cuyo puerto de destino sea 8080
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:
C:\scan>windump port 8080
Captura todo el tráfico icmp
Código:
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
Combinando filtros.
Código:
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
Bueno hay muchísimos filtros más y maneras de combinarlos, anidarlos, etc. si el tema este es de interés podemos seguir adelante.