22 sept 2017

Bypass AppLocker con BgInfo

En algunos equipos con reglas de AppLocker puede ser complejo ejecutar código, archivos o programas que nos interesen, por ejemplo, de cara a un pentesting. Hoy hablaremos de un método reciente utilizado para hacer un bypass de AppLocker gracias a la herramienta BgInfo. BgInfo es una herramienta que muestra información del sistema directamente en el escritorio, como si de un background se tratase. Este tipo de herramientas es muy utilizado diariamente por los administradores y pueden ser encontrados en muchos sistemas cliente de las empresas.

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.

PoC: Ejecutando scripts cuando AppLocker no te deja

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’.


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 Powershell, la cua 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.


En la siguiente imagen, se puede visualizar el resultado de la ejecución tal cual, mediante doble click, 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.


¿Y ahora qué? Es una buena pregunta. El trick para el bypass de 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, el cual estaría prohibido por el sistema.

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 ejempl, BgInfo o BgInfo Bypass. Seleccionamos la opción de cargar un script de VBS y seleccionamos nuestro script.

En la siguiente 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. Como se puede imaginar, esto abre un mundo de posiblidades para 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.

En la siguiente 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.


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.


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.

No hay comentarios:

Publicar un comentario