El análisis de certificados SSL/TLS es crucial para asegurar que las comunicaciones en línea sean seguras y privadas. SSL (Secure Sockets Layer) y su sucesor TLS (Transport Layer Security) son protocolos que cifran los datos transmitidos entre un cliente (como un navegador web) y un servidor, protegiendo la información contra interceptaciones y ataques man-in-the-middle (MITM).
Importancia del Análisis de Certificados SSL/TLS
Verificación de la Validez del Certificado:
Asegura que el certificado no ha expirado y es emitido por una autoridad de certificación (CA) confiable.
Comprobación de la Configuración:
Evalúa la configuración del servidor para asegurar que utiliza versiones seguras de SSL/TLS y que los cifrados utilizados son robustos.
Detección de Vulnerabilidades:
Identifica posibles vulnerabilidades como soporte para protocolos obsoletos (SSLv2, SSLv3) o cifrados débiles (RC4).
Cumplimiento Normativo:
Ayuda a garantizar que las prácticas de cifrado cumplan con estándares y regulaciones de seguridad.
Prevención de Ataques:
Detecta configuraciones que podrían ser explotadas en ataques como POODLE, Heartbleed, y BEAST.
Herramienta: testssl.sh
testssl.sh es una herramienta de línea de comandos de código abierto que permite realizar pruebas de seguridad en servidores SSL/TLS. Proporciona una evaluación completa de la configuración de seguridad de un servidor, incluyendo la validación del certificado, la compatibilidad de cifrados, y la detección de vulnerabilidades conocidas.
Comando de testssl.sh y Ejemplo de Salida
Para realizar un análisis de un servidor utilizando testssl.sh, se utiliza el siguiente comando:
Comando
./testssl.sh--wide--tls192.168.1.50
Explicación del Comando
./testssl.sh: Ejecuta el script testssl.sh.
--wide: Muestra un reporte detallado y extendido.
--tls: Limita las pruebas a las versiones de TLS, excluyendo SSL.
192.168.1.50: La dirección IP del servidor objetivo.
Ejemplo de Salida
./testssl https://spartan-cybersec.com/
###########################################################
testssl 3.2rc3 from https://testssl.sh/dev/
This program is free software. Distribution and
modification under GPLv2 permitted.
USAGE w/o ANY WARRANTY. USE IT AT YOUR OWN RISK!
Please file bugs @ https://testssl.sh/bugs/
###########################################################
Using "OpenSSL 3.1.4 24 Oct 2023 (Library: OpenSSL 3.1.4 24 Oct 2023)" [~94 ciphers]
on SPARTAN-SERVER:/usr/bin/openssl
(built: "Nov 25 20:35:59 2023", platform: "debian-amd64")
Testing all IPv4 addresses (port 443): 3.163.49.26 3.163.49.82 3.163.49.121 3.163.49.8
--------------------------------------------------------------------------------
Start 2024-05-18 14:52:01 -->> 3.163.49.26:443 (spartan-cybersec.com) <<--
Further IP addresses: 3.163.49.82 3.163.49.121 3.163.49.8 2600:9000:2672:2000:1c:9b0d:4540:93a1
2600:9000:2672:c200:1c:9b0d:4540:93a1 2600:9000:2672:8c00:1c:9b0d:4540:93a1
2600:9000:2672:2800:1c:9b0d:4540:93a1 2600:9000:2672:5e00:1c:9b0d:4540:93a1
2600:9000:2672:2a00:1c:9b0d:4540:93a1 2600:9000:2672:3c00:1c:9b0d:4540:93a1
2600:9000:2672:9400:1c:9b0d:4540:93a1
rDNS (3.163.49.26): server-3-163-49-26.bog51.r.cloudfront.net.
Service detected: HTTP
Testing protocols via sockets except NPN+ALPN
SSLv2 not offered (OK)
SSLv3 not offered (OK)
TLS 1 not offered
TLS 1.1 offered (deprecated)
TLS 1.2 offered (OK)
TLS 1.3 offered (OK): final
NPN/SPDY not offered
ALPN/HTTP2 h2, http/1.1 (offered)
Testing cipher categories
NULL ciphers (no encryption) not offered (OK)
Anonymous NULL Ciphers (no authentication) not offered (OK)
Export ciphers (w/o ADH+NULL) not offered (OK)
LOW: 64 Bit + DES, RC[2,4], MD5 (w/o export) not offered (OK)
Triple DES Ciphers / IDEA not offered
Obsoleted CBC ciphers (AES, ARIA etc.) offered
Strong encryption (AEAD ciphers) with no FS offered (OK)
Forward Secrecy strong encryption (AEAD ciphers) offered (OK)
Testing server's cipher preferences
Hexcode Cipher Suite Name (OpenSSL) KeyExch. Encryption Bits Cipher Suite Name (IANA/RFC)
-----------------------------------------------------------------------------------------------------------------------------
SSLv2
-
SSLv3
-
TLSv1
-
TLSv1.1 (server order)
xc013 ECDHE-RSA-AES128-SHA ECDH 253 AES 128 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
xc014 ECDHE-RSA-AES256-SHA ECDH 253 AES 256 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
x35 AES256-SHA RSA AES 256 TLS_RSA_WITH_AES_256_CBC_SHA
x2f AES128-SHA RSA AES 128 TLS_RSA_WITH_AES_128_CBC_SHA
TLSv1.2 (server order)
xc02f ECDHE-RSA-AES128-GCM-SHA256 ECDH 253 AESGCM 128 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
xc027 ECDHE-RSA-AES128-SHA256 ECDH 253 AES 128 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
xc013 ECDHE-RSA-AES128-SHA ECDH 253 AES 128 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
xc030 ECDHE-RSA-AES256-GCM-SHA384 ECDH 253 AESGCM 256 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
xcca8 ECDHE-RSA-CHACHA20-POLY1305 ECDH 253 ChaCha20 256 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
xc028 ECDHE-RSA-AES256-SHA384 ECDH 253 AES 256 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
xc014 ECDHE-RSA-AES256-SHA ECDH 253 AES 256 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
x9c AES128-GCM-SHA256 RSA AESGCM 128 TLS_RSA_WITH_AES_128_GCM_SHA256
x9d AES256-GCM-SHA384 RSA AESGCM 256 TLS_RSA_WITH_AES_256_GCM_SHA384
x3c AES128-SHA256 RSA AES 128 TLS_RSA_WITH_AES_128_CBC_SHA256
x35 AES256-SHA RSA AES 256 TLS_RSA_WITH_AES_256_CBC_SHA
x2f AES128-SHA RSA AES 128 TLS_RSA_WITH_AES_128_CBC_SHA
TLSv1.3 (server order)
x1301 TLS_AES_128_GCM_SHA256 ECDH 253 AESGCM 128 TLS_AES_128_GCM_SHA256
x1302 TLS_AES_256_GCM_SHA384 ECDH 253 AESGCM 256 TLS_AES_256_GCM_SHA384
x1303 TLS_CHACHA20_POLY1305_SHA256 ECDH 253 ChaCha20 256 TLS_CHACHA20_POLY1305_SHA256
Has server cipher order? yes (OK) -- TLS 1.3 and below
Testing robust forward secrecy (FS) -- omitting Null Authentication/Encryption, 3DES, RC4
FS is offered (OK) TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 ECDHE-RSA-AES256-GCM-SHA384
ECDHE-RSA-AES256-SHA384 ECDHE-RSA-AES256-SHA ECDHE-RSA-CHACHA20-POLY1305
TLS_AES_128_GCM_SHA256 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256
ECDHE-RSA-AES128-SHA
Elliptic curves offered: prime256v1 secp384r1 X25519
TLS 1.2 sig_algs offered: RSA-PSS-RSAE+SHA256 RSA-PSS-RSAE+SHA384 RSA-PSS-RSAE+SHA512 RSA+SHA256 RSA+SHA384
RSA+SHA512 RSA+SHA224 RSA+SHA1
TLS 1.3 sig_algs offered: RSA-PSS-RSAE+SHA256 RSA-PSS-RSAE+SHA384 RSA-PSS-RSAE+SHA512
Testing server defaults (Server Hello)
TLS extensions (standard) "server name/#0" "EC point formats/#11" "renegotiation info/#65281" "status request/#5"
"session ticket/#35" "supported versions/#43" "key share/#51"
"application layer protocol negotiation/#16" "extended master secret/#23"
Session Ticket RFC 5077 hint 86400 seconds, session tickets keys seems to be rotated < daily
SSL Session ID support yes
Session Resumption Tickets: yes, ID: no
TLS clock skew Random values, no fingerprinting possible
Certificate Compression none
Client Authentication none
Signature Algorithm SHA256 with RSA
Server key size RSA 2048 bits (exponent is 65537)
Server key usage Digital Signature, Key Encipherment
Server extended key usage TLS Web Server Authentication, TLS Web Client Authentication
Serial 08586F309D1248A22B9E9DE330B61FE5 (OK: length 16)
Fingerprints SHA1 2DAF576A098A32A153F9EF71AB78D6DFF1FE571D
SHA256 2E3C8EE0D45C37CF717A418D431E52AB58B923D77DABAE88F140602A3BF62B4C
Common Name (CN) spartan-cybersec.com (request w/o SNI didn't succeed)
subjectAltName (SAN) spartan-cybersec.com www.spartan-cybersec.com
Trust (hostname) Ok via SAN and CN (SNI mandatory)
Chain of trust Ok
EV cert (experimental) no
Certificate Validity (UTC) 361 >= 60 days (2024-04-15 00:00 --> 2025-05-14 23:59)
ETS/"eTLS", visibility info not present
Certificate Revocation List http://crl.r2m03.amazontrust.com/r2m03.crl
OCSP URI http://ocsp.r2m03.amazontrust.com
OCSP stapling offered, not revoked
OCSP must staple extension --
DNS CAA RR (experimental) not offered
Certificate Transparency yes (certificate extension)
Certificates provided 4
Issuer Amazon RSA 2048 M03 (Amazon from US)
Intermediate cert validity #1: ok > 40 days (2030-08-23 22:26). Amazon RSA 2048 M03 <-- Amazon Root CA 1
#2: ok > 40 days (2037-12-31 01:00). Amazon Root CA 1 <-- Starfield Services Root Certificate Authority - G2
#3: ok > 40 days (2034-06-28 17:39). Starfield Services Root Certificate Authority - G2 <--
Intermediate Bad OCSP (exp.) Ok
Testing HTTP header response @ "/"
HTTP Status Code 200 OK
HTTP clock skew -1 sec from localtime
Strict Transport Security 2592000 s = 30 days is too short ( >= 15552000 seconds recommended), just this domain
Public Key Pinning --
Server banner Apache
Application banner --
Cookie(s) (none issued at "/")
Security headers X-Frame-Options: sameorigin
X-Content-Type-Options: nosniff
Permissions-Policy: accelerometer=(), autoplay=(), camera=(), encrypted-media=(),
fullscreen=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), midi=(),
payment=(), usb=()
X-XSS-Protection: 1
Referrer-Policy: no-referrer
Reverse Proxy banner X-Cache: Miss from cloudfront
Via: 1.1 1c2461c064ac06ff0bdbcf3b708e2514.cloudfront.net (CloudFront)
Testing vulnerabilities
Heartbleed (CVE-2014-0160) not vulnerable (OK), no heartbeat extension
CCS (CVE-2014-0224) not vulnerable (OK)
Ticketbleed (CVE-2016-9244), experiment. not vulnerable (OK), no session tickets
ROBOT not vulnerable (OK)
Secure Renegotiation (RFC 5746) supported (OK)
Secure Client-Initiated Renegotiation likely not vulnerable (OK), timed out
CRIME, TLS (CVE-2012-4929) not vulnerable (OK)
BREACH (CVE-2013-3587) potentially NOT ok, "gzip" HTTP compression detected. - only supplied "/" tested
Can be ignored for static pages or if no secrets in the page
POODLE, SSL (CVE-2014-3566) not vulnerable (OK), no SSLv3 support
TLS_FALLBACK_SCSV (RFC 7507) Check failed, unexpected result , run testssl -Z --debug=1 and look at /tmp/testssl.bVJ2UX/*tls_fallback_scsv.txt
SWEET32 (CVE-2016-2183, CVE-2016-6329) not vulnerable (OK)
FREAK (CVE-2015-0204) not vulnerable (OK)
DROWN (CVE-2016-0800, CVE-2016-0703) not vulnerable on this host and port (OK)
make sure you don't use this certificate elsewhere with SSLv2 enabled services, see
https://search.censys.io/search?resource=hosts&virtual_hosts=INCLUDE&q=2E3C8EE0D45C37CF717A418D431E52AB58B923D77DABAE88F140602A3BF62B4C
LOGJAM (CVE-2015-4000), experimental not vulnerable (OK): no DH EXPORT ciphers, no DH key detected with <= TLS 1.2
BEAST (CVE-2011-3389) not vulnerable (OK), no SSL3 or TLS1
LUCKY13 (CVE-2013-0169), experimental potentially VULNERABLE, uses cipher block chaining (CBC) ciphers with TLS. Check patches
Winshock (CVE-2014-6321), experimental not vulnerable (OK)
RC4 (CVE-2013-2566, CVE-2015-2808) no RC4 ciphers detected (OK)
Running client simulations (HTTP) via sockets
Browser Protocol Cipher Suite Name (OpenSSL) Forward Secrecy
------------------------------------------------------------------------------------------------
Android 6.0 TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 256 bit ECDH (P-256)
Android 7.0 (native) TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 256 bit ECDH (P-256)
Android 8.1 (native) TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 253 bit ECDH (X25519)
Android 9.0 (native) TLSv1.3 TLS_AES_128_GCM_SHA256 253 bit ECDH (X25519)
Android 10.0 (native) TLSv1.3 TLS_AES_128_GCM_SHA256 253 bit ECDH (X25519)
Android 11 (native) TLSv1.3 TLS_AES_128_GCM_SHA256 253 bit ECDH (X25519)
Android 12 (native) TLSv1.3 TLS_AES_128_GCM_SHA256 253 bit ECDH (X25519)
Chrome 79 (Win 10) TLSv1.3 TLS_AES_128_GCM_SHA256 253 bit ECDH (X25519)
Chrome 101 (Win 10) TLSv1.3 TLS_AES_128_GCM_SHA256 253 bit ECDH (X25519)
Firefox 66 (Win 8.1/10) TLSv1.3 TLS_AES_128_GCM_SHA256 253 bit ECDH (X25519)
Firefox 100 (Win 10) TLSv1.3 TLS_AES_128_GCM_SHA256 253 bit ECDH (X25519)
IE 6 XP No connection
IE 8 Win 7 No connection
IE 8 XP No connection
IE 11 Win 7 TLSv1.2 ECDHE-RSA-AES128-SHA256 256 bit ECDH (P-256)
IE 11 Win 8.1 TLSv1.2 ECDHE-RSA-AES128-SHA256 256 bit ECDH (P-256)
IE 11 Win Phone 8.1 TLSv1.2 ECDHE-RSA-AES128-SHA256 256 bit ECDH (P-256)
IE 11 Win 10 TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 256 bit ECDH (P-256)
Edge 15 Win 10 TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 253 bit ECDH (X25519)
Edge 101 Win 10 21H2 TLSv1.3 TLS_AES_128_GCM_SHA256 253 bit ECDH (X25519)
Safari 12.1 (iOS 12.2) TLSv1.3 TLS_AES_128_GCM_SHA256 253 bit ECDH (X25519)
Safari 13.0 (macOS 10.14.6) TLSv1.3 TLS_AES_128_GCM_SHA256 253 bit ECDH (X25519)
Safari 15.4 (macOS 12.3.1) TLSv1.3 TLS_AES_128_GCM_SHA256 253 bit ECDH (X25519)
Java 7u25 No connection
Java 8u161 TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 256 bit ECDH (P-256)
Java 11.0.2 (OpenJDK) TLSv1.3 TLS_AES_128_GCM_SHA256 256 bit ECDH (P-256)
Java 17.0.3 (OpenJDK) TLSv1.3 TLS_AES_128_GCM_SHA256 253 bit ECDH (X25519)
go 1.17.8 TLSv1.3 TLS_AES_128_GCM_SHA256 253 bit ECDH (X25519)
LibreSSL 2.8.3 (Apple) TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 253 bit ECDH (X25519)
OpenSSL 1.0.2e TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 256 bit ECDH (P-256)
OpenSSL 1.1.0l (Debian) TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 253 bit ECDH (X25519)
OpenSSL 1.1.1d (Debian) TLSv1.3 TLS_AES_128_GCM_SHA256 253 bit ECDH (X25519)
OpenSSL 3.0.3 (git) TLSv1.3 TLS_AES_128_GCM_SHA256 253 bit ECDH (X25519)
Apple Mail (16.0) TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 256 bit ECDH (P-256)
Thunderbird (91.9) TLSv1.3 TLS_AES_128_GCM_SHA256 253 bit ECDH (X25519)
Interpretación de la Salida
La salida del comando testssl.sh proporciona una evaluación detallada del estado de seguridad SSL/TLS del dominio spartan-cybersec.com. Aquí se interpreta la información más relevante:
Información General
Versiones Protocolares:
SSLv2 y SSLv3: No se ofrecen, lo cual es positivo ya que estos protocolos están obsoletos y son inseguros.
TLS 1.0: No se ofrece, lo cual es bueno ya que también está desaconsejado.
TLS 1.1: Se ofrece, pero es un protocolo obsoleto y debería ser deshabilitado.
TLS 1.2 y TLS 1.3: Se ofrecen y son las versiones recomendadas para uso seguro.
Cifrado:
Cifrado Nulo, Anónimo y Exportación: No se ofrecen, lo cual es positivo.
Cifrado Bajo y CBC Obsoleto: Ofrecido, pero debería ser deshabilitado en favor de cifrados más modernos.
Cifrado Fuerte y Forward Secrecy: Ofrecido, lo cual es positivo.
Preferencias de Cifrado del Servidor
Orden de Cifrados:
TLS 1.1 y 1.2: Listas de cifrados adecuados se ofrecen, con algunos cifrados CBC obsoletos que deben ser eliminados.
TLS 1.3: Se ofrecen cifrados fuertes y modernos (AES_128_GCM_SHA256, AES_256_GCM_SHA384, CHACHA20_POLY1305_SHA256).
Forward Secrecy (FS):
Se ofrece FS con cifrados fuertes como ECDHE-RSA-AES256-GCM-SHA384 y TLS_CHACHA20_POLY1305_SHA256, lo cual es positivo.
Certificado del Servidor
Información del Certificado:
Nombre Común (CN):spartan-cybersec.com
SAN (Subject Alternative Name): spartan-cybersec.com, www.spartan-cybersec.com
Emisor: Amazon RSA 2048 M03
Validez: Válido hasta el 14 de mayo de 2025 (más de 60 días restantes)
OCSP y CRL: Certificado no revocado, con OCSP Stapling ofrecido.
Configuración del Servidor
Renegociación Segura: Soportada, lo cual es positivo.
Resúmenes TLS (RFC 5077): Soportado, pero con tickets rotados diariamente.
Certificados Intermedios y Raíz: Correctamente configurados, con validez adecuada.
Cabeceras HTTP: Implementación de cabeceras de seguridad como X-Frame-Options, X-Content-Type-Options, Permissions-Policy, X-XSS-Protection, Referrer-Policy.
Vulnerabilidades
Heartbleed, CCS, Ticketbleed, ROBOT: No vulnerable.
POODLE, CRIME, DROWN: No vulnerable.
BREACH: Potencialmente vulnerable debido a la compresión HTTP gzip, pero sólo relevante si se transmiten datos sensibles.
LUCKY13: Potencialmente vulnerable debido al uso de cifrados CBC con TLS.
RC4, FREAK, SWEET32: No vulnerable.
Simulaciones de Cliente
Compatibilidad: Compatible con navegadores modernos (Chrome, Firefox, Safari, Edge) y versiones de Android e iOS.
Cifrado Fuerte: Utiliza cifrados fuertes y modernos, garantizando la seguridad en las comunicaciones.