Análisis de Tráfico de Red con Wireshark
Cuándo Usarlo
- Investigar sospechas de intrusiones en la red examinando evidencia a nivel de paquetes de tráfico de comando y control, exfiltración de datos o movimiento lateral.
- Diagnosticar problemas de rendimiento de red como retransmisiones, fragmentación o fallos de resolución DNS.
- Analizar patrones de comunicación de malware capturando tráfico de hosts aislados o en entornos sandbox.
- Validar reglas de firewall y sistemas de detección de intrusiones (IDS) confirmando qué tráfico realmente atraviesa los segmentos de red.
- Extraer archivos, credenciales o indicadores de compromiso (IOC) de sesiones de red capturadas.
No usar para capturar tráfico en redes sin autorización, interceptar comunicaciones privadas sin autoridad legal, o como sustituto de plataformas SIEM completas en monitoreo de producción.
Requisitos Previos
- Wireshark 4.0+ y la utilidad de línea de comandos tshark instalados.
- Privilegios de root/sudo o membresía en el grupo
wiresharkpara captura de paquetes en vivo. - Acceso a la interfaz de red (NIC física, puerto span o tap de red) al segmento monitoreado.
- Suficiente espacio en disco para los archivos de captura de paquetes (estimar 1 GB por minuto en enlaces gigabit ocupados).
- Familiaridad con los protocolos TCP/IP, HTTP, DNS, TLS y SMB a nivel de paquete.
Flujo de Trabajo
Paso 1: Configurar el Entorno de Captura
Configurar la interfaz de captura y los filtros para apuntar al tráfico relevante:
# Listar interfaces disponibles
tshark -D
# Iniciar captura en eth0 con un filtro de captura para limitar el alcance
tshark -i eth0 -f "host 10.10.5.23 and (port 80 or port 443 or port 445)" -w /tmp/capture.pcapng
# Capturar con búfer rotativo para gestionar el uso del disco (10 archivos, 100MB cada uno)
tshark -i eth0 -b filesize:102400 -b files:10 -w /tmp/rolling_capture.pcapng
# Capturar en múltiples interfaces simultáneamente
tshark -i eth0 -i eth1 -w /tmp/multi_interface.pcapng
Para la interfaz GUI de Wireshark, establecer el filtro de captura en el diálogo de Opciones de Captura antes de comenzar.
Paso 2: Aplicar Filtros de Visualización para Análisis Dirigido
# Filtrar tráfico HTTP que contenga agentes de usuario sospechosos
tshark -r capture.pcapng -Y "http.user_agent contains \"curl\" or http.user_agent contains \"Wget\""
# Encontrar consultas DNS a TLD sospechosos
tshark -r capture.pcapng -Y "dns.qry.name contains \".xyz\" or dns.qry.name contains \".top\" or dns.qry.name contains \".tk\""
# Identificar retransmisiones TCP que indican problemas de red
tshark -r capture.pcapng -Y "tcp.analysis.retransmission"
# Filtrar tráfico SMB para detección de movimiento lateral
tshark -r capture.pcapng -Y "smb2.cmd == 5 or smb2.cmd == 3" -T fields -e ip.src -e ip.dst -e smb2.filename
# Encontrar transmisión de credenciales en texto claro
tshark -r capture.pcapng -Y "ftp.request.command == \"PASS\" or http.authbasic"
# Detectar patrones de baliza (conexiones a intervalos regulares)
tshark -r capture.pcapng -Y "ip.dst == 203.0.113.50" -T fields -e frame.time_relative -e ip.src -e tcp.dstport
Paso 3: Análisis Profundo por Protocolo
# Seguir un flujo TCP para reconstruir una conversación
tshark -r capture.pcapng -q -z follow,tcp,ascii,0
# Analizar pares de solicitud/respuesta HTTP
tshark -r capture.pcapng -Y "http" -T fields -e frame.time -e ip.src -e ip.dst -e http.request.method -e http.request.uri -e http.response.code
# Extraer estadísticas de consultas/respuestas DNS
tshark -r capture.pcapng -q -z dns,tree
# Analizar handshakes TLS en busca de suites de cifrado débiles
tshark -r capture.pcapng -Y "tls.handshake.type == 2" -T fields -e ip.src -e ip.dst -e tls.handshake.ciphersuite
# Enumeración de acceso a archivos SMB
tshark -r capture.pcapng -Y "smb2" -T fields -e frame.time -e ip.src -e ip.dst -e smb2.filename -e smb2.cmd
Paso 4: Extraer Artefactos e IOCs
# Exportar objetos HTTP (archivos transferidos sobre HTTP)
tshark -r capture.pcapng --export-objects http,/tmp/http_objects/
# Exportar objetos SMB (archivos transferidos sobre SMB)
tshark -r capture.pcapng --export-objects smb,/tmp/smb_objects/
# Extraer todas las IPs de destino únicas para consulta de inteligencia de amenazas
tshark -r capture.pcapng -T fields -e ip.dst | sort -u > unique_dest_ips.txt
# Extraer información de certificados SSL/TLS
tshark -r capture.pcapng -Y "tls.handshake.type == 11" -T fields -e x509sat.uTF8String -e x509ce.dNSName
# Extraer todas las URL accedidas
tshark -r capture.pcapng -Y "http.request" -T fields -e http.host -e http.request.uri | sort -u > urls.txt
# Generar hash de archivos extraídos para coincidencia de IOCs
find /tmp/http_objects/ -type f -exec sha256sum {} \; > extracted_file_hashes.txt
Paso 5: Análisis Estadístico y Detección de Anomalías
# Estadísticas de jerarquía de protocolos
tshark -r capture.pcapng -q -z io,phs
# Estadísticas de conversaciones ordenadas por bytes
tshark -r capture.pcapng -q -z conv,tcp -z conv,udp
# Identificar los principales interlocutores
tshark -r capture.pcapng -q -z endpoints,ip
# Datos de gráfico IO (paquetes por segundo)
tshark -r capture.pcapng -q -z io,stat,1,"COUNT(frame) frame"
# Detectar patrones de escaneo de puertos
tshark -r capture.pcapng -Y "tcp.flags.syn == 1 and tcp.flags.ack == 0" -T fields -e ip.src -e tcp.dstport | sort | uniq -c | sort -rn | head -20
Paso 6: Generar Informes y Exportar Evidencia
# Exportar paquetes filtrados a un nuevo PCAP para preservación de evidencia
tshark -r capture.pcapng -Y "ip.addr == 10.10.5.23 and tcp.port == 4444" -w evidence_c2_traffic.pcapng
# Generar resumen de paquetes en formato CSV
tshark -r capture.pcapng -T fields -E header=y -E separator=, -e frame.number -e frame.time -e ip.src -e ip.dst -e ip.proto -e tcp.srcport -e tcp.dstport -e frame.len > traffic_summary.csv
# Crear salida PDML (XML) para análisis programático
tshark -r capture.pcapng -T pdml > capture_analysis.xml
# Calcular hash del archivo de captura para cadena de custodia
sha256sum capture.pcapng > capture_hash.txt
Conceptos Clave
| Término | Definición |
|---|---|
| Filtro de Captura (BPF) | Sintaxis de filtro Berkeley Packet Filter aplicada en tiempo de captura para limitar qué paquetes se registran, reduciendo el tamaño del archivo y mejorando el rendimiento |
| Filtro de Visualización | Sintaxis de filtro específica de Wireshark aplicada a paquetes ya capturados para un análisis enfocado sin alterar el archivo de captura |
| PCAPNG | Formato de captura de paquetes de nueva generación que soporta múltiples interfaces, resolución de nombres, anotaciones y metadatos en un solo archivo |
| Flujo TCP | Secuencia reensamblada de segmentos TCP que representa una conversación bidireccional completa entre dos puntos finales |
| Disector de Protocolo | Módulo de Wireshark que decodifica los campos y la estructura de un protocolo específico, permitiendo inspección profunda del contenido de los paquetes |
| Gráfico IO | Visualización de series temporales de tasas de paquetes o bytes durante la duración de la captura, útil para identificar picos de tráfico o balizas |
Herramientas y Sistemas
- Wireshark 4.0+: Analizador de paquetes basado en GUI con disectores de protocolo para más de 3,000 protocolos, reensamblaje de flujos y capacidades de exportación.
- tshark: Versión de línea de comandos de Wireshark para captura sin interfaz gráfica, procesamiento por lotes y tuberías de análisis scripteadas.
- tcpdump: Herramienta ligera de captura de paquetes para capturas rápidas en sistemas remotos sin dependencias de GUI.
- mergecap: Utilidad de Wireshark para combinar múltiples archivos de captura en un solo PCAP para análisis unificado.
- editcap: Utilidad de Wireshark para dividir, filtrar y convertir entre formatos de archivo de captura.
Escenarios Comunes
Escenario: Investigación de Sospecha de Exfiltración de Datos mediante Túneles DNS
Contexto: El equipo SOC detectó volúmenes inusualmente altos de consultas DNS desde una estación de trabajo (10.10.3.45) hacia un dominio externo. El SIEM alertó sobre consultas DNS promediando 200 por minuto en comparación con la línea base de 15. Se inició una captura de paquetes desde el tap de red de la VLAN de la estación de trabajo.
Enfoque:
- Capturar tráfico de la subred de la estación de trabajo usando
tshark -i eth2 -f "host 10.10.3.45 and port 53" -w dns_exfil_investigation.pcapng - Analizar patrones de consultas DNS:
tshark -r dns_exfil_investigation.pcapng -Y "dns.qry.name contains \"suspect-domain.xyz\"" -T fields -e frame.time -e dns.qry.name - Examinar etiquetas de subdominio en busca de datos codificados (subdominios largos tipo base64 indican tunelización):
tshark -r dns_exfil_investigation.pcapng -Y "dns.qry.type == 16" -T fields -e dns.qry.name -e dns.txt - Calcular el volumen de datos sumando las longitudes de los nombres de consulta para estimar el ancho de banda de exfiltración
- Extraer nombres de consulta únicos y decodificar subdominios base64 para recuperar el contenido exfiltrado
- Exportar paquetes de evidencia a un PCAP separado y generar hash SHA-256 para cadena de custodia
Errores comunes:
- Capturar tráfico sin filtrar en una red ocupada y quedarse sin espacio en disco antes de recolectar datos relevantes
- Usar filtros de visualización en lugar de filtros de captura, resultando en archivos masivos que son lentos de procesar
- Pasar por alto tráfico DNS cifrado (DoH/DoT) que evita la captura tradicional de DNS en el puerto 53
- No establecer la documentación del hash de captura y la cadena de custodia para la evidencia forense
Formato de Salida
## Informe de Análisis de Tráfico
**ID del Caso**: IR-2024-0847
**Archivo de Captura**: dns_exfil_investigation.pcapng
**SHA-256**: a3f2b8c1d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1
**Duración**: 2024-03-15 14:00:00 a 14:45:00 UTC
**Interfaz de Origen**: eth2 (puerto span VLAN 30)
### Hallazgos
**1. Tunelización DNS Confirmada**
- Origen: 10.10.3.45
- DNS de Destino: 8.8.8.8 (reenviado a ns1.suspect-domain.xyz)
- Volumen de consultas: 9,247 consultas en 45 minutos (205/min vs línea base 15/min)
- Longitud promedio de etiqueta de subdominio: 63 caracteres (datos codificados en base64)
- Datos exfiltrados estimados: ~2.3 MB mediante respuestas de registros TXT
**2. Indicadores de Compromiso**
- Dominio: suspect-domain.xyz (registrado 3 días antes)
- Servidor de nombres: ns1.suspect-domain.xyz (203.0.113.50)
- Patrón de consulta: Solicitudes de registro TXT con subdominios codificados en base64
- Patrón de respuesta: Registros TXT que contienen cargas útiles codificadas en base64