Wireshark: Filtros Esenciales para Análisis de Tráfico Malicioso
Referencia completa de filtros de Wireshark para análisis de tráfico malicioso. Filtros para detectar C2, exfiltración, DNS tunneling, beaconing, lateral movement y más, con ejemplos prácticos.
Filtros basicos de orientacion
Cuando abres una captura de trafico de un sistema potencialmente comprometido, estos filtros te ayudan a orientarte rapidamente.
Trafico por IP
ip.addr == 192.168.1.100
ip.src == 192.168.1.100
ip.dst == 10.0.0.1
!(ip.addr == 192.168.1.0/24)
El ultimo filtro excluye una subred completa, util para eliminar trafico interno y centrarte en conexiones externas.
Trafico por puerto
tcp.port == 443
tcp.port == 80
udp.port == 53
tcp.port == 4444
tcp.port >= 49152
Los puertos altos (49152 y superiores) son efimeros, pero tambien son usados frecuentemente por malware para C2 y reverse shells.
Trafico por protocolo
http
dns
tls
smtp
smb
smb2
ftp
ssh
Deteccion de comunicaciones C2
Las comunicaciones Command and Control son el nucleo de la actividad del malware post-explotacion. Estos filtros ayudan a identificar patrones tipicos de C2.
HTTP C2
http.request.method == "POST" && http.content_length > 0
http.request.uri contains "/api/" || http.request.uri contains "/gate"
http.request.uri matches "^/[a-z0-9]{8,32}$"
http.user_agent contains "Mozilla" && http.host matches "^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$"
El ultimo filtro detecta peticiones HTTP con User-Agent de navegador pero dirigidas a una IP en lugar de un dominio, patron comun en malware que usa IPs directas para C2.
Beaconing (intervalos regulares)
Wireshark no detecta beaconing directamente, pero puedes identificar patrones visualizando las conexiones en el grafico de flujo:
ip.dst == <IP_sospechosa> && tcp.flags.syn == 1
Exporta los timestamps a CSV y analiza los intervalos entre conexiones con un script Python. Intervalos regulares (con jitter del 10-20%) son indicadores fuertes de beaconing C2.
HTTPS C2 (analisis de TLS sin descifrar)
Cuando no puedes descifrar el trafico TLS, estos campos proporcionan indicadores:
tls.handshake.type == 1
tls.handshake.extensions.server_name contains "suspicious"
tls.handshake.ja3_full
tls.handshake.extensions.supported_versions
El Server Name Indication (SNI) revela el dominio al que se conecta el malware incluso sin descifrar el trafico. JA3 fingerprints identifican el software cliente por sus parametros de negociacion TLS.
Certificados TLS sospechosos
tls.handshake.type == 11
tls.handshake.certificate
Busca certificados autofirmados, certificados con nombres genericos (localhost, test) o certificados recien creados que coincidan temporalmente con el inicio de la actividad sospechosa.
Deteccion de DNS anomalo
DNS es uno de los canales mas abusados por malware: tunneling, DGA (Domain Generation Algorithms), exfiltracion de datos y resolucion de C2.
Queries DNS basicas
dns.qry.name contains "malicious-domain.com"
dns.qry.type == 1
dns.qry.type == 28
dns.qry.type == 16
dns.qry.type == 15
Los tipos: 1 es A (IPv4), 28 es AAAA (IPv6), 16 es TXT (usado en tunneling) y 15 es MX.
DNS Tunneling
dns.qry.type == 16
dns.qry.name matches "^[a-z0-9]{30,}\."
dns.resp.len > 512
DNS tunneling codifica datos en subdominios largos de queries DNS o en registros TXT de gran tamano. Subdominios con mas de 30 caracteres aleatorios son altamente sospechosos.
DGA (Domain Generation Algorithms)
dns.qry.name matches "^[a-z]{8,15}\.(com|net|org|info|biz)$"
dns.flags.rcode == 3
El rcode 3 (NXDOMAIN) indica que el dominio no existe. Una rafaga de NXDOMAIN para dominios con aspecto aleatorio es un indicador clasico de DGA: el malware genera dominios algoritmicamente y la mayoria no estan registrados.
Resolucion de C2
dns.a && !(dns.a == 0.0.0.0) && dns.count.answers > 0
dns.qry.name contains ".duckdns.org"
dns.qry.name contains ".no-ip.com"
dns.qry.name contains ".ddns.net"
Los servicios de DNS dinamico (DuckDNS, No-IP, DynDNS) son usados frecuentemente por malware como infraestructura C2 barata y facil de actualizar.
Deteccion de exfiltracion
HTTP POST grandes
http.request.method == "POST" && http.content_length > 100000
http.request.method == "PUT" && http.content_length > 100000
Subidas de datos grandes via HTTP POST o PUT pueden indicar exfiltracion. Correlaciona con el proceso que origina la conexion (necesitas datos de endpoint).
Subida a servicios cloud
tls.handshake.extensions.server_name contains "dropbox"
tls.handshake.extensions.server_name contains "drive.google"
tls.handshake.extensions.server_name contains "onedrive"
tls.handshake.extensions.server_name contains "mega.nz"
tls.handshake.extensions.server_name contains "pastebin"
El malware usa servicios cloud legitimos para exfiltracion porque el trafico a estos dominios no suele ser bloqueado.
DNS exfiltracion
dns.qry.name matches "\.[a-z0-9]{50,}\."
dns.qry.type == 16 && dns.resp.len > 200
Datos codificados en subdominios DNS o en respuestas TXT grandes.
FTP exfiltracion
ftp.request.command == "STOR"
ftp.request.command == "RETR"
ftp-data
Aunque FTP es cada vez menos comun, algunos malware legacy lo usan para exfiltracion.
Deteccion de lateral movement
SMB y movimiento lateral
smb2.cmd == 5
smb2.filename contains ".exe"
smb2.filename contains ".dll"
smb2.filename contains ".ps1"
smb2.cmd == 3 && smb2.filename matches "\\\\ADMIN\$"
smb2.cmd == 3 && smb2.filename matches "\\\\C\$"
El cmd 5 de SMB2 es CREATE, que incluye creacion y apertura de ficheros. Transferencia de ejecutables via SMB a shares administrativos es un indicador fuerte de lateral movement.
PsExec y herramientas similares
smb2.filename contains "PSEXESVC"
smb2.filename contains "svcctl"
dcerpc.cn_ctx_item.if_id == 367abb81-9844-35f1-ad32-98f038001003
PsExec crea un servicio temporal con nombre PSEXESVC. El UUID del ultimo filtro corresponde al interfaz SVCCTL de DCE/RPC usado para gestionar servicios remotamente.
WMI remoto
tcp.port == 135
dcerpc.cn_ctx_item.if_id == 000001a0-0000-0000-c000-000000000046
WMI remoto usa DCOM via RPC. Es una tecnica comun de lateral movement porque es una herramienta legitima de administracion de Windows.
RDP
tcp.port == 3389
rdp
Sesiones RDP internas no habituales pueden indicar lateral movement con credenciales robadas.
Deteccion de malware por protocolo
Comunicaciones IRC (botnets legacy)
irc
tcp.port == 6667 || tcp.port == 6668 || tcp.port == 6669
IRC fue el protocolo C2 dominante en botnets durante anos. Aunque hoy es menos comun, algunas botnets legacy y variantes de malware educativo siguen usandolo.
Tor
tls.handshake.extensions.server_name matches "\.onion$"
tcp.port == 9001 || tcp.port == 9030 || tcp.port == 9050 || tcp.port == 9150
Conexiones a la red Tor desde endpoints que no deberian usar Tor son sospechosas. Algunos ransomware usan Tor para comunicarse con paneles de pago.
Protocolos en puertos no estandar
http && !(tcp.port == 80 || tcp.port == 8080 || tcp.port == 443)
dns && !(udp.port == 53)
smtp && !(tcp.port == 25 || tcp.port == 465 || tcp.port == 587)
Malware que usa protocolos estandar en puertos no estandar para evadir deteccion basada en puertos.
Filtros de captura BPF (tcpdump syntax)
Para captura inicial con tcpdump o con el filtro de captura de Wireshark:
# Capturar todo excepto trafico interno
not net 192.168.0.0/16 and not net 10.0.0.0/8
# Solo DNS
port 53
# Solo HTTP
port 80 or port 8080
# Solo conexiones nuevas (SYN)
tcp[tcpflags] & tcp-syn != 0 and tcp[tcpflags] & tcp-ack == 0
# Trafico a un rango sospechoso
net 203.0.113.0/24
Perfiles de Wireshark para malware analysis
Wireshark permite crear perfiles con columnas personalizadas. Un perfil optimizado para malware analysis incluye:
Columnas recomendadas:
- Time (relative, no absolute)
- Source IP
- Destination IP
- Protocol
- Source Port
- Destination Port
- Info
- HTTP Host (custom: http.host)
- TLS SNI (custom: tls.handshake.extensions.server_name)
- DNS Query (custom: dns.qry.name)
Reglas de color recomendadas:
- Rojo: trafico a IPs en listas de amenazas
- Naranja: DNS NXDOMAIN
- Amarillo: HTTP POST con content-length alto
- Verde: trafico HTTPS a dominios conocidos
Flujo de trabajo de analisis
Paso 1: Orientacion rapida
# Ver la distribucion de protocolos
Statistics > Protocol Hierarchy
# Ver las conversaciones principales
Statistics > Conversations > IPv4
Paso 2: Identificar conexiones externas
!(ip.addr == 10.0.0.0/8) && !(ip.addr == 172.16.0.0/12) && !(ip.addr == 192.168.0.0/16)
Paso 3: Revisar DNS
dns
Busca dominios sospechosos, NXDOMAIN masivos, queries TXT inusuales.
Paso 4: Analizar HTTP/HTTPS
http.request
tls.handshake.type == 1
Revisa User-Agents, URIs, hosts y certificados.
Paso 5: Buscar patron C2
tcp.flags.syn == 1 && ip.dst == <IP_sospechosa>
Exporta timestamps y analiza periodicidad.
Paso 6: Extraer ficheros
File > Export Objects > HTTP
File > Export Objects > SMB
Wireshark puede reconstruir ficheros transferidos para analisis posterior.
Conclusion
Wireshark es una herramienta fundamental para analisis de malware. Estos filtros cubren los escenarios mas comunes: deteccion de C2, exfiltracion, DNS anomalo, lateral movement y protocolos abusados por malware. Crea un perfil personalizado con estos filtros guardados como bookmarks y tendras una referencia rapida accesible con un click durante cualquier investigacion.
Preguntas frecuentes
Libros recomendados
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.