miércoles, 6 de septiembre de 2017

Cómo saltarse Device Guard en Windows 10 con CVE-2017-8625


Durante el mes de agosto ha seguido habiendo un gran movimiento en el mundo de la seguridad y Microsoft, y no debemos perder detalles de estos descubrimientos para mantener nuestro sistema operativo Microsoft Windows fortificado.  En esta ocasión, el investigador Oddvar Moe ha publicado cómo logró hacer un bypass a Device Guard en Windows.

 Este ha sido un hecho relevante que ha consiguió tener un CVE por ello, del cual puedes obtener más detalle en MITRE. Vamos a ver cómo funciona este bug.


¿Qué es Device Guard?

Como se indica en la web de Technet de Microsoft, Device Guard es una combinación de características de seguridad de hardware y software, las cuales ayudan a bloquear un dispositivo para que pueda ejecutar aplicaciones de confianza. Es decir, si la aplicación no es de confianza no se ejecutará. El funcionamiento de Device Guard restringe a Windows 10 Enterprise para que ejecute código que esté firmado y que se pueda verificar en la directiva de integridad de código.


¿Qué partes tiene?

Puedes ver todos los detalles de sus componentes en la web de Device Guard en Technet, pero se resumen en los siguientes.
• UMCI. Integridad de código en modo usuario. 
• Nuevas reglas de integridad de código del kernel. 
• Arranque seguro con restricciones de base de datos. 
• Seguridad basada en la virtualización para proteger la memoria del sistema y los controladores. 
• Como opcional, Microsoft indica el módulo de plataforma segura TPM 1.2 o 2.0.

El descubrimiento

El investigador Oddvar Moe se fijó en el binario hh.exe, el cual es un programa que lanza la ayuda en Windows. El comportamiento del binario le llamó la atención, ya que independientemente del parámetro que se le pasará ocurrían diferentes situaciones. La primera prueba que llama la atención es la de ejecutar la siguiente instrucción hh.exe c:\ o hh.exe http://www.google.com. En la primera ejecución, como se mostrará más adelante, se obtiene la posibilidad de navegar por el sistema de archivos a través del binario hh.exe y en el segundo caso se obtiene la posibilidad de obtener un browser embebido en hh.exe, muy similar a navegar por Internet sin navegador dentro de Microsoft Word para poder saltarse protecciones de seguridad.

Figura 2: Navegando con hh.exe

Otra cosa interesante es el nivel de integridad. Cuando se ejecuta un proceso iexplore, se ejecute con integridad low, aunque el padre lo haga con media. Sin embargo, el browser que se ejecuta con hh.exe se ejecuta con integridad media. Esto se puede ver fácilmente con la herramienta procmon.

Figura 3: Process Monitor de hh.exe en Windows 10

En la siguiente imagen se muestra un ejemplo de lo que se comentaba anteriormente, cuando ejecutamos hh.exe c:\, se abre el binario hh.exe y se puede ver un contenido embebido que es un explorador de archivos. Esto hace pensar, ya que puede ser interesante para lograr realizar el bypass de Device Guard, como pensó Oddvar Moe.

Figura 4: Navegando por el disco duro con hh.exe

Oddvar Moe creó un script de Powershell que permite crear un fichero CHM o fichero de ayuda, el cual abrirá la ayuda y ejecutará una calculadora a través de ActiveX. El script puede ser descargado desde su Github y es bastante sencillo de entender. Además, está basado en un script que forma parte de Nishang, un framework de pentesting con Powershell bastante interesante.

Figura 5: Script en PowerShell para el CVE-2017-8625

La ejecución del script, como puede verse en la imagen, es totalmente sencilla. El resultado es un fichero CHM almacenado en la carpeta \hhpoc.

Figura 6: Ejecución del script que genera el fichero CHM a explotar

Una de las partes interesantes del script es la que se puede ver a continuación. En ella se puede ver cómo se ejecuta código, dónde primero nos mostrarán un alert indicando lo que viene a continuación. La calculadora será ejecutada saltándose las medidas de protección asociadas a Device Guard, por lo que se está aprovechando los archivos de ayuda y el binario asociado para lograr el bypass.

Figura 7: Ejecución de la calculadora

Al ejecutar el fichero CHM nos encontramos que el binario hh.exe es ejecutado, y muestra una página de ayuda dónde Oddvar ha escrito un texto. Además, se ejecuta el alert, como puede verse en la imagen, y nos indica lo que ocurrirá a continuación.

Figura 8: Alerta al abrir el fichero CHM creado para explotar el bug

En el momento que el usuario pulse sobre el “Yes”, la calculadora se ejecutará, por lo que el código se ejecutará. Esto sirve para demostrar que el código se puede lograr ejecutar saltándose la protección de Device Guard. 


Figura 9: Ejecución de código saltándose Device Guard en Windows 10


¿Podemos ejecutar otro tipo de código más interesante?

Lógicamente sí. Como ejemplo pongo este proyecto de Github llamado StarFighters, con el que se puede lograr ejecutar código interesante a través del JavaScript.

Figura 10: La calculadora en ejecución

En la imagen se puede ver como se produce la ejecución de la calculadora. Para ejemplificar la sencillez de método y la facilidad con la que hoy en día puede funcionar te dejamos un video.

Figura 11: PoC Saltarse Device Guard en Windows 10 con CVE-2017-8625

Además, hay que indicar que al día de hoy Windows 10 v1703 tiene parcheada esta vulnerabilidad, por lo que si actualizas no deberías tener este problema, el cual ha sido parcheado muy recientemente. Tenemos todos los datos sobre la vulnerabilidad aportados por Microsoft en este enlace.