Para los que ejecutan a menudo el escaneo de vulnerabilidades sobre estaciones o servidores con sistema operativo Microsoft Windows se han topado usualmente con el mensaje de “Report Weak Cipher Suites” asociado al puerto 3389 (Remote Desktop o RDP).
Pues bien, la vulnerabilidad está asociada netamente a los parametros de cifrado o ciphers que por defecto viene con el sistema operativo. Estos parámetros inseguros son los siguientes:
- DES 56/56
- NULL
- RC2 128/128
- RC2 40/128
- RC2 56/128
- RC4 40/128
- RC4 56/128
- RC4 64/128
- RC4 128/128
- Triple DES 168
Para poder solucionar o remediar la vulnerabilidad solamente se requerirá la deshabilitación de los cifrados debiles y la habilitación de cifrados más fuertes, para ello existe dos formas de hacerlo, la primera seria ejecutar un script via PowerShell y la segunda seria con ayuda de la herramienta “IISCrypto”.
PowerShell:
Si se desea ejecutar mediante un script, se debe de ejecutar el siguiente comando en “Windows Power Shell ISE”:
New-Item 'HKLM:SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers' -Force | Out-Null
$insecureCiphers = @(
'DES 56/56',
'NULL',
'RC2 128/128',
'RC2 40/128',
'RC2 56/128',
'RC4 40/128',
'RC4 56/128',
'RC4 64/128',
'RC4 128/128',
'Triple DES 168'
)
Foreach ($insecureCipher in $insecureCiphers) {
$key = (Get-Item HKLM:).OpenSubKey('SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers', $true).CreateSubKey($insecureCipher)
$key.SetValue('Enabled', 0, 'DWord')
$key.close()
Write-Host "Weak cipher $insecureCipher has been disabled."
}
Luego de deshabilitar los cifrados inseguros, se deberá habilitar los cifrados seguros:
- AES 128/128
- AES 256/256
Para ello se debe de ejecutar el siguiente comando en “Windows Power Shell ISE”:
$secureCiphers = @(
'AES 128/128',
'AES 256/256'
)
Foreach ($secureCipher in $secureCiphers) {
$key = (Get-Item HKLM:).OpenSubKey('SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers', $true).CreateSubKey($secureCipher)
New-ItemProperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\$secureCipher" -name 'Enabled' -value '0xffffffff' -PropertyType 'DWord' -Force | Out-Null
$key.close()
Write-Host "Strong cipher $secureCipher has been enabled."
}
Será necesario reiniciar el sistema operativo para que tome efecto los cambios efectuados.
!!! Nota: Cabe resaltar que este script es un extracto de lo publicado en github por el usuario “Alexander Hass”.
IISCrypto:
Esta herramienta creada por “Nartac Software” en lo personal ayuda bastante al momento de administrar los cifrados, protocolos, etc que tiene el sistema operativo.
Antes de comenzar es necesario bajar la aplicación de su página web o haciendo clic aquí.
Al abrir el programa nos mostrará lo siguiente:
Aquí solamente será necesario desmarcar todos los cifrados débiles y activar los cifrados mas fuertes mencionados al inicio tal como se muestra en la siguiente imagen:
Por último, marcaremos el check de “Reboot” y le daremos clic en “Apply”. Esto mandará a reiniciar el equipo para que tome efecto los cambios realizados: