Parte: 1 — Redes y seguridad de redes · Fuente: OWASP; documentación de bettercap y mitmproxy ⏱️ Duración estimada: 130 min · Nivel: Avanzado
Integrar lo aprendido en un ataque Man-in-the-Middle completo: posicionamiento (ARP/DNS spoofing, rogue gateway), interceptación de tráfico, intentos de degradación de TLS y, sobre todo, las defensas que lo derrotan (HSTS, certificate pinning, cifrado extremo a extremo, DAI). El énfasis es entender el ataque para saber defender.
Al finalizar, el alumno podrá:
| # | Tema | Por qué importa |
|---|---|---|
| 1 | Anatomía del MitM | Marco mental del ataque |
| 2 | Posicionamiento (ARP, DNS, rogue AP) | Cómo se interpone el atacante |
| 3 | Interceptación con proxy transparente | Ver y modificar el tráfico |
| 4 | SSL stripping y su mitigación | El punto débil histórico |
| 5 | HSTS, pinning, E2E | Defensas efectivas |
| 6 | Indicadores y detección | Reconocer un MitM |
| 7 | Redes no confiables | Riesgo real cotidiano |
Man-in-the-middle nombra una posición: estar en medio de dos partes que creen hablar directamente entre sí, pudiendo leer y modificar lo que se dicen. Cómo se llega a esa posición varía —ARP spoofing en la LAN (clase 039), un servidor DNS que responde mentiras (clase 041), un punto de acceso falso (clase 038), un router comprometido— pero una vez en medio, las capacidades son las mismas: interceptar, alterar e inyectar. Separar la posición de la técnica de posicionamiento es lo que permite razonar sobre defensas, porque cada vía de acceso se cierra distinto pero todas desembocan en el mismo riesgo.
El ataque que hizo famoso al MitM moderno es el SSL stripping. La idea es sencilla y
demoledora: muchos usuarios escriben banco.com sin https://, lo que genera una
primera petición en HTTP plano. El atacante en medio intercepta esa petición, habla
HTTPS con el banco por un lado y HTTP en claro con la víctima por el otro,
degradando la conexión sin que el usuario lo note más que por la ausencia del candado
—que casi nadie mira—. El cifrado del servidor seguía intacto; el ataque no lo rompía,
lo evitaba aprovechando ese primer salto sin proteger.
La respuesta fue una cadena de defensas que conviene conocer como sistema. HSTS (HTTP Strict Transport Security) es una cabecera con la que el servidor ordena al navegador "a partir de ahora, conéctate a mí solo por HTTPS, nunca en claro"; con HSTS preload, esa regla viene de fábrica en el navegador y ni siquiera la primera petición viaja en HTTP. El certificate pinning hace que una aplicación acepte solo un certificado o una CA concretos, cerrando el MitM que usa un certificado fraudulento pero técnicamente válido. Y el cifrado extremo a extremo de las aplicaciones de mensajería saca la confidencialidad del canal y la lleva a los extremos, de modo que ni un intermediario en la red ni el propio servidor pueden leer el contenido.
Con TLS bien implementado —validando el certificado y con HSTS— un atacante en medio ya no lee el contenido: le quedan los metadatos (con quién hablas, cuándo, cuánto), que no son inocuos pero no son el mensaje. El eslabón débil se desplaza entonces al usuario: las advertencias de certificado que se aceptan sin leer son la puerta que reabre el ataque, y por eso un MitM con certificado propio solo funciona si la víctima ignora el aviso o si el atacante logró instalar su CA en el dispositivo.
Del lado defensivo, un MitM en la LAN deja señales: entradas ARP que cambian, dos IP con la misma MAC, avisos de certificado inesperados, o tráfico que toma rutas que no debería. Herramientas de vigilancia de ARP y el propio NSM de la clase 043 detectan esos patrones. Y la lección práctica de más valor es de higiene: en una red que no controlas —una WiFi pública— hay que asumir que puede haber alguien en medio, y confiar en el cifrado extremo a extremo y en una VPN antes que en la buena fe del punto de acceso.
| Término | Definición concisa |
|---|---|
| Man-in-the-middle | Posición entre dos partes que permite leer, alterar e inyectar |
| Posicionamiento | Técnica para llegar a estar en medio (ARP, DNS, rogue AP…) |
| Proxy transparente | Intermediario que intercepta sin que el cliente lo configure |
| SSL stripping | Degradar HTTPS a HTTP aprovechando la primera petición en claro |
| HSTS | Cabecera que fuerza al navegador a usar solo HTTPS con ese sitio |
| HSTS preload | Lista integrada en el navegador; protege incluso la primera visita |
| Certificate pinning | Aceptar solo un certificado o CA concretos |
| Cifrado extremo a extremo | Confidencialidad entre los extremos; ni la red ni el servidor leen |
| Advertencia de certificado | Aviso del navegador que, ignorado, reabre el MitM |
| CA maliciosa | Autoridad instalada en el dispositivo que legitima certificados falsos |
| Metadatos | Con quién, cuándo y cuánto; visibles aun con TLS |
| Downgrade | Forzar un protocolo o cifrado más débil |
⚠️ Nota ética: el MitM intercepta comunicaciones de terceros; hacerlo sin autorización es un delito grave. Practica solo contra tus propias máquinas y servicios en un laboratorio aislado. El objetivo formativo es defensivo: entender el ataque para neutralizarlo.
bash
sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
mitmproxy --mode transparent --listen-port 8080
Navega desde la víctima a tu servidor HTTP de laboratorio y observa/modifica las peticiones. 3. Prueba SSL stripping contra el servidor sin HSTS y observa que la conexión cae a HTTP. 4. Repite contra el servidor con HSTS y comprueba que el navegador rechaza el downgrade: el ataque falla. 5. Verifica el cifrado: en Wireshark, confirma que el tráfico HTTPS con TLS bien configurado es opaco para el atacante. 6. Certificado falso: intenta un MitM sobre HTTPS presentando un certificado no confiable y observa la advertencia del navegador (defensa por la cadena de confianza). 7. Defensa de red: activa DAI/ARP estático (clase 039) y demuestra que ya no puedes posicionarte.
preload en tu servidor y verifica la cabecera con curl -I.Monta en laboratorio un escenario MitM contra dos versiones de tu propio sitio: una vulnerable (HTTP/sin HSTS) y otra endurecida (HTTPS + HSTS). Demuestra que puedes interceptar/modificar la primera y que la segunda resiste el ataque. Entrega capturas, la configuración de HSTS y una conclusión sobre qué defensa fue decisiva.
Criterio de aceptación: evidencias claras de intercepción exitosa en la versión vulnerable y de fallo del ataque en la endurecida, con explicación correcta del mecanismo defensivo (HSTS impide el downgrade; TLS válido impide leer el contenido).
| Síntoma / mensaje | Causa y cómo arreglar |
|---|---|
| mitmproxy no ve tráfico | Falta el REDIRECT de iptables o ip_forward; revisa NAT y reenvío |
| El navegador muestra advertencia de certificado | Es la defensa funcionando; sin la CA del atacante instalada, TLS rechaza el MitM |
| SSL stripping no funciona | El sitio usa HSTS/preload; ese es precisamente el resultado esperado |
| La víctima pierde conexión | Reenvío mal configurado; verifica que retransmites el tráfico interceptado |
| No puedes modificar HTTPS | El cifrado lo impide sin un certificado de confianza; no es un fallo, es seguridad |
❓ ¿HTTPS elimina el riesgo de MitM? Lo reduce enormemente si está bien implementado (certificados válidos, HSTS, TLS moderno). El riesgo residual viene de usuarios que ignoran advertencias o de CAs comprometidas; el pinning cubre esos casos.
❓ ¿Qué es exactamente SSL stripping? Un ataque que impide que la víctima llegue a establecer HTTPS, manteniéndola en HTTP con el atacante en medio. HSTS lo neutraliza porque el navegador exige HTTPS de antemano.
❓ ¿Cómo detecto que soy víctima de un MitM? Advertencias de certificado inesperadas, cambios en la MAC del gateway, degradación a HTTP en sitios que deberían ser HTTPS, o certificados emitidos por CAs raras.
❓ ¿La mejor defensa personal en WiFi público? Usar siempre HTTPS/HSTS, una VPN de confianza y evitar aceptar certificados o instalar CAs que te pidan redes desconocidas.
Clase 039 — Ataques de capa 2: ARP spoofing y VLAN hopping
Clase 041 — Seguridad de DNS: envenenamiento, DNSSEC y tunneling