Cargando



Cómo utilizar tcpdump para monitorizar nuestra red

En este tutorial se verá cómo usar la herramienta tcpdump en Linux para monitorizar nuestra red y poder analizar los paquetes mediante ejemplos


jul 26 2016 13:29
Avanzado
jul 27 2016 12:58

En este tutorial vamos a ver cómo trabajar con tcpdump. Es una herramienta opensource para línea de comandos, sirve para monitorizar la red, podemos entenderlo como un analizador de paquetes que pasan por la red donde ejecutas el programa. Es utilizado en entornos Unix, aunque existe una variante para Windows llamada WinDump. Puede ser de vuestro interés un tutorial sobre EtherApe, que es una herramienta para ver el estado de nuestra red de manera gráfica.

 

En el tutorial se trabajará desde Linux, concretamente en Ubuntu 16.04, para que funcione la herramienta necesitamos ejecutarla con altos privilegios, salvo para ciertas opciones, que hará falta.

 

Podemos utilizar tcpdump para diversas tareas, tales como depurar nuestras aplicaciones de red, leer los datos que se envían entre usuarios por la red en la que nos encontramos, etc. Vamos a poner a continuación cómo es su sintaxis:

tcpdump [-aAbdDefhHIJKlLnNOpqRStuUvxX#] [ -B size ] [ -c count ]
	 [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]
	 [ -i interface ] [ -j tstamptype ] [ -M secret ] [ --number ]
	 [ -Q in|out|inout ]
	 [ -r file ] [ -s snaplen ] [ --time-stamp-precision precision ]
	 [ --immediate-mode ] [ -T type ] [ --version ] [ -V file ]
	 [ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z command ]
	 [ -Z user ] [ expression ]
Esta herramienta cuenta con un gran número de parámetros que podemos utilizar, aquí veremos algunos.

 

Algunos parámetros de tcpdump
  • -A: Imprime los paquetes en código ASCII.
  • -x: Imprime los paquetes en hexadecimal.
  • -D: Muestra las interfaces disponibles.
  • -c número: Cerrará el programa cuando se hayan capturado el número de paquetes indicado.
  • -i interface: El programa escucha en la interface indicada.
  • -I: Pone la interface en modo monitor.
  • -p: No pone la interface en modo promiscuo.
  • -f fichero: La salida se almacena en el fichero que le indiquemos.
  • -h: Muestra ayuda para su uso.

 

Si queremos ver todos los parámetros disponibles, en Linux usamos:

man tcpdump
Usar este comando es más completo que la ayuda que nos ofrece el parámetro -h o --help, que solo nos mostraría lo siguiente:

 

tcpdump_1.jpg

 

Vamos a ver 10 ejemplos para iniciarnos en esta potente herramienta.

 

Nota
En casi todos los ejemplos verás que se usa sudo antes de tcpdump, como se dijo antes, es necesario lanzarlo con privilegios altos, si estás usando la terminal cómo root entonces no hace falta poner nada delante de tcpdump. Si quieres detener la captura puedes combinar las teclas:

 

 

CTRL + C

 

 

 

Ejemplo 1

El ejemplo más sencillo usando el parámetro -A. Para ello ejecutamos:
tcpdump -A

tcpdump_2.jpg

 

Vamos a ver algún ejemplo con algo más de contenido.

 

Ejemplo 2

Ahora vamos a filtrar por host, y añadimos el modo verbose con el parámetro –v:
sudo tcpdump host 192.168.66.130 -v
A continuación se muestra una imagen en la que se utiliza el comando anterior:

 

tcpdump_3.jpg

 

Para la imagen he realizado un ping desde otra máquina, por eso podemos ver ICMP. Pasemos al tercer ejemplo.

 

Ejemplo 3

En este ejemplo vamos a mirar los paquetes del mismo host, solo que esta vez los paquetes que tengan que ver con el puerto 80:
sudo tcpdump host 192.168.66.130 and port 80 -v
Si miramos la captura veremos algo parecido a lo siguiente:

 

tcpdump_4.jpg

 

Se puede ver lo fácil que es manejar esta herramienta, prosigamos.

 

Ejemplo 4

Vamos a usar el ejemplo 3 y le vamos a modificar, queremos filtrar los paquetes con origen 192.168.66.130 que lleven destino al puerto 80:
sudo tcpdump src host 192.168.66.130 and dst port 80 -v
Vemos que hemos usado el condicional and, para que se cumplan las dos condiciones, también podemos usar or, si queremos que solo se cumpla una de ellas. Si miramos en las capturas vemos una petición POST.

 

tcpdump_5.jpg

 

Pasamos al quinto ejemplo.

 

Ejemplo 5

Vamos a capturar paquetes indicando una interface:
sudo tcpdump -i ens33
Nota
Tu interface probablemente sea eth0, puedes verlo con el comando ifconfig, pero también con el parámetro -D de tcpdump nos valdrá, lo veremos en el siguiente ejemplo.

 

A continuación podéis ver una imagen de la captura.

 

tcpdump_6.jpg

 

Vamos a por el siguiente.

 

Ejemplo 6

En este ejemplo lo único que vamos a hacer es mostrar las interfaces disponibles, para ello ejecutamos:
tcpdump -D
Para este caso no es necesario ser root.

 

tcpdump_8.jpg

 

Continuemos.

 

Ejemplo 7

Queremos capturar 3 paquetes que se dirijan con destino al puerto 1987 y cuando esto se produzca se detenga el programa:
sudo tcpdump -c 3 dst port 1987
Podemos apreciar en la siguiente imagen que solo se capturan 3 paquetes:

 

tcpdump_7.jpg

 

Vamos a ver otros pocos ejemplos.

 

Ejemplo 8

Cuando nos interese obtener todos los paquetes de tráfico tcp que no se dirijan a un determinado puerto, por ejemplo el puerto 80 ejecutaremos lo siguiente:
sudo tcpdump not port 80 and tcp
La salida es parecida, por lo que en este ejemplo no se pone captura. Vamos a por el penúltimo ejemplo.

 

Ejemplo 9

Vamos a capturar 2 paquetes de una interface determinada, y los mostraremos en formato hexadecimal, para ello debemos ejecutar:
sudo tcpdump -i ens33 -x -c 2
A continuación se puede ver la salida:

 

tcpdump_9.jpg

 

Bien vamos a pasar al último ejemplo del tutorial.

 

Ejemplo 10

En este ejemplo vamos a guardar la captura en un fichero para ojearla más tarde. Se limita la captura a 3 paquetes y se especifica una interface, así que ejecutaremos:
sudo tcpdump -w test.pcap -i ens33 -c 3
Veamos una captura de pantalla:

 

tcpdump_10.jpg

 

Si queremos leer ahora ese fichero, tenemos que ejecutar:

tcpdump -r test.pcap
Podemos apreciarlo en la siguiente imagen:

 

tcpdump_11.jpg

 

Hasta aquí ha llegado el tutorial sobre tcpdump, tiene muchas posibilidades y muchas opciones, así que para aprender a manejar bien está herramienta lo mejor es practicar y descubrir todas sus características poco a poco. Es posible que también te interese leer algo sobre la herramienta netcat, así que a continuación se deja un enlace a un tutorial con ejemplos:

 


¿Te ayudó este Tutorial?


1 Comentarios


Mario Silva
jul 29 2016 13:54

Gracias, a veces me olvido de tcpdump... Lo bien que viene para ver si se hacen las conexiones correctas.

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X