1. Introducción
Las empresas que no tenían organizados sistemas de acceso remoto, los implementaron de manera urgente hace un par de meses. No todos los administradores estaban preparados para tal "calor"; como resultado, hubo descuidos en la seguridad: configuraciones incorrectas de los servicios o incluso la instalación de versiones obsoletas de software con vulnerabilidades previamente descubiertas. A algunos, esos descuidos ya les han vuelto como un boomerang, a otros les ha ido mejor, pero las conclusiones deben ser consideradas por todos. La lealtad al trabajo remoto ha aumentado significativamente, y cada vez más empresas aceptan el teletrabajo como un formato válido de manera permanente.
Por lo tanto, hay múltiples opciones para garantizar el acceso remoto: diferentes VPN, RDS y VNC, TeamViewer y otros. Los administradores tienen muchas opciones para elegir, basándose en la especificidad de la configuración de la red corporativa y los dispositivos en ella. Las soluciones VPN siguen siendo las más populares; sin embargo, muchas pequeñas empresas optan por RDS (Servicios de Escritorio Remoto), que son más fáciles y rápidos de implementar.
En este artículo, hablaremos en detalle sobre la seguridad de RDS. Haremos un breve resumen de las vulnerabilidades conocidas y revisaremos varios escenarios de inicio de ataque a la infraestructura de red basada en Active Directory. Esperamos que nuestro artículo ayude a algunos a aprender de sus errores y mejorar la seguridad.
2. Vulnerabilidades recientes de RDS/RDP
Cualquier software contiene errores y vulnerabilidades que son explotadas por delincuentes, y RDS no es una excepción. Recientemente, Microsoft ha informado a menudo sobre nuevas vulnerabilidades; hemos decidido hacer un breve resumen de ellas:
Esta vulnerabilidad pone en riesgo a los usuarios que se conectan a un servidor comprometido. Un atacante puede obtener control sobre el dispositivo del usuario o infiltrarse en el sistema para tener acceso remoto constante.
- / /
Este grupo de vulnerabilidades permite a un atacante no autorizado ejecutar código arbitrario de forma remota en un servidor con RDS a través de una solicitud especialmente formulada. También pueden ser utilizadas para crear gusanos, un malware que infecta dispositivos en la red de forma autónoma. De este modo, estas vulnerabilidades pueden poner en peligro toda la red de la empresa, y solo una actualización oportuna puede salvarla.
El software de acceso remoto ha recibido una atención creciente tanto de investigadores como de atacantes, por lo que es posible que pronto escuchemos sobre nuevas vulnerabilidades similares.
La buena noticia es que no todas las vulnerabilidades tienen exploits públicos disponibles. La mala noticia es que a un atacante con experiencia no le resultará difícil escribir un exploit para una vulnerabilidad basándose en su descripción, o utilizando técnicas como Patch Diffing (sobre la cual nuestros colegas escribieron en ). Por lo tanto, recomendamos actualizar el software regularmente y estar atentos a nuevos informes sobre vulnerabilidades descubiertas.
3. Ataques
Pasamos a la segunda parte del artículo, donde mostraremos cómo comienzan los ataques a la infraestructura de red basada en Active Directory.
Los métodos descritos son aplicables al siguiente modelo de infractor: un atacante que tiene una cuenta de usuario y acceso al Remote Desktop Gateway, un servidor terminal (a menudo está disponible, por ejemplo, desde la red externa). Al utilizar estos métodos, el atacante podrá continuar su ataque sobre la infraestructura y consolidar su presencia en la red.
La configuración de la red en cada caso específico puede variar, pero los métodos descritos son bastante universales.
Ejemplos de escape de entornos restringidos y elevación de privilegios
Al acceder al Remote Desktop Gateway, es probable que el atacante se enfrente a un entorno algo restringido. Al conectarse al servidor terminal, se inicia una aplicación: una ventana para conectarse a través del protocolo Remote Desktop para recursos internos, un explorador, paquetes de oficina o cualquier otro software.
El objetivo del atacante será obtener acceso a la ejecución de comandos, es decir, a ejecutar cmd o powershell. Varias técnicas clásicas de escape de "sandbox" para Windows pueden ayudar en esto. Las veremos a continuación.
Opción 1. El atacante tiene acceso a la ventana de conexión de Remote Desktop dentro del Remote Desktop Gateway:

Se despliega el menú “Mostrar Opciones”. Aparecen las opciones para manipular archivos de configuración de la conexión:

Desde esta ventana se puede acceder fácilmente a Explorador al hacer clic en cualquier de los botones “Abrir” o “Guardar”:

Se abre el Explorador. Su “barra de direcciones” permite iniciar archivos ejecutables permitidos, así como listar el sistema de archivos. Esto puede ser útil para un atacante en caso de que los discos del sistema estén ocultos y no se pueda acceder a ellos directamente:

→
Un escenario similar se puede reproducir, por ejemplo, al usar Excel del paquete Microsoft Office como software remoto.
→
Además, no debemos olvidar los macros utilizados en este paquete de oficina. Nuestros colegas han considerado el problema de seguridad de los macros en esta .
Opción 2. Usando las mismas premisas que en la opción anterior, el atacante inicia varias conexiones a un escritorio remoto bajo la misma cuenta. Al reconectarse, la primera se cerrará, y aparecerá una ventana con un mensaje de error. El botón de ayuda en esta ventana invocará Internet Explorer en el servidor, después de lo cual el atacante podrá acceder al Explorador.
→
Opción 3. Con restricciones configuradas para el lanzamiento de archivos ejecutables, el atacante puede encontrarse en una situación en la que las políticas de grupo prohíban ejecutar cmd.exe como administrador.
Hay una forma de eludir esto al lanzar un archivo bat en el escritorio remoto con contenido del tipo cmd.exe /K . El error al ejecutar cmd y un ejemplo exitoso de la ejecución del archivo bat se presentan en la imagen a continuación.

Opción 4. Prohibir el lanzamiento de aplicaciones mediante listas negras basadas en el nombre de los archivos ejecutables no es una panacea, se pueden eludir.
Consideremos el siguiente escenario: hemos prohibido el acceso a la línea de comandos, prohibido ejecutar Internet Explorer y PowerShell mediante políticas de grupo. El atacante intenta invocar la ayuda — sin respuesta. Intenta iniciar powershell a través del menú contextual de la ventana modal, activada con la tecla Shift — mensaje de prohibición de ejecución como administrador. Intenta iniciar powershell a través de la barra de direcciones — nuevamente, sin respuesta. ¿Cómo eludir la restricción?
Basta con copiar powershell.exe de la carpeta C:\Windows\System32\WindowsPowerShell\v1.0 a la carpeta del usuario, cambiar el nombre a algo diferente de powershell.exe, y la posibilidad de lanzamiento aparecerá.
Por defecto, al conectarse a un escritorio remoto, se permite el acceso a los discos locales del cliente, desde donde un atacante puede copiar powershell.exe y, tras renombrarlo, ejecutarlo.
→
Solo hemos presentado algunas maneras de eludir las restricciones, se pueden idear muchos más escenarios, pero todos ellos comparten la salida al Explorador de Windows. Hay muchas aplicaciones que utilizan las herramientas estándar de Windows para trabajar con archivos, y al colocarlas en un entorno restringido, se pueden aplicar técnicas similares.
4. Recomendaciones y conclusión
Como vemos, incluso en un entorno restringido hay espacio para el desarrollo del ataque. Sin embargo, se puede complicar la vida del atacante. Proporcionamos recomendaciones generales que serán útiles tanto en las opciones que hemos considerado como en otros casos.
- Limite la ejecución de programas mediante listas negras/blancas utilizando políticas de grupo.
Sin embargo, en la mayoría de los casos, sigue habiendo la posibilidad de ejecutar código. Recomendamos familiarizarse con el proyecto , para tener una idea de los métodos no documentados de manipulación de archivos y ejecución de código en el sistema.
Recomendamos combinar ambos tipos de restricciones: por ejemplo, se puede permitir la ejecución de archivos ejecutables firmados por Microsoft, pero limitar la ejecución de cmd.exe. - Desactive las pestañas de configuración de Internet Explorer (se puede hacer localmente en el registro).
- Desactive a través de regedit la invocación de la ayuda integrada de Windows.
- Desactive la posibilidad de montar discos locales para conexiones remotas, si tal restricción no es crítica para los usuarios.
- Limite el acceso a los discos locales de la máquina remota, dejando el acceso solo a las carpetas de usuario.
Esperamos que al menos haya sido interesante, y como máximo, que este artículo ayude a hacer el trabajo remoto de su empresa más seguro.
Fuente: habr.com
