SSL_ERROR_NO_CYPHER_OVERLAP

Avatar de Apuntes Hacking

Has lanzado tu navegador contra un objetivo y te encuentras esto:

No es que el servidor esté caído. No es que el puerto esté filtrado. El servidor responde, pero tu navegador y él no se ponen de acuerdo en cómo hablar de forma segura.

⚠️
ADVERTENCIA
Toda la información contenida en este documento (incluyendo direcciones IP, nombres de dominio, direcciones de correo, direcciones postales, nombres de empresas, ASN, rangos de red, y cualquier otro dato) ha sido completamente anonimizada y modificada respecto a los datos reales originales.

Este contenido es exclusivamente una prueba de concepto (PoC) con fines educativos y de investigación en seguridad informática. No se proporcionan datos reales de ningún servidor, empresa u organización.

Los comandos, técnicas y procedimientos mostrados están destinados únicamente para ser utilizados en entornos controlados y con autorización expresa. El uso de estas técnicas contra sistemas sin permiso es ilegal en la mayoría de jurisdicciones.

El autor no se hace responsable del mal uso de esta información.

1 – Entender el problema

¿Qué está pasando realmente?

Cuando tu navegador inicia una conexión TLS con un servidor, envía una lista de cipher suites que soporta. El servidor revisa esa lista y elige el primero que también soporta. Si no encuentra ninguno, te devuelve este error.

Tu navegador propone cifrados modernos (TLS 1.3, AES-GCM, ChaCha20…). El servidor solo entiende cifrados antiguos (TLS 1.0, RC4, 3DES, o incluso SSLv3). No hay intersección. No hay acuerdo. No hay conexión.

¿Por qué sigue habiendo servidores así?

Más común de lo que crees:

  • Equipos industriales (SCADA, PLCs) con stacks TLS congelados hace 10 años
  • Dispositivos IoT que nunca reciben actualizaciones
  • Firewalls o balanceadores antiguos terminando conexiones TLS
  • Laboratorios internos con máquinas vulnerables intencionalmente
  • Servidores embebidos en impresoras, cámaras IP, sistemas de climatización
⚠️
OJO
Si encuentras esto en un pentesting, es una señal de alarma. Un servidor que solo acepta cifrados obsoletos es, casi con total seguridad, vulnerable a ataques como POODLE (SSLv3), FREAK (export-grade RSA) o DROWN (SSLv2).

Cómo confirmar rápidamente qué cifrados soporta el objetivo

Antes de tocar nada en tu navegador, haz un escaneo limpio con openssl:

apuntes@hacking:~$ openssl s_client -connect 123.456.89.12:443 -cipher 'ALL:eNULL' -no_tls1_3 2>&1 | grep "Cipher"
New, (NONE), Cipher is (NONE)
    Cipher    : 0000
Bash

Si ves [NULL] o algo similar, el servidor no está negociando nada decente.

Por ejemplo si lo hacemos contra la IP de google.com vemos esto:

apuntes@hacking:~$ openssl s_client -connect 142.251.38.238:443 -cipher 'ALL:eNULL' -no_tls1_3 2>&1 | grep "Cipher"
New, TLSv1.2, Cipher is ECDHE-RSA-CHACHA20-POLY1305
    Cipher    : ECDHE-RSA-CHACHA20-POLY1305
Bash

Y sin el parametro -no_tls1_3:

apuntes@hacking:~$ openssl s_client -connect 142.251.38.238:443 -cipher 'ALL:eNULL' 2>&1 | grep "Cipher" 
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Bash

openssl s_client: desglose del comando

ParámetroExplicación
openssl s_clientHerramienta de diagnóstico TLS/SSL. Actúa como un cliente genérico para probar conexiones seguras.
-connect 172.66.137.236:443Dirección IP y puerto del objetivo. En este caso, puerto 443 (HTTPS).
-cipher 'ALL:eNULL'Fuerza la inclusión de todos los cifrados disponibles, incluso los nulos (eNULL = cifrado nulo, sin encriptación). Útil para forzar la negociación más baja posible y ver qué responde el servidor.
-no_tls1_3Desactiva TLS 1.3. Obliga al cliente a usar versiones anteriores (TLS 1.2, 1.1, 1.0 o SSLv3). Necesario si el servidor es antiguo y no entiende TLS 1.3.
2>&1Redirige la salida de error estándar (stderr) a la salida estándar (stdout). openssl envía muchos mensajes de diagnóstico a stderr; con esto los capturamos todos.
| grep "Cipher"Filtra la salida mostrando solo las líneas que contienen la palabra «Cipher». Así vemos rápidamente qué cifrado se negoció (o si se negoció ninguno).

Variantes útiles:

ComandoUso
openssl s_client -connect IP:443 -tls1Fuerza exclusivamente TLS 1.0
openssl s_client -connect IP:443 -ssl3Fuerza SSLv3 (si el servidor lo soporta)
openssl s_client -connect IP:443 -showcertsMuestra toda la cadena de certificados

Solución

Perfil aislado en Firefox

La solución más limpia es crear un perfil de Firefox independiente, con políticas de seguridad degradadas, que no toque tu navegador de uso diario.

¿Qué es un perfil de Firefox?

Una carpeta donde Firefox guarda toda tu información: marcadores, historial, contraseñas, extensiones y configuraciones de about:config. Al crear un perfil nuevo, obtienes un Firefox completamente independiente.

Paso 1 – Abrir el gestor de perfiles

apuntes@hacking:~$ firefox -P
Bash

Se abrirá una ventana como esta:

Paso 2 – Crear un perfil

  1. Haz clic en «Crear perfil…»
  2. Haz clic en «Siguiente»
  3. Ponle un nombre: «pentesting»
  4. Haz clic en «Finalizar»

Paso 3 – Lanzar Firefox con el perfil aislado

apuntes@hacking:~$ firefox -P "pentesting" -no-remote
Bash
ParámetroExplicación
-P "pentesting"Usa el perfil llamado «pentesting»
-no-remotePermite tener varios Firefox abiertos a la vez con diferentes perfiles
⚠️
OJO
Si ejecutas firefox -P sin más, se abrirá el gestor de perfiles. Si ejecutas firefox -P «pentesting» sin el -no-remote, puede que intente usar una instancia ya abierta.

Paso 4 – Degradar la seguridad TLS del perfil

Con el Firefox del perfil «pentesting» abierto:

  1. En la barra de direcciones escribe: about:config
  2. Acepta el aviso de riesgo
  3. Busca y modifica estos valores:
PreferenciaValorEfecto
security.tls.version.min1 (TLS 1.0) o 0 (SSL 3.0)Permite versiones antiguas del protocolo
security.tls.version.enable-deprecatedtrueActiva cifrados obsoletos

Verificación rápida

Para confirmar que el perfil está aislado y funcionando:

apuntes@hacking:~$ firefox -P "pentesting" -no-remote about:profiles
Bash

En la página que se abre verás el perfil activo marcado como «Perfil en uso». Debe ser «pentesting», no tu perfil por defecto.

📝
AVISO A NAVEGANTES
No, no es la mejor metodología del mundo. Tampoco lo pretende. Es para que entiendas qué está pasando antes de meterte en cosas serias. Si esperabas algo perfecto… bueno, eres carne, tampoco te vengas arriba.

Etiquetas:

Avatar de Apuntes Hacking

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *