IntermedioDFIRnetwork forensicsWiresharkZeekPCAP

Network Forensics: Analisis de PCAP con Wireshark y Zeek

Guia practica de forense de red: captura y analisis de trafico con PCAP, Wireshark y Zeek. Tecnicas de analisis de flujos, deteccion de C2, exfiltracion.

MalwareIntel Research··11 min lectura
Serie: DFIR — Parte 9

La red como fuente de evidencia

TL;DR: La forense de red es el proceso de captura y análisis de tráfico para identificar actividades maliciosas como la exfiltración de datos o el comando y control. A diferencia de la forense de host, el uso de archivos PCAP permite reconstruir el 100% de la comunicación, siendo vital en dispositivos IoT que no generan logs locales. Se recomienda emplear una combinación de Wireshark y Zeek para obtener visibilidad profunda y detectar intrusiones de forma efectiva.

Cuando un atacante compromete un sistema, necesita comunicarse con el exterior: descargar herramientas, recibir comandos, exfiltrar datos. Cada una de estas acciones genera tráfico de red que puede capturarse, almacenarse y analizarse.

La forense de red complementa la forense de host. Mientras que los artefactos del sistema operativo muestran que paso en el endpoint, la captura de red muestra que se comunico con quien, cuantos datos se transfirieron y que protocolos se usaron. En muchos casos, la evidencia de red es la única disponible, especialmente cuando el atacante ha limpiado los artefactos del host o cuando los sistemas comprometidos son dispositivos IoT o appliances sin capacidad forense de host.

Captura de tráfico: PCAP y alternativas

Formato PCAP

PCAP (Packet Capture) es el formato estandar para almacenar capturas de tráfico de red. Un fichero PCAP contiene la copia completa de cada paquete capturado, incluyendo las cabeceras de todos los niveles del modelo OSI y el payload.

El formato PCAP-NG (Next Generation) es una evolucion que soporta multiples interfaces de captura, comentarios, metadatos y resolución de nombres. La mayoria de herramientas modernas soportan ambos formatos.

Puntos de captura

La ubicacion del punto de captura determina que tráfico es visible:

En el endpoint (host-based): tcpdump, Wireshark o el agente de un EDR capturan el tráfico del host específico. Útil para investigar un sistema comprometido concreto, pero no proporciona visibilidad de la red completa.

En el switch (SPAN port / port mirroring): un puerto del switch duplica el tráfico de otros puertos o VLANs. Permite capturar tráfico de multiples hosts sin instalar agentes.

En el TAP de red: un dispositivo fisico que copia el tráfico de un segmento de red sin introducir latencia ni puntos de fallo. Es la opcion preferida para captura forense porque garantiza que no se pierden paquetes.

En el firewall o proxy: muchos firewalls de siguiente generación pueden capturar tráfico en formato PCAP. Los proxies proporcionan visibilidad del tráfico HTTP/HTTPS descifrado.

Captura con tcpdump

# Captura basica en la interfaz eth0
tcpdump -i eth0 -w captura.pcap

# Captura con filtro (solo trafico hacia/desde una IP sospechosa)
tcpdump -i eth0 host 45.33.32.156 -w sospechoso.pcap

# Captura con rotacion de ficheros (100 MB por fichero, max 50 ficheros)
tcpdump -i eth0 -w captura_%Y%m%d_%H%M%S.pcap -C 100 -W 50

# Captura sin resolucion DNS (mas rapido y no genera trafico DNS adicional)
tcpdump -i eth0 -nn -w captura.pcap

# Captura con filtro BPF avanzado
tcpdump -i eth0 'tcp port 443 and not host 192.168.1.0/24' -w https_externo.pcap

Analisis con Wireshark

Wireshark es la herramienta de referencia para analisis visual de capturas de red. Su interfaz grafica permite explorar paquetes individuales, seguir flujos de comunicacion y aplicar filtros complejos.

Filtros de visualizacion esenciales para DFIR

# Trafico DNS (buscar tunneling o consultas sospechosas)
dns

# Trafico HTTP (requests y responses)
http

# Trafico hacia/desde una IP especifica
ip.addr == 45.33.32.156

# Conexiones TCP nuevas (SYN)
tcp.flags.syn == 1 and tcp.flags.ack == 0

# Trafico TLS con SNI (Server Name Indication)
tls.handshake.extensions_server_name

# Trafico DNS con respuesta NXDOMAIN (dominio no existe)
dns.flags.rcode == 3

# Paquetes grandes (posible exfiltracion)
frame.len > 1400

# Trafico en puertos no estandar
tcp.port != 80 and tcp.port != 443 and tcp.port != 22 and tcp.port != 53

Follow TCP Stream

La funcion Follow TCP Stream (click derecho sobre un paquete, Follow, TCP Stream) reconstruye la conversacion completa entre dos endpoints. Esto permite ver el contenido de sesiones HTTP, FTP, SMTP y otros protocolos en texto plano.

Para protocolos cifrados (HTTPS, SSH), Follow Stream muestra datos cifrados que no son directamente legibles. Sin embargo, los metadatos de la conexion (IPs, puertos, timestamps, tamano de paquetes, SNI en TLS) siguen siendo visibles.

Exportacion de objetos

Wireshark puede extraer ficheros transferidos a traves de protocolos que entiende. File, Export Objects permite exportar ficheros de HTTP, SMB, TFTP e IMF (emails). Los ficheros extraidos pueden analizarse con sus respectivas herramientas forenses.

Estadisticas de red

El menu Statistics de Wireshark proporciona vistas agregadas utiles:

Conversations: lista todas las conversaciones entre pares de IPs con bytes totales, duracion y paquetes. Util para identificar las comunicaciones con mayor volumen.

Protocol Hierarchy: muestra la distribucion de protocolos en la captura. Un porcentaje alto de DNS puede indicar tunneling DNS.

IO Graphs: grafica el trafico a lo largo del tiempo. Picos de trafico en horas inusuales son sospechosos.

Endpoints: lista todas las IPs que aparecen en la captura con el volumen de trafico de cada una.

Analisis con Zeek

Zeek (anteriormente Bro) es un framework de analisis de trafico de red que genera logs estructurados a partir de capturas PCAP o de trafico en vivo. A diferencia de Wireshark, que se centra en paquetes individuales, Zeek se centra en conexiones y transacciones de protocolos de alto nivel.

Procesamiento de PCAP con Zeek

# Procesar un fichero PCAP con Zeek
zeek -r captura.pcap

# Zeek genera varios ficheros de log:
# conn.log     - Todas las conexiones (IP origen/destino, puertos, bytes, duracion)
# dns.log      - Consultas y respuestas DNS
# http.log     - Transacciones HTTP (method, URI, status, user-agent)
# ssl.log      - Handshakes TLS (SNI, certificado, version, cipher)
# files.log    - Ficheros transferidos (hash, tipo MIME, tamano)
# x509.log     - Certificados X.509 observados
# notice.log   - Alertas generadas por las reglas de Zeek

Analisis de conn.log

conn.log es el log mas fundamental de Zeek. Cada linea representa una conexion TCP/UDP con campos estructurados:

# Conexiones con mayor duracion (posible C2 persistente)
cat conn.log | zeek-cut id.orig_h id.resp_h id.resp_p duration orig_bytes resp_bytes | \
  sort -t$'\t' -k4 -rn | head -20

# Conexiones con mayor transferencia de datos saliente (posible exfiltracion)
cat conn.log | zeek-cut id.orig_h id.resp_h id.resp_p orig_bytes | \
  sort -t$'\t' -k4 -rn | head -20

# Conexiones a puertos no estandar
cat conn.log | zeek-cut id.orig_h id.resp_h id.resp_p proto service | \
  awk '$3 != 80 && $3 != 443 && $3 != 53 && $3 != 22'

Analisis de DNS

El log DNS de Zeek es critico para detectar tunneling DNS y consultas a dominios de C2:

# Consultas DNS unicas ordenadas por frecuencia
cat dns.log | zeek-cut query | sort | uniq -c | sort -rn | head -50

# Consultas con subdominios largos (posible DNS tunneling)
cat dns.log | zeek-cut query | awk 'length > 50' | sort | uniq -c | sort -rn

# Consultas con respuesta NXDOMAIN (DGA - Domain Generation Algorithm)
cat dns.log | zeek-cut query rcode | grep NXDOMAIN | awk '{print $1}' | \
  sort | uniq -c | sort -rn | head -20

# Consultas DNS tipo TXT (usado en DNS tunneling)
cat dns.log | zeek-cut query qtype answers | grep TXT

Analisis de TLS/SSL

# Certificados TLS con SNI (nombres de servidores accedidos)
cat ssl.log | zeek-cut server_name | sort | uniq -c | sort -rn | head -50

# Certificados self-signed o con errores de validacion
cat ssl.log | zeek-cut server_name validation_status | grep -v "ok"

# JA3 fingerprints (identificacion de clientes TLS)
cat ssl.log | zeek-cut ja3 server_name | sort | uniq -c | sort -rn

Los fingerprints JA3 son especialmente utiles porque identifican la implementacion TLS del cliente independientemente de la IP o el dominio. Un JA3 hash asociado a Cobalt Strike o Metasploit en la inteligencia de amenazas es un indicador fuerte de actividad maliciosa.

Deteccion de patrones maliciosos

Beaconing

El beaconing es el patron de comunicacion tipico de implantes C2: conexiones periodicas a intervalos regulares (o semi-regulares con jitter) a un servidor de comando y control.

Para detectar beaconing, analiza la regularidad de las conexiones a cada destino:

# Extraer timestamps de conexiones a un destino especifico
cat conn.log | zeek-cut ts id.resp_h id.resp_p | \
  grep "45.33.32.156" | awk '{print $1}'

# Calcular intervalos entre conexiones consecutivas
# (requiere procesamiento adicional con Python o awk)

Herramientas especializadas como RITA (Real Intelligence Threat Analytics) automatizan la detección de beaconing analizando los logs de Zeek y aplicando análisis estadistico a los intervalos de conexión.

DNS tunneling

El tunneling DNS utiliza consultas y respuestas DNS para transmitir datos. Los indicadores incluyen:

Gran volumen de consultas DNS a un mismo dominio.

Subdominios inusualmente largos (los datos se codifican como subdominios).

Alto porcentaje de consultas tipo TXT (usadas para respuestas con datos codificados).

Ratio alto de bytes DNS frente al tráfico total de un host.

Exfiltración de datos

La exfiltración se detecta por volumen anormal de tráfico saliente. Busca:

Hosts internos que envian más datos de los que reciben a destinos externos.

Transferencias grandes en horarios inusuales (madrugada, fines de semana).

Uso de protocolos poco comunes para la transferencia (DNS, ICMP).

Conexiones a servicios de almacenamiento cloud (Dropbox, Google Drive, OneDrive) desde hosts que normalmente no los usan.

Flow data: NetFlow e IPFIX

Cuando no hay captura de paquetes completa, los datos de flujo (flow data) proporcionan una vista de alto nivel del tráfico de red. NetFlow (Cisco), IPFIX (estandar IETF) y sFlow registran metadatos de cada conexión sin almacenar el contenido.

Los campos tipicos de un flujo son: IP de origen y destino, puertos de origen y destino, protocolo, bytes transferidos, paquetes, timestamps de inicio y fin, y flags TCP.

Flow data es suficiente para detectar beaconing, exfiltración por volumen, escaneo de puertos y movimiento lateral, pero no permite reconstruir el contenido de las comunicaciones.

Herramientas como nfdump, SiLK y Argus procesan datos de flujo para análisis forense.

Herramientas complementarias

NetworkMiner: herramienta forense que extrae ficheros, imagenes, credenciales y certificados del tráfico de red. Especialmente útil para reconstruir sesiones HTTP completas.

Arkime (anteriormente Moloch): plataforma de captura y busqueda de tráfico a gran escala. Indexa PCAPs en Elasticsearch para busqueda rápida. Ideal para organizaciones que capturan tráfico continuamente.

Suricata: motor IDS/IPS que puede procesar PCAPs offline y aplicar reglas de detección (Emerging Threats, Proofpoint) para identificar tráfico malicioso conocido.

CapLoader: herramienta para análisis rápido de grandes PCAPs, con identificación automática de protocolos y separacion de flujos.

Metodologia de análisis de red

Un análisis forense de red sistematico sigue estos pasos:

Primero, obtener una vision general: procesa la captura con Zeek para generar los logs estructurados. Revisa las estadisticas de Wireshark (Conversations, Protocol Hierarchy, Endpoints) para identificar los hosts y protocolos más relevantes.

Segundo, identificar comunicaciones externas sospechosas. Busca conexiones a IPs o dominios de C2 conocidos (cruza con feeds de inteligencia), beaconing, y conexiones a puertos o servicios inusuales.

Tercero, analizar el DNS. Busca tunneling, DGA y consultas a dominios maliciosos.

Cuarto, cuantificar las transferencias de datos. Identifica hosts con volumenes de transferencia saliente anormales para detectar exfiltración.

Quinto, profundizar en conexiones especificas. Usa Wireshark para reconstruir sesiones individuales (Follow Stream), extraer ficheros transferidos y analizar el contenido en detalle.

Sexto, correlacionar con artefactos de host. Los timestamps de las conexiones de red deben correlacionarse con la ejecución de procesos, accesos a ficheros y eventos del sistema en los endpoints involucrados.

Conclusion

La forense de red proporciona una perspectiva única que no puede obtenerse solo con el análisis de host. Las comunicaciones de red son la huella de las acciones del atacante que cruzan las fronteras del sistema individual: descargas de herramientas, comunicaciones C2, movimiento lateral y exfiltración.

Wireshark y Zeek son complementarios: Wireshark excels en el análisis detallado de paquetes individuales y la reconstruccion de sesiones, mientras que Zeek automatiza la generación de logs estructurados que facilitan el análisis de patrones a escala. La combinacion de ambos, junto con los datos de flujo y las herramientas especializadas, proporciona la cobertura completa necesaria para una investigación de red rigurosa.

Preguntas frecuentes

Artículos relacionados

Este contenido tiene fines exclusivamente educativos y de investigación en ciberseguridad defensiva. No se proporcionan binarios maliciosos ni payloads ejecutables. El uso indebido de esta información es responsabilidad exclusiva del usuario. Leer disclaimer completo.