Page cover

TCPDump: analizador de paquetes en red

¿Qué es TCPDUMP?

tcpdump es una herramienta de línea de comandos para capturar y analizar tráfico de red en sistemas Unix/Linux. Se trata de una herramienta muy ligera y potente, ideal para administradores de sistemas, ingenieros de redes y para tareas de seguridad informática.

Algunas de las funciones principales:

  • Captura paquetes en tiempo real desde una interfaz de red.

  • Filtra tráfico según IP, puerto, protocolo, rango de red, etc.

  • Permite guardar capturas en un archivo .pcap para analizarlas después (por ejemplo, con Wireshark).

  • Muestra el contenido de los paquetes en ASCII o hexadecimal.

  • Útil para depuración de conexiones HTTP, DNS, SSH, FTP, ICMP (ping), IPv6 y muchos más.


Instalación de TCPDump

Este programa es muy utilizado en todos los sistemas operativos basados en Linux, por lo tanto, vamos a poder instalarlo directamente desde los repositorios oficiales de cada distribución.

Ten en cuenta que este tipo de herramienta también se puede descargar directamente desde su página y compilarlo posteriormente. Aunque, esto es en el caso de que tu distribución no tuviera esta herramienta en sus repositorios, algo que resulta bastante extraño.

Por lo tanto, en el caso de Debian o Ubuntu, tenemos que poner la siguiente orden en la terminal:

sudo apt install tcpdump

Y nos saldrá algo así:

Una vez que lo tengamos instalado, podemos ejecutar la siguiente orden en la terminal para que nos muestre la ayuda:

tcpdump -h
  • En el caso de que necesites mucha más información sobre la herramienta, ver ejemplos de utilización y toda la documentación puedes recurrir al manual:

man tcpdump

Uso de la herramienta

Algunos de los comandos más básicos de tcpdump son los siguientes, apréndetelos!

  1. Ver interfaces disponibles:

    tcpdump -D

    (Lista las interfaces de red que puedes capturar).

  2. Capturar tráfico en una interfaz (ejemplo: eth0):

    sudo tcpdump -i eth0
  3. Guardar captura en un archivo .pcap:

    sudo tcpdump -i eth0 -w captura.pcap

    (Luego se puede abrir en Wireshark).

  4. Leer un archivo de captura:

    tcpdump -r captura.pcap

Casos de uso

A continuación tienes una lista de otros casos de uso, recuerda poner el sudo en todas:

Filtrar tráfico por IP
$ tcpdump src 192.168.0.1

Captura paquetes originarios de una IP concreta

Filtrar tráfico por IP de destino
$ tcpdump dst 192.168.0.1

Captura paquetes destinados a una dirección IP específica, por ejemplo, 192.168.0.1.

Filtrar tráfico por puerto
$ tcpdump port 80

Captura paquetes con un número de puerto específico, como el puerto 80 (HTTP).

Filtrar tráfico por protocolo
$ tcpdump icmp

Captura paquetes que usan un protocolo de red específico, como ICMP (ping).

Mostrar tráfico en formato ASCII
$ tcpdump -A

Muestra el contenido de los paquetes en formato ASCII para facilitar la lectura.

Mostrar tráfico en formato hexadecimal
$ tcpdump -X

Muestra el contenido de los paquetes en formato hexadecimal y ASCII.

Capturar un número específico de paquetes
$ tcpdump -c 100

Captura solo los primeros 100 paquetes y luego finaliza.

Capturar y mostrar tráfico IPv6
$ tcpdump -6

Captura y analiza paquetes IPv6 para un análisis más completo de la red.

Capturar tráfico en una interfaz específica
$ tcpdump -i wlan0

Captura el tráfico de red en una interfaz específica, por ejemplo, wlan0 (interfaz inalámbrica).

Capturar protocolo y puerto específicos
$ tcpdump tcp port 443

Captura solo los paquetes TCP en el puerto 443 (HTTPS) para su análisis.

Filtrar tráfico por origen y destino
$ tcpdump src 192.168.0.1 and dst 192.168.0.2

Captura paquetes entre una IP de origen específica (192.168.0.1) y una IP de destino específica (192.168.0.2).

Mostrar el tráfico capturado en formato de marca de tiempo:
$ tcpdump-tttt

Muestra los paquetes capturados con una marca de tiempo en un formato legible por humanos.

Opciones avanzadas

TCPdump ofrece capacidades avanzadas para un análisis de red en profundidad. Exploremos algunos ejemplos complejos que demuestran el poder y la flexibilidad de TCPdump para capturar y diseccionar paquetes de red:

Capturar cabeceras de peticiones y respuestas HTTP
$ tcpdump -i eth0 -s 0 -A -n 'tcp dst port 80'

Captura y muestra tráfico HTTP en el puerto 80, incluyendo tanto las cabeceras de petición como de respuesta (-A para salida en ASCII).

Filtrar tráfico por rango de IP y protocolo
$ tcpdump -i eth0 'net 192.168.0.0/24 and (tcp port 22 or icmp)'

Captura paquetes dentro del rango de IP 192.168.0.0/24, filtrando el tráfico SSH (puerto 22) y ICMP.

Capturar tráfico DNS y resolver nombres de host
$ tcpdump -i eth0 'udp port 53' -nnvvv

Captura paquetes DNS en el puerto 53 y muestra la salida detallada (-nnvvv), sin resolución de nombres de host.

Capturar tráfico del canal de control FTP
$ tcpdump -i eth0 -s 0 'tcp port 21'

Captura tráfico del canal de control FTP en el puerto 21, incluyendo los comandos y respuestas intercambiados entre el cliente y el servidor FTP.

Monitorizar conexiones SSH
$ tcpdump -i eth0 'tcp port 22' -l -e

Monitoriza conexiones SSH capturando paquetes en el puerto 22, mostrándolos en tiempo real (-l) e incluyendo cabeceras Ethernet (-e).

Si queremos aumentar la información que nos muestra a través de la línea de comandos, debemos aumentar el «verbose» de la siguiente forma:

tcpdump -i NOMBRE_INTERFAZ -v

Si queremos aumentarlo más, añadiremos más «v» detrás, de la siguiente forma:

tcpdump -i NOMBRE_INTERFAZ -vvv

Como ves, tcpdump es una herramienta avanzada más de captura y análisis de paquetes por terminal, lo bueno de esta, como siempre es la capacidad de integrarse en el sistema para automatizar detecciones por ejemplo.

Referencias:

Última actualización