martes, 13 de enero de 2009

AIX/Linux: tcpdump tips

Uno se hace adicto al comando tcpdump , no sólo para ver si hay tráfico TCP sino porque nos permite también ver tráfico UDP (aunque parezca un contrasentido en vista del nombre del comando), ARP etc.. asilado o conjunto e incluso detectar errores de comunicaciones, por ejemplo http.

En este post te cuento alguna cosilla que puede ser de utilidad si tienes que enfocar un problema visible a éste nivel.


Monitorización de tráfico
Primero hago la observación de que es posible el comando tcpdump no muestre nada:

# tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on en0, link-type 1, capture size 96 bytes

Es debido a que tenemos varias interfaces configuradas y UP. Se queda escuchando en la primera. Evidentemente la forma de obtener el tráfico que nos interesa indicándole la interfaz:
# tcpdump -i en4 host
Para evitar tráfico propio(nuestra conexión SSH) y paquetes inevitables que no aportan nada a la monitorización (DNS,arp, etc..):
# tcpdump not port 22 and not host dns1.dns.org and not arp
Y todo junto:
# tcpdump -i en4 not host dns1.dns.org and not arp and not port ldap and not port nfs
También sirve para monitorizar tráfico UDP:
# tcpdump -i en4 udp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on en4, link-type 1, capture size 96 bytes
13:19:43.176590 IP host1.rmc > host2.rmc: udp 88
13:19:43.176834 IP host2.rmc > host1.rmc: udp 88
[...]
Captura de tráfico

Con la siguiente formulación capturamos el tráfico sin límite de tamaño de paquete y lo tratamos en wireshark:
# tcpdump -s0 -i eth0 -w /tmp/traza.dump host host1.org

En la siguiente imagen, al cargar en wireshark la traza, aparecen unas líneas negras con color de carácter rojo que indican errores en el tráfico capturado (RST, DUP, etc...)..Permítaseme bajar la resolución para mantener la discrección en el ejemplo:


Además nos permite interpretar el stream de acuerdo al protocolo de alto nivel al que corresponde (Follow TCP Stream). En el ejemplo siguiente nos permite ver toda la traza desde la perspectiva del protocolo HTTP
.


Depuración de firewall con tcpdump
Podemos evitar al firewall perimetral que haga logging de algunas reglas si su única utilidad es comprobar si tal o cual tráfico atraviesa el cortafuegos sin problemas.

Siguiendo con la idea de usar tcpdump podemos montar un sencillo escenario donde hagamos mirror de los puertos interior y/ exterior del cortafuegos, conectando los puertos en mirror a nuestro equipo monitor y levantando las interfaces (con IP privada en AIX y sin IP en Linux). Activaremos la escucha tcpdump y pediremos a nuestros usuarios que generen el tráfico del que se tiene dudas. Lógicamente si atraviesa el firewall se verá tanto en una como en la otra interfaz. En caso contrario solo en una de ellas.
De esta manera tenemos incluso la certeza de que hay tráfico, lo cual significa que el routing es correcto, etc...

Es ciertamente peligroso si esto lo hace alguien malicioso en nuestra organización, ya que es la forma más poderosa de ataque hombre en medio.


No hay comentarios: