martes, junio 20, 2017

Cómo saltarse AppLocker en Windows 10 con las reglas por defecto

La semana pasada hablamos de un Bypass a AppLocker mediante el uso de la aplicación BgInfo. Hoy hablaremos de la configuración por defecto de AppLocker y los riesgos que esto proporcionan para la defensa del sistema. Las reglas por defecto de AppLocker permiten a todos los ficheros que se encuentran dentro de la ruta Windows y Program Files ser ejecutados, ya que, si no fuera así, el sistema no funcionaría de forma normal. Si no se establecen los permisos de forma adecuada en estas carpetas, un atacante podría explotar esto para conseguir bypassear AppLocker.

Figura 1: Cómo saltarse AppLocker en Windows 10 con las reglas por defecto

En Windows 2008 R2, se permite por defecto a los usuarios estándar del sistema tener acceso de lectura y escritura sobre estas carpetas: \Windows\Temp y \Windows\Tracing. La herramienta accesschk se puede utilizar para identificar si el grupo de usuarios o “Users” tiene permisos de lectura y escritura dentro de la carpeta Windows. En la imagen se puede visualizar este hecho en Windows 10.

Figura 2: Ejecución accesschk64 en Windows 10

Aunque en la imagen no se visualiza, la ruta \Windows\Tasks también está disponible y podemos almacenar binarios en dicha ruta. Ahora vamos a ver cómo funciona todo esto para hacer un bypass de AppLocker.

PoC: Jugando con las rutas y AppLocker

En primer lugar, vamos a ver las reglas que se crean por defecto en AppLocker al activarlo. Hay que recordar que tenemos que, en caso de no estarlo, tenemos que reiniciar el servicio de identidad llamado Application Identity. En la imagen se puede visualizar las reglas que Windows crea por defecto, cuando todo está activo.

Figura 3: Reglas por defecto en AppLocker

Si analizamos vemos que nos dan acceso, a cualquier usuario del sistema, a ejecutar binarios que se encuentren en Program Files y Windows, pero en ninguna ruta más. Es decir, si tuviéramos un binario en el escritorio no podríamos ejecutarlo.

Para comprobar este hecho, utilizamos el propio binario del accesschk.exe que hemos bajado con anterioridad. Si ejecutamos el fichero accesschk.exe en la ruta del escritorio, por ejemplo, obtendremos una denegación en la ejecución del fichero, tal y como se puede ver en la imagen.

Figura 4: Denegación de acceso en accesschk

Pero bien, si utilizamos una ruta que se encuentre en \Windows, dónde el usuario puede copiar archivos y utilizar dicha ruta como válida, ante la configuración por defecto de AppLocker, tendremos la posibilidad de hacer el bypass.

Como se puede ver en la anterior imagen, cuando lanzamos el fichero accesschk.exe en una ruta como \Windows\tasks, la cual está permitida por defecto por AppLocker, podemos lograr la ejecución. Esto es un riesgo grande de las rutas por defecto. Además, en sistemas como Windows 2008 R2 se probó que usuarios sin privilegios pueden lograr la ejecución en dicha ubicación.

PoC 2: Meterpreteando el AppLocker por defecto

En esta segunda prueba de concepto, la idea es utilizar esta característica de Windows y su configuración por defecto, para lograr ejecutar un Meterpreter a través de un binario utilizando la técnica denominada Weak Path Rules.

Lo primero es generarse un binario con Metasploit, por ejemplo. Utilizamos el módulo payload/windows/meterpreter/reverse_tcp y configuramos LHOST para que apunte a la dirección IP de la máquina del atacante/auditor. Después, utilizamos el comando generate para generar el binario en el formato que queramos.

En la siguiente imagen, se puede ver el fichero app.exe, ya creado. Este fichero contiene un Meterpreter apuntando a la dirección IP del atacante/auditor. Si probamos a lanzarlo desde el escritorio no podremos hacerlo, pero si utilizamos la ruta de \Windows\tasks lograremos su ejecución.

Figura 5: app.exe con Meterpreter apuntando a la dirección IP del atacante.

En la siguiente imagen, se puede ver como se genera el binario y como se configura el módulo handler en Metasploit para recibir la conexión inversa. Además, cuando se consigue el bypass de AppLocker vemos como logramos la sesión inversa en nuestra máquina proveniente del equipo Windows.

Figura 6: Sesión recibida en Metasploit tras la ejecución saltándose AppLocker

Para ejemplificar este proceso os dejamos dos videos que muestran en qué consiste el bypass del AppLocker y en el segundo vemos cómo aprovecharlo para lograr ejecutar una Meterpreter en el equipo Windows.

Figura 7: PoC ByPass de AppLocker por Weak Path Rules

Sin lugar a la duda, una interesante técnica a tener en cuenta y utilizable en un ethical hacking. Desde el punto de vista de la fortificación de Windows, puede ser interesante utilizar reglas más concretas para evitar este tipo de técnicas, que muestran lo sencillo, que, en algunas ocasiones, puede ser esto.

Figura 8: PoC ejecución de Meterpreter y recepción de shell saltándose AppLocker

Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en ElevenPaths

1 comentario:

  1. Muchas gracias!
    En https://pentestlab.blog/ hay también muy buenas referencias de este estilo.
    Como anotación y posible solución a esta regla, bastaría con tener una GPO que establezca/corrija los permisos de los usuarios en esas rutas por defecto que son débiles.
    Gracias de nuevo por compartir el conocimiento!

    ResponderEliminar