miércoles, marzo 07, 2018

Cómo saltarse Software Restriction Policies (SRP) & AppLocker en MS Windows 7/10 utilizando Citrix Receiver

En este artículo vamos a ver una forma de poder hacer un bypass de posibles reglas que tengamos implementadas por las Software Restriction Policies o Applocker, mediante el uso del software Citrix Receiver, que es el cliente recomendado por Citrix para que la experiencia de uso de sus productos sea la mejor posible de cara al usuario. Hay que recalcar que este método sólo implica ejecutar el programa en el mismo contexto/permiso que tenga el usuario, así que a menos que tengamos la imprudencia de dejar al usuario trabajar con permisos de administrador local, simplemente conseguiremos ejecutar el programa, pero no elevar privilegios.

Figura 1: Cómo saltarse Software Restriction Policies (SRP) &
AppLocker en MS Windows 7/10 utilizando Citrix Receiver

Antes por si acaso, la breve reseña de SRP y Applocker. Recordemos que ambas políticas están disponibles desde Windows 7 hasta Windows 10. Applocker permite mayor control y gestión, pero está reservado para licenciamiento de tipo Enterprise, y por eso muchos entornos con versiones Professional usan SRP:
Para ponernos en contexto, vamos a detallar el escenario. Imaginemos que tenemos la siguiente política de SRP implementada, en la que por defecto, todo lo que no esté explícitamente permitido, no se ejecutará:

Figura 2: Política SRP que por defecto no permite ejecución de ningún software

Por tanto, para permitir la ejecución de programas, deberemos tener la correspondiente regla creada permitiéndolo, por ejemplo:

Figura 3: Regla para permitir ejecuciones explícitas

Y su homónimo en el sistema AppLocker:

Figura 4: Forzado de reglas por defecto en AppLocker

Y las excepciones en reglas en una lista blanca de programas permitidos.

Figura 5: Lista blanca de reglas de ejecución en AppLocker

Usando las reglas por defecto de SRP o Applocker, conseguimos que todo software que no esté en las rutas por defecto - lo que excluye el %appdata% - no se llegará a ejecutar. No es la panacea, pero obviamente sólo con esto ya prevenimos mucha tipología de malware.

Usando Citrix Receiver para saltarse SRP & AppLocker

Ahora la parte de Citrix. Como ya he indicado al principio, Citrix Receiver es el cliente para puestos de trabajo para poder conectarnos a nuestro entorno basado en Citrix - XenDesktop/Xenapp en nuestro caso -, y ejecutar las aplicaciones publicadas. Básicamente, por hacer un símil rápido y fácil, es un RDP con muchos esteroides; podéis encontrar más información de ello en la web de Citrix, pero cualquiera que lo use - y no es precisamente un software desconocido o poco usado - ya sabe lo que implica. En la conferencia de "Bosses Love Excel, Hackers Too" podéis ver cómo lo utilizan Chema Alonso y Juan Garrido "Silverhack", y en si buscáis los artículos con la tag Citrix en este blog podéis encontrar muchos hacks basados en él.


Figura 6: Bosses love Excel, Hackers too

En nuestro ejemplo tenemos una serie de aplicaciones que se publican por XenApp, es decir, se ejecutarán desde el servidor en el puesto cliente, pero la gracia está en que para el usuario la integración o experiencia de uso será la misma que si lo tuviera en local. Además haremos uso de una de sus cualidades más usadas, que es que cualquier fichero de Microsoft Office que pueda tener el PC, se asocie con el programa de MS Office del servidor de Citrix. De esta forma, aunque el PC no tenga MS Office instalado, podrá ejecutarlo desde el servidor sin problemas. Sirva como referencia: Set File Type Association to Open Files Using Published Applications


Figura 7: Ejemplo de asociación de MS Word para que habra los documentos del tipo especificados.

Esto es importante ya que, si no hay asociación de ficheros, entonces todo lo demás que sigue no sucede/no aplica, pero dado que esto es una de sus características más usadas/productivas, lo normal es que esté hecha esta asociación. Igualmente hay que recalcar que el siguiente comportamiento se da al asociar ficheros de MS Office y no lo realiza con, por ejemplo, archivos PDF o de otro tipo - o por lo menos de los que he podido probar no he encontrado más -.

Al hacer esto, en el PC que tenga instalado Citrix Receiver, genera al vuelo siempre un .exe asociado a la aplicación para realizar ese "canal de comunicación". Dicho fichero .exe se almacena en %appdata%\Citrix\SelfService:

Figura 8: Ficheros .exe creados para hacer las asociaciones

Dado que en nuestras políticas de SRP o Applocker no hemos permitido explícitamente nada de ejecución de software desde el %appdata%, si intentamos abrir un fichero de MS Office desde el PC, obtendremos un error por nuestra política de seguridad:

Figura 9: Error al intentar abrir un documento asociado a MS Word

En el visor de eventos podemos ver el detalle:

Figura 10: El error por las SRP  en el Visor de eventos

En Applocker el evento es similar. Para que funcione, y aquí obviamente como os habréis imaginado ya hace rato está la trampa, hay que bajar la seguridad del sistema. Resulta que ese ejecutable que genera el cliente de Citrix Receiver lo hace al vuelo, es decir, que el HASH de ese fichero varía cada vez y, además, no lo hace con ninguna firma digital que pueda asociarlo al fabricante, lo obliga a tener que crear una excepción de AppLocker o SRP por Path para que funcione la asociación de extensiones. No hay otra opción en manos de los administradores. Gana la usabilidad. Pierde la seguridad.

Figura 11: Excepción de Path para que funcione la asociación de Word

Por tanto, si nos vamos ahora a dicha ruta, y copiamos cualquier ejecutable, y lo renombramos con ese nombre, podremos hacer el bypass; en la siguiente imagen veremos un simple TcpIPView copiado ahí y renombrado a "MicrosoftWord2016.exe":

Figura 12: Sustituyendo el fichero creado al vuelo

Y ya está, fácil y sencillo, sin mucho glamour ni destreza, algo al alcance de cualquiera. No obstante, como nota, es posible cambiar este comportamiento de las asociaciones de tipos de fichero haciendo uso de esta clave de registro - a ser posible mejor aplicarla a nivel de HKLM por una GPO, ya que a nivel de HKCU el atacante o malintencionado podrá modificarlo igualmente.

Pero usando este workaround, se pierde precisamente uno de los puntos fuertes de la aplicación, que es la integración y experiencia del usuario. El fabricante está notificado y espera poder solventarlo en futuras versiones, pero de momento, al ser por diseño dicho funcionamiento, hay que tener en cuenta este posible vector de ataque, y en entornos que consideremos críticos, saber que es posible aplicar el workaround a expensas de perder funcionalidad. Espero que os haya resultado útil.

Salu2!

Autor: Javier Inglés Obrero

1 comentario:

Ramón Sola dijo...

Ostras, Javier Inglés. Le perdí la pista hace años.

Entrada destacada

Seis recomendaciones personales de libros de @0xWord para disfrutar y aprender

Este verano pude disfrutar de la lectura de un libro que me encantó. El libro de Factfulness que me había regalado mi compañera Beatriz Ce...

Entradas populares