
Caminhos de exploração que permitem que você (use indevidamente) os Privilégios do Windows para elevar seus direitos dentro do SO.
A ideia é "traduzir" privilégios do Windows OS para um caminho que leva a:
Os privilégios estão listados e explicados em: https://learn.microsoft.com/en-us/windows/win32/secauthz/privilege-constants
Se o objetivo pode ser alcançado de várias maneiras, a prioridade é
Você pode verificar seus próprios privilégios com whoami /priv. Privilégios desabilitados são tão bons quanto os habilitados. A única coisa importante é se você tem o privilégio na lista ou não.
Nota 1: Sempre que o caminho de ataque terminar com a criação de um token, pode-se assumir que o próximo passo é criar um novo processo usando esse token e então assumir o controle do SO.
Nota 2:
a. Para chamar NtQuerySystemInformation()/ZwQuerySystemInformation() diretamente, você pode encontrar os privilégios necessários aqui.
b. Para NtSetSystemInformation()/ZwSetSystemInformation() os privilégios necessários estão listados aqui aqui.
Nota 3: Estou focando apenas no SO. Se um privilégio funciona no AD mas não no SO em si, estou descrevendo-o como não utilizado no SO. Seria legal se alguém aprofundasse em cenários orientados ao AD.
Sinta-se à vontade para contribuir e/ou discutir as ideias apresentadas.
| Privilégio | Impacto | Ferramenta | Caminho de execução | Observações |
|---|---|---|---|---|
SeAssignPrimaryToken | Admin | Ferramenta de terceiros | "Isso permitiria que um usuário personificasse tokens e elevasse privilégios para sistema NT usando ferramentas como potato.exe, rottenpotato.exe e juicypotato.exe" | Obrigado a Aurélien Chalot pela atualização. Tentarei reformular para algo mais parecido com uma receita em breve. |
SeAudit | Ameaça | Ferramenta de terceiros | Escrever eventos no log de eventos de Segurança para enganar a auditoria ou sobrescrever eventos antigos. | Escrever eventos próprios é possível com a API Authz Report Security Event.- veja PoC por @daem0nc0re |
SeBackup | Admin | Ferramenta de terceiros | 1. Fazer backup das chaves de registro HKLM\SAM e HKLM\SYSTEM 2. Extrair os hashes das contas locais do banco de dados SAM 3. Pass-the-Hash como membro do grupo local Administrators Alternativamente, pode ser usado para ler arquivos confidenciais. | Para mais informações, consulte o arquivo SeBackupPrivilege.- veja PoC por @daem0nc0re |
SeChangeNotify | Nenhum | - | - | Privilégio detido por todos. Revogá-lo pode tornar o SO (Windows Server 2019) não inicializável. |
SeCreateGlobal | ? | ? | ? | |
SeCreatePagefile | Nenhum | Comandos internos | Criar hiberfil.sys, lê-lo offline, procurar dados confidenciais. | Requer acesso offline, o que leva a direitos de administrador de qualquer forma. - Veja PoC por @daem0nc0re |
SeCreatePermanent | ? | ? | ? | |
SeCreateSymbolicLink | ? | ? | ? | |
SeCreateToken | Admin | Ferramenta de terceiros | Criar token arbitrário incluindo direitos de administrador local com NtCreateToken.- veja PoC por @daem0nc0re | |
SeDebug | Admin | PowerShell | Duplicar o token do lsass.exe. | Script disponível em FuzzySecurity. - Veja PoC por @daem0nc0re |
SeDelegateSession-UserImpersonate | ? | ? | ? | Nome do privilégio quebrado para tornar a coluna estreita. |
SeEnableDelegation | Nenhum | - | - | O privilégio não é usado no Windows OS. |
SeImpersonate | Admin | Ferramenta de terceiros | Ferramentas da família Potato (potato.exe, RottenPotato, RottenPotatoNG, Juicy Potato, SweetPotato, RemotePotato0), RogueWinRM, PrintSpoofer, etc. | De forma similar a SeAssignPrimaryToken, permite por design criar um processo sob o contexto de segurança de outro usuário (usando um handle para um token desse usuário). Múltiplas ferramentas e técnicas podem ser usadas para obter o token necessário. |
SeIncreaseBasePriority | Disponibilidade | Comandos internos | start /realtime SomeCpuIntensiveApp.exe | Pode ser mais interessante em servidores. |
SeIncreaseQuota | Disponibilidade | Ferramenta de terceiros | Alterar limites de cpu, memória e cache para valores que tornam o SO não inicializável. | - As cotas não são verificadas no modo de segurança, o que torna o reparo relativamente fácil. - O mesmo privilégio é usado para gerenciar cotas de registro. |
SeIncreaseWorkingSet | Nenhum | - | - | Privilégio detido por todos. Verificado ao chamar funções de ajuste fino de gerenciamento de memória. |
SeLoadDriver | Admin | Ferramenta de terceiros | 1. Carregar driver de kernel bugado como szkg64.sys2. Explorar a vulnerabilidade do driver Alternativamente, o privilégio pode ser usado para descarregar drivers relacionados à segurança com o comando interno fltMC. Ex.: fltMC sysmondrv | 1. A vulnerabilidade szkg64 está listada como CVE-2018-157322. O código de exploração do szkg64 exploit code foi criado por Parvez Anwar |
SeLockMemory | Disponibilidade | Ferramenta de terceiros | Esvaziar a partição de memória do sistema movendo páginas. | PoC publicado por Walied Assar (@waleedassar) |
SeMachineAccount | Nenhum | - | - | O privilégio não é usado no Windows OS. |
SeManageVolume | Admin | Ferramenta de terceiros | 1. Habilitar o privilégio no token 2. Criar handle para \.\C: com SYNCHRONIZE | FILE_TRAVERSE3. Enviar o FSCTL_SD_GLOBAL_CHANGE para substituir S-1-5-32-544 por S-1-5-32-5454. Sobrescrever utilman.exe etc. | FSCTL_SD_GLOBAL_CHANGE pode ser feito com este pedaço de código. |
SeProfileSingleProcess | Nenhum | - | - | O privilégio é verificado antes de alterar (e em um conjunto muito limitado de comandos, antes de consultar) parâmetros de Prefetch, SuperFetch e ReadyBoost. O impacto pode ser ajustado, pois o efeito real não é conhecido. |