1. Introducción y análisis técnico

 

El pasado 14 de mayo de 2019, fue descubierta una vulnerabilidad relacionada con la ejecución de código en servicios de escritorio remoto. Surge cuando un atacante (no autenticado) conecta con un sistema de destino vía RDP y envía solicitudes (especialmente diseñadas) que dicho protocolo no puede manejar correctamente. Se considera una vulnerabilidad crítica, ya que ha obtenido el máximo puntaje en el sistema CVSS.  

 

Esta práctica puede derivar en la ejecución de código malicioso que haya sido previamente inyectado en la solicitud.

 

Un atacante que explote satisfactoriamente esta vulnerabilidad, puede realizar la ejecución arbitraria de código en el sistema objetivo. Podría instalar programas; ver, cambiar o borrar datos y crear nuevas cuentas de usuario con todos los privilegios disponibles.

 

Esta vulnerabilidad se explota pre-autenticación y no requiere la interacción del usuario. Es “wormable”, lo cual significa que cualquier futuro malware, que se aproveche de esta vulnerabilidad, podría propagarse de una computadora vulnerable a otra.

 

Las versiones de Windows que se han visto afectadas son: Windows XP, Windows 2000, Windows 7, Windows Vista, Windows Server 2003, Windows Server 2008 y Windows Server 2008 R2.  


2. Resumen de impactos

 

A continuación, se listan los impactos asociados a la vulnerabilidad tratada en este documento:

 

Impacto en la confidencialidad: COMPLETO

 

Puede revelarse la totalidad de los datos contenidos en los sistemas a los que se acceda.

 

Impacto en la integridad: COMPLETO

 

La integridad total del sistema se puede ver comprometida, ya es posible anular completamente la protección.

 

Impacto en la disponibilidad: COMPLETO

 

El atacante puede lograr el cierre parcial o total del recurso afectado.

 

Complejidad de acceso: BAJO

 

Son necesarios muy pocos conocimientos y/o habilidades para explotar esta vulnerabilidad.

 

Autenticación: NO REQUERIDA

 

No es necesario autenticarse para explotar esta vulnerabilidad.  

   

3. Módulo de descubrimiento: Bluekeep Microsoft Remote Desktop RCE Check de Metasploit

 

Para evaluar la existencia de esta vulnerabilidad en una red, se hará uso de la herramienta Bluekeep. Consiste en un módulo integrado en el framework de la suite MetaSploit.

 

Dicho módulo puede descargarse en los siguientes enlaces:

 

https://github.com/zerosum0x0/CVE-2019-0708  

 

https://github.com/rapid7/metasploit-framework/pull/11869

 

O desde el repositorio oficial de MetaSploit:

 

https://github.com/rapid7/metasploit-framework/wiki/Downloads-by-Version


3.1 Guía de uso de Bluekeep

 

A continuación, se detalla paso a paso el procedimiento a seguir para descubrir si las máquinas a auditar son vulnerables o no. Para este propósito, se hará uso del sistema operativo Kali Linux.

 

1. Activar MetaSploit desde la consola de Kali:    

 

msfconsole

           

2. Ejecutar el módulo Bluekeep:

 

use auxiliary/scanner/rdp/cve_2019_0708_bluekeep

 

3. Identificar la IP de la máquina a analizar:

 

ifconfig en consolas Linux o ipconfig en el CMD.

 

4. Obtener información del target address range del RHOSTS para localizar el rango de IPs del servidor del cual cuelga la máquina:

 

use auxiliary/scanner/rdp/

 

5. Inicializar el módulo Bluekeep.

 

use auxiliary/scanner/rdp/cve-2019-0708

 

6. Definir la variable RHOSTS indicando el rango de IPs del servidor y la máscara de red:

 

set RHOSTS (Rango de IPs/máscara de red)

Ej: set RHOSTS 10.0.0.0/24

 

7. Declarar la variable RHOSTS para indicar la IP de la máquina a escanear.

 

set RHOSTS (IP de la máquina)

Ej: set RHOSTS 10.0.0.11

 

8. Ejecutar la consulta basada en las variables indicadas previamente.

 

run

 

9. Verificar la información obtenida en la cual se indica si la máquina es vulnerable o no.

 

3.2 Versiones de Microsoft Windows en las cuales ha sido testado el descubrimiento mediante Bluekeep

 

(Actualizado el 29/05/2019)

 

-Windows 2000 Professional

-Windows 2000 Server – SP4                    

 

-Windows XP x86

-Windows XP x86 – SP1

-Windows XP x86 – SP2

-Windows XP x86 – SP3

           

-Windows Server 2003 x86

-Windows Server 2003 x86 – SP1

-Windows Server 2003 x64 Standard

           

-Windows Server 2003 x86 Enterprise – SP2

-Windows Server 2003 x86 R2 – SP1

 

-Windows 7 x86 – SP1

-Windows 7 x64 – SP1

 

-Windows 2008 x86

-Windows 2008 x86 – SP1

-Windows 2008 x64

-Windows 2008 x64 R2 – SP1

 

4. Parcheado y monitorización con WSUS

           

WSUS es un rol para sistemas operativos Windows Server que permite a los administradores disponer de un método centralizado de actualizaciones para todos los equipos de su red. Una vez implementado el rol en el servidor, WSUS descargará desde los servidores de Microsoft todas las actualizaciones que haya disponibles en función a los productos seleccionados durante su instalación.

 

1. Abrir el Administrador del servidor.

 

2. Agregar el rol. Administrar / Agregar roles y características.

 

3. Marcar la opción Windows Server Update Services en el menú roles y pulsar siguiente.

 

4. Marcar la opción Incluir herramientas de administración (si es aplicable).

 

5. Pulsar el botón Agregar características.

 

6. Marcar la opción Características de .NET Framework 3.5 y hacer click en Siguiente.

 

7. En la ventana Seleccionar servicios de rol, marcar las opciones WID Conectivity y WSUS Services. La opción SQL Server Connectivity no es obligatoria, pero sí recomendable para trabajar con PoweShell.

 

8. En la sección Contenido, indicar la ruta en la que descargarán y almacenarán las actualizaciones. Una unidad de almacenamiento destinada únicamente a ese propósito sería la mejor opción en cuanto a rendimiento se refiere.

 

9. Una vez realizados los pasos anteriores, arrancará la instalación de todo lo configurado hasta ahora.

 

10. Tras la finalización, cerrar la ventana y abrir Herramientas / Windows Server Update Services.

 

11. Se mostrará la venta Completar instalación de WSUS. Marcar la opción Almacenar actualizaciones localmente, comprobar que la ruta es la misma que se indicó anteriormente y pulsar Ejecutar.

 

12. En el siguiente menú, llamado Programa de mejora de Microsoft Update, hay que pulsar el botón Siguiente. Si más adelante surge algún problema de conexión, tal vez haya que comprobar las reglas del firewall.

 

13. En la ventana Elegir servidor que precede en la cadena, hay dos opciones. La primera opción es Sincronizar desde Microsoft Update y, como su nombre indica, sirve para sincronizar con los servidores de Microsoft Update. La segunda es Sincronizar desde otro servidor de Windows Server Update Services, la cual permite sincronizar desde otro servidor de nuestra red. En caso de elegir la segunda opción, hay que indicar el nombre del servidor y el número de puerto. También hay que marcar si queremos usar el protocolo SSL (Secure Socket Layer) para que la transmisión de los datos sea íntegra, segura y encriptada. La otra opción disponible se llama Esto es una réplica del servidor que precede en la cadena. En caso de ser seleccionada, se reflejarán las aprobaciones, valores de configuración, equipos y grupos de actualización de su elemento primario. Las actualizaciones se pueden aprobar únicamente en el servidor que precede en la cadena. Para este caso, usaremos la opción Elegir servidor que precede en la cadena y pulsaremos Siguiente.

 

14. En la ventana Especificar servidor proxy, pulsar el botón Iniciar conexión. (El proceso puede durar más de treinta minutos).

 

15. Elegir el idioma o idiomas correspondientes y pulsar en Siguiente.

 

16. En la ventana Elegir productos, marcar los productos que se deseen actualizar de manera desatendida.

 

17. A continuación, en la sección Elegir clasificaciones, marcar las opciones que se consideren oportunas. Es imprescindible activar las opciones Actualizaciones críticas y Actualizaciones de seguridad. Tras elegir las opciones deseadas, pulsar en Siguiente.

 

18. En el apartado Configurar programación de sincronización, marcar la opción Sincronizar automáticamente, (ya que queremos automatizar el proceso y no sincronizar manualmente). También hay que establecer la hora y elegir el número de sincronizaciones que se llevarán a cabo cada día.

 

19. Una vez realizados todos los pasos anteriores, llegaremos a la sección Finalizado. Marcamos la opción Iniciar sincronización inicial y pulsamos Siguiente.

 

20. En la ventana Siguiente paso, pulsamos sobre el botón Finalizar.

 

21. Al iniciar WSUS, veremos la pantalla de sincronizaciones en la cual se indica la fecha y hora de inicio y finalización de las sincronizaciones, el tipo (manual o automática) y el resultado (correcta, en ejecución…)


5. Comprobación de la aplicación del parche

 

Una vez finalizados los procesos descritos en el punto anterior, es recomendable verificar que el parcheado se ha realizado correctamente. Para hacer esta comprobación desde la consola de comandos, existen dos métodos muy ágiles:

 

5.1 Comprobación mediante CMD

 

Es posible generar una tabla .htm en la cual se reflejen las actualizaciones instaladas en un equipo. Para ello, hay que seguir los siguientes pasos:

 

1. Abrir CMD

 

2. Escribir el siguiente comando:

 

wmic qfe list full /format:htable >ruta en la cual se generará la tabla.

 

Ej. wmic qfe list full /format:htable >C:\Users\Luis\Documents\hotfixes.htm

 

El fichero hotfixes.htm podrá ser consultado en la ruta arriba indicada. Una vez abierto el archivo, hay que comprobar que los HotFixID correspondientes al parche del CVE-2019-0708 se encuentren listados.  

 

5.2 Comprobación mediante PowerShell

 

1. Abrir PowerShell.

 

2. Ejecutar el comando Get-Hotfix para que se muestre un listado de las actualizaciones.

 

3. Comprobar que, en la tercera columna de la tabla generada, se muestran los HotFixID correspondientes al parche del CVE-2019-0708.

 

5.3 Listado de los HotFixID

 

KB4499180 (for Windows Server 2008 SP2)

KB4499175 (for Windows Server 2008 R2 x64 SP1)

KB4499175 (for Windows 7 SP1)

KB4500705/KB4500331 (for Windows XP SP3)

KB4500705/KB4500331 (for Windows Server 2003 SP2)


6. Mitigación

 

Microsoft recomienda encarecidamente que se proceda cuanto antes a la instalación de las actualizaciones destinadas a combatir esta vulnerabilidad, aunque se planee desactivar los servicios de escritorio remoto por seguridad o porque no van a ser requeridos.

 

6.1 Instalación de la actualización completa de seguridad de Microsoft publicada en mayo de 2019

 

En caso de tener desactivada la ejecución de actualizaciones automáticas, será necesario forzarla.

 

A continuación, se enumeran los pasos requeridos para proceder a la instalación de las updates.

 

6.1.1 Actualización para versiones de Windows sin soporte

 

1. Acceder a la página Catálogo de Microsoft Update donde se encuentran alojados los parches de seguridad.

2. Descargar el parche correspondiente a la versión del sistema operativo instalado en el equipo.

3. Ejecutar el instalador para proceder a la actualización.

 

6.1.2 Actualización para versiones de Windows con soporte

 

1. Aplicar la actualización de Windows desde Inicio / Panel de control / Sistema y seguridad / Windows Update.

2. Reiniciar el equipo.

 

NOTA: Pese a tratarse de versiones que aún disponen de soporte, también pueden ser actualizadas siguiendo el procedimiento descrito en el punto 6.1.1.     

 

7. Soluciones

 

Como medidas adicionales para mejorar la seguridad, Microsoft sugiere realizar las siguientes operaciones:

 

7.1 Activación de Network Level Authentication (NLA)

 

En sistemas cuyo sistema operativo sea Windows 7, Windows Server 2008 y Windows Server 2008 R2, es necesario activar NLA. De esta manera, se puede bloquear el acceso a atacantes no autenticados que pretendan aprovechar esta vulnerabilidad. Con esta opción conectada, un atacante necesita autenticarse (previo acceso a los  servicios RDS) usando una cuenta válida en el sistema objetivo, antes de poder explotar la vulnerabilidad.

 

7.2 Bloqueo del puerto TCP 3389 en el firewall perimetral Enterprise

 

Este puerto es utilizado para iniciar una conexión con el componente afectado. Bloquear este puerto ayuda a proteger los sistemas que hay tras el firewall de intentos de explotación de la vulnerabilidad. Esta medida resulta beneficiosa para proteger las redes de los ataques originados fuera del perímetro Enterprise. Sin embargo, los sistemas pueden seguir siendo vulnerables a ataques que provengan del interior del perímetro.