Vulnerability - Check for SSL Weak Ciphers Windows 10, Windows Server 2016, Windows Server 2008

Hace un par de semanas realicé un escaneo de Vulnerabilidades con OpenVas y me encontré con la siguiente vulnerabilidad en los Sistemas Windows 10 Pro, Windows Server 2016, Windows Server 2008:

Vulnerability - Check for SSL Weak Ciphers

Vulnerability - Check for SSL Weak Ciphers (192.168.X.X:3389)

Vulnerability Detection Result:
Weak ciphers offered by this service:
TLS1_RSA_DES_192_CBC3_SHA
TLS1_RSA_DES_192_CBC3_SHA
TLS_1_2_RSA_WITH_3DES_EDE_CBC_SHA
CVSS Base Vector:
AV:N/AC:M/Au:N/C:P/I:N/A:N

Solution:
The configuration of this services should be changed so
that it does not support the listed weak ciphers anymore.


Summary:
This routine search for weak SSL ciphers offered by a service.

Insight:
These rules are applied for the evaluation of the cryptographic strength:
- Any SSL/TLS using no cipher is considered weak.
- All SSLv2 ciphers are considered weak due to a design flaw within the SSLv2 protocol.
- RC4 is considered to be weak.
- Ciphers using 64 bit or less are considered to be vulnerable to brute force methods
and therefore considered as weak.
- 1024 bit RSA authentication is considered to be insecure and therefore as weak.
- CBC ciphers in TLS < 1.2 are considered to be vulnerable to the BEAST or Lucky 13 attacks
- Any cipher considered to be secure for only the next 10 years is considered as medium
- Any other cipher is considered as strong
CVSS Base Score: 4.3
SID:2

 

Pues bien, el problema como ya se dieron cuenta esta en La configuración y habilitación de los cifrados, estos servicios debe cambiarse ya que los cifrados enumerados en el escaneo son débiles.

Resumiendo:
- Cualquier SSL/TLS que no use cifrado se considera débil.
- Todos los cifrados SSLv2 se consideran débiles debido a una falla de diseño dentro del protocolo SSLv2.
- RC4 se considera débil.
- Los cifrados que que usan 64 bit o menos se consideran vulnerables a los métodos de fuerza bruta y por lo tanto, son considerados como débiles.
- La autenticación RSA de 1024 bits se considera insegura y, por lo tanto, es débil.
- Los cifrados CBC en TLS <1.2 se consideran vulnerables a los ataques BEAST o Lucky 13

Importante:
SSL (Secure Sockets Layer) es un protocolo criptográfico desarrollado por Netscape para proporcionar confidencialidad e integridad en la comunicación de datos entre dos extremos. Su primera versión (SSL v1) nunca fue publicada debido a una gran cantidad de fallos en su desarrollo, mientras que las versiones posteriores (que corregían dichos problemas) datan de 1995 (SSL v2) y 1996 (SSL v3 – RFC 6101).  En Enero de 1999 fue publicada la RFC 2246  que definía las bases para el protocolo que remplazaría a SSL: Transport Layer Security (TLS) v1.0. Esta nueva especificación traía consigo múltiples mejoras en términos de operación con primitivas criptográficas y desempeño. Siete años más tarde (en 2006) se publicó la versión 1.1 de TLS bajo la RFC 4346  y en 2008 con la RFC 5246 se vería la versión más actual de TLS, la versión 1.2. Hasta ese momento las implementaciones de SSL y TLS eran compatibles entre sí (“backward compatibility”), lo cual bloqueaba el desarrollo autónomo de algunas características de seguridad de TLS, por lo que en el 2011 con la RFC 6176 se prohibía la negociación entre TLS y la versión 2.0 de SSL y ambas implementaciones se independizaban.

Pruebas
1.- Realizar escaneo/enumeración de cifrados al puerto que nos da problema en mi caso 3389 Remote Desktop Protocol (RDP)

nmap --script ssl-enum-ciphers -p 3389 192.168.X.X


El resultado es el siguiente:

# nmap --script ssl-enum-ciphers -p 3389 192.168.X.X

Starting Nmap 7.30 ( https://nmap.org ) at 2018-02-07 13:35 EST
Nmap scan report for 192.168.x.x
Host is up (0.0011s latency).
PORT     STATE SERVICE

3389/tcp open  ms-wbt-server
| ssl-enum-ciphers:
|   TLSv1.0:
|     ciphers:
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A

|       TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
|     compressors:
|       NULL
|     cipher preference: server
|     warnings:
|       64-bit block cipher 3DES vulnerable to SWEET32 attack
|   TLSv1.1:
|     ciphers:
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A

|       TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
|     compressors:
|       NULL
|     cipher preference: server
|     warnings:
|       64-bit block cipher 3DES vulnerable to SWEET32 attack
|   TLSv1.2:
|     ciphers:
|       TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (secp256r1) - A
|       TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (dh 2048) - A
|       TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (dh 2048) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
|       TLS_RSA_WITH_AES_256_GCM_SHA384 (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_GCM_SHA256 (rsa 2048) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA256 (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA256 (rsa 2048) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A

|       TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
|     compressors:
|       NULL
|     cipher preference: server
|     warnings:
|       64-bit block cipher 3DES vulnerable to SWEET32 attack
|_  least strength: C


3DES
Para deshabilitar 3DES en su equipo Windows, configure la siguiente clave de registro:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\Triple DES 168]
"Enabled"=dword:00000000


ó bien,

Puede crear un archivo .reg “Disable3DES.reg” con el siguiente contenido

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\Triple DES 168]
"Enabled"=dword:00000000


Una vez creado el archivo será necesario abrir una consola de símbolo de sistema (con privilegios de administrador) y ejecutar el archivo Disable3DES.reg como se muestra en la imagen:

2.- Realizar nuevamente el escaneo/enumeración de cifrados al puerto que nos da problema en mi caso 3389 Remote Desktop Protocol (RDP)
Si realizamos nuevamente el escaneo anterior es bastante  probable que obtengamos el mismo resultado que la prueba anterior.
Lo ideal es reinicie el equipo y ejecute una nueva exploración de nmap.
En caso de que los resultados no sean los deseados y nos sigan apareciedo los cifrados debiles será necesario realizar lo siguiente:
Elimina la clave registro anterior y volvamos a crearla.
Reinicie el equipo y ejecute una nueva exploración de nmap.

Ahora verá lo siguiente:

# nmap --script ssl-enum-ciphers -p 3389 192.168.X.X
Starting Nmap 7.30 ( https://nmap.org ) at 2018-02-07 16:56 EST
Nmap scan report for 192.168.X.X
Host is up (0.00085s latency).
PORT     STATE SERVICE
3389/tcp open  ms-wbt-server

| ssl-enum-ciphers:
|   TLSv1.0:
|     ciphers:
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
|     compressors:
|       NULL
|     cipher preference: server
|   TLSv1.1:
|     ciphers:
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
|     compressors:
|       NULL
|     cipher preference: server
|   TLSv1.2:
|     ciphers:
|       TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (secp256r1) - A
|       TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (dh 2048) - A
|       TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (dh 2048) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
|       TLS_RSA_WITH_AES_256_GCM_SHA384 (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_GCM_SHA256 (rsa 2048) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA256 (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA256 (rsa 2048) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
|     compressors:
|       NULL
|     cipher preference: server
|_  least strength: A
Nmap done: 1 IP address (1 host up) scanned in 0.71 seconds

Listo en hemos quitado la vulnerabilidad presentada.

Comentarios

Entradas más populares de este blog

RDP Servidor de Escritorio Remoto en Debian 9 Stretch

Analizando la seguridad de SSL/TLS con testssl.sh