sslsniff para interceptar dinámicamente el tráfico SSL/TLS mediante ataques Man-in-the-Middle

 

https://www.onlinetis.com

sslsniff para interceptar dinámicamente el tráfico SSL/TLS mediante ataques Man-in-the-Middle

sslsniff es una herramienta de pruebas de penetración diseñada por Moxie Marlinspike para interceptar dinámicamente el tráfico SSL/TLS mediante ataques Man-in-the-Middle (MitM). Genera certificados SSL al vuelo para engañar al cliente y desencriptar la comunicación en tiempo real.

Principales características y uso

  • Mecanismo de ataque: Redirecciona el tráfico HTTP/HTTPS mediante reglas de iptables y actúa como un proxy intermedio.

  • Sustitución de certificados: Crea certificados falsos firmados por una entidad emisora de certificados (CA) local o aprovecha fallos de validación en navegadores y clientes antiguos.

  • Uso típico en auditorías: Intercepción de credenciales, tokens de sesión y análisis de tráfico cifrado dentro de redes locales (junto con ARP Spoofing).

1.Habilitar el reenvío de IP:Permite que el sistema actúe como enrutador.
Activa el IP forwarding en Kali Linux para no cortar la conexión de la víctima:

Bash
sysctl -w net.ipv4.ip_forward=1
2.Redireccionar el tráfico con iptables:Configuración de reglas de red.
Redirige todo el tráfico saliente del puerto 443 (HTTPS) hacia el puerto local donde escuchará sslsniff (por ejemplo, el puerto 8443):

Bash
iptables -t nat -A PREROUTING -p tcp --destination-port 443 -j REDIRECT --to-ports 8443
3.Ejecutar sslsniff:Inicio de la intercepción.
Genera un certificado RSA de prueba e inicia el servicio en escucha:

Bash
sslsniff -a -c cert.pem -s 8443 -w output.log
Alternativas modernas

Debido a la implementación de mecanismos de seguridad actuales como HSTS (HTTP Strict Transport Security) y Certificate Pinning, sslsniff ha quedado desfasado en auditorías modernas. Las alternativas actuales más efectivas son:

  • mitmproxy: Herramienta interactiva con interfaz CLI/Web para interceptar y modificar tráfico HTTP/HTTPS.

  • Bettercap: Framework completo para ataques de red y manipulación MitM.

  • Burp Suite: Proxy de aplicación web estándar para análisis detallado de tráfico.


HSTS (HTTP Strict Transport Security) es un encabezado de respuesta HTTP (Strict-Transport-Security) mediante el cual un servidor web indica explícitamente al navegador que solo debe comunicarse con él usando conexiones cifradas HTTPS, rechazando automáticamente cualquier intento de conexión en HTTP claro.

Es una directiva de seguridad estándar IETF (RFC 6797) diseñada para eliminar los ataques de degradación de protocolo (downgrade attacks) y la interceptación de tráfico SSL/TLS.

Mecanismo de protección y prevención frente a sslsniff

AspectoConexión sin HSTSConexión protegida con HSTS
Primer contacto HTTPEl usuario escribe ejemplo.com (HTTP) y el servidor redirige a https://.Si está cargado en la lista Preload o visitado previamente, el navegador fuerza HTTPS localmente antes de enviar cualquier paquete a la red.
Respuesta ante certificado inválidoEl navegador muestra un aviso de advertencia, pero permite al usuario omitir la alerta y continuar.El navegador genera un error fatal infranqueable. Se desactiva la opción de omitir o aceptar la excepción manualmente.
Efecto sobre sslsniffLa herramienta sustituye el certificado real por uno falso. El usuario suele aceptar la advertencia de certificado y se produce el ataque MitM.La herramienta intenta inyectar su certificado falso, pero el navegador bloquea la conexión de inmediato al detectar el fallo de confianza de la CA.
Parámetros principales del encabezado HSTS

HTTP
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
  • max-age: Define en segundos el tiempo que el navegador debe recordar que solo debe usar HTTPS (ej. 31,536,000 segundos = 1 año).

  • includeSubDomains: Aplica la restricción a todos los subdominios del dominio principal.

  • preload: Permite registrar el dominio en la lista global integrada en los navegadores principales (Chrome, Firefox, Edge, Safari), asegurando que la primera conexión histórica del usuario sea HTTPS estricto de forma nativa.


La configuración de HSTS debe aplicarse exclusivamente en el bloque o servidor virtual habilitado para HTTPS (puerto 443). Aplicarlo sobre conexiones HTTP no cifradas es ineficaz, ya que los navegadores ignoran el encabezado si no se transmite a través de una conexión segura.

Nginx

Para habilitar HSTS en Nginx, se añade la directiva add_header dentro del bloque server correspondiente a HTTPS.

Nginx
server {
    listen 443 ssl http2;
    server_name ejemplo.com www.ejemplo.com;

    # Certificados SSL/TLS
    ssl_certificate /ruta/a/certificado.crt;
    ssl_certificate_key /ruta/a/clave_privada.key;

    # Encabezado HSTS (1 año de duración, subdominios e inclusión en Preload)
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

    # Resto de la configuración...
}
Nota: La inclusión del parámetro always asegura que el encabezado se envíe en todas las respuestas del servidor, incluyendo códigos de error HTTP (como 404 o 500).

Apache HTTP Server

En Apache, se utiliza el módulo mod_headers. Debe asegurarse de que el módulo esté activo (a2enmod headers en distribuciones basadas en Debian/Ubuntu).

La directiva se añade dentro de la sección <VirtualHost> del puerto 443 en el archivo de configuración (por ejemplo, /etc/apache2/sites-available/ejemplo-ssl.conf):

Apache
<VirtualHost *:443>
    ServerName ejemplo.com
    ServerAlias www.ejemplo.com

    SSLEngine on
    SSLCertificateFile /ruta/a/certificado.crt
    SSLCertificateKeyFile /ruta/a/clave_privada.key

    # Encabezado HSTS
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

    # Resto de la configuración...
</VirtualHost>
Recomendaciones para el despliegue

  1. Despliegue gradual: Antes de fijar un valor alto de max-age (como 1 año: 31536000), es recomendable comenzar con un período corto para verificar que no surjan problemas de accesibilidad en subdominios que aún no cuenten con SSL:

    • Pruebas iniciales: max-age=300 (5 minutos).

    • Fase intermedia: max-age=86400 (1 día).

    • Producción final: max-age=31536000 (1 año).

  2. Redirección HTTP a HTTPS: Asegurarse de tener configurada una regla de redirección 301 en el puerto 80 para enviar todo el tráfico no cifrado hacia el servidor virtual seguro en el puerto 443.

Para comprobar que el encabezado HSTS está bien configurado y enviar el dominio a la lista oficial de precarga (preload), se utilizan herramientas de consola, la terminal del navegador y la plataforma centralizada de la lista HSTS.

Verificación de la presencia del encabezado HSTS

1. Mediante la herramienta de línea de comandos curl

La forma más directa y rápida de verificar la respuesta HTTP devuelta por el servidor es mediante una petición con curl:

Bash
curl -I https://ejemplo.com
Debe buscarse la cabecera Strict-Transport-Security en la respuesta:

HTTP
HTTP/2 200
date: Sun, 06 Sep 2026 01:35:18 GMT
server: nginx
strict-transport-security: max-age=31536000; includeSubDomains; preload
2. Mediante las herramientas de desarrollo del navegador (DevTools)

  1. En la pestaña del navegador, abre las herramientas de desarrollo (F12 o Ctrl + Shift + I).

  2. Selecciona la pestaña Red (Network).

  3. Carga el sitio web ([https://ejemplo.com](https://ejemplo.com)).

  4. Haz clic en la primera petición correspondiente al documento principal.

  5. Revisa la sección Cabeceras de respuesta (Response Headers) para confirmar que aparece Strict-Transport-Security.

Requisitos para registrar el dominio en la lista de HSTS Preload

Para que el dominio sea aceptado en la lista oficial de precarga integrada en la mayoría de navegadores (Chrome, Firefox, Safari, Edge), debe cumplir con los siguientes criterios obligatorios:

  1. Certificado SSL/TLS válido instalado en el servidor.

  2. Redirección de HTTP a HTTPS en el puerto 80 para todo el tráfico no cifrado.

  3. Todos los subdominios cubiertos por HTTPS, incluyendo de forma explícita el subdominio www si existe registro DNS para él.

  4. Encabezado HSTS estricto servido en el dominio base a través de HTTPS con los siguientes parámetros exactos:

    • max-age debe ser de al menos 1 año (mínimo 31536000 segundos).

    • Debe incluir la directiva includeSubDomains.

    • Debe incluir la directiva preload.

Ejemplo del encabezado requerido:

HTTP
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Proceso de inscripción en HSTS Preload

  1. Verificación y envío en el portal oficial:
    Accede a la plataforma oficial mantenida por el proyecto Chromium en hstspreload.org.

  2. Consulta del dominio:
    Introduce el dominio base (ejemplo.com). La plataforma analizará automáticamente las cabeceras HTTP del servidor y comprobará el cumplimiento de todos los requisitos técnicos.

  3. Aceptación y envío:
    Si todas las comprobaciones son correctas, el portal habilitará la opción para confirmar los términos y enviar el dominio a la lista de precarga.

Importante: Incluir un dominio en la lista de HSTS Preload es un cambio permanente y duradero. Antes de solicitar la inclusión, hay que asegurarse de que ningún subdominio o servicio interno vaya a necesitar tráfico HTTP sin cifrar en el futuro.

https://www.onlinetis.com

Entradas populares de este blog

Hacking y ciberseguridad en kali linux con Fping

Como utilizar Fierce en kali linux

Hacking y ciberseguridad en kali linux con atk6-thcping6