Saltar al contenido principal

TCPDump

Análisis4.99.xBlue Team

El analizador de paquetes CLI más usado en Linux/Unix. Basado en Libpcap, es la base de Wireshark, Nmap, Suricata y decenas de herramientas de seguridad.

TCPDump y Libpcap: fundamentos

Cómo funciona la captura de paquetes a bajo nivel

TCPDump es el analizador de paquetes de red por línea de comandos más utilizado en el mundo Unix/Linux. Fue creado en 1988 en el Lawrence Berkeley National Laboratory.

¿Qué es Libpcap? Libpcap (Library for Packet Capture) es la biblioteca que subyace bajo TCPDump. Es también la base de Wireshark, Nmap, Suricata, Snort y prácticamente cualquier herramienta de análisis de red en Linux/Unix.

¿Cómo funciona la captura a bajo nivel?

  1. La NIC recibe un paquete de la red
  2. El kernel copia el paquete al buffer ring de la NIC
  3. Libpcap, usando sockets AF_PACKET, accede al buffer
  4. El filtro BPF (Berkeley Packet Filter) descarta paquetes no deseados EN EL KERNEL
  5. Los paquetes que pasan se copian al espacio de usuario
  6. TCPDump los procesa y muestra

BPF (Berkeley Packet Filter): Los filtros de TCPDump corren en el kernel, lo que los hace extremadamente eficientes. Se compilan a bytecode BPF y ejecutan antes de copiar paquetes al espacio de usuario, minimizando el overhead.

Modo Promiscuo: Normalmente una NIC solo captura paquetes dirigidos a su MAC. En modo promiscuo captura TODOS los paquetes que llegan (solo útil en redes hub o con port mirroring en switches).

bash
# Instalación:
sudo apt install tcpdump           # Debian/Ubuntu
sudo yum install tcpdump           # CentOS/RHEL

# Cómo funciona internamente:
# NIC recibe paquete
#      ↓
# Kernel ring buffer (DMA)
#      ↓
# BPF filter (en kernel — muy eficiente)
#  ├── NO coincide → descartado en kernel
#  └── SÍ coincide
#      ↓
# Copia a user space
#      ↓
# TCPDump procesa y muestra

# Verificar versión:
sudo tcpdump --version

# Listar interfaces disponibles:
sudo tcpdump -D
# 1.eth0 [Up, Running, Connected]
# 2.lo [Up, Running, Loopback]
# 3.any (captura en todas las interfaces)
# 4.wlan0 [Up, Running]

# Captura básica (Ctrl+C para parar):
sudo tcpdump -i eth0

# Captura verbose con timestamps:
sudo tcpdump -i eth0 -v -tttt

# Mostrar payload en ASCII:
sudo tcpdump -i eth0 -A

# Mostrar en hexadecimal + ASCII:
sudo tcpdump -i eth0 -XX

💡TCPDump siempre necesita sudo o permisos de root para capturar en interfaces reales. Usa setcap para evitar sudo: sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump

Filtros BPF: el lenguaje de captura

Capturar exactamente el tráfico que necesitas

Los filtros BPF de TCPDump son el lenguaje más eficiente para filtrar tráfico de red. Corren en el kernel antes de copiar paquetes al espacio de usuario.

Estructura básica: Los filtros se construyen con primitivas combinadas por operadores lógicos: • Primitivas: host, net, port, proto, etc. • Operadores: and (&&), or (||), not (!) • Grupos: paréntesis para condiciones complejas

Tipos de primitivas: • Por dirección: host, src, dst, net, src net, dst net • Por protocolo: tcp, udp, icmp, arp, ip, ip6, ether • Por puerto: port, portrange, src port, dst port • Por tamaño: less, greater • Por flags TCP: tcp[tcpflags] & tcp-syn != 0

Optimización: El flag -s (snaplen) define cuántos bytes capturar de cada paquete. Con -s 96 solo capturas headers (IP+TCP) y reduces I/O. Para análisis forense completo usa -s 0 (captura completa).

bash
# ── FILTROS POR HOST Y RED ─────────────────────────────
sudo tcpdump -i eth0 host 192.168.1.100           # Origen O destino
sudo tcpdump -i eth0 src 192.168.1.100            # Solo origen
sudo tcpdump -i eth0 dst 8.8.8.8                  # Solo destino
sudo tcpdump -i eth0 net 192.168.1.0/24           # Red completa

# ── FILTROS POR PROTOCOLO ──────────────────────────────
sudo tcpdump -i eth0 tcp
sudo tcpdump -i eth0 udp
sudo tcpdump -i eth0 icmp
sudo tcpdump -i eth0 arp

# ── FILTROS POR PUERTO ─────────────────────────────────
sudo tcpdump -i eth0 port 80
sudo tcpdump -i eth0 port 443
sudo tcpdump -i eth0 portrange 8000-9000
sudo tcpdump -i eth0 src port 53

# ── FILTROS COMBINADOS (AND, OR, NOT) ──────────────────
# HTTP y HTTPS desde IP específica:
sudo tcpdump -i eth0 "host 192.168.1.100 and (port 80 or port 443)"

# TCP excepto SSH:
sudo tcpdump -i eth0 "tcp and not port 22"

# DNS no local:
sudo tcpdump -i eth0 "port 53 and not host 127.0.0.1"

# ── FILTROS AVANZADOS POR FLAGS TCP ───────────────────
# Solo SYN (inicio de conexión):
sudo tcpdump -i eth0 "tcp[tcpflags] == tcp-syn"

# SYN sin ACK (nuevo intento — útil para detectar scans):
sudo tcpdump -i eth0 "tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-syn"

# RST (conexiones rechazadas):
sudo tcpdump -i eth0 "tcp[tcpflags] & tcp-rst != 0"

# ── OPCIONES DE FORMATO ────────────────────────────────
# -n:    No resolver DNS (más rápido, recomendado)
# -nn:   No resolver DNS ni nombres de puerto
# -v:    Verbose | -vv: más verbose | -vvv: máximo
# -A:    Payload en ASCII
# -X:    Payload en hex + ASCII
# -e:    Mostrar cabeceras Ethernet (MAC addresses)
# -tttt: Timestamp con fecha y hora completa

sudo tcpdump -i eth0 -nn -v port 80
sudo tcpdump -i eth0 -A -s 0 "tcp port 80 and host 192.168.1.100"

💡Usa siempre -nn para evitar reverse DNS lookups que ralentizan la captura y añaden ruido. En análisis de incidentes, la velocidad y claridad son críticas.

Captura y análisis de archivos .pcap

Guardar capturas y analizarlas con tshark

En entornos profesionales, el flujo habitual es: capturar a archivo .pcap en el servidor → transferir → analizar con Wireshark u otras herramientas.

Formato PCAP y PCAPng: • PCAP: Formato original, compatible con todas las herramientas • PCAPng: Más moderno, soporta múltiples interfaces y metadatos

Estrategias para producción: • Ring buffer: Rotar archivos automáticamente para no llenar el disco • Filtros en captura: Solo capturar lo necesario • Snaplen reducido: Si solo necesitas headers, -s 96 es suficiente

TShark (CLI de Wireshark): TShark es la versión CLI de Wireshark con las mismas capacidades de decodificación pero sin GUI. Ideal para scripts, análisis automatizado y extracción de datos específicos de capturas grandes.

Otras herramientas para análisis de .pcap: • tcpflow: Reconstruye flujos TCP completos • ngrep: grep para paquetes de red • tcpreplay: Reproduce capturas para testing • networkMiner: Extracción forense de archivos

bash
# ── GUARDAR CAPTURAS ──────────────────────────────────
# Básico (Ctrl+C para parar):
sudo tcpdump -i eth0 -w captura.pcap

# Con filtro:
sudo tcpdump -i eth0 port 80 -w http.pcap

# Snaplen para headers (reduce tamaño):
sudo tcpdump -i eth0 -s 96 -w headers.pcap

# Limitar a N paquetes:
sudo tcpdump -i eth0 -c 10000 -w captura_10k.pcap

# ── RING BUFFER (producción — evita llenar disco) ──────
# Rotar cada 100MB, máximo 10 archivos:
sudo tcpdump -i eth0 \
  -w /var/captures/cap_%H%M%S.pcap \
  -C 100 \   # Rotar cada 100 MB
  -W 10       # Máximo 10 archivos (borra el más viejo)

# ── LEER ARCHIVOS PCAP (sin sudo) ─────────────────────
tcpdump -r captura.pcap
tcpdump -r captura.pcap "host 192.168.1.100"
tcpdump -r captura.pcap -nn "port 443"

# Buscar credenciales HTTP:
tcpdump -r captura.pcap -A "tcp port 80" | grep -i "password\|user\|login"

# ── TSHARK: ANÁLISIS AVANZADO ─────────────────────────
sudo apt install tshark

# Extraer campos a CSV:
tshark -r captura.pcap -T fields \
  -e frame.time -e ip.src -e ip.dst -e tcp.port \
  -E header=y -E separator=, > output.csv

# Extraer requests HTTP POST:
tshark -r captura.pcap -Y "http.request.method==POST" \
  -T fields -e ip.src -e http.host -e http.request.uri -e http.file_data

# Extraer archivos transferidos por HTTP:
mkdir /tmp/objetos
tshark -r captura.pcap --export-objects http,/tmp/objetos/
ls /tmp/objetos/   # imágenes, HTML, JS, ejecutables...

# Estadísticas de conversaciones TCP:
tshark -r captura.pcap -q -z conv,tcp

# Top IPs con más tráfico:
tshark -r captura.pcap -T fields -e ip.src 2>/dev/null | sort | uniq -c | sort -rn | head

💡En producción especifica siempre el ring buffer (-C y -W) para evitar llenar el disco. Una captura sin límite en una interfaz de 10 Gbps puede llenar terabytes de disco en minutos.

Casos de uso avanzados en pentesting y forense

Detección de ataques y análisis de incidentes

TCPDump es fundamental en pentesting y respuesta a incidentes. Permite capturar credenciales en protocolos inseguros, detectar escaneos de red, y analizar comportamiento sospechoso.

En pentesting (solo en redes propias o con autorización): • Capturar credenciales en HTTP, FTP, Telnet (protocolos de texto plano) • Detectar escaneos Nmap (patrones de SYN sin ACK) • Analizar tráfico de aplicaciones para encontrar vulnerabilidades • Capturar hashes NTLM en redes Windows para cracking offline

En respuesta a incidentes: • Capturar tráfico del host comprometido para análisis forense • Detectar exfiltración de datos (grandes transferencias inusuales) • Identificar comunicaciones C2 (beaconing periódico) • Analizar movimiento lateral en la red

Piped con Wireshark: Puedes hacer pipe de TCPDump en servidor remoto directamente a Wireshark en tu máquina local via SSH para análisis en tiempo real sin guardar archivos.

bash
# ── DETECTAR ESCANEO NMAP (SYN scan) ─────────────────
# Los SYN scans envían muchos SYN a diferentes puertos
sudo tcpdump -i eth0 -nn \
  "tcp[tcpflags] == tcp-syn and src 192.168.1.100"

# Contar SYN por origen (top attackers):
sudo tcpdump -i eth0 -nn "tcp[tcpflags] == tcp-syn" 2>/dev/null | \
  awk '{print $3}' | cut -d. -f1-4 | sort | uniq -c | sort -rn | head

# ── DETECTAR ARP SPOOFING ──────────────────────────────
# Buscar múltiples respuestas ARP para la misma IP:
sudo tcpdump -i eth0 -nn arp -v 2>/dev/null | \
  grep "Reply" | awk '{print $4, $6}' | sort | uniq -c | sort -rn

# ── CAPTURAR CREDENCIALES HTTP (demo - red propia) ─────
sudo tcpdump -i eth0 -A -s 0 \
  "tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)" \
  | grep -E "POST|password|user|login" -i

# ── MONITOREAR DNS QUERIES SOSPECHOSAS ─────────────────
sudo tcpdump -i eth0 -nn port 53 -A 2>/dev/null | \
  grep -oE "[a-zA-Z0-9-]+.[a-zA-Z]{2,}" | sort | uniq -c | sort -rn | head

# ── CAPTURA REMOTA → WIRESHARK LOCAL (tiempo real) ─────
# En tu PC local, analiza tráfico del servidor remoto:
ssh usuario@servidor-remoto \
  "sudo tcpdump -i eth0 -w - port 443 2>/dev/null" | wireshark -k -i -

# ── PROGRAMACIÓN CON LIBPCAP EN PYTHON (Scapy) ─────────
sudo pip3 install scapy

sudo python3 << 'PYEOF'
from scapy.all import sniff, IP, TCP, Raw

def analizar(pkt):
    if pkt.haslayer(Raw) and pkt.haslayer(TCP):
        payload = pkt[Raw].load
        if b"password" in payload.lower():
            print(f"[!] CREDENCIAL: {pkt[IP].src} → {pkt[IP].dst}")
            print(f"    {payload[:200]}")

sniff(iface="eth0", filter="tcp port 80", prn=analizar,
      count=1000, store=False)
PYEOF

💡La técnica de pipe SSH → Wireshark es muy útil en pentesting: captura en el servidor remoto en tiempo real y analiza visualmente en tu máquina local.

Labs Prácticos

Intermedio 30 min

Lab 1: Auditar configuración TLS/HTTPS de servidores

Objetivo

Capturar el handshake TLS y analizar qué versiones y cipher suites se negocian, detectando configuraciones débiles.

Escenario

Quieres auditar si tus servidores aceptan TLS 1.0/1.1 (deprecated) o cipher suites débiles que podrían ser explotados.

Pasos

1

Capturar tráfico HTTPS filtrando solo paquetes de handshake

2

Analizar versiones TLS con tshark

3

Detectar clientes conectando con TLS 1.0/1.1

4

Crear script de auditoría TLS completo

5

Generar reporte con hallazgos

bash — práctica
# CAPTURAR HANDSHAKES TLS
sudo tcpdump -i eth0 -w /tmp/tls.pcap \
  "tcp port 443 and (tcp[((tcp[12:1] & 0xf0) >> 2)] = 0x16)"

# Mientras captura, hacer conexiones:
curl -v https://tu-servidor.com
openssl s_client -connect tu-servidor.com:443

# ANALIZAR CON TSHARK
# Versiones en Client Hello:
tshark -r /tmp/tls.pcap -Y "tls.handshake.type == 1" \
  -T fields -e ip.src -e tls.handshake.version \
  2>/dev/null

# Detectar TLS 1.0 (0x0301) o TLS 1.1 (0x0302):
tshark -r /tmp/tls.pcap \
  -Y "tls.handshake.version == 0x0301 or tls.handshake.version == 0x0302" \
  -T fields -e ip.src -e tls.handshake.version 2>/dev/null

# SCRIPT AUDITORÍA TLS COMPLETO
cat > /tmp/audit_tls.sh << 'SCRIPT'
#!/bin/bash
TARGET=$1
echo "=== Auditoría TLS: $TARGET ==="
echo ""
echo "-- Versiones soportadas --"
for VER in -tls1 -tls1_1 -tls1_2 -tls1_3; do
    RESULT=$(echo | openssl s_client -connect $TARGET:443 $VER 2>&1 | grep -E "Protocol|handshake failure")
    echo "  $VER: $RESULT"
done
echo ""
echo "-- Cipher suite negociado --"
echo | openssl s_client -connect $TARGET:443 2>/dev/null | grep "Cipher is"
echo ""
echo "-- Cipher suites débiles (RC4, NULL, EXPORT) --"
echo | openssl s_client -connect $TARGET:443 -cipher "RC4:aNULL:eNULL:EXPORT" 2>&1 | \
  grep -E "Cipher is|handshake failure"
echo ""
echo "-- Certificado --"
echo | openssl s_client -connect $TARGET:443 2>/dev/null | \
  openssl x509 -noout -dates -subject 2>/dev/null
SCRIPT
chmod +x /tmp/audit_tls.sh
/tmp/audit_tls.sh cyberflows.uk

Resultado esperado

Identificarás qué versiones TLS y cipher suites acepta tu servidor. Podrás deshabilitar TLS 1.0/1.1 y ciphers débiles.

Básico 25 min

Lab 2: Detectar y bloquear escaneos de puertos en tiempo real

Objetivo

Detectar SYN scans, FIN scans y XMAS scans en tiempo real con bloqueo automático via iptables.

Escenario

Tu servidor recibe escaneos periódicos de bots. Quieres detectarlos y bloquear automáticamente IPs que hacen más de 50 SYN en 60 segundos.

Pasos

1

Filtrar paquetes SYN sin ACK para detectar SYN scans

2

Detectar FIN/NULL/XMAS scans por flags específicos

3

Crear script de conteo y bloqueo automático

4

Simular escaneo Nmap para verificar detección

5

Configurar como servicio systemd continuo

bash — práctica
# DETECTAR SYN SCANS EN TIEMPO REAL
sudo tcpdump -i eth0 -nn "tcp[tcpflags] == tcp-syn" -l 2>/dev/null | \
  awk '{split($3,ip,"."); src=ip[1]"."ip[2]"."ip[3]"."ip[4];
    count[src]++;
    if(count[src]==20) print "[ALERTA] Posible scan desde:", src;
    if(count[src]%100==0) print "[SCAN ACTIVO]", src, count[src], "SYNs";}'

# DETECTAR OTROS TIPOS
sudo tcpdump -i eth0 -nn "tcp[tcpflags] == tcp-fin" -c 10   # FIN scan
sudo tcpdump -i eth0 -nn "tcp[tcpflags] == 0" -c 10          # NULL scan
sudo tcpdump -i eth0 -nn "tcp[tcpflags] == (tcp-fin|tcp-push|tcp-urg)" -c 10  # XMAS

# SCRIPT BLOQUEO AUTOMÁTICO
cat > /usr/local/bin/scan_blocker.sh << 'SCRIPT'
#!/bin/bash
THRESHOLD=50
sudo tcpdump -i eth0 -nn "tcp[tcpflags] == tcp-syn" -l 2>/dev/null | \
while read line; do
    SRC=$(echo $line | awk '{print $3}' | rev | cut -d. -f2- | rev)
    [ -z "$SRC" ] && continue
    COUNT_F="/tmp/sc_$SRC"
    COUNT=$(cat $COUNT_F 2>/dev/null || echo 0)
    echo $((COUNT + 1)) > $COUNT_F
    find /tmp -name "sc_*" -mmin +1 -delete 2>/dev/null
    if [ $((COUNT + 1)) -eq $THRESHOLD ]; then
        echo "$(date): BLOQUEANDO $SRC ($THRESHOLD SYNs)" | tee -a /var/log/scan_blocker.log
        iptables -I INPUT -s $SRC -j DROP
    fi
done
SCRIPT
chmod +x /usr/local/bin/scan_blocker.sh
sudo /usr/local/bin/scan_blocker.sh &

Resultado esperado

IPs con más de 50 SYN en 60s son bloqueadas automáticamente. El log registra todas las IPs detectadas.

Avanzado 50 min

Lab 3: Análisis forense de exfiltración de datos

Objetivo

Dado un pcap de incidente, reconstruir qué datos salieron, hacia dónde y en qué momento.

Escenario

Un servidor interno está enviando grandes volúmenes de datos a Internet. Tienes una captura de 2 horas. Necesitas determinar qué datos salieron y desde qué proceso.

Pasos

1

Analizar volumen de tráfico por IP destino

2

Reconstruir flujos TCP sospechosos

3

Detectar exfiltración via DNS tunneling

4

Correlacionar timestamps con logs del sistema

5

Generar reporte forense del incidente

bash — práctica
# ANÁLISIS INICIAL DEL PCAP
sudo tcpdump -i eth0 -w /tmp/incidente.pcap  # Capturar primero

# Top destinos por volumen:
tshark -r /tmp/incidente.pcap -T fields -e ip.dst -e frame.len 2>/dev/null | \
  grep -v "^192.168." | \
  awk '{sum[$1]+=$2} END {for(ip in sum) printf "%-20s %.2f MB
", ip, sum[ip]/1048576}' | \
  sort -rn -k2 | head -10

# Reconstruir stream sospechoso:
SUSPICIOUS="93.184.216.34"
STREAM=$(tshark -r /tmp/incidente.pcap -Y "ip.dst == $SUSPICIOUS" \
  -T fields -e tcp.stream 2>/dev/null | sort | uniq -c | sort -rn | head -1 | awk '{print $2}')
tshark -r /tmp/incidente.pcap -q -z "follow,tcp,ascii,$STREAM" 2>/dev/null | head -80

# Detectar DNS tunneling (subdominios largos):
tshark -r /tmp/incidente.pcap -Y dns -T fields -e ip.src -e dns.qry.name 2>/dev/null | \
  awk 'length($2) > 50 {print "[DNS TUNNEL?]", $1, $2}' | head -20

# Timeline del ataque:
tshark -r /tmp/incidente.pcap -Y "ip.dst == $SUSPICIOUS" \
  -T fields -e frame.time -e frame.len 2>/dev/null | \
  awk '{total+=$2; if(NR==1) first=$1; last=$1}
       END {printf "Inicio: %s
Fin: %s
Total: %.2f MB
", first, last, total/1048576}'

# Reporte forense:
cat > /tmp/reporte.txt << EOF
REPORTE FORENSE - $(date)
IP Sospechosa: $SUSPICIOUS
Stream TCP: $STREAM
RECOMENDACIÓN: Bloquear IP en firewall, revisar logs de auth.log
EOF

Resultado esperado

Identificarás la IP destino, volumen de datos, contenido (si no cifrado), y timestamp exacto. Reporte forense listo para el equipo de respuesta.

Avanzado 45 min

Lab 4: Monitor de red en tiempo real con dashboard terminal

Objetivo

Crear dashboard terminal en Python que muestre top IPs, protocolos y detecte anomalías en tiempo real consumiendo salida de TCPDump.

Escenario

Necesitas visibilidad continua de red sin Wireshark. Un dashboard en terminal mostrará estadísticas actualizadas cada 5 segundos.

Pasos

1

Crear script Python que consume salida de TCPDump

2

Calcular top IPs y distribución de protocolos

3

Detectar nuevas IPs y picos de tráfico

4

Mostrar dashboard actualizado cada 5 segundos

5

Agregar alertas cuando se detectan anomalías

bash — práctica
cat > /usr/local/bin/net_dashboard.py << 'PYEOF'
#!/usr/bin/env python3
import subprocess, sys, os, time, re
from collections import defaultdict
from datetime import datetime

INTERFACE = sys.argv[1] if len(sys.argv) > 1 else "eth0"
REFRESH = 5

ip_counter = defaultdict(int)
proto_counter = defaultdict(int)
total = 0
start = time.time()
last_ips = set()
last_refresh = time.time()

proc = subprocess.Popen(
    ['sudo', 'tcpdump', '-i', INTERFACE, '-nn', '-l', '-q'],
    stdout=subprocess.PIPE, stderr=subprocess.DEVNULL,
    universal_newlines=True, bufsize=1
)

try:
    for line in proc.stdout:
        total += 1
        # Extraer IP origen
        m = re.search(r'(d+.d+.d+.d+).d+s*>', line)
        if m: ip_counter[m.group(1)] += 1
        # Protocolo
        for p in ['tcp','udp','icmp','arp']:
            if p in line.lower(): proto_counter[p] += 1; break

        if time.time() - last_refresh >= REFRESH:
            os.system('clear')
            elapsed = int(time.time() - start)
            print(f"{'='*60}")
            print(f"  NET MONITOR — {INTERFACE} — {datetime.now().strftime('%H:%M:%S')}")
            print(f"{'='*60}")
            print(f"  Paquetes: {total:,} | PPS: {total/max(elapsed,1):.1f}/s
")
            
            print("  TOP 10 IPs")
            for ip, c in sorted(ip_counter.items(), key=lambda x:-x[1])[:10]:
                pct = c/max(total,1)*100
                bar = '█'*int(pct/3)
                print(f"  {ip:<18} {c:>8,} {pct:>6.1f}% {bar}")
            
            print("
  PROTOCOLOS")
            for p, c in sorted(proto_counter.items(), key=lambda x:-x[1]):
                pct = c/max(total,1)*100
                print(f"  {p:<8} {c:>8,} {pct:>6.1f}%")
            
            new_ips = set(ip_counter) - last_ips
            if new_ips: print(f"
  ⚠ NUEVAS: {', '.join(list(new_ips)[:5])}")
            last_ips = set(ip_counter)
            last_refresh = time.time()
except KeyboardInterrupt:
    proc.terminate()
    print("
Detenido.")
PYEOF
chmod +x /usr/local/bin/net_dashboard.py
sudo python3 /usr/local/bin/net_dashboard.py eth0

Resultado esperado

Dashboard terminal con top IPs, protocolos y detección de nuevas IPs, actualizado cada 5 segundos.

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