Cómo usar tcpdump para la captura de paquetes

Cómo usar tcpdump para la captura de paquetes Imagen Destacada

Capturar paquetes es una forma muy útil de analizar el funcionamiento interno de una red. Hay una variedad de herramientas diferentes disponibles que se han desarrollado con este propósito. Una de ellas es tcpdump. Aquí te mostramos cómo aprovechar al máximo esta gran herramienta tanto para ingenieros de red como para testers de penetración.

Tabla de Contenidos

  • ¿Qué es tcpdump?
  • Instalación
  • Lo Básico
  • Especificando una Interfaz de Red
  • Especificando un Puerto/Rango de Puertos
  • Especificando un Host o Subred
  • Especificando Verbosidad
  • Guardando la Captura en un Archivo
  • Preguntas Frecuentes

También lee: Tor vs. VPN: ¿Es Uno Mejor que el Otro?

¿Qué es tcpdump?

tcpdump es una herramienta de análisis de paquetes de red que fue desarrollada y lanzada en 1988 por un equipo de científicos computacionales que trabajaban en el Lawrence Berkeley Laboratory y su Grupo de Investigación de Redes. Se utiliza para mostrar el contenido de los paquetes que una computadora envía y recibe. La utilidad viene con una variedad de opciones para hacer que la captura de paquetes sea más específica y centrada. Algunas de estas opciones incluyen diferentes protocolos de red e interfaces de red.

Instalación

Muchas distribuciones de Linux vienen con la utilidad instalada directamente. Sin embargo, si tu distribución preferida no lo tiene, la instalación es afortunadamente rápida y simple.

Si estás usando Ubuntu o Debian, por ejemplo, se puede instalar usando apt:

sudo apt install tcpdump

En CentOS, se hace lo mismo usando yum:

sudo yum install tcpdump

Y en Arch Linux usando pacman:

sudo pacman -S tcpdump

También lee: ¿Qué es Onion Routing y cómo puedes recuperar tu privacidad?

Lo Básico

Con tcpdump instalado, puedes echar un vistazo al manual utilizando la bandera -h:

tcpdump -h

Esto te muestra una lista de las banderas que puedes utilizar al usar la herramienta.

Comando de Ayuda de Tcpdump

Si deseas ver un manual más completo y detallado, puedes consultar la página del manual (man page) usando el comando man:

man tcpdump

Página del Manual de Tcpdump

Puedes ejecutar una captura de paquetes básica escribiendo:

tcpdump

Al usar el comando por sí solo y sin especificar una interfaz de red, la herramienta elegirá una de las interfaces disponibles en tu sistema.

Si no deseas que tcpdump resuelva los nombres de host y en su lugar quieres que solo muestre direcciones IP, puedes usar la bandera -n:

tcpdump -n

Si deseas especificar la cantidad de paquetes que quieres capturar, usa la bandera -c:

tcpdump -c[número de paquetes]

Especificando una Interfaz de Red

Puedes especificar tu elección de interfaz de red usando la bandera -i:

tcpdump -i[interfaz]

Dos de los nombres de interfaz de red más comunes en la mayoría de los sistemas son eth0 y wlan0:

tcpdump -i eth0  
tcpdump -i wlan0

Si deseas capturar datos en todas las interfaces, puedes usar la opción any:

tcpdump -i any

También lee: Conmutador Ethernet vs. Hub vs. Divisor: ¿Cuál es la Diferencia?

Especificando un Puerto/Rango de Puertos

Si solo deseas capturar datos que utilizan un número de puerto específico, utiliza el comando:

tcpdump -i[interfaz] port [número de puerto]

Supongamos que deseas capturar tráfico en la interfaz eth0 y para el puerto 443 (HTTPS). Escribe lo siguiente:

tcpdump -i eth0 port 443

Además, tcpdump te permite especificar un rango de puertos:

tcpdump -i[interfaz] portrange [rango de puertos]

Especificando un Host o Subred

Habrá ocasiones en las que desees limitar los paquetes capturados solo a los enviados/recibidos desde un host o subred específica. Afortunadamente, tcpdump te permite hacerlo.

Puedes especificar un host utilizando el siguiente formato:

tcpdump -i[interfaz] host [host]

Como ejemplo, captura tráfico en la interfaz eth0 y especifica el host como 127.0.0.1 (tu propia dirección IP de loopback):

tcpdump -i eth0 host 127.0.0.1

Si deseas especificar una subred de red utilizando la notación CIDR, puedes usar el siguiente formato:

tcpdump -i[interfaz] net [subred]

Por ejemplo:

tcpdump -i eth0 net 10.0.0.0/8

También puedes especificar directamente un host de origen:

tcpdump -i[interfaz] src [host]

Y un host de destino:

tcpdump -i[interfaz] dst [host]

También lee: Cómo ejecutar Nmap sin Root o Sudo

Especificando Verbosidad

tcpdump te permite especificar la verbosidad de la captura de paquetes. Esto es muy útil cuando no deseas ser abrumado por la cantidad de información durante una captura.

Hay tres opciones incrementales para la verbosidad, las banderas -v, -vv y -vvv:

tcpdump -i[interfaz] -v  
tcpdump -i[interfaz] -vv  
tcpdump -i[interfaz] -vvv

La primera opción especifica la menor verbosidad, mientras que la tercera opción especifica la mayor.

Guardando la Captura en un Archivo

A menudo es útil guardar los datos capturados en un archivo, para que puedan ser analizados e interpretados más adelante.

Esto se hace usando la bandera -w:

tcpdump -i[interfaz] -w[nombre de archivo]

Como ejemplo, puedes guardar los datos capturados en un archivo llamado “capture.txt”:

tcpdump -i eth0 -w capture.txt

También lee: Cómo abrir puertos y configurar el reenvío de puertos en tu enrutador

Preguntas Frecuentes

1. Recibí un error de “Operación no permitida”. ¿Cómo lo resuelvo?

El siguiente es un error común que los usuarios pueden recibir al intentar usar tcpdump:

Tcpdump Error Operación No Permitida

tcpdump te da este error cuando no tienes los permisos necesarios para realizar la captura de paquetes. En la mayoría de los escenarios, puedes resolver esto utilizando sudo. Por ejemplo:

sudo tcpdump -i eth0

2. ¿Cómo sé cuáles son las interfaces de red disponibles?

tcpdump tiene una funcionalidad incorporada que te permite verificar las interfaces de red disponibles en tu sistema.

Para comprobar las interfaces, usa la bandera -D:

tcpdump -D