Jugando con tcpdump - BoomerNiX

jueves, 3 de mayo de 2018

Jugando con tcpdump

El post de esta semana es algo más relajado, veremos cómo usar tcpdump. Se trata de una herramienta open source que se utiliza a través de la línea de comandos, es un analizador de paquetes, que nos va a servir para monitorizar la red. Es utilizado en entornos Unix, aunque para Windows tenemos la herramienta con el nombre de WinDump.

Podemos utilizar este analizador para llevar a cabo tareas variadas, entre las que destaco la depuración de nuestras aplicaciones de red o la lectura de datos que se envían entre usuarios a través de la red.

Tcpdump posee un gran número de parámetros, aquí veremos solo algunos de ellos, para más información usar:

man tcpdump

Algunos parámetros de tcpdump

  • -A: Indica que imprima los paquetes en ASCII.
  • -x: Para imprimirlos en hexadecimal.
  • -D: Nos mostrará las interfaces disponibles.
  • -i <<interface>>: Sirve para indicar la interface en la que escuchar.
  • -c <<número>>: Cerrar el programa al capturar <<número>> de paquetes.
  • -I: Configura la interface en modo monitor.
  • -p: Modo no promiscuo.
  • -f <<fichero>>: La información se guarda en el <<fichero>> que indiquemos.
  • -h: Para obtener ayuda de la herramienta.

Ejemplos de uso de tcpdump

Vamos a ver una serie de ejemplos para familiarizarnos con tcpdump y empezar a entender la herramienta y sus usos.

Ejemplo 1

El primer ejemplo que mostramos es el más simple, usaremos el parámetro -A, el comando utilizado es el que sigue a continuación:

sudo tcpdump -A

Según va capturando los paquetes los va a ir mostrando en formato ASCII, se puede apreciar en la siguiente imagen:



Ejemplo 2

En este ejemplo se muestra como mostrar los paquetes filtrando por host, mostrando la información en hexadecimal y terminando la ejecución al capturar 2 paquetes.

 sudo tcpdump host 192.168.0.197 -x -c 2

La captura de ejecutarlo se puede apreciar en la siguiente imagen:


Ejemplo 3

En este ejemplo vamos a volver a filtrar por host, pero solo del puerto 80 y en modo verboso (-v), como necesitamos 2 que se cumplan dos condiciones usamos el condicional and.

sudo tcpdump host 192.168.0.197 and port 80 -v

Se omite imagen de este ejemplo, ya que no es nada relevante. En este ejemplo si quisiéramos que el puerto fuese solo destino ejecutaríamos lo siguiente:

sudo tcpdump src host 192.168.0.197 and dst port 80 -v

Ejemplo 4

Vamos a capturar paquetes indicando una interface, lo primero miramos las interfaces disponibles con el comando:

sudo tcpdump -D

En este caso seleccionamos la interface de localhost, y solo capturamos 1 paquete:

sudo tcpdump -i lo -c 1

A continuación, se puede ver una imagen de la captura del comando anterior:



Ejemplo 5

También podemos utilizar la negación, por ejemplo aquí la usamos para no capturar paquetes que tengan puerto 80, además indicamos el protocolo que queremos que se filtre, aquí tcp.

sudo tcpdump not port 80 and tcp

Ejemplo 6

Este es el último ejemplo, y aquí vamos a dirigir la salida a un fichero, en vez de mostrarlo en la pantalla, para poder verla más tarde. Se limita la captura a 5 paquetes, el fichero sera ciberbyte.pcap:

sudo tcpdump -w ciberbyte.pcap -c 5

Y a continuación mostramos una captura de ejecutarlo:


Si queremos leer ahora ese fichero, ejecutaremos el siguiente comando:

tcpdump -r ciberbyte.pcap

A continuación, una captura con la salida:



Aquí termina el tutorial, se ha podido ver lo potente que es esta herramienta, para profundizar y ser más ágil usándola lo único que queda es practicar e ir descubriendo todas sus opciones, esto solo es el inicio. Hasta la próxima.

No hay comentarios:

Publicar un comentario