El investigado Oddvar Moe descubrió que la herramienta BgInfo puede ser utilizada para hacer bypass de AppLocker y Device Guard dando la posibilidad de ejecutar VBS scripts. En el artículo de hoy vamos a ver el paso a paso de cómo llevarlo a cabo y conseguir ejecutar una cmd.exe, la cual a priori estaría prohibida por política.
AppLocker: Protección contra VBS
Para ejemplificar esto vamos a utilizar un script de VBS, el cual no podrá ser ejecutado ya que AppLocker nos prohibirá, tanto abrir una cmd.exe como el ejecutar un script de VBS, al menos a priori. El script que utilizaremos es el siguiente, como se puede ver intenta lanzar una cmd.exe, la cual se puede lograr, si no está prohibido lanzar scripts de este tipo. Por otro lado, el script de VBS intenta escribir en disco un archivo con el texto ‘bypass AppLocker’.
Figura 2: Script VBS para ejecutar código con BGInfo |
AppLocker tiene una fácil configuración, ya que al final es un conjunto de reglas con un ámbito marcado por si son ejecutables, si son instaladores de Windows, si son scripts o si son paquetes de aplicaciones. Para este ejemplo, tenemos prohibida la ejecución de cualquier script en VBS. Si observamos las reglas de ejecutables, también se tiene prohibido la ejecución de una cmd.exe, aunque en este caso no la necesitaremos para evadir la protección de AppLocker.
Si ejecutamos una consola Powershell, la cual no la hemos prohibido, aunque también se podría hacer, tampoco podríamos ejecutar wscript.exe. Es decir, AppLocker está haciendo lo que se supone que debe hacer.
Figura 3: Regla en AppLocker que prohibe todo el código .vbs |
En la siguiente imagen, se puede visualizar el resultado de la ejecución tal cual, mediante doble clic, del archivo cmd.vbs que hemos creado previamente. El sistema nos está imposibilitando la ejecución del script. Otra opción interesante es observar con Process Monitor para ver cuál es el juego de aplicaciones que se está haciendo.
Figura 4: AppLocker prohibe la ejecución |
¿Y ahora qué? Es una buena pregunta. El truco para saltarse AppLocker radica en una mala gestión interna que realiza el mecanismo de protección. Desde BgInfo se puede lograr ejecutar un script de VBS, lo que estaría prohibido por el sistema con AppLocker.
Configurando BgInfo para saltase AppLocker
Para ver la primera opción abrimos la aplicación de BgInfo y pulsamos la opción Custom. Esta opción nos permite personalizar los campos de información que deben salir en la pantalla de Windows. Creamos un nuevo campo personalizado y le ponemos el nombre que queramos, por ejemplo, BgInfo o BgInfo Bypass. Seleccionamos la opción de cargar un script de VBS y seleccionamos nuestro script. En la imagen se puede ver cómo quedaría la configuración. En el instante en el que pulsemos sobre el ‘OK’ se llevará a cabo la ejecución y ésta escapa del control de AppLocker, logrando de este modo ejecutar las líneas del script con el código que esté escrito.
Figura 5: Campo personalizado en BgInfo con ruta al script VBS |
Como se puede imaginar, esto abre un mundo de posiblidades para auditar equipos plataformados, ya que estamos en un Windows 10 y podríamos lograr ejecutar el código que queramos, saltando las medidas de protección. Es importante hacer hincapié en que en una auditoría técnica interna es muy probable que partamos desde un estado sin privilegio y con medidas de protección estilo AppLocker. Aunque, por suerte, en otras tantas ocasiones puede que tengamos más suerte.
El resultado de la ejecución del script es un nuevo fichero en el escritorio, pero ¿Quién ha creado el fichero? El fichero ha sido creado por el script de VBS que no se podía ejecutar, por lo que se ha conseguido hacer un bypass de AppLocker.
Figura 6: Fichero VBS ejecutado y archivo TXT creado |
En la imagen, se puede ver el fichero creado en el escritorio y el contenido de éste. Esto abre un mundo de posibilidades, como se comentaba anteriormente, ya que, en vez de lograr escribir en disco, podríamos lograr ejecutar un Meterpreter o algún tipo de payload o código que permita otro tipo de acciones, como por ejemplo una escalada de privilegios o tomar el control desde otra ubicación. Cneeliz tiene en su Github un armamento de payloads preparados en VBS para ejecutar, entre ellos, algún que otro Meterpreter. Esto es siempre interesante tenerlo a mano.
Figura 7: Invocar BgInfo |
Por último, y por seguir probando vemos cómo podemos invocar BgInfo sin necesidad de abrirlo y de manera transparente con las diferentes opciones /popup o /nolicprompt. El resultado de este tipo de ejecución es idéntico a la anterior, obtenemos un fichero en el escritorio con el texto que pusimos en el script, logrando de este modo el bypass de AppLocker.
Figura 8: VBSMeter de Cneeliz |
Otra opción es crear un fichero con extensión bgi, que son ficheros que se abren con la aplicación y se ejecutan. Obtendríamos el mismo resultado que en los casos anteriores. Como se puede ver es un mecanismo sencillo y que se aprovecha de una mala gestión en este caso. Además, os dejamos un video sobre el proceso para que lo podáis ver con mayor detenimiento.
Figura 9: Vídeo sobre Cómo saltarse AppLocker en Windows 10 con BgInfo