En ciberseguridad existe una tentación muy común cuando se empieza:
“Solo voy a probar un poco, no voy a romper nada”.
Herramientas como curl, Postman, Burp o simples peticiones HTTP hacen que testear una web parezca trivial. Sin embargo, aquí aparece una de las lecciones más importantes de toda la profesión:
👉 Que algo sea técnicamente posible no significa que sea legal.
La regla de oro de la ciberseguridad
Nunca pruebes la seguridad de un sistema que no es tuyo sin autorización explícita.
No importa:
que sea “solo por aprender”
que no haya daño
que no se roben datos
que el fallo sea evidente
que la petición sea un simple GET
📌 La legalidad no depende de la herramienta ni de la intención, depende del permiso.
¿Qué NO es legal hacer?
No es legal que un estudiante (ni un profesional) pruebe vulnerabilidades en:
Páginas web “random” de Internet
APIs públicas que no son suyas
Paneles /admin, /api/users, /orders?id=2 de terceros
Aplicaciones reales sin consentimiento del propietario
Aunque:
solo se cambie un ID
solo se mire la respuesta
no se modifique nada
no se guarde información
📌 Acceder a recursos que no te corresponden ya es un problema legal, aunque el servidor “te deje”.
El error mental más común
“Pero solo hice una petición HTTP…”
Un error muy habitual es pensar que:
GET = legal
POST / PUT / DELETE = ilegal
Esto es falso.
La ley no distingue métodos HTTP, distingue:
quién es el dueño del sistema
si tienes autorización
si accedes a información o funciones fuera de tu rol
Un solo GET a un recurso privado puede ser ilegal. Un DELETE en un entorno autorizado puede ser perfectamente legal.
¿Qué dice la ley?
En España y la Unión Europea, probar sistemas ajenos sin permiso puede encajar en:
Acceso no autorizado a sistemas informáticos
Interferencia en sistemas de información
Tratamiento ilícito de datos personales (si hay datos reales)
Esto se aplica aunque no haya daño, porque el delito no es “romper”, es acceder sin derecho.
¿Cuándo SÍ es legal practicar?
Hay escenarios completamente válidos y profesionales:
✔️ Sistemas propios
Servidores propios
Máquinas virtuales
Docker
Laboratorios locales
Infraestructura del centro educativo
✔️ Laboratorios diseñados para ser atacados
Plataformas educativas y entornos vulnerables creados expresamente para practicar.
Aquí hay algo clave: consentimiento explícito.
✔️ Bug Bounty (con reglas muy claras)
Algunas empresas permiten pruebas, pero:
solo ciertos dominios
solo ciertos tipos de ataques
con límites muy estrictos
No es recomendable como punto de partida para estudiantes.
✔️ Autorización escrita
Un correo, contrato o documento que indique:
qué se puede probar
hasta dónde
en qué condiciones
Esto es lo que separa a un auditor profesional de un aficionado imprudente.
La ciberseguridad no va de ser más listo que el sistema, va de ser responsable con el conocimiento.
Un buen profesional no es quien encuentra más vulnerabilidades, sino quien sabe cuándo tiene derecho a buscarlas.
La ética no es “relleno académico”: es una competencia técnica tan importante como saber usar una herramienta.
En seguridad informática hay una idea peligrosa que aparece una y otra vez: “uso HTTPS, así que mis datos están seguros”. Esta frase, tan común como incorrecta, es la puerta de entrada perfecta al OWASP Top 10 – A02: Cryptographic Failures.
Este punto no habla de ataques sofisticados ni de hackers con sudaderas negras. Habla de algo mucho más cotidiano —y mucho más grave—: usar mal la criptografía o no usarla cuando es necesaria.
De “exposición de datos” a “fallos criptográficos”
En ediciones anteriores del OWASP Top 10, este riesgo se conocía como Sensitive Data Exposure. El cambio de nombre a Cryptographic Failures no es un simple ajuste semántico. Es una declaración de intenciones.
El problema real no es que los datos se expongan “por accidente”, sino que:
Se almacenan sin protección
Se cifran con algoritmos obsoletos
Se gestionan claves de forma negligente
Se confía en mecanismos que no ofrecen seguridad real
Cuando la criptografía falla, la aplicación puede funcionar perfectamente… mientras los datos quedan totalmente expuestos.
Qué es realmente un fallo criptográfico
Un fallo criptográfico no significa que el algoritmo sea débil. En la mayoría de los casos, los algoritmos funcionan exactamente como fueron diseñados. El problema está en cómo los usamos.
Algunos ejemplos habituales:
Guardar contraseñas en texto plano
Cifrar contraseñas en lugar de hashearlas
Usar MD5 o SHA-1 porque “siempre se ha hecho así”
Reutilizar claves en distintos sistemas
Incluir secretos directamente en el código fuente
Pensar que Base64 es cifrado
La criptografía no perdona errores conceptuales. Si se aplica mal, la seguridad es una ilusión.
Cifrado, hashing y codificación: la confusión clásica
Uno de los orígenes más comunes de A02 es no distinguir correctamente entre tres conceptos fundamentales:
Cifrado Es un proceso reversible. Sirve para proteger datos que más adelante deben recuperarse, como información personal o datos almacenados.
Hashing Es un proceso irreversible. Está pensado para verificar, no para recuperar. Por eso es la técnica correcta para almacenar contraseñas.
Codificación No es un mecanismo de seguridad. Base64, por ejemplo, solo transforma datos para facilitar su transporte. Cualquiera puede revertirlo.
Cuando una aplicación mezcla estos conceptos, el resultado suele ser desastroso.
Contraseñas: el punto más frágil del sistema
Las contraseñas merecen un capítulo propio dentro de A02. No porque sean un mecanismo perfecto, sino porque siguen siendo el más usado.
Errores críticos que todavía se ven en producción:
Contraseñas almacenadas en texto plano
Contraseñas cifradas con clave reversible
Hashes rápidos sin salt
La práctica correcta implica:
Algoritmos diseñados específicamente para contraseñas
Uso de salt único por usuario
Coste computacional suficiente para frenar ataques de fuerza bruta
Aquí no hay atajos. Si las contraseñas se gestionan mal, todo el sistema cae detrás.
HTTPS no lo soluciona todo
HTTPS protege los datos en tránsito, pero no garantiza que:
Se usen versiones seguras de TLS
Las cookies estén correctamente configuradas
No haya contenido mixto
Los datos se almacenen de forma segura en el servidor
Es posible tener un candado verde en el navegador y, aun así, estar filtrando información sensible sin darse cuenta.
HTTPS es una condición necesaria, pero nunca suficiente.
Tokens, sesiones y APIs modernas
Las aplicaciones actuales dependen cada vez más de APIs y tokens de autenticación. Y aquí aparecen nuevos fallos criptográficos:
Tokens predecibles
JWT sin firma o mal configurados
Tokens expuestos en URLs
Almacenamiento inseguro en el cliente
Muchos de estos errores no rompen la funcionalidad, pero sí la seguridad. El sistema “funciona”, hasta que alguien decide mirarlo con mentalidad de auditor.
Datos sensibles: no todo vale lo mismo
Uno de los errores de diseño más comunes es no clasificar los datos.
No toda la información requiere el mismo nivel de protección, pero hay datos que nunca deberían almacenarse sin medidas criptográficas adecuadas, como:
Credenciales
Identificadores personales
Tokens de acceso
Información financiera
A esto se suman los grandes olvidados: backups, logs y ficheros temporales, que a menudo contienen más información sensible que la propia base de datos principal.
Pensar como auditor: detectar A02
Detectar fallos criptográficos no siempre requiere herramientas avanzadas. Muchas veces basta con observar:
Cómo se gestionan las contraseñas
Qué información aparece en cookies y cabeceras
Qué algoritmos se usan realmente
Dónde se almacenan los secretos
La automatización ayuda, pero el criterio humano es insustituible. Un escáner puede avisar; un profesional entiende el impacto.
Buenas prácticas: menos magia, más criterio
La criptografía segura no consiste en usar lo último, sino en usar lo adecuado:
Algoritmos actuales y bien mantenidos
Gestión centralizada de secretos
Separación de responsabilidades
Decisiones documentadas
La seguridad madura no se basa en trucos, sino en disciplina técnica.
Conclusión
OWASP A02 no trata de romper sistemas. Trata de recordar algo esencial: los datos tienen valor, y protegerlos es una responsabilidad técnica y ética.
La mayoría de los fallos criptográficos no ocurren por falta de herramientas, sino por falta de comprensión. Por eso este punto es clave en cualquier formación técnica: obliga a pensar, a cuestionar y a asumir que la seguridad no es un añadido, sino parte del diseño.
Cuando la criptografía falla, no hay parche que lo arregle después. Solo queda aprender… y hacerlo mejor la próxima vez.
Academia de la Flota Estelar — División de Seguridad Informática Nivel: Cadete Técnico Sistema: USS Horizon Estado de la misión: ACTIVA
Año estelar 78241.7
La USS Horizon ha detectado interceptaciones de comunicaciones por parte de una facción hostil. El Comando de Seguridad ordena activar cifrado simétrico de grado Federación para proteger:
Credenciales del sistema
Comunicaciones internas
Datos de navegación
Protocolos de defensa
Tu misión como oficial técnico es implementar cifrado AES-256 y validar la seguridad del sistema.
OBJETIVOS DE LA MISIÓN
El cadete será capaz de:
Comprender el cifrado simétrico
Generar claves seguras
Cifrar información sensible
Verificar resistencia ante ataques
Usar AES correctamente
Entender el problema del intercambio de claves
Aplicar cifrado autenticado moderno (GCM)
FASE 1 — COMPRENDER LA AMENAZA
Informe del Comando
Las transmisiones sin cifrar pueden ser interceptadas mediante sondas de escucha. Cualquier mensaje en texto plano es vulnerable.
Conceptos clave
Texto plano → mensaje legible
Texto cifrado → mensaje ilegible
Clave → secreto que controla el cifrado
Algoritmo → transformación matemática
El cifrado simétrico usa una única clave compartida.
Si el enemigo obtiene la clave → seguridad comprometida.
La criptografía asimétrica es uno de esos inventos humanos que parecen ciencia ficción pero sostienen la realidad cotidiana. Cada vez que abres una web HTTPS, envías un mensaje seguro, firmas un documento digital o te conectas por SSH, estás usando matemáticas diseñadas para resolver un problema aparentemente imposible: compartir secretos sin compartir el secreto.
En el cifrado simétrico ya viste que dos partes pueden proteger información usando una misma clave. Rápido, eficaz… pero con un punto débil crítico: ¿cómo intercambias esa clave sin que alguien la intercepte? Aquí entra la criptografía de clave pública, una idea brillante basada en funciones matemáticas fáciles de calcular pero extremadamente difíciles de invertir. Gracias a ello, cada entidad puede tener dos claves: una pública que puede compartir con el mundo y una privada que jamás debe revelar. Lo que una cifra, solo la otra puede descifrar; lo que una firma, la otra puede verificar.
Este modelo no solo permite cifrar mensajes. Permite algo mucho más profundo: crear confianza en sistemas donde las partes no se conocen previamente. De aquí nacen las firmas digitales, los certificados, las autoridades de certificación y, en última instancia, el funcionamiento seguro de Internet mediante TLS. Sin criptografía asimétrica no existirían el comercio electrónico, la identidad digital, ni la mayoría de servicios que hoy consideramos normales.
En este tema no solo aprenderás comandos. Comprenderás cómo se construye un canal seguro desde cero: cómo se generan identidades criptográficas, cómo se cifra para un destinatario concreto, cómo se garantiza que un mensaje no ha sido alterado, y cómo una infraestructura de certificados permite confiar en claves públicas desconocidas. Es el paso donde la seguridad deja de ser “ocultar datos” y se convierte en demostrar identidad, integridad y autenticidad en un entorno hostil.
Limitación del cifrado simétrico:
Necesita compartir clave secreta
Si se intercepta → seguridad rota
Problema fundamental:
¿Cómo compartir un secreto sin compartirlo?
Solución matemática: Criptografía de clave pública
Cada usuario posee:
Clave pública → se puede compartir
Clave privada → nunca se revela
Lo cifrado con una solo puede descifrarse con la otra.
Resultado esperado: El alumno comprende la diferencia simétrico vs asimétrico.
Conceptos Fundamentales
Conceptos clave:
Par de claves (Key Pair)
Clave pública
Clave privada
Cifrado
Descifrado
Firma digital
Verificación
No repudio
Confianza
Certificados
Idea central: La clave pública cifra o verifica La clave privada descifra o firma
Fundamento Matemático (Nivel Conceptual)
La criptografía asimétrica usa funciones:
Fáciles de calcular
Extremadamente difíciles de invertir
Ejemplo conceptual:
Multiplicar primos grandes → fácil Factorizar resultado → extremadamente difícil
Este principio sostiene:
RSA
Diffie-Hellman
ECC
Algoritmos Asimétricos Principales
RSA
Basado en factorización de números grandes. Usado para:
Cifrado
Firma digital
TLS clásico
Diffie-Hellman
Permite generar una clave compartida sin enviarla. Base del intercambio seguro.
ECC (Elliptic Curve Cryptography)
Versión moderna y eficiente. Usada en:
TLS moderno
Blockchain
SSH moderno
Certificados
Resultado esperado: El alumno distingue funciones de cada algoritmo.
Concepto: Cualquiera puede cifrar, solo el dueño puede leer
Firma Digital
Proceso:
Emisor firma con su clave privada
Receptor verifica con clave pública
Garantiza:
Autoría
Integridad
No repudio
Uso real:
Software firmado
Certificados
Emails seguros
Blockchain
Documentos legales
Intercambio de Claves Seguro (Diffie-Hellman)
El mayor avance criptográfico.
Permite:
Generar clave simétrica
Sin transmitirla
Incluso con atacante escuchando
Esto es lo que hace TLS.
Concepto clave: El asimétrico no cifra grandes datos, crea la clave simétrica.
Criptografía Híbrida (Cómo funciona TLS)
En el mundo real:
Asimétrico → intercambia clave
Simétrico → cifra datos (rápido)
Esto es:
HTTPS
VPN
SSH
TLS
Internet seguro
Certificados Digitales
Problema:
¿Cómo sé que una clave pública es auténtica?
Solución:
Autoridades de Certificación (CA)
Un certificado vincula:
Identidad
Clave pública
Firma de una CA
Conceptos:
X.509
Cadena de confianza
Root CA
Certificado autofirmado
Validación
Ataques contra Criptografía Asimétrica
Robo de clave privada
MITM
Certificados falsos
Claves débiles
Mala implementación
RNG débil
Padding attacks (conceptual)
Mensaje: La criptografía no falla por matemáticas → falla por humanos.
OWASP y Criptografía
Relación directa con:
OWASP A02 — Cryptographic Failures
Errores reales:
Claves expuestas
Sin validación de certificados
Uso de RSA débil
Sin forward secrecy
Mala generación de claves
Recomendaciones
Generar par de claves
Cifrar mensaje con clave pública
Firmar archivo
Verificar firma
Crear certificado autofirmado
Simular TLS
MITM conceptual
Ver handshake TLS con Wireshark
Conexión con el Mundo Real
Esto protege:
HTTPS
SSH
VPN
Git firmado
Docker firmado
Identidad digital
Blockchain
Infraestructura crítica
Sin criptografía asimétrica → Internet no existiría.
Comparativa — Clave Simétrica vs Clave Asimétrica
Propiedad
Criptografía Simétrica
Criptografía Asimétrica
Nº de claves
Una sola clave secreta compartida
Dos claves: pública y privada
Distribución de claves
Problema crítico (debe compartirse en secreto)
La pública se puede compartir libremente
Velocidad
Muy rápida (apta para grandes volúmenes de datos)
Mucho más lenta
Uso principal
Cifrado de datos
Intercambio de claves, firma digital, autenticación
Seguridad depende de
Mantener la clave secreta
Proteger la clave privada
Tamaño de clave típico
128 / 192 / 256 bits (AES)
2048+ bits RSA / 256 bits ECC
Cifrado de grandes datos
Excelente
Ineficiente
Integridad / autenticidad
Necesita mecanismos extra (HMAC, GCM)
Incluido mediante firma digital
No repudio
No
Sí (firma digital)
Complejidad matemática
Moderada
Alta
Resistencia si interceptan el mensaje
Segura si no tienen la clave
Segura si no tienen la privada
Ejemplos de algoritmos
AES, ChaCha20, Blowfish
RSA, ECC, Diffie-Hellman
Uso en el mundo real
Discos cifrados, VPN, WiFi, bases de datos
TLS, certificados, firmas, SSH
Papel en TLS/HTTPS
Cifra el tráfico
Intercambia la clave simétrica
Escalabilidad (muchos usuarios)
Mala (cada pareja necesita clave distinta)
Buena (cada usuario tiene su par de claves)
Si roban la clave
Pueden leer todo
Solo compromete esa identidad
Caso de uso ideal
Proteger datos rápidamente
Establecer confianza entre desconocidos
TLS = combinación de ambas (criptografía híbrida)
Simétrica = rapidez para proteger datos
Asimétrica = confianza e identidad
MISIÓN DE LA FLOTA ESTELAR
CANAL SEGURO — CRIPTOGRAFÍA ASIMÉTRICA + FIRMA + CERTIFICADOS (OpenSSL)
Unidad: USS Horizon — División de Comunicaciones Seguras Nivel: Cadete Técnico Objetivo general: establecer un canal de comunicación confiable usando clave pública/privada, firma digital, y certificado.
PARTE 1 — “IDENTIDAD CRIPTOGRÁFICA” (Par de claves)
FASE 1 — Crear carpeta de misión
mkdir-p mision_canal_seguro && cd mision_canal_seguro
FASE 2 — Generar clave privada del oficial Bob (2048 bits)
Narrativa: Bob es el oficial de comunicaciones. Su clave privada es el “código genético” de su identidad.
openssl genrsa -out bob_privada.pem 2048
Comprobación rápida (sin mostrarla entera):
openssl rsa -in bob_privada.pem -check-noout
FASE 3 — Obtener la clave pública de Bob
Narrativa: esta es la clave que Bob puede compartir con toda la Flota.
Ahora Bob no confía “porque sí” en la clave pública de Alice.
Confía porque la CA de la Flota la certifica.
PARTE 5 — “HÍBRIDO” (Cómo funciona Internet de verdad)
Verdad del universo: El asimétrico es lento para datos grandes. Se usa para intercambiar/validar una clave simétrica, y luego se cifra todo con AES/ChaCha20.
Mini-demostración conceptual (sin meternos aún en DH real)
Alice y Bob se validan con certificados (asimétrico)
Se acuerda una clave de sesión (simétrica)
Todo el tráfico va con AES-GCM / ChaCha20-Poly1305
Eso es TLS.
INFORME FINAL (lo que tienes que entregar)
Capturas o salida de:
creación de claves
cifrado/descifrado RSA
firma y verificación (OK)
verificación fallida tras manipulación
creación de CA
emisión del certificado de Alice
verificación openssl verify
Explicación breve:
diferencia cifrado vs firma
por qué se necesitan certificados
por qué TLS es híbrido
OPCIONALES (Modo “Cadete con rango”)
A) Ver handshake TLS real con Wireshark (si tienes tiempo)
abrir un sitio HTTPS
filtrar tls y ver certificados, cipher suite, etc.
B) Pasar a ECC
generar claves con curvas elípticas y comparar tamaños
C) Forward secrecy (conceptual)
por qué DH/ECDHE evita que roben sesiones antiguas si se filtra una clave
Registro del Capitán:
“Cadete, hoy no solo has cifrado un mensaje. Has creado confianza en un universo hostil. La seguridad no es ocultar información: es demostrar identidad, detectar manipulación y sobrevivir a la interceptación.”
OSINT (Open Source Intelligence) es el arte —y la ciencia— de obtener información a partir de fuentes públicas, sin interactuar activamente con el objetivo ni alterar sistemas.
Trabajar desde la terminal tiene varias ventajas clave:
Reproducibilidad: lo que haces hoy lo puedes repetir mañana.
Automatización: un comando hoy, un script mañana.
Mentalidad analítica: piensas en datos, no en interfaces.
Escalabilidad: una IP, cien dominios o mil subdominios.
1. AMASS – Descubrimiento de subdominios (OSINT real)
¿Qué es Amass?
Amass es una herramienta de OWASP diseñada para mapear la superficie externa de una organización, utilizando únicamente fuentes públicas cuando se trabaja en modo pasivo.
No escanea puertos, no lanza exploits. Pregunta a Internet lo que Internet ya sabe.
HTTP, visto desde el prisma del análisis forense, se convierte en un río de migas digitales. Todo lo que un usuario hace en la web —clics, formularios, cargas, descargas, redirecciones— queda reflejado en forma de peticiones y respuestas. Para un analista forense, ese flujo es una fuente de verdad incómodamente sincera.
1. HTTP desde la perspectiva del Análisis Forense
HTTP (Hypertext Transfer Protocol) es el lenguaje de comunicación entre navegadores y servidores web. En condiciones normales es un protocolo simple, sin cifrar, basado en texto plano. Esa “simplicidad” lo convierte en un objetivo fantástico para la reconstrucción forense de actividades.
¿Por qué HTTP importa en un análisis forense?
HTTP expone tres elementos cruciales:
Qué hizo un usuario Las URLs visitadas describen intención, interés y acciones concretas. Un acceso a /wp-admin/ no es lo mismo que una visita a /index.html.
Qué envió un usuario Si no hay cifrado (HTTP a secas), el analista puede ver:
campos de formularios
parámetros en la URL
cookies
cabeceras personalizadas
Son pruebas directas de actividad.
Qué devolvió el servidor Los códigos de estado (200, 404, 500…) cuentan historias:
¿Se intentó acceder a un recurso prohibido? (403)
¿Hubo intentos de escaneo? (404 repetidos)
¿Hubo redirecciones sospechosas? (3xx)
En un entorno HTTPS el contenido se cifra, pero la metadata sigue hablando: SNI, IPs de destino, tamaño de paquetes, frecuencia de conexiones.
2. Qué puede analizar un forense dentro del tráfico HTTP
Cuando el tráfico está en claro (capturas PCAP, logs de proxy, almacenamientos en disco…), un analista puede reconstruir:
Peticiones
Método usado (GET, POST, PUT…)
URL completa con parámetros
Cookies
User-Agent
Referer (muy útil para reconstruir navegación)
Origen de la petición
Respuestas
Códigos de estado
Tipo de contenido (Content-Type)
Descarga de ficheros
Redirecciones (sirven para detectar phishing o malware)
Cuerpo (Body)
Formularios enviados
Archivos subidos
Tokens
Sesiones reutilizadas
Comandos dentro de ataques (SQLi, XSS, LFI, RFI)
HTTP deja la puerta abierta a ver la anatomía completa del ataque.
3. Indicadores forenses típicos en HTTP
Un forense puede detectar patrones de ataque leyendo únicamente tráfico HTTP.
parámetros larguísimos y codificados (Base64, hex, etc.)
HTTP se convierte en un diario de guerra para quien sabe leerlo.
4. Fuentes forenses relacionadas con HTTP
PCAPs
Capturas obtenidas con Wireshark/tcpdump → reconstrucción completa de la sesión.
Logs de servidor
Apache: access.log y error.log
Nginx: access.log y error.log
IIS: logs W3C
Incluyen:
IP origen
timestamp
método
URL
código de respuesta
tamaño de respuesta
User-Agent
Logs de proxy/IDS/IPS
Squid
Suricata
Snort
Detectan patrones de ataque.
Carpetas temporales del navegador
Cuando no hay cifrado, muchos navegadores almacenaban recursos en caché → reconstrucción de contenido web visitado.
5. Qué valor aporta HTTP en un caso forense
HTTP permite:
Atribución
Qué IP hizo qué petición, cuándo, y hacia dónde.
Reconstrucción cronológica
Secuencia exacta de navegación.
Detección de actividad maliciosa
Scripts, comandos, payloads.
Derivación de intenciones
El tipo de URL buscada revela motivación y objetivos.
Prueba digital sólida
HTTP es fácil de interpretar y explicar en un informe pericial.
LAS CAPAS DE HTTP
En un recorrido típico, desde que un navegador lanza un GET hasta que el servidor responde un 200 OK, intervienen estas capas:
1. Capa de Aplicación (HTTP “de verdad”) Aquí es donde vive el propio HTTP. Todo lo que son métodos (GET, POST…), cabeceras, cookies, códigos de estado, cuerpos JSON/HTML/lo-que-sea, ocurre aquí. Es la capa donde se expresa la intención humana: “dame este recurso”, “aquí tienes mi formulario”, “acepto gzip”.
2. Capa de Transporte (TCP) HTTP clásico usa TCP, que actúa como el mensajero meticuloso: garantiza que los datos lleguen en orden, completos y sin que nadie se pierda por el camino. Aquí se negocia el 3-way handshake, se fragmentan segmentos, se controlan retransmisiones y se mantiene la conexión.
3. Capa de Red (IP) IP es la guía turística poco habladora que solo sabe entregar paquetes. Se ocupa de mover esos segmentos TCP a través de routers, saltos, rutas posibles, usando direcciones IP. No sabe nada de “GET /index.html”, solo sabe de “lleva este paquete a la 172.217.x.x”.
4. Capa de Enlace de Datos (Ethernet / Wi-Fi) Aquí estamos en el nivel de los marcos (frames), las MACs, la detección de colisiones, los canales radioeléctricos… Es la autopista física donde circulan los bits.
5. Capa Física Aquí no hay cabeceras ni protocolos nobles. Solo voltajes, pulsos, ondas, fibras, fotones. Es la capa donde HTTP desaparece por completo y solo quedan electrones corriendo nerviosos.
Ejemplo
Vamos a hacer un ejemplo muy visual, como si desmontáramos una muñeca rusa digital. Imagina que tu navegador quiere pedir:
GET /login.html HTTP/1.1 Host: ejemplo.com
Ese texto tan inocente pasa por una cadena de capas. Te lo describo como si fuese un “viaje del paquete” de arriba abajo.
1. Capa de Aplicación (HTTP)
Aquí se construye el mensaje original:
GET /login.html HTTP/1.1 Host: ejemplo.com User-Agent: Firefox Accept: text/html
Todavía no hay números de puertos, ni IPs, ni MACs. Solo intención: “dame este recurso”.
2. Capa de Transporte (TCP)
HTTP se mete dentro de un segmento TCP. Ahora aparecen cosas como:
Puerto origen: 53214
Puerto destino: 80
Número de secuencia: 45500123
Flags: PSH, ACK
Wireshark es un analizador de tráfico de red que permite capturar y examinar, en tiempo real o a través de archivos pcap, todos los paquetes que circulan por un equipo o una interfaz de red. Su potencia reside en su capacidad para mostrar cada detalle de la comunicación: protocolos, cabeceras, datos, errores y patrones internos.
Sin embargo, una captura completa suele contener miles de paquetes mezclados: peticiones web, DNS, tráfico de fondo del sistema, retransmisiones TCP, etc. Analizar todo a la vez es inviable. Para poder investigar de forma eficaz, necesitamos herramientas que nos permitan centrarnos solo en lo relevante.
Aquí es donde entran en juego los filtros de visualización.
2. ¿Qué son los filtros de Wireshark?
Un filtro en Wireshark es una expresión que permite mostrar únicamente los paquetes que cumplen una o varias condiciones. El resto de los paquetes no se eliminan: simplemente se ocultan temporalmente de la vista.
Los filtros son una forma de decirle a Wireshark:
“De entre todos estos miles de paquetes, solo quiero ver los que coincidan con esta característica concreta.”
Por ejemplo:
“Solo quiero ver peticiones GET a una web.”
“Muéstrame las cookies enviadas por el navegador.”
“Quiero ver los paquetes destinados al puerto 80.”
“Enséñame el tráfico DNS para saber qué dominios se resolvieron.”
Con esto, el análisis deja de ser caótico y se convierte en una investigación guiada.
3. ¿Cómo funcionan por dentro?
3.1. Campos de los protocolos
Wireshark entiende cada protocolo y lo descompone en campos. Por ejemplo, en HTTP podemos encontrar:
http.host
http.request.method
http.cookie
En TCP aparecen campos como:
tcp.port
tcp.flags.syn
tcp.seq
En DNS:
dns.qry.name
Cada uno de estos campos puede usarse para crear filtros.
3.2. Operadores
Para comparar esos campos con valores concretos, Wireshark utiliza operadores lógicos y relacionales:
Operador
Significado
==
Igual a
!=
Distinto
contains
El campo contiene un texto concreto
< / >
Comparación numérica
&&
AND lógico
`
!
Negación (NO)
Con estos operadores podemos crear condiciones desde sencillas hasta muy complejas.
3.3. Ejemplos básicos
http
Muestra únicamente paquetes HTTP.
http.request.method == "POST"
Filtra todas las peticiones POST (ideal para ver formularios y logins sin cifrar).
tcp.port == 80
Muestra tráfico hacia/desde el puerto 80 (HTTP en claro).
http.cookie contains "PHPSESSID"
Filtra cookies asociadas a sesiones PHP.
4. ¿Para qué sirven realmente?
Los filtros permiten:
• Analizar aplicaciones web en PHP
Ver cómo un navegador solicita index.php, cómo envía credenciales por POST o cómo recibe una cookie de sesión.
• Depurar problemas
Identificar errores HTTP, pérdidas de paquetes, retransmisiones TCP o peticiones repetidas.
• Seguir el flujo de un usuario
Reconstruir la secuencia de navegación: qué URL pidió, cuándo inició sesión y qué recursos cargó la página.
• Detectar configuraciones inseguras
Tráfico HTTP en claro, cookies sin atributos de seguridad, peticiones POST sin cifrar…
• Aprender el funcionamiento interno de la red
DNS, ARP, TLS, TCP handshake y otros mecanismos que normalmente pasan desapercibidos.
5. Tipos de filtros en Wireshark
Wireshark tiene dos categorías (aunque muchos alumnos las confunden al principio):
1. Filtros de captura (Capture Filters)
Se aplican antes de capturar y limitan qué paquetes se guardan en el archivo. Tienen sintaxis estilo BPF (más escueta): Ejemplo:
port 80
host 192.168.1.100
2. Filtros de visualización (Display Filters)
Se aplican después de capturar y permiten analizar sin perder nada. Son los que se usan el 99% del tiempo en clase:
Los filtros son la herramienta fundamental para convertir una captura de tráfico en bruto en una historia comprensible. Permiten investigar, aprender, depurar y entender cómo se comportan las aplicaciones web y los protocolos de red.
Dominar los filtros equivale a dominar Wireshark.
Filtros básicos pero muy visuales
1. Filtrar por HTTP en claro Cuando trabajan con un hosting sin HTTPS o usando HTTP local:
http
Muestra peticiones GET, POST, cabeceras, parámetros… el caramelo didáctico ideal.
2. Solo peticiones GET
http.request.method == "GET"
Sirve para ver qué recursos pide el navegador: imágenes, JS, CSS, el index.php.
3. Solo peticiones POST (login, formularios)
http.request.method == "POST"
Perfecto para mostrar cómo se enviarían credenciales sin cifrar. Nada despierta conciencias como ver un usuario y contraseña en texto plano.
Filtros para cazar PHP
4. Peticiones explícitas a archivos PHP
http.request.uri contains ".php"
Puedes ver exactamente qué scripts se llaman: login.php, insert.php, update.php.
5. Extraer cookies (sesiones PHP)
http.cookie
Llega el momento «¿ves esto? Esto es tu sesión… y si te la robo, te convierto en ti».
6. Ver el PHPSESSID en tráfico no cifrado
http.cookie contains "PHPSESSID"
Es el filtro dramático: el espíritu del session hijacking entra en clase.
Cuando todo va cifrado (HTTPS)
La gente suele pensar “si está cifrado, no veo nada”, pero sí hay cosas interesantes:
7. Filtrar solo TLS/SSL
tls
8. Ver el SNI (qué dominio está visitando el cliente)
tls.handshake.extensions_server_name
SNI revela dominios incluso aunque el contenido esté cifrado. Muy útil para explicación OSINT.
9. Ver el handshake TLS
tls.handshake
Para explicar versiones de TLS, cipher suites, certificados…
Filtros orientados al servidor web
10. Filtrar por puerto
tcp.port == 80 || tcp.port == 443
Básico pero efectivo para centrar el tráfico.
11. Filtrar errores HTTP
http.response.code >= 400
Se ven los 404, 403, 500… Ideal cuando tus alumnos han roto algo sin querer.
12. Ver solo respuestas 200 (todas bien)
http.response.code == 200
Filtros para mostrar problemas reales
13. Retransmisiones TCP (problemas de red)
tcp.analysis.retransmission
Traduce “la red no es perfecta, observad estas repeticiones”.
14. Paquetes fuera de orden
tcp.analysis.out_of_order
15. Flujo lento o paquetes perdidos
tcp.analysis.lost_segment
Filtros de capas bajas (para dar color a la clase)
16. Filtrar ARP
arp
Es como ver el vecindario de máquinas preguntándose mutuamente “¿quién eres?”.
17. Filtrar DNS
dns
Verán cada dominio que consulta el navegador antes siquiera de entrar al PHP.
Un combo que siempre triunfa en clase
Ver solo: peticiones POST + tráfico HTTP + mostrar cookies Sirve para simular un login vulnerable:
http.request.method == "POST" && http.cookie
Y si están usando HTTPS pero quieres que entiendan lo que no pueden ver:
tls && http
No aparece nada HTTP, y eso invita al clásico «¿ves? por esto existe HTTPS».
Práctica: Análisis de Tráfico HTTP con Wireshark en una Web Vulnerable
Caso práctico: testphp.vulnweb.com
1. Introducción
En esta práctica aprenderás a utilizar Wireshark para analizar el tráfico HTTP generado al navegar por una aplicación web vulnerable. El objetivo es comprender cómo viajan las peticiones y respuestas en una web sin cifrado, identificar parámetros, observar cabeceras, analizar formularios y cookies de sesión, y entender los riesgos de seguridad asociados.
La web utilizada es:
http://testphp.vulnweb.com/
Este sitio es un entorno público y autorizado para prácticas de ciberseguridad ofrecido por Acunetix, por lo que su uso es completamente legal con fines académicos.
2. Objetivos de la práctica
Al finalizar la actividad, deberás ser capaz de:
Capturar tráfico HTTP real con Wireshark.
Aplicar filtros para aislar información concreta.
Analizar peticiones GET y POST.
Identificar parámetros, rutas internas y patrones de navegación.
Localizar cookies y sesiones enviadas en texto claro.
Comprender los riesgos de enviar credenciales por HTTP.
3. Procedimiento
3.1. Preparación
Abre Wireshark.
Selecciona la interfaz de red que utilices para navegar por Internet.
Inicia la captura de paquetes.
Abre el navegador y visita:
http://testphp.vulnweb.com/
Navega por distintas secciones: categorías, productos, artista, carrito…
Accede al formulario de login e introduce cualquier usuario y contraseña (fallará siempre, es parte del diseño).
Realiza varias acciones para generar tráfico suficiente.
Regresa a Wireshark y detén la captura.
4. Análisis guiado en Wireshark
A continuación aplicarás varios filtros y analizarás lo que ocurre en cada caso.
4.1. Visualizar únicamente tráfico HTTP
Filtro:
http
Qué debes observar:
Todas las peticiones realizadas al servidor.
Rutas como /index.php, /listproducts.php, /product.php, etc.
Imágenes, scripts y otros recursos solicitados.
Ejemplo típico que deberías encontrar:
GET /listproducts.php?cat=1 HTTP/1.1
Host: testphp.vulnweb.com
4.2. Listar únicamente peticiones GET
Filtro:
http.request.method == "GET"
Observa cómo la web utiliza parámetros en la URL. Ejemplos que verás:
GET /artist.php?artist=4
GET /product.php?pic=3
GET /listproducts.php?cat=2
Esto permite mapear la estructura del sitio.
4.3. Detectar peticiones con parámetros
Filtro:
http.request.uri contains "="
Este filtro muestra exclusivamente peticiones con parámetros GET.
Ejemplos esperados:
GET /shoppingcart.php?add=2
GET /login.php?test=1
Fíjate en cómo la información viaja en texto plano.
4.4. Analizar el login (peticiones POST)
En la web, introduce un usuario y contraseña en el formulario.
Filtro:
http.request.method == "POST"
Debes encontrar una petición similar a:
POST /userinfo.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded
uname=prueba&pass=1234
Reflexiona sobre el riesgo de enviar credenciales por HTTP sin cifrar.
4.5. Visualizar cookies y sesiones
Filtro:
http.cookie
Deberías ver algo como:
Cookie: PHPSESSID=8d6v93h3k8a...
Esto confirma que la sesión también viaja sin protección alguna.
4.6. Encontrar errores en la web
Filtro:
http.response.code >= 400
Este filtro permite localizar:
Páginas no encontradas (404)
Errores internos (500)
Accesos no permitidos (403)
Esto ayuda a entender la estructura interna del sitio.
4.7. Localizar recursos concretos: imágenes, JS y CSS
Para analizar recursos específicos:
Imágenes (JPG):
http.request.uri contains ".jpg"
Scripts:
http.request.uri contains ".js"
Hojas de estilo:
http.request.uri contains ".css"
Permite reconstruir exactamente todo lo que carga el navegador.
Aprender a capturar y analizar tráfico de red con Wireshark, identificar credenciales transmitidas en claro, interpretar paquetes HTTP y localizar patrones que un pentester o analista usaría para detectar:
Credenciales expuestas
Cookies de sesión
Estructura de peticiones al servidor
Intentos de ataque (básico)
Fingerprinting indirecto del hosting
1. Preparación del entorno
1.1. Material necesario
Wireshark instalado
Navegador web
La URL de vuestra aplicación PHP en el hosting
1.2. Configuración previa
Abrir Wireshark
Elegir la interfaz correcta:
En WiFi: suele ser wlan0 o similar
En cable: eth0
Aplicad un filtro pre-captura opcional para no saturar: tcp port 80 or tcp port 443
2. Captura del tráfico (la parte divertida)
2.1. Comenzar la captura
En Wireshark → seleccionad interfaz → botón azul Start capture.
Dejad Wireshark escuchando en segundo plano.
2.2. Generar tráfico real
En vuestra aplicación PHP:
Entrad en la página del login.
Haced:
1 intento fallido
1 intento correcto
Navegad un poco por el CRUD (listar, ver, editar).
Esto genera tráfico muy fácil de reconocer.
3. Filtrado y análisis del tráfico HTTP
3.1. Filtrar solo HTTP
En la barra de filtros de Wireshark:
http
Observad cómo aparecen las peticiones:
GET /login.php HTTP/1.1
POST /login.php HTTP/1.1
Peticiones a JS, CSS, etc.
Entrega:
Captura del primer filtro HTTP mostrando al menos 8–10 paquetes.
4. Análisis de un login (¡a por credenciales!)
Vamos a buscar el POST del login.
4.1. Filtro preciso del POST
http.request.method == "POST"
Seleccionad el paquete que corresponda a vuestro login.
4.2. Abrir el contenido del POST
En el panel inferior → Hypertext Transfer Protocol → Form-urlencoded.
Deberíais ver algo como:
username=juan
password=1234
(¡si la web no usa HTTPS y el hosting no lo fuerza!)
4.3. Preguntas para entregar
¿El login viaja en claro o cifrado?
Si viaja cifrado, ¿qué aparece en su lugar?
Si viaja en claro, copiáis:
usuario
contraseña
parámetros adicionales
💡 Esta parte impacta mucho: “Así de fácil es robar credenciales sin HTTPS.”
5. Análisis de cookies y sesión
5.1. Buscar cookies de sesión
Filtro:
http.set_cookie
o:
http.cookie
Localizad:
PHPSESSID=xxxxxxx u otro identificador.
5.2. Preguntas para entregar
¿La cookie tiene flags Secure, HttpOnly, SameSite?
¿Se envía en la misma petición del login?
¿Se reutiliza durante toda la sesión?
¿Podríais robarla si el tráfico no fuese HTTPS?
6. Identificación de servidor y tecnologías mediante tráfico
Aunque no usemos WhatWeb, Wireshark también revela cosas interesantes.
6.1. Buscad cabeceras del servidor
Filtro:
http.server
y:
http.response
Podéis encontrar:
Server: Apache/2.4.54
X-Powered-By: PHP/8.1.12
7. Detectar patrones de ataque (mini-reto)
Ahora vamos a “jugar” con el tráfico que vosotros mismos habéis generado.
Hacer desde otra máquina:
un par de intentos de fuerza bruta
navegación rara
errores 404
probad rutas prohibidas
7.1. Filtrar errores del servidor
http.response.code >= 400
7.2. Preguntas
¿Qué tipo de errores aparecen más?
¿Alguna IP destaca como “sospechosa”?
¿Puedes reconstruir qué intentaba hacer ese cliente? (por ejemplo: intentar acceder a /admin/ o /backup/)
8. Bonus: reconstrucción de sesión (Follow TCP Stream)