viernes, abril 10, 2020

Hacking Windows: Tricks para saltarse AppLocker

AppLocker es una funcionalidad que apareció con Windows 7 (versión Enterprise y Ultimate) y Windows Server 2008 R2 para sustituir a las Políticas de Restricción de Software - conocidas como SRP "Software Restriction Policies" - de las versiones anteriores. Igual que las directivas de restricción de software, AppLocker permite definir las aplicaciones autorizadas para ser ejecutadas por sus usuarios estándar dentro de su dominio instalando sus parámetros mediante directivas de grupo.

Figura 1: Hacking Windows: Tricks para saltarse AppLocker

La utilidad principal de esta funcionalidad es limitar la instalación de malware e impedir la instalación de software no normalizado y, por supuesto, son pieza fundamental de la Seguridad en Windows Server 2016 y de la aplicación de procesos de fortificación para conseguir la Máxima Seguridad en Windows.

Figura 2: Windows Server 2016: Configuración, Adminisración y Seguridad
de Ángel Núñez (Puedes contactar con él en MyPublicInbox)

Con la aparición de AppLocker, el número de cosas que se pueden realizar a la hora de evitar la ejecución de determinado tipo de programas son muchas. Ente la lista se encuentran:
- Definir reglas basadas en atributos de archivo que se mantengan a lo largo de las actualizaciones de la aplicación (nombre del archivo, versión…) , reglas basadas en la ruta y el hash del archivo. 
- Asignar una regla a un grupo de seguridad o a un usuario individual. 
- Crear Excepciones a ciertas reglas. 
- Modo auditoría para implementar la directiva y ver el impacto que tendrá antes de aplicarla. 
- Simplificar la creación y la administración de reglas de AppLocker con PowerShell.
Las tecnologías de control de acceso, como Active Directory Rights Management Services (ADRMS) y las listas de control de acceso (ACL), ayudan a controlar los usuarios a los que se permite el acceso al bien más preciado de las organizaciones: la información que posee. Al crear una lista de aplicaciones y archivos aprobados y permitidos, AppLocker también se ayuda a impedir la ejecución de aplicaciones para determinados usuarios.

Figura 3: Máxima Seguridad en Windows Gold Edition de
Sergio de los Santos (Puedes contactar con él en MyPublicInbox)

Como AppLocker puede controlar archivos .dll, también es útil para controlar quién puede instalar y ejecutar controles ActiveX y es ideal para aquellas organizaciones que actualmente usan la directiva de grupo para administrar sus equipos.

Hacking Windows: Bypass de AppLocker

Antes de empezar con la prueba de concepto es necesario activar el servicio de identidad de aplicación, así una vez que configuremos las reglas en AppLocker pueda aplicar las reglas que añadamos posteriormente. Para ello abrimos una CMD con permisos de administrador y escribimos el siguiente comando:

Figura 4: Activando el servicio de identidad de aplicacion

Una vez nos muestre que ha sido activado con éxito es necesario reiniciar el sistema operativo, para que se apliquen correctamente los cambios de esta activación. Después, ya podemos proceder a abrir las directivas de seguridad local, que se encuentra dentro de Panel de control\Sistema y  ahí dentro de Seguridad\Herramientas administrativas. Una vez abierta se nos mostrará una ventana como está de la imagen siguiente.

Figura 5: AppLocker

Para comenzar a configurar el servicio, debemos pulsar en el botón verde que dice "Configure rule enforcement" para configurar la aplicación de reglas. En el cuadro de configuración vamos a habilitar reglas de ejecutables tal y como se puede ver a continuación.

Figura 6: La primera opción es "Executable Rules"

Ahora procedemos a crear la regla para limitar la ejecución de una determinada aplicación, en nuestro caso vamos a bloquear a nuestra más que conocida, y muy querida, FOCA - Fear the FOCA! Se puede configurar de diferentes maneras, ya sea por la ruta de una carpeta o fichero, editor de software (el que firma el binario) o bien por el hash de archivo.

Figura 7: Configurando regla de ejecutable por ruta

Prueba 1: Saltando la regla de ruta

Nosotros vamos a elegir la ruta del ejecutable, para ver de manera sencilla cómo funciona AppLocker y después verificamos que se ha creado la regla para FOCA.

Figura 8: Reglas de prohibir FOCA por ruta creada

Como somos muy fan del Pentesting con Powershell, también se os enseñamos cómo se pueden visualizar las reglas que hay creadas en el Windows en el que estás trabajando con un pequeño script , tal y como podéis ver en la siguiente imagen.

Figura 9: Script en PowerShell (Haz clic para ver en grande)

Tras ejecutarlo, el resultado que nos arroja dicho script es lo siguiente. Es decir, la misma información pero directamente en nuestra PowerShell.

Figura 10: Reglas creadas en AppLocker

Y ahora sí, para ver si la configuración que hemos hecho funciona, lo que debería suceder cuando  intentamos ejecutar el binario de FOCA es que se nos mostrara el siguiente mensaje, dejándonos claro que no es posible hacer uso de esta aplicación.

Figura 11: AppLocker prohibe la ejecución de ese archivo

Saltar esta primera protección es bastante sencillo y conocido. Al final, como sabemos por la regla que hemos visto cuando hemos ejecutado nuestro script PowerShell, esta aplicación está bloqueada por ruta, es decir, que si tenemos permisos de lectura del binario de la FOCA - o de toda la carpeta - y escritura en una carpeta del sistema, podemos hacer lo siguiente:

Figura 12: Copiamos la carpeta de la FOCA a otra ubicación

Si la fortificación del sistema no se ha hecho acompañándolo de una estricta ACL, podremos copiar la carpeta de Origen (FocaPro_locked) a una nueva ubicación (FocaPro_unlocked), invalidando completamente la regla de AppLocker que está configurada.

Figura 13: Carpetas copiadas. Una afectada por AppLocker y otra no.

Ahora ya, si intentamos ejecutar el nuevo binario de FOCA, no encontraremos ninguna regla en AppLocker que le afecte, así que podemos disfrutar de

Figura 14: FOCA Final

No es nada sorprendente que esto pase de esta forma. Esta regla hace lo que dice, que es evitar que un programa que esté en una ruta concreta no se ejecute y si no lo acompañas de otras medidas de fortificación la regla sirve para lo que sirve. Por eso hay más medidas en AppLocker.

Prueba 2: Saltando la regla de Hash

Ahora que ya entendemos algo mejor AppLocker, vamos a ver otro ejemplo de bypass, pero esta vez vamos a saltarnos la regla del Hash de un fichero, que al igual que la regla anterior tiene sus limitaciones. Trabajaremos en este caso con Process Explorer (procexp64.exe), la herramienta de Sysinternals para ver los procesos en Windows. Primero obtenemos el Hash del fichero :

Figura 15: Obteniendo el Hash de un fichero con PowerShell

Como habéis visto, esto es algo que también podemos hacer con PowerShell. Y una vez que lo tenemos, configuramos una regla como en el caso anterior, pero esta ver seleccionando Hash File e introduciendo el Hash que acabamos de obtener.

Figura 16: Hash File Rule creada

Una vez tenemos la regla creada, AppLocker se encargará de comprobar ese hash en cualquier ejecutable que se intente lanzar, y si coincide con el de la regla, bloqueará el binario y no permitirá su ejecución, tal y como se puede ver en la imagen siguiente.

Figura 17:AppLocker bloquea procexp64.exe

Por supuesto, si llevas años en la industria de la detección de malware, ya sabes que hacer reglas para malware basado en Hashes siempre fue una mala idea, y haciendo un "Morphing de Superman", es decir, cambiando cualquier byte de una cadena de caracteres podemos modificar ese Hash. Para ello basta con que abramos el binario con un editor Hexadecimal y hacer una ligera modificación en una cadena de texto, para que el programa siga siendo totalmente funcional.

Figura 18: Haciendo un "Morphing de Superman"

Los caracteres en rojo, son aquellos que hemos modificado, simplemente hemos sustituido las letras que se visualizaban en la parte derecha por puntos. Guardamos como un nuevo binario llamado “procexp64_unlocked.exe” pero no porque con otro nombre lo vaya a ejecutar, si no para la prueba, podéis renombrarlo con el mismo nombre del binario para comprobar que realmente es efectivo. Una vez terminado el proceso del "Morphing de Superman", comprobamos que el Hash de los dos binarios es diferente :

Figura 19: Ya no tienen el mismo hash

Por supuesto, si ahora ejecutamos el nuevo binario - con diferente Hash - vemos que realmente nos hemos saltado la restricción por Hash de AppLocker porque, evidentemente, esta ya no le aplica para nada al tenerlo cambiado.

Figura 20: Process Explorer se ejecuta

Como os podéis imaginar, conocer en detalle el funcionamiento de estas tecnologías es fundamental para fortificar cualquier entorno Windows en una empresa, y entender cómo funcionan las reglas de ruta y de hash, y cuales son sus limitaciones es importante. Por supuesto, saber qué reglas están configuradas y cómo se puede saltar  AppLocker en un proyecto de auditoría que requiera tirar de técnicas de Hacking Windows es muy útil.

Figura 21: Hacking Windows: Ataques a sistemas y redes Microsoft

Te puedes encontrar AppLocker configurado en una auditoría, y si te encuentras estas reglas en las restricciones ya has visto que no es muy complicado. Sin embargo AppLocker también tiene reglas basadas en los certificados digitales con la que están firmados los ejecutables, donde un administrador concienzudo puede elegir qué fabricantes de software, qué programas y qué versiones concretas son las que se pueden utilizar o las que están prohibidas. Cuando esto es así, encontrar la forma de saltarse la restricción es más complicada. Eso sí, siempre puedes traerte tus propios programas sin firmar cuando haya listas negras...

Saludos!

Autor: Víctor Rodriguez Boyero, Security Researcher en el equipo de Ideas Locas de CDCO de Telefónica.

No hay comentarios:

Entrada destacada

10 maneras de sacarle el jugo a tu cuenta de @MyPublicInbox si eres un Perfil Público

Cuando doy una charla a algún amigo, conocido, o a un grupo de personas que quieren conocer MyPublicInbox , siempre se acaban sorprendiendo ...

Entradas populares