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.
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
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 : 0000BashSi 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-POLY1305BashY 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_SHA384Bashopenssl s_client: desglose del comando
| Parámetro | Explicación |
openssl s_client | Herramienta de diagnóstico TLS/SSL. Actúa como un cliente genérico para probar conexiones seguras. |
-connect 172.66.137.236:443 | Direcció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_3 | Desactiva 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>&1 | Redirige 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:
| Comando | Uso |
openssl s_client -connect IP:443 -tls1 | Fuerza exclusivamente TLS 1.0 |
openssl s_client -connect IP:443 -ssl3 | Fuerza SSLv3 (si el servidor lo soporta) |
openssl s_client -connect IP:443 -showcerts | Muestra 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 -PBashSe abrirá una ventana como esta:

Paso 2 – Crear un perfil
- Haz clic en «Crear perfil…»
- Haz clic en «Siguiente»
- Ponle un nombre: «pentesting»
- Haz clic en «Finalizar»
Paso 3 – Lanzar Firefox con el perfil aislado
apuntes@hacking:~$ firefox -P "pentesting" -no-remoteBash| Parámetro | Explicación |
-P "pentesting" | Usa el perfil llamado «pentesting» |
-no-remote | Permite tener varios Firefox abiertos a la vez con diferentes perfiles |
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:
- En la barra de direcciones escribe:
about:config - Acepta el aviso de riesgo
- Busca y modifica estos valores:
| Preferencia | Valor | Efecto |
security.tls.version.min | 1 (TLS 1.0) o 0 (SSL 3.0) | Permite versiones antiguas del protocolo |
security.tls.version.enable-deprecated | true | Activa cifrados obsoletos |
Verificación rápida
Para confirmar que el perfil está aislado y funcionando:
apuntes@hacking:~$ firefox -P "pentesting" -no-remote about:profilesBashEn la página que se abre verás el perfil activo marcado como «Perfil en uso». Debe ser «pentesting», no tu perfil por defecto.
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.


Deja una respuesta