Saltar al contenido principal

Wireshark

Análisis4.xBlue Team

El analizador de protocolos más poderoso del mundo. Soporta 3000+ protocolos con interfaz gráfica completa para captura, disección y análisis forense de red.

Wireshark: el estándar mundial de análisis

Capacidades, arquitectura y casos de uso

Wireshark (antes Ethereal, renombrado en 2006) es el analizador de protocolos de red más usado en el mundo. Soporta más de 3,000 protocolos y es usado por ingenieros de redes, administradores de sistemas, pentesters, e investigadores de seguridad.

¿Qué puede hacer Wireshark? • Captura de tráfico en vivo en interfaces locales • Lectura de archivos .pcap de cualquier herramienta • Disección de 3,000+ protocolos de red • Filtrado con lenguaje de display filters muy expresivo • Reconstrucción de flujos TCP/HTTP/VoIP completos • Extracción de archivos transferidos (HTTP, FTP, SMB) • Análisis de performance (RTT, retransmisiones, jitter) • Descifrado de TLS (con clave privada o SSLKEYLOGFILE)

Wireshark vs TCPDump: No son competidores sino complementarios. TCPDump captura en servidores remotos sin GUI; Wireshark analiza profundamente con interfaz gráfica. Flujo habitual: capturar con TCPDump → transferir .pcap → analizar con Wireshark.

TShark: Versión CLI de Wireshark con las mismas capacidades de decodificación pero sin GUI. Ideal para scripts y análisis automatizado de capturas masivas.

bash
# ── INSTALACIÓN ───────────────────────────────────────
sudo apt install wireshark tshark      # Ubuntu/Debian
sudo dnf install wireshark             # Fedora/RHEL
# macOS: brew install wireshark

# Configurar para capturar sin root:
sudo dpkg-reconfigure wireshark-common
# Seleccionar: YES
sudo usermod -aG wireshark $USER
newgrp wireshark   # o cerrar y reabrir sesión

# Verificar:
groups | grep wireshark
wireshark --version

# TShark (CLI):
tshark -D          # Listar interfaces
tshark -v          # Versión

# ── FLUJO DE TRABAJO TÍPICO ────────────────────────────
# 1. Capturar en servidor remoto:
ssh usuario@servidor "sudo tcpdump -i eth0 -w /tmp/cap.pcap port 443"

# 2. Transferir al PC de análisis:
scp usuario@servidor:/tmp/cap.pcap ~/Desktop/

# 3a. Analizar con Wireshark GUI:
wireshark ~/Desktop/cap.pcap

# 3b. O analizar con tshark CLI:
tshark -r ~/Desktop/cap.pcap -Y "tls"

# ── INTERFAZ DE WIRESHARK ──────────────────────────────
# Secciones principales:
# 1. Barra de filtros de display (arriba)
# 2. Lista de paquetes (centro-arriba)
# 3. Detalles del paquete - árbol de protocolos (centro)
# 4. Datos raw en hex + ASCII (abajo)

💡Wireshark puede descifrar TLS si configuras SSLKEYLOGFILE en el navegador antes de capturar. Muy útil para auditorías de aplicaciones HTTPS.

Display Filters: el lenguaje de análisis

Filtrar exactamente lo que necesitas ver

Los Display Filters de Wireshark son uno de los lenguajes de filtrado más expresivos para análisis de red. Filtran la VISTA de paquetes ya capturados (no la captura en sí).

Diferencia clave: • Capture Filters: Sintaxis BPF, filtran ANTES de capturar. Se configuran al inicio. • Display Filters: Sintaxis propia de Wireshark, filtran la VISTA. Más expresivos.

Estructura: protocolo.campo operador valor Ejemplo: http.request.method == "POST"

Operadores disponibles: • == igual, != diferente, > mayor, < menor • contains: contiene texto • matches: expresión regular (~~) • && AND, || OR, ! NOT • in: en conjunto → tcp.port in {80 443 8080}

Color coding en Wireshark: Los paquetes se colorean automáticamente: rojo = error/RST, azul = DNS, verde = HTTP, negro = error de protocolo. Personalizable en View → Coloring Rules.

Tip de productividad: Haz clic derecho en cualquier campo en el panel de detalles y selecciona "Apply as Filter" para crear el filtro automáticamente sin escribirlo manualmente.

bash
# ── POR PROTOCOLO ─────────────────────────────────────
http            # HTTP/1.x
http2           # HTTP/2
dns             # DNS
ftp || ftp-data # FTP completo
ssh             # SSH
tls             # TLS/HTTPS
smtp || pop || imap  # Email
smb || smb2     # Windows shares
rdp             # Remote Desktop
icmp            # Ping/ICMP
arp             # ARP

# ── HTTP ESPECÍFICO ────────────────────────────────────
http.request.method == "POST"
http.request.method == "GET"
http.response.code == 200
http.response.code >= 400       # Errores
http.request.uri contains "login"
http.request.uri contains "admin"
http.user_agent contains "sqlmap"   # Detectar SQLMap
http.cookie contains "session"

# ── IP Y RED ───────────────────────────────────────────
ip.addr == 192.168.1.100
ip.src == 192.168.1.100
ip.dst == 8.8.8.8
ip.src == 192.168.1.0/24
!(ip.addr == 192.168.1.1)
ip.addr in {192.168.1.1 10.0.0.1}

# ── TCP ────────────────────────────────────────────────
tcp.port == 443
tcp.port in {80 443 8080 8443}
tcp.flags.syn == 1 && tcp.flags.ack == 0  # Nueva conexión
tcp.flags.rst == 1                         # Reset
tcp.analysis.retransmission                # Retransmisiones
tcp.analysis.zero_window                   # Congestión

# ── DNS ────────────────────────────────────────────────
dns.qry.name == "google.com"
dns.qry.name contains "malware"
dns.qry.name matches ".*\.ru$"     # Dominios .ru
dns.resp.len > 512                   # Respuestas grandes
dns.flags.rcode != 0                 # Errores DNS

# ── DETECCIÓN DE ATAQUES ───────────────────────────────
# Escaneo de puertos:
tcp.flags.syn == 1 && tcp.flags.ack == 0 && ip.src == 192.168.1.100

# ARP Spoofing:
arp.duplicate-address-detected == 1

# Credenciales FTP:
ftp.request.command == "PASS"

# SQL Injection en HTTP:
http contains "union" && http contains "select"

💡Ctrl+F en Wireshark abre búsqueda de texto dentro de los paquetes. Muy útil para encontrar credenciales, tokens, o patrones específicos en capturas grandes.

Follow Stream y extracción de archivos

Reconstruir conversaciones y recuperar archivos

Una de las funcionalidades más poderosas de Wireshark es reconstruir conversaciones TCP completas, independientemente de cuántos paquetes fragmenten los datos.

Follow TCP Stream: TCP fragmenta datos en segmentos. "Follow TCP Stream" reensambla todos los segmentos de una conexión y muestra el intercambio completo como texto. Esencial para: • Ver contenido completo de peticiones HTTP • Analizar comandos FTP o SMTP • Leer datos de protocolos de texto plano

Cómo usar Follow Stream:

  1. Captura tráfico o abre un .pcap
  2. Clic derecho en cualquier paquete → Follow → TCP Stream
  3. Wireshark muestra la conversación: rojo = cliente→servidor, azul = servidor→cliente

Export Objects (Forense): Funcionalidad clave en análisis forense: exporta todos los archivos transferidos sobre HTTP, SMB, FTP o TFTP. Permite recuperar documentos, ejecutables, imágenes transferidas durante un incidente.

Estadísticas de performance: Statistics → Expert Information: lista de todas las anomalías detectadas automáticamente (retransmisiones, zero window, resets).

Statistics → TCP Stream Graphs: visualiza RTT, throughput, window scaling.

bash
# ── FOLLOW STREAM EN GUI ──────────────────────────────
# 1. Clic derecho en paquete HTTP → Follow → TCP Stream
# Resultado visible (ejemplo login HTTP):
#
# POST /login HTTP/1.1
# Host: target.com
# Content-Type: application/x-www-form-urlencoded
#
# username=admin&password=secreto123
#
# HTTP/1.1 302 Found
# Location: /dashboard

# ── TSHARK: FOLLOW STREAM EN CLI ──────────────────────
# Stream específico (número 0):
tshark -r captura.pcap -q -z "follow,tcp,ascii,0" 2>/dev/null

# Todos los streams:
N=$(tshark -r captura.pcap -T fields -e tcp.stream 2>/dev/null | sort -u | wc -l)
for i in $(seq 0 $N); do
    echo "=== Stream $i ==="
    tshark -r captura.pcap -q -z "follow,tcp,ascii,$i" 2>/dev/null | head -30
done

# ── EXPORT OBJECTS: EXTRAER ARCHIVOS ──────────────────
# En GUI: File → Export Objects → HTTP
# Lista: page.html, script.js, image.png, document.pdf, malware.exe

# Con tshark CLI:
mkdir /tmp/extraidos
tshark -r captura.pcap --export-objects http,/tmp/extraidos/
ls -la /tmp/extraidos/

# Identificar tipos reales:
file /tmp/extraidos/*

# Calcular hashes para comparar con VirusTotal:
sha256sum /tmp/extraidos/*.exe 2>/dev/null

# ── ESTADÍSTICAS EN GUI ────────────────────────────────
# Statistics → Conversations   → Ver todas las conversaciones IP
# Statistics → Protocol Hierarchy → Porcentaje por protocolo
# Statistics → Expert Information → Anomalías automáticas:
#   ERROR:  Retransmisiones, checksum errors
#   WARN:   Zero window, window updates
#   NOTE:   ACKs, FINs normales

# ── TSHARK: ESTADÍSTICAS CLI ───────────────────────────
tshark -r captura.pcap -q -z io,phs 2>/dev/null         # Jerarquía protocolos
tshark -r captura.pcap -q -z conv,tcp 2>/dev/null        # Conversaciones TCP
tshark -r captura.pcap -q -z endpoints,ip 2>/dev/null | sort -k3 -rn | head -20

💡Statistics → Expert Information da un resumen rápido de todos los problemas en una captura. Los errores en rojo son críticos; los amarillos son warnings; los azules son informativos.

Análisis forense y descifrado TLS

Forense de red e investigación de incidentes

Wireshark es herramienta fundamental en respuesta a incidentes. Permite reconstruir lo que ocurrió durante un incidente analizando el tráfico capturado.

Metodología forense con Wireshark:

  1. Contexto temporal: identificar timeframe del incidente
  2. Conversaciones: qué hosts se comunicaron y con qué volumen
  3. Protocolos inusuales: tráfico en puertos no estándar
  4. IOCs en tráfico: dominios, IPs maliciosas conocidas
  5. Exfiltración: grandes transferencias fuera de lo normal
  6. C2 (Command & Control): comunicaciones periódicas a servidores externos
  7. Movimiento lateral: conexiones entre hosts internos inusuales

Descifrado de TLS: Para analizar tráfico HTTPS necesitas: • Clave privada del servidor (.pem) • Archivo SSLKEYLOGFILE (exportado por Firefox/Chrome/curl)

El SSLKEYLOGFILE contiene las master secrets de cada sesión TLS, permitiendo descifrar el tráfico HTTPS de esa sesión específica. Invaluable para auditorías de aplicaciones web.

Análisis en tiempo real: Puedes hacer pipe de TCPDump remoto directamente a Wireshark local via SSH para análisis visual en tiempo real sin guardar archivos intermedios.

bash
# ── DESCIFRAR TLS CON SSLKEYLOGFILE ──────────────────
# Paso 1: Configurar navegador para exportar keys
export SSLKEYLOGFILE=/tmp/ssl_keys.log

# Abrir Firefox o Chrome desde terminal:
firefox &

# Navegar a los sitios que quieres analizar
# Las keys se guardan en /tmp/ssl_keys.log

# Paso 2: Capturar tráfico simultáneamente:
sudo tcpdump -i eth0 -w /tmp/trafico.pcap port 443

# Paso 3: En Wireshark:
# Edit → Preferences → Protocols → TLS
# (Pre)-Master-Secret log filename: /tmp/ssl_keys.log
# Abrir el pcap → HTTP descifrado es visible

# Paso 4: Filtrar tráfico descifrado:
# http   (verás peticiones HTTPS ya descifradas)

# ── ANÁLISIS FORENSE DE INCIDENTE ─────────────────────
# 1. Top conversaciones (mayor volumen de datos):
tshark -r incidente.pcap -q -z conv,ip 2>/dev/null | sort -k5 -rn | head -20

# 2. IPs externas contactadas (fuera de red local):
tshark -r incidente.pcap -T fields -e ip.dst 2>/dev/null | \
  grep -v "^192.168." | grep -v "^10." | sort -u | head -30

# 3. Detectar beaconing (C2 — conexiones periódicas):
tshark -r incidente.pcap -T fields -e frame.time_epoch -e ip.dst 2>/dev/null | \
  sort | awk '{print $2}' | uniq -c | sort -rn | head -20

# 4. DNS sospechosos (dominios muy largos = tunneling):
tshark -r incidente.pcap -Y dns -T fields -e dns.qry.name 2>/dev/null | \
  awk 'length > 50' | sort | uniq

# 5. User-agents inusuales:
tshark -r incidente.pcap -Y http.request -T fields -e http.user_agent 2>/dev/null | \
  sort | uniq -c | sort -rn | head -10

# 6. Conexiones en puertos no estándar:
tshark -r incidente.pcap -T fields -e ip.src -e tcp.dstport 2>/dev/null | \
  grep -v -E "\s(80|443|22|53|25|110|3389|8080)$" | sort | uniq -c | sort -rn | head

# ── TIEMPO REAL: PIPE SSH → WIRESHARK ─────────────────
ssh usuario@servidor \
  "sudo tcpdump -i eth0 -w - port 80 2>/dev/null" | wireshark -k -i -

💡La técnica SSLKEYLOGFILE para descifrar HTTPS es extraordinariamente útil. Configura SSLKEYLOGFILE en el navegador de la aplicación auditada antes de capturar.

Labs Prácticos

Intermedio 30 min

Lab 1: Analizar ataque SQL Injection en tráfico HTTP

Objetivo

Dado un pcap con tráfico HTTP, identificar payloads SQLi, respuestas del servidor y datos potencialmente extraídos.

Escenario

Tu WAF detectó actividad sospechosa. Tienes captura de tráfico HTTP del servidor. Necesitas determinar si hubo SQLi exitoso y qué datos se extrajeron.

Pasos

1

Filtrar tráfico HTTP con parámetros sospechosos

2

Buscar payloads SQL en URLs y POST data

3

Follow TCP Stream para ver respuestas completas

4

Identificar si respuestas contienen datos de la BD

5

Reconstruir timeline del ataque

bash — práctica
# INSTALAR DVWA PARA PRÁCTICA
docker run --rm -d -p 8080:80 vulnerables/web-dvwa
sudo tcpdump -i any -w /tmp/sqli.pcap port 8080

# GENERAR TRÁFICO DE PRÁCTICA (otra terminal)
curl -b "security=low" "http://localhost:8080/vulnerabilities/sqli/?id=1'+OR+'1'='1"
curl -b "security=low" "http://localhost:8080/vulnerabilities/sqli/?id=1'+UNION+SELECT+user,password+FROM+users--"

# ANALIZAR CON TSHARK
# Buscar payloads SQLi:
tshark -r /tmp/sqli.pcap \
  -Y "http.request and http contains "union"" \
  -T fields -e ip.src -e http.request.uri 2>/dev/null

# Detectar SQLi automáticamente:
tshark -r /tmp/sqli.pcap \
  -Y "http.request" \
  -T fields -e ip.src -e http.request.uri \
  2>/dev/null | grep -iE "union|select|1=1|--$|%27|0x"

# ANÁLISIS EN WIRESHARK GUI
# 1. Abrir: wireshark /tmp/sqli.pcap
# 2. Filtro: http.request.method == "GET" && http.request.uri contains "id="
# 3. Clic derecho → Follow → TCP Stream
# Verás:
# GET /sqli/?id=1'+UNION+SELECT+user,password+FROM+users-- HTTP/1.1
# Respuesta: <td>admin</td><td>5f4dcc3b5aa765d61d8327deb882cf99</td>

# EXTRAER TODOS LOS POST DATA
tshark -r /tmp/sqli.pcap -Y "http.request.method == POST" \
  -T fields -e http.file_data 2>/dev/null | \
  python3 -c "import sys,urllib.parse; [print(urllib.parse.unquote_plus(l)) for l in sys.stdin]"

Resultado esperado

Identificarás los payloads SQLi, respuestas con datos de BD, IP del atacante y timestamps exactos del ataque.

Avanzado 45 min

Lab 2: Detectar beaconing de malware C2

Objetivo

Analizar pcap de host infectado para identificar el C2, patrón de beaconing y datos exfiltrados.

Escenario

Antivirus detectó actividad sospechosa. Tienes 2 horas de captura de tráfico. Necesitas identificar el malware, servidor C2, y qué datos envió.

Pasos

1

Identificar IPs externas con conexiones periódicas (beaconing)

2

Analizar User-Agent HTTP para identificar el malware

3

Reconstruir tráfico C2 para ver comandos

4

Detectar exfiltración via DNS tunneling

5

Crear IOCs para bloqueo inmediato

bash — práctica
# ANÁLISIS DE BEACONING (Python)
python3 << 'PYEOF'
import subprocess
from collections import defaultdict
import statistics

result = subprocess.run(
    ['tshark', '-r', 'sample.pcap',
     '-Y', 'tcp.flags.syn == 1 and tcp.flags.ack == 0',
     '-T', 'fields', '-e', 'frame.time_epoch', '-e', 'ip.dst'],
    capture_output=True, text=True
)

connections = defaultdict(list)
for line in result.stdout.strip().split('
'):
    parts = line.split('	')
    if len(parts) == 2:
        connections[parts[1]].append(float(parts[0]))

print(f"{'IP':<20} {'Conn':>6} {'Intervalo':>10} {'Desv':>8} {'¿Beacon?'}")
print('-' * 60)
for ip, ts in sorted(connections.items(), key=lambda x: -len(x[1]))[:15]:
    if len(ts) < 3: continue
    intervals = [ts[i+1]-ts[i] for i in range(len(ts)-1)]
    avg = statistics.mean(intervals)
    std = statistics.stdev(intervals) if len(intervals) > 1 else 0
    beacon = "⚠ SÍ" if std < avg * 0.2 and len(ts) > 5 else "No"
    print(f"{ip:<20} {len(ts):>6} {avg:>9.1f}s {std:>7.1f}s {beacon}")
PYEOF

# USER-AGENTS INUSUALES
tshark -r sample.pcap -Y http.request \
  -T fields -e ip.dst -e http.user_agent 2>/dev/null | \
  sort | uniq -c | sort -rn | head -10

# DNS TUNNELING
tshark -r sample.pcap -Y dns -T fields -e ip.src -e dns.qry.name 2>/dev/null | \
  awk 'length($2) > 40 || split($2,a,".") > 5 {print "[TUNNEL?]", $0}' | head -10

# GENERAR IOCs
tshark -r sample.pcap -T fields -e ip.dst 2>/dev/null | \
  grep -v "^192.|^10.|^172.1" | sort -u > /tmp/iocs_ips.txt
echo "IPs a bloquear guardadas en /tmp/iocs_ips.txt"

Resultado esperado

Identificarás servidor C2, patrón de beaconing, datos exfiltrados e IOCs listos para bloquear en firewall y DNS.

Intermedio 35 min

Lab 3: Diagnosticar lentitud de aplicación web

Objetivo

Usar Wireshark para determinar si la lentitud es de red (retransmisiones) o de la aplicación (tiempo de respuesta del servidor).

Escenario

Usuarios reportan lentitud desde hace 2 horas. CPU y RAM del servidor son normales. Necesitas determinar si es problema de red o de la aplicación.

Pasos

1

Capturar tráfico durante la lentitud reportada

2

Usar Expert Information para ver retransmisiones

3

Medir tiempos de respuesta HTTP del servidor

4

Identificar Zero Window (congestión)

5

Determinar si es red o aplicación

bash — práctica
# CAPTURAR DURANTE EL PROBLEMA
sudo tcpdump -i eth0 -w /tmp/slow.pcap "host 192.168.1.100 and port 80"

# CONTAR RETRANSMISIONES
tshark -r /tmp/slow.pcap -Y tcp.analysis.retransmission \
  -T fields -e frame.time -e ip.src 2>/dev/null | wc -l

# TIEMPOS DE RESPUESTA HTTP
python3 << 'PYEOF'
import subprocess
from collections import defaultdict

# Requests
reqs = {}
r = subprocess.run(['tshark','-r','/tmp/slow.pcap','-Y','http.request',
    '-T','fields','-e','frame.number','-e','frame.time_epoch','-e','http.request.uri'],
    capture_output=True, text=True)
for line in r.stdout.strip().split('
'):
    p = line.split('	')
    if len(p)==3: reqs[p[0]] = {'ts': float(p[1]), 'uri': p[2]}

# Responses
r2 = subprocess.run(['tshark','-r','/tmp/slow.pcap','-Y','http.response',
    '-T','fields','-e','frame.number','-e','frame.time_epoch','-e','http.response.code'],
    capture_output=True, text=True)

print(f"{'Tiempo':>10} {'Código':>6} {'URI'}")
print('-' * 60)
times = []
for line in r2.stdout.strip().split('
'):
    p = line.split('	')
    if len(p) == 3:
        rts = float(p[1])
        for rn, rd in sorted(reqs.items(), key=lambda x: x[1]['ts']):
            if rd['ts'] < rts < rd['ts'] + 10:
                rt = rts - rd['ts']
                times.append(rt)
                flag = "🐌" if rt > 1.0 else ""
                print(f"{rt:>9.3f}s {p[2]:>6} {rd['uri'][:45]} {flag}")
                break
if times:
    import statistics
    print(f"
Promedio: {statistics.mean(times):.3f}s | P95: {sorted(times)[int(len(times)*0.95)]:.3f}s")
PYEOF

# ZERO WINDOW (congestión)
tshark -r /tmp/slow.pcap -Y tcp.analysis.zero_window 2>/dev/null | wc -l

# DIAGNÓSTICO AUTOMÁTICO
RETRANS=$(tshark -r /tmp/slow.pcap -Y tcp.analysis.retransmission 2>/dev/null | wc -l)
echo ""
if [ $RETRANS -gt 100 ]; then
  echo "→ PROBLEMA DE RED: $RETRANS retransmisiones detectadas"
else
  echo "→ PROBLEMA EN APLICACIÓN: pocas retransmisiones, revisar BD/app"
fi

Resultado esperado

Determinarás si es problema de red (retransmisiones) o aplicación (tiempos de respuesta lentos del servidor). Métricas exactas para el reporte.

Avanzado 50 min

Lab 4: Descifrar HTTPS y auditar API REST con SSLKEYLOGFILE

Objetivo

Usar SSLKEYLOGFILE para descifrar HTTPS y auditar endpoints de API: tokens JWT, datos sensibles en respuestas, endpoints que filtran información.

Escenario

Necesitas auditar la seguridad de una app HTTPS: si envía datos sensibles en headers, si los JWT están expirados, y si hay endpoints con sobre-exposición de datos.

Pasos

1

Configurar SSLKEYLOGFILE en el navegador/aplicación

2

Capturar tráfico HTTPS simultáneamente con TCPDump

3

Cargar claves en Wireshark para descifrar

4

Analizar headers de autenticación y tokens JWT

5

Buscar datos sensibles en respuestas de API

bash — práctica
# CONFIGURAR EXPORTACIÓN DE CLAVES TLS
export SSLKEYLOGFILE=/tmp/tls_keys.log
firefox https://api.ejemplo.com &
# O: google-chrome https://api.ejemplo.com &

# Verificar que se generan las keys:
tail -f /tmp/tls_keys.log
# Verás: CLIENT_RANDOM abc123... def456...

# CAPTURAR SIMULTÁNEAMENTE
sudo tcpdump -i eth0 -w /tmp/https_audit.pcap port 443
# Ctrl+C cuando termines de navegar

# CARGAR EN WIRESHARK
# Edit → Preferences → Protocols → TLS
# (Pre)-Master-Secret log: /tmp/tls_keys.log
# Abrir /tmp/https_audit.pcap → filtro: http

# VIA TSHARK CON CLAVES
tshark -r /tmp/https_audit.pcap \
  -o "tls.keylog_file:/tmp/tls_keys.log" \
  -Y "http.request" \
  -T fields -e http.request.uri -e http.authorization -e http.cookie \
  2>/dev/null | head -20

# ANALIZAR TOKENS JWT
tshark -r /tmp/https_audit.pcap \
  -o "tls.keylog_file:/tmp/tls_keys.log" \
  -Y "http.authorization contains "Bearer"" \
  -T fields -e http.authorization 2>/dev/null | \
  grep -oP 'Bearer K[A-Za-z0-9+/._-]+' | \
  while read token; do
    PAYLOAD=$(echo $token | cut -d. -f2 | \
      awk '{n=length%4; if(n) for(i=1;i<=4-n;i++) printf"="; print}' | \
      base64 -d 2>/dev/null | python3 -m json.tool 2>/dev/null)
    echo "=== JWT Payload ==="
    echo "$PAYLOAD" | grep -E '"exp"|"iat"|"sub"|"email"|"role"'
    EXP=$(echo "$PAYLOAD" | python3 -c "import sys,json; print(json.load(sys.stdin).get('exp',0))" 2>/dev/null)
    NOW=$(date +%s)
    [ "$EXP" != "" ] && [ "$EXP" -lt "$NOW" ] && echo "⚠ TOKEN EXPIRADO — posible bug de seguridad"
  done

# BUSCAR DATOS SENSIBLES EN RESPUESTAS
tshark -r /tmp/https_audit.pcap \
  -o "tls.keylog_file:/tmp/tls_keys.log" \
  -Y "http.response" -T fields -e http.file_data 2>/dev/null | \
  python3 -c "
import sys,re
patterns = {'credit_card':r'd{4}[- ]?d{4}[- ]?d{4}[- ]?d{4}',
            'email':r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}'}
for line in sys.stdin:
    for name, pat in patterns.items():
        matches = re.findall(pat, line)
        if matches: print(f'[{name.upper()}] {matches[:3]}')
  "

Resultado esperado

Verás todo el tráfico HTTPS descifrado. Identificarás tokens JWT, cookies de sesión, y datos sensibles en respuestas de la API.

Aviso legal: Este contenido es estrictamente educativo. CyberFlows no apoya actividades ilegales. Úsalo solo en entornos autorizados.