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.
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.
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 AppLockerAntes 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 rutaNosotros 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 HashAhora 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.
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.
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.