UAC - User Account Control
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)
Usa Trickest para construir y automatizar flujos de trabajo fácilmente impulsados por las herramientas comunitarias más avanzadas del mundo. Obtén acceso hoy:
UAC
Control de Cuentas de Usuario (UAC) es una función que permite un mensaje de consentimiento para actividades elevadas. Las aplicaciones tienen diferentes niveles de integridad
, y un programa con un alto nivel puede realizar tareas que podrían comprometer potencialmente el sistema. Cuando UAC está habilitado, las aplicaciones y tareas siempre se ejecutan bajo el contexto de seguridad de una cuenta no administrativa a menos que un administrador autorice explícitamente a estas aplicaciones/tareas a tener acceso de nivel administrativo al sistema para ejecutarse. Es una función de conveniencia que protege a los administradores de cambios no intencionados, pero no se considera un límite de seguridad.
Para más información sobre los niveles de integridad:
Integrity LevelsCuando UAC está en su lugar, a un usuario administrador se le otorgan 2 tokens: una clave de usuario estándar, para realizar acciones regulares como nivel regular, y una con privilegios de administrador.
Esta página discute cómo funciona UAC en gran profundidad e incluye el proceso de inicio de sesión, la experiencia del usuario y la arquitectura de UAC. Los administradores pueden usar políticas de seguridad para configurar cómo funciona UAC específico para su organización a nivel local (usando secpol.msc), o configurado y distribuido a través de Objetos de Política de Grupo (GPO) en un entorno de dominio de Active Directory. Los varios ajustes se discuten en detalle aquí. Hay 10 configuraciones de Política de Grupo que se pueden establecer para UAC. La siguiente tabla proporciona detalles adicionales:
Configuración de Política de Grupo | Clave del Registro | Configuración Predeterminada |
---|---|---|
FilterAdministratorToken | Deshabilitado | |
EnableUIADesktopToggle | Deshabilitado | |
ConsentPromptBehaviorAdmin | Solicitar consentimiento para binarios que no son de Windows | |
ConsentPromptBehaviorUser | Solicitar credenciales en el escritorio seguro | |
EnableInstallerDetection | Habilitado (predeterminado para hogar) Deshabilitado (predeterminado para empresa) | |
ValidateAdminCodeSignatures | Deshabilitado | |
EnableSecureUIAPaths | Habilitado | |
EnableLUA | Habilitado | |
PromptOnSecureDesktop | Habilitado | |
EnableVirtualization | Habilitado |
Teoría de Bypass de UAC
Algunos programas son autoelevados automáticamente si el usuario pertenece al grupo de administradores. Estos binarios tienen dentro de sus Manifiestos la opción autoElevate con valor True. El binario también debe estar firmado por Microsoft.
Luego, para eludir el UAC (elevar de nivel de integridad medio a alto) algunos atacantes utilizan este tipo de binarios para ejecutar código arbitrario porque se ejecutará desde un proceso de alta integridad.
Puedes verificar el Manifiesto de un binario usando la herramienta sigcheck.exe de Sysinternals. Y puedes ver el nivel de integridad de los procesos usando Process Explorer o Process Monitor (de Sysinternals).
Verificar UAC
Para confirmar si UAC está habilitado haz:
Si es 1
entonces UAC está activado, si es 0
o no existe, entonces UAC está inactivo.
Luego, verifica qué nivel está configurado:
Si
0
entonces, UAC no pedirá confirmación (como deshabilitado)Si
1
se le pide al administrador el nombre de usuario y la contraseña para ejecutar el binario con altos derechos (en Escritorio Seguro)Si
2
(Siempre notifícame) UAC siempre pedirá confirmación al administrador cuando intente ejecutar algo con altos privilegios (en Escritorio Seguro)Si
3
como1
pero no necesariamente en Escritorio SeguroSi
4
como2
pero no necesariamente en Escritorio Segurosi
5
(predeterminado) pedirá al administrador que confirme para ejecutar binarios no de Windows con altos privilegios
Luego, debes revisar el valor de LocalAccountTokenFilterPolicy
Si el valor es 0
, entonces, solo el usuario RID 500 (Administrador incorporado) puede realizar tareas de administrador sin UAC, y si es 1
, todas las cuentas dentro del grupo "Administradores" pueden hacerlo.
Y, finalmente, revisa el valor de la clave FilterAdministratorToken
Si 0
(predeterminado), la cuenta de Administrador incorporado puede realizar tareas de administración remota y si 1
la cuenta de Administrador incorporado no puede realizar tareas de administración remota, a menos que LocalAccountTokenFilterPolicy
esté configurado en 1
.
Resumen
Si
EnableLUA=0
o no existe, sin UAC para nadieSi
EnableLua=1
yLocalAccountTokenFilterPolicy=1
, Sin UAC para nadieSi
EnableLua=1
yLocalAccountTokenFilterPolicy=0
yFilterAdministratorToken=0
, Sin UAC para RID 500 (Administrador incorporado)Si
EnableLua=1
yLocalAccountTokenFilterPolicy=0
yFilterAdministratorToken=1
, UAC para todos
Toda esta información se puede recopilar utilizando el módulo metasploit: post/windows/gather/win_privs
También puedes verificar los grupos de tu usuario y obtener el nivel de integridad:
UAC bypass
Tenga en cuenta que si tiene acceso gráfico a la víctima, el bypass de UAC es directo, ya que simplemente puede hacer clic en "Sí" cuando aparezca el aviso de UAC.
El bypass de UAC es necesario en la siguiente situación: el UAC está activado, su proceso se está ejecutando en un contexto de integridad media y su usuario pertenece al grupo de administradores.
Es importante mencionar que es mucho más difícil eludir el UAC si está en el nivel de seguridad más alto (Siempre) que si está en cualquiera de los otros niveles (Predeterminado).
UAC desactivado
Si el UAC ya está desactivado (ConsentPromptBehaviorAdmin
es 0
), puede ejecutar un shell inverso con privilegios de administrador (nivel de integridad alto) utilizando algo como:
Bypass de UAC con duplicación de token
Muy Básico "bypass" de UAC (acceso completo al sistema de archivos)
Si tienes un shell con un usuario que está dentro del grupo de Administradores, puedes montar el C$ compartido a través de SMB (sistema de archivos) local en un nuevo disco y tendrás acceso a todo dentro del sistema de archivos (incluso la carpeta de inicio del Administrador).
Parece que este truco ya no funciona
Bypass de UAC con Cobalt Strike
Las técnicas de Cobalt Strike solo funcionarán si UAC no está configurado en su nivel máximo de seguridad.
Empire y Metasploit también tienen varios módulos para eludir el UAC.
KRBUACBypass
Documentación y herramienta en https://github.com/wh0amitz/KRBUACBypass
Explotaciones de elusión de UAC
UACME que es una compilación de varias explotaciones de elusión de UAC. Ten en cuenta que necesitarás compilar UACME usando visual studio o msbuild. La compilación creará varios ejecutables (como Source\Akagi\outout\x64\Debug\Akagi.exe
), necesitarás saber cuál necesitas.
Debes tener cuidado porque algunas elusiones solicitarán algunos otros programas que alertarán al usuario que algo está sucediendo.
UACME tiene la versión de compilación desde la cual cada técnica comenzó a funcionar. Puedes buscar una técnica que afecte tus versiones:
También, usando esta página obtienes la versión de Windows 1607
de las versiones de compilación.
Más bypass de UAC
Todas las técnicas utilizadas aquí para eludir AUC requieren un shell interactivo completo con la víctima (un shell común de nc.exe no es suficiente).
Puedes obtenerlo usando una sesión de meterpreter. Migra a un proceso que tenga el valor de Sesión igual a 1:
(explorer.exe debería funcionar)
Bypass de UAC con GUI
Si tienes acceso a una GUI, solo puedes aceptar el aviso de UAC cuando lo recibas, realmente no necesitas un bypass. Así que, obtener acceso a una GUI te permitirá eludir el UAC.
Además, si obtienes una sesión de GUI que alguien estaba usando (potencialmente a través de RDP), hay algunas herramientas que se ejecutarán como administrador desde donde podrías ejecutar un cmd por ejemplo como admin directamente sin que se te pida nuevamente por UAC como https://github.com/oski02/UAC-GUI-Bypass-appverif. Esto podría ser un poco más sigiloso.
Bypass de UAC ruidoso por fuerza bruta
Si no te importa ser ruidoso, siempre podrías ejecutar algo como https://github.com/Chainski/ForceAdmin que pide elevar permisos hasta que el usuario lo acepte.
Tu propio bypass - Metodología básica de bypass de UAC
Si echas un vistazo a UACME notarás que la mayoría de los bypass de UAC abusan de una vulnerabilidad de Dll Hijacking (principalmente escribiendo el dll malicioso en C:\Windows\System32). Lee esto para aprender cómo encontrar una vulnerabilidad de Dll Hijacking.
Encuentra un binario que autoelevate (verifica que cuando se ejecuta, se ejecute en un nivel de integridad alto).
Con procmon encuentra eventos "NOMBRE NO ENCONTRADO" que puedan ser vulnerables a DLL Hijacking.
Probablemente necesitarás escribir el DLL dentro de algunas rutas protegidas (como C:\Windows\System32) donde no tienes permisos de escritura. Puedes eludir esto usando:
wusa.exe: Windows 7, 8 y 8.1. Permite extraer el contenido de un archivo CAB dentro de rutas protegidas (porque esta herramienta se ejecuta desde un nivel de integridad alto).
IFileOperation: Windows 10.
Prepara un script para copiar tu DLL dentro de la ruta protegida y ejecutar el binario vulnerable y autoelevado.
Otra técnica de bypass de UAC
Consiste en observar si un binario autoElevado intenta leer del registro el nombre/ruta de un binario o comando a ser ejecutado (esto es más interesante si el binario busca esta información dentro del HKCU).
Usa Trickest para construir y automatizar flujos de trabajo impulsados por las herramientas comunitarias más avanzadas del mundo. Obtén acceso hoy:
Aprende y practica hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)
Last updated