Vale, sentaos. Llevo años viendo a equipos de seguridad españoles, desde el SOC de una gran banca hasta la pyme de logística que cree que con el antivirus de turno va sobrada, cometer exactamente el mismo error: abrir Wireshark en cuanto algo huele mal en la red. Y ojo, Wireshark es una navaja suiza increíble para el análisis forense fino, para hacer debugging de un protocolo concreto o para capturar ese paquete maldito que se pierde en una conexión TLS. Pero la realidad es que para el análisis de tráfico continuo, para la detección de amenazzas en tiempo real o para procesar semanas de tráfico de red en busca de patrones de comportamiento anómalo, Wireshark es como intentar vaciar una piscina con un cubo. Ahí es donde entra Zeek (antes Bro), y no, no es un sustituto de Wireshark, es una herramienta complementaria que, en mi opinión, cualquier equipo blue-team que se precie debería tener como pilar fundamental de su arquitectura de monitorización.
El problema gordo aquí es que la mayoría de la gente piensa en "análisis de red" y lo primero que le viene a la cabeza es "captura de paquetes". Y sí, Zeek también captura, pero su verdadera potencia reside en que no guarda el tráfico bruto de forma nativa (aunque puedes hacerlo). Zeek es un monitor de red que consume el tráfico y lo transforma en registros estructurados y normalizados (logs en formato TSV o JSON). Esto es un cambio de paradigma brutal. Mientras que con Wireshark tienes que bucear entre miles de paquetes para reconstruir una conexión HTTP, Zeek ya te ha generado un log http.log con cada petición, método, URI, User-Agent, código de respuesta, y hasta el host y referer. Y no solo HTTP: tenemos logs para DNS, SSL/TLS (con los certificados, algo que en 2026 con la cantidad de tráfico cifrado es vital), FTP, SMTP, SSH, DHCP, NTLM, Kerberos, etc. Vamos al lio, porque esto no es moco de pavo.
¿Por qué Zeek es mejor que Wireshark para el día a día del Blue Team?
Sinceramente, la mayoría de empresas españolas con las que trabajo tienen un SIEM (Splunk, Elastic, QRadar, Wazuh) que se alimenta de logs de endpoints y firewalls. Pero el tráfico de red sigue siendo un punto ciego enorme, sobre todo el tráfico interno. Y no me refiero a mirar el tráfico que sale al exterior, eso ya lo hace el firewall. Me refiero al movimiento lateral, a los escaneos internos, a las conexiones a bases de datos legacy, a los protocolos de administración remota (RDP, SSH, WinRM). Zeek te da una visibilidad quirúrgica de todo eso sin necesidad de instalar agentes en cada máquina. En un pentest que hicimos el mes pasado para una aseguradora, el equipo azul tenía un Zeek desplegado en el core del switch de distribución. Nos detectaron el escaneo con nmap a los 3 segundos de empezar, no porque tuvieran un IDS firma, sino porque Zeek registró un número anómalo de conexiones SYN desde nuestra IP a puertos aleatorios en un corto periodo de tiempo. Eso, con Wireshark, lo habrían visto al día siguiente revisando una captura, si es que la tenían.
La clave está en que Zeek entiende los protocolos. No solo mira cabeceras, sino que reconstruye el flujo de la aplicación. Por ejemplo, en el log ssl.log, Zeek te dice el nombre del servidor (SNI), la versión de TLS, el certificado, y lo más importante: si la validación del certificado falló. En 2026, donde el 95% del tráfico legítimo va por HTTPS, pero también el malware usa TLS para C2, tener un log que te diga "el host X se conectó a un dominio Y con un certificado autofirmado que no coincide con el SNI" es una mina de oro. Y todo esto, insisto, sin tener que abrir una captura de 10GB. De hecho, una de las primeras cosas que hago en cualquier proyecto de implantación de Zeek es configurar que no guarde los pcap completos a no ser que se active una regla específica. El almacenamiento se dispara y el valor real está en los logs.
¿Qué herramientas usar para el análisis de logs de Zeek en 2026?
Aquí es donde viene la parte divertida. Tener los logs de Zeek está muy bien, pero si no los procesas, son solo ruido. La combinación ganadora que veo en los SOCs más maduros es Zeek + Kafka + Elasticsearch (o OpenSearch) + un motor de análisis como Jupyter Notebooks o herramientas de hunting. Pero ojo, no necesitas una infraestructura de la NASA para empezar. De hecho, para un análisis rápido o para un equipo pequeño, zeek-cut y jq son tus mejores amigos. Vamos a ver un ejemplo práctico. Supongamos que queremos detectar posibles túneles DNS, una técnica que, aunque vieja, sigue siendo usada por malware avanzado y por algunos red teams para exfiltrar datos o hacer C2 cuando no hay otro camino.
# Buscar consultas DNS con un volumen anómalo de respuestas o con dominios muy largos
# Usando zeek-cut para extraer campos del dns.log
cat dns.log | zeek-cut ts query qtype_name answers rcode_name | \
awk -F'\t' '{ if ($3 == "TXT" || $3 == "MX" || $3 == "CNAME") print $0 }' | \
awk -F'\t' '{ if (length($2) > 50) print $0 }' | \
head -20
Este pequeño one-liner te saca las consultas DNS de tipo TXT, MX o CNAME cuyo nombre de dominio (query) tenga más de 50 caracteres. ¿Por qué esto es sospechoso? Porque un dominio legítimo rara vez supera los 30-40 caracteres. Los túneles DNS suelen codificar datos en subdominios larguísimos. He visto casos reales donde el malware usaba consultas TXT a un dominio como `aksjdhf9834hfn3kj4h5b3k4jh5b34k5jh34b5k3jh45b34kj5h34b5kj34h5b34kj5hb34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh5b34k5jh34b5k34jh