martes, 27 de octubre de 2015

Miniguía tcpdump



¡Hola de nuevo!¿Qué de tiempo no?
Llevo dos meses queriendo redactar esta entrada con las anotaciones que me hice en verano en una hojita guarra que hacía las veces de chuleta. Lo reconozco, he estado a punto de perderla y/ o tirarla en varias ocasiones y quería redactar esta entrada para poder despreocuparme de que si la tiro o la pierdo.
Reconozco y me da mucho coraje (pero lo hago) mirar 7 veces lo mismo...Miro un tema porque me interesa y/ o me hace falta manejarlo, durante unos días genial "lo tengo fresquito". Al cabo de los días... De no usarlo... Uff! Olvido los parámetros, el orden de los mismos...
Pues a mirarlo otra vez, ahora no encuentras las fuentes que tanto te sirvieron la vez anterior...¡Se acabó!Me hago una chuletilla, miro algún libro, consulto en internet etc y lo pongo por escrito en mi blog. La próxima vez ya sé donde mirar directamente.
Con tcpdump me ha pasado ésto en varias ocasiones, por lo que a continuación describiré unos ejemplos básicos que nos servirán para despegar con tcpdump. En la Red hay multitud de material al respecto, y tcpdump es una herramienta para escribir una biblioteca.
Yo sólo pretendo proporcionar unos ejemplos básicos y a la vez útiles que nos permitirán resolver un porcentaje importante de los problemas a los que nos enfrentaremos, intentando hacer efectivo el principio de Pareto o del 80-20.Resumiéndolo muy mucho viene a decir que el 80% de lo que necesitas saber se encuentra en el 20% que resulta más importante. Ya me estoy yendo por las ramas otra vez.No aprendo.
Tcpdump es un sniffer de red supercompleto por línea de comandos muy útil porque no siempre se dispone de entorno gráfico en el que podríamos usar por ejemplo wireshark. Con él podremos ver los paquetes que viajan por la red/ segmento de red a las que están conectadas las interfaces de la máquina que ejecuta tcpdump y decidamos "escuchar".
Tcpdump proporciona una gran potencia y granularidad, por ejemplo hasta nivel de flags en cabeceras tcp entre otras cosas. Una pasada.
El scope de esta entrada no pretende abarcar tanto aunque dejaré algunos enlaces interesantes para profundizar o mirar algo más concreto algún día.
Empecemos.
Hacer notar que para ejecutar tcpdump es necesario ser/ tener permisos de root.

#tcpdump -D --> Saca una lista con las interfaces disponibles

#tcpdump -i eth0 --> Definimos la interfaz eth0 para "escuchar"

#tcpdump -i eth0 [tcp|udp|icmp] --> Filtra lo que escucha por eth0 por protocolo

#tcpdump -i eth0 not icmp --> Captura el trafico que escucha por eth0 menos el trafico icmp, especificado por not icmp

#tcpdump -i eth0 tcp port 80 --> Captura el tráfico tcp que escucha por eth0 que vaya por el puerto 80. Con port filtramos un puerto

#tcpdump -i eth0 -w captura --> Guarda el tráfico que "escucha" por eth0 en un fichero denominado captura

#tcpdump -r captura --> Lee la captura de tráfico recogida en el fichero captura

#tcpdump src 192.168.1.29 [and|or] dst 192.168.1.105
--> Captura trafico con origen (src) en 192.168.1.29 [and|or] destino (dst) 192.168.1.105

#tcpdump 'src 192.168.1.29 and (dst 192.168.1.105 and icmp)' --> Ojo con las expresiones anidadas, si no les ponemos comillas simples nos arrojarán un error.

#tcpdump ether [src|dst] AA:BB:CC:DD:EE:FF --> Captura el trafico con origen|destino (src|dst) con la MAC (ether) AA:BB:CC:DD:EE:FF 

#tcpdump -i eth0 [-v|-vv|-vvv] --> Captura el trafico que llega a eth0 con un nivel de detalle definido por -v,-vv,-vvv cada cual con más detalle

#tcpdump -i eth0 [-n|-nn] --> Captura el tráfico que llega a eth0 pero no resuelve los hostname con -n, o no resuleve ni los hostanames ni los puertos con -nn

#tcpdump -i eth0 -c100 --> Captura 100 paquetes de los que le llegan por la interface eth0 y se para.

#tcpdump -s 0 --> Captura todos los bytes que conformen los paquetes

Con una combinación de todo lo anterior podemos afrontar el filtrado de una gran cantidad de situaciones. Siempre nos quedará #man tcpdump.
Espero que os haya resultado interesante y útil la entradita.
Me encantaría completarla con las aportaciones de vuestros comentarios.
¿Alguien se anima?
¡Vamos!
Bueno...Al menos nos leemos en la próxima entrada ¿no?

 Fuentes y enlaces interesantes

2 comentarios:

  1. Yo añadiría a la chuletilla el uso de -s0 que es bastante util...

    También nombraría tshark y haría un resumencillo de sus opciones, que son muy interesantes. Sobre todo sus capacidades de hacer estadísticas (tshark -z help o para frikear "man tshark | less +"/^ *-z" -G")

    Saludos!

    ResponderEliminar
    Respuestas
    1. Muchas gracias Javi por tu aporte! Lo de la opción -s0 lo añadiré, y con respecto a tshark creo que ahora que lo dices le dedicaré una entrada completa.Gracias!!

      Eliminar

Radar COVID

Tras largo tiempo sin publicar una entrada en el Blog, me he animado a escribir acerca de una App que podría llegar a ser muy útil en el con...