Wireshark es el analizador de protocolos de red (sniffer) más utilizado del mundo. Captura el tráfico de la red en tiempo real y lo desglosa capa por capa (según el modelo OSI), permitiéndote ver exactamente qué está ocurriendo a nivel microscópico. En ciberseguridad, se utiliza para análisis forense de incidentes (DFIR), análisis de malware, y detección de fugas de datos.
Para capturar tráfico, tu tarjeta de red debe ponerse en Modo Promiscuo (escuchar todos los paquetes que viajan por el cable/aire, no solo los dirigidos a ti). Las capturas se guardan en archivos .pcap o el más moderno .pcapng.
# Captura desde la terminal usando tshark (La versión CLI de Wireshark):
tshark -i eth0
# Capturar y guardar en un archivo para análisis posterior:
tshark -i eth0 -w captura_incidente.pcapng
# Leer un archivo .pcapng:
tshark -r captura_incidente.pcapng
Se aplican ANTES de capturar. Sirven para no llenar el disco duro si estás en una red de 10Gbps. Si el paquete no coincide, se descarta y nunca se guarda.
# Capturar solo tráfico hacia o desde el servidor web:
tshark -i eth0 -f "host 192.168.1.50"
# Capturar solo tráfico TCP (ignorando UDP y ARP):
tshark -i eth0 -f "tcp"
# No capturar mi propia conexión SSH para evitar ruido infinito:
tshark -i eth0 -f "not port 22"
Se aplican DESPUÉS de capturar, directamente en la barra superior de Wireshark. Son el bisturí del analista forense. No borran paquetes, solo ocultan los que no coinciden.
# Filtros por Dirección IP:
ip.addr == 192.168.1.100 # Origen o Destino
ip.src == 10.0.0.5 # Solo si es Origen (Source)
ip.dst == 8.8.8.8 # Solo si es Destino (Destination)
ip.addr >= 192.168.1.1 and ip.addr <= 192.168.1.50 # Rangos
# Filtros por Protocolo y Puerto:
tcp.port == 443 # HTTPS
udp.dstport == 53 # Consultas DNS
http # Todo el tráfico HTTP (en claro)
# Filtrar por contenido del Payload (Búsqueda de cadenas de texto):
frame contains "password"
http.request.uri contains "admin"
tcp.payload contains "MZ" # Detectar firmas de ejecutables Windows (.exe)
Tienes un archivo PCAP de 2GB de un incidente. Sabes que la IP infectada 192.168.1.100 estableció una conexión segura y exfiltró datos al puerto 443. Escribe el Display Filter exacto para aislar únicamente el paquete que inició esta conexión (el paquete TCP SYN).
Hoy en día, casi todo viaja cifrado. Wireshark solo verá "Application Data" incomprensible. Sin embargo, si tienes control sobre el cliente o el servidor, puedes desencriptarlo.
# 1. Configurar la variable de entorno en el equipo víctima antes de que abra el navegador:
export SSLKEYLOGFILE=/tmp/sslkeylog.log
# 2. El navegador (Chrome/Firefox) guardará las claves criptográficas simétricas ahí.
# 3. En Wireshark ve a: Edit -> Preferences -> Protocols -> TLS
# 4. En el campo "(Pre)-Master-Secret log filename", carga el archivo sslkeylog.log.
# ¡Magia! El tráfico HTTPS ahora aparecerá como HTTP normal en texto claro.
Si un usuario descargó un malware por HTTP o FTP sin cifrar, el archivo viaja fragmentado en los paquetes. Wireshark puede reconstruirlo.
update.exe) y dale a "Save". Ahora puedes enviarlo a VirusTotal.Para detectar escaneos de Nmap o ataques DoS, debes entender los "Flags" de TCP. Toda conexión normal empieza con SYN -> SYN,ACK -> ACK.
# Detectar un escaneo sigiloso (Nmap SYN Scan):
tcp.flags.syn == 1 and tcp.flags.ack == 0
# Detectar un ataque de denegación de servicio o caída de red (Paquetes Reset):
tcp.flags.reset == 1
# Ver retransmisiones (indica congestión o pérdida de paquetes en la red):
tcp.analysis.retransmission
A veces un PCAP es tan grande (varios Gigabytes) que abrirlo en la interfaz gráfica congela el ordenador. tshark te permite parsear datos masivos extrayendo solo lo necesario.
# Mostrar solo IPs de origen y URLs visitadas (Ideal para sacar un listado de dominios):
tshark -r captura.pcap -Y "http.request" -T fields -e ip.src -e http.host
# Jerarquía de protocolos (¿De qué está compuesto este PCAP?):
tshark -r captura.pcap -q -z io,phs
# Top Talkers (¿Qué IP generó más tráfico?):
tshark -r captura.pcap -q -z endpoints,ip