Skip to content
SecForge
Ilustración principal de: Wireshark vs tcpdump: elige la herramienta correcta y luego usa la otra igualmente.
PACKETS COMPARE

Wireshark vs tcpdump: elige la herramienta correcta y luego usa la otra igualmente.

Cuándo tirar de una GUI, cuándo tirar de una CLI y cómo hacer que trabajen juntas en una respuesta a incidentes real.

7 min de lectura SecForge Research

Wireshark y tcpdump no son una elección. Son un flujo de trabajo. tcpdump captura los bytes; Wireshark lee el pcap. Puedes hacerlo todo con cualquiera de los dos, pero irás lento. Lo acertado es aprender en qué destaca cada uno y dejar que haga justo eso.

El reparto, en una tabla

TareaHerramienta
Capturar en una máquina remota / headlesstcpdump
Capturar con un filtro de kernel ajustado y poca CPUtcpdump
Leer un pcap y seguir un flujo TCPWireshark
Decodificar un protocolo poco común (DICOM, BACnet, SCADA)Wireshark
Extraer bytes de una captura de 50 GB sin abrirlatcpdump / tshark
Enseñarle a alguien no técnico qué está fallandoWireshark

Dos lenguajes de filtros, no los confundas

Aquí es donde la mayoría se hace daño. Hay dos lenguajes de filtros y se parecen, pero no son lo mismo.

  • Filtros BPF (de captura) — se aplican en el kernel y deciden qué entra en el búfer de captura. Los usan tcpdump y el diálogo de captura de Wireshark. Se parecen a tcp port 443.
  • Filtros de visualización — se aplican sobre un pcap ya cargado y deciden qué se muestra. Solo Wireshark y tshark. Se parecen a tcp.port == 443.

Misma intención, sintaxis distinta, semántica distinta. BPF no puede llegar a las capas de aplicación; los filtros de visualización sí. Usar por error un filtro de visualización en el momento de la captura produce un pcap vacío sin avisar.

Manual de captura

# Búfer circular: conserva el último 1 GB en 10 ficheros de 100 MB cada uno
sudo tcpdump -i eth0 -w cap-%Y%m%d-%H%M%S.pcap -W 10 -C 100

# Capturar solo el tráfico hacia/desde un host, sin ruido de DNS
sudo tcpdump -i eth0 'host 10.0.0.42 and not port 53' -w host42.pcap

# Recortar cada paquete para que los datos personales nunca lleguen al disco
sudo tcpdump -i eth0 -s 96 -w headers-only.pcap

Lo último importa más de lo que la gente cree. Una captura con las cargas útiles completas en una estación de trabajo compartida es un incidente de protección de datos esperando a ocurrir. -s 96 conserva las cabeceras y un pedacito de la carga útil — suficiente para depurar la mayoría de protocolos, nada para recuperar contenido.

Leer un pcap sin GUI con tshark

El hermano de línea de comandos de Wireshark. Los mismos disectores, la misma sintaxis de filtros de visualización. Te deja hacer la mitad de aquello para lo que la gente abre Wireshark, en una shell, en un servidor.

# Los 10 hosts que más bytes han enviado
tshark -r cap.pcap -q -z conv,ip | head -25

# Todos los SNI de TLS del fichero
tshark -r cap.pcap -Y 'tls.handshake.type == 1' -T fields -e tls.handshake.extensions_server_name | sort -u

# Todas las rutas de las peticiones HTTP
tshark -r cap.pcap -Y http.request -T fields -e http.request.full_uri

Cuándo Wireshark se gana el sueldo

«Follow TCP stream» es la función de la que no puedes prescindir y que no puedes replicar en cinco líneas de script. Dos clics convierten mil paquetes en una transcripción limpia de una sesión HTTP, SMTP o Telnet. Decodificada, en orden y con la codificación correcta adivinada.

La biblioteca de disectores de protocolos de Wireshark es la otra razón. Protocolos industriales y médicos de nicho — Modbus, BACnet, DICOM, S7 — se decodifican de fábrica. tcpdump te muestra bytes; Wireshark te muestra el significado.

Reglas operativas

  • Nunca ejecutes Wireshark como root sobre una captura de producción. Captura con tcpdump como root y lee el pcap con tu usuario.
  • Usa editcap (viene con Wireshark) para recortar un pcap gigante por ventana temporal antes de abrirlo. Wireshark abrirá ficheros de varios GB; no será divertido.
  • Si un compañero te pide «el paquete», envía el pcap más pequeño que demuestre el problema. El BPF de tcpdump te deja construirlo en una sola línea.
  • Elimina antes los secretos: tshark -F pcap -r in.pcap -w out.pcap -Y 'not (tcp.port == 22)' descarta todos los paquetes SSH.

La conclusión

tcpdump captura. Wireshark explica. tshark automatiza ambos. No eliges — combinas.