sslsniff para interceptar dinámicamente el tráfico SSL/TLS mediante ataques Man-in-the-Middle
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
iptablesy 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).
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.
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
- 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).
- 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
curlLa 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)
- En la pestaña del navegador, abre las herramientas de desarrollo (F12 o
Ctrl + Shift + I). - Selecciona la pestaña Red (Network).
- Carga el sitio web (
[https://ejemplo.com](https://ejemplo.com)). - Haz clic en la primera petición correspondiente al documento principal.
- 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:
- Certificado SSL/TLS válido instalado en el servidor.
- Redirección de HTTP a HTTPS en el puerto 80 para todo el tráfico no cifrado.
- Todos los subdominios cubiertos por HTTPS, incluyendo de forma explícita el subdominio
wwwsi existe registro DNS para él. - Encabezado HSTS estricto servido en el dominio base a través de HTTPS con los siguientes parámetros exactos:
max-agedebe ser de al menos 1 año (mínimo31536000segundos).- 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
- Verificación y envío en el portal oficial:Accede a la plataforma oficial mantenida por el proyecto Chromium en hstspreload.org.
- 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. - 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.