Wireshark es el analizador de protocolos más usado del mundo. Con él puedes ver exactamente qué pasa en tu red a nivel de paquete — desde troubleshooting hasta análisis forense. Esta guía te enseña a usarlo desde cero.
¿Qué es Wireshark?
Wireshark es un analizador de protocolos de red (packet sniffer) de código abierto que captura y muestra el contenido de los paquetes que pasan por una interfaz de red. Lo usan ingenieros de redes, administradores de sistemas, pentesters y desarrolladores para diagnosticar problemas, analizar comportamiento de protocolos y detectar amenazas.
Instalación
# Ubuntu/Debian
sudo apt-get install wireshark
# Permitir captura sin root (agrega tu usuario al grupo wireshark)
sudo usermod -aG wireshark $USER
# Cerrar sesión y volver a abrir
# macOS (con Homebrew)
brew install wireshark
# Windows: descarga el instalador desde wireshark.org
Interfaz de Wireshark
La ventana principal tiene tres paneles:
- Lista de paquetes (arriba): muestra cada paquete capturado con número, tiempo, IPs, protocolo y resumen
- Detalles del paquete (centro): árbol expandible con cada capa del modelo OSI
- Bytes del paquete (abajo): el contenido en hexadecimal y ASCII
Filtros de captura
Los filtros de captura se aplican antes de capturar — reducen el volumen de datos. Usan sintaxis BPF (Berkeley Packet Filter):
# Solo tráfico de/hacia una IP específica
host 192.168.1.100
# Solo tráfico HTTP
port 80
# Solo tráfico TCP entre dos hosts
src host 192.168.1.1 and dst host 8.8.8.8
# Excluir tráfico ARP y broadcast
not arp and not broadcast
# Solo paquetes mayores a 1000 bytes
greater 1000
Filtros de visualización
Los filtros de visualización se aplican después de capturar — filtran qué se muestra. Son más potentes y flexibles:
# Mostrar solo HTTP
http
# Mostrar solo DNS
dns
# Filtrar por IP origen
ip.src == 192.168.1.100
# Filtrar por IP destino
ip.dst == 8.8.8.8
# Mostrar solo TCP SYN (inicio de conexiones)
tcp.flags.syn == 1 and tcp.flags.ack == 0
# Buscar texto en el contenido
frame contains "password"
# Mostrar solo errores TCP
tcp.analysis.flags
# HTTP con código de respuesta 200
http.response.code == 200
# Combinar filtros
http and ip.src == 192.168.1.50
Casos de uso prácticos
Detectar credenciales en texto plano
# Capturar tráfico FTP (puerto 21, sin cifrado)
port 21
# En el filtro de visualización buscar comandos USER y PASS
ftp.request.command == "USER" or ftp.request.command == "PASS"
Analizar el handshake TCP
# Ver el three-way handshake completo
tcp.flags.syn == 1 or tcp.flags.ack == 1
# Filtrar una conversación TCP específica
# Clic derecho en un paquete → Follow → TCP Stream
Diagnosticar latencia
# Ver tiempo entre paquetes en Statistics → I/O Graph
# O activar columna "Time since previous displayed packet"
Tshark: Wireshark por línea de comandos
# Capturar 100 paquetes en interfaz eth0
tshark -i eth0 -c 100 -w captura.pcap
# Leer un archivo pcap y mostrar solo HTTP
tshark -r captura.pcap -Y "http"
# Extraer campos específicos
tshark -r captura.pcap -Y "http.request" \
-T fields -e http.host -e http.request.uri
"Si no puedes ver el tráfico, no puedes entender tu red. Wireshark te da rayos X para tu infraestructura."