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