Analizar un PCAP en un CTF con Wireshark y tshark

Qué mirar primero en una captura de red, cómo sacar contraseñas de FTP, HTTP, LDAP y Kerberos, extraer ficheros y descifrar TLS o WiFi con Wireshark y tshark.

· 3 min de lectura

Una captura de red (.pcap o .pcapng) aparece en dos situaciones: como reto de forense en un CTF, o como fichero que encuentras dentro de una máquina (en un recurso compartido, en la carpeta de un usuario o descargado por un IDOR, como en Cap). En los dos casos casi siempre buscas lo mismo: credenciales que viajaron sin cifrar o un fichero que se transfirió.

1. La vista general antes de abrir paquetes

No empieces haciendo scroll. Primero, qué hay en la captura:

capinfos captura.pcap                                   # duración, número de paquetes
tshark -r captura.pcap -qz io,phs                       # jerarquía de protocolos
tshark -r captura.pcap -qz conv,tcp                     # conversaciones TCP, por bytes
tshark -r captura.pcap -qz http,tree                    # peticiones HTTP

En Wireshark lo mismo está en Statistics → Protocol Hierarchy y Statistics → Conversations. Ordena las conversaciones por bytes: la más grande suele ser una transferencia de ficheros, y las de puertos raros, lo interesante.

2. Credenciales en texto claro

Protocolo Filtro de Wireshark Qué buscar
FTP ftp.request.command == "USER" || ftp.request.command == "PASS" Usuario y contraseña tal cual
HTTP Basic http.authorization Base64 de usuario:contraseña
Formularios HTTP http.request.method == "POST" username=...&password=... en el cuerpo
Telnet, POP3, IMAP, SMTP telnet, pop, imap, smtp Follow TCP Stream y leer
LDAP ldap.bindRequest_element Simple bind con la contraseña en claro (Support)
SNMP snmp La community string

Atajo para todo a la vez: Tools → Credentials en Wireshark, o en la terminal:

tshark -r captura.pcap -Y 'ftp.request.command in {"USER" "PASS"}' -T fields -e ftp.request.arg
pip install pcredz && Pcredz -f captura.pcap

Truco

Para leer una conversación entera, clic derecho → Follow → TCP Stream (Ctrl+Alt+Shift+T). Con tshark -r captura.pcap -qz follow,tcp,ascii,0 sacas el stream 0 en la terminal.

3. Hashes que se pueden crackear

Aunque el protocolo no mande la contraseña, a veces manda algo crackeable:

  • NTLMv2 (SMB, HTTP con NTLM): NTLMRawUnHide o Pcredz lo extraen en formato hashcat (-m 5600).
  • Kerberos AS-REQ con preautenticación: el timestamp cifrado se crackea con hashcat -m 19900 (etype 18) o -m 7500 (etype 23). Es el camino de Office y Certificate.
  • WPA/WPA2: un handshake de cuatro pasos se convierte con hcxpcapngtool -o hash.hc22000 captura.pcap y se crackea con -m 22000.

Todo ello se crackea como en la guía de cracking de hashes.

4. Extraer ficheros

File → Export Objects en Wireshark saca lo que se transfirió por HTTP, SMB, FTP-DATA, TFTP o IMF (correo). En la terminal:

tshark -r captura.pcap --export-objects http,./salida
tshark -r captura.pcap --export-objects smb,./salida

Si no lo reconoce, sigue el stream TCP, cambia la vista a Raw y guárdalo; luego file y binwalk -e dicen qué es. Para FTP, los datos van en una conexión aparte (FTP-DATA): búscala justo después del comando RETR.

5. Tráfico cifrado

  • TLS: si encuentras un fichero de claves de sesión (SSLKEYLOGFILE, un .log con líneas CLIENT_RANDOM) o la clave privada RSA del servidor, cárgalo en Preferences → Protocols → TLS. Con TLS 1.3 o cifrados con forward secrecy, solo sirve el fichero de claves de sesión.
  • WiFi: con la contraseña de la red, en Preferences → Protocols → IEEE 802.11 → Decryption keys añade wpa-pwd con contraseña:SSID. Así se descifra el tráfico en AirTouch.
  • Kerberos: con un keytab de la cuenta de servicio Wireshark descifra los tickets (Preferences → Protocols → KRB5).

6. Si no hay nada obvio

  • DNS: nombres larguísimos o en base64/hexadecimal suelen ser exfiltración (dns.qry.name).
  • ICMP: datos en el campo data de los ping, otro canal de exfiltración típico de CTF.
  • USB: capturas de teclado (usb.capdata); cada paquete es una tecla y hay scripts que lo traducen a texto.
  • Tiempos y longitudes: a veces el mensaje está en el tamaño de los paquetes o en el intervalo entre ellos.

En una máquina, si no hay captura pero tienes permiso para capturar (tcpdump con capabilities o como root), deja corriendo tcpdump -i any -w /tmp/c.pcap unos minutos: tareas programadas que se autentican contra otro servicio dejan credenciales a la vista (Carrier, LightWeight).

Practícalo en máquinas reales

Máquinas de Hack The Box donde se usa la técnica. Cada ▶ salta al minuto del vídeo de IppSec donde aparece.

Análisis de tráfico (pcap) 12 máquinas

Ver las 12 máquinas →

¿Ves un error o echas algo en falta? Cuéntanoslo