
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.
Créditos:
| 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. |
SeRelabel | Ameaça | Ferramenta de terceiros | Modificação de arquivos do sistema por um administrador legítimo | Veja: documentação MIC Rótulos de integridade fornecem proteção adicional, além das ACLs conhecidas. Dois cenários principais incluem: - proteção contra ataques usando aplicativos exploráveis, como navegadores, leitores de PDF etc. - proteção de arquivos do SO. SeRelabel presente no token permitirá usar o acesso WRITE_OWNER a um recurso, incluindo arquivos e pastas. Infelizmente, o token com IL menor que High terá o privilégio SeRelabel desabilitado, tornando-o inútil para qualquer um que não seja administrador.Veja ótimo post no blog por @tiraniddo para detalhes. |
SeRemoteShutdown | Disponibilidade | Comandos internos | shutdown /s /f /m \\server1 /d P:5:19 | O privilégio é verificado quando a solicitação de desligamento/reinicialização vem da rede. Cenário 127.0.0.1 a ser investigado. |
SeReserveProcessor | Nenhum | - | - | Parece que o privilégio não é mais usado e apareceu apenas em algumas versões do winnt.h. Você pode vê-lo listado, por exemplo, no código-fonte publicado pela Microsoft aqui. |
SeRestore | Admin | PowerShell | 1. Iniciar PowerShell/ISE com o privilégio SeRestore presente. 2. Habilitar o privilégio com Enable-SeRestorePrivilege). 3. Renomear utilman.exe para utilman.old 4. Renomear cmd.exe para utilman.exe 5. Bloquear o console e pressionar Win+U | O ataque pode ser detectado por algum software antivírus. Método alternativo depende da substituição de binários de serviço armazenados em 'Program Files' usando o mesmo privilégio. - veja PoC por @daem0nc0re |
SeSecurity | Ameaça | Comandos internos | - Limpar o log de eventos de Segurança: wevtutil cl Security- Reduzir o log de Segurança para 20MB para que os eventos sejam descartados em breve: wevtutil sl Security /ms:0- Ler o log de eventos de Segurança para ter conhecimento sobre processos, acesso e ações de outros usuários no sistema. - Saber o que é registrado para agir sem ser notado. - Saber o que é registrado para gerar um grande número de eventos, efetivamente eliminando os antigos sem deixar evidências óbvias de limpeza. - Visualizar e alterar SACLs de objetos (na prática: configurações de auditoria) | Veja PoC por @daem0nc0re |
SeShutdown | Disponibilidade | Comandos internos | shutdown.exe /s /f /t 1 | Permite chamar a maioria dos níveis de NtPowerInformation(). A ser investigado. Permite chamar NtRaiseHardError() causando BSOD imediato e dump de memória, levando potencialmente à divulgação de informações confidenciais - veja PoC por @daem0nc0re |
SeSyncAgent | Nenhum | - | - | O privilégio não é usado no Windows OS. |
SeSystemEnvironment | Desconhecido | Ferramenta de terceiros | O privilégio permite usar NtSetSystemEnvironmentValue, NtModifyDriverEntry e algumas outras syscalls para manipular variáveis UEFI. | O privilégio é necessário para executar sysprep.exe. Além disso: |
SeSystemProfile | ? | ? | ? | |
SeSystemtime | Ameaça | Comandos internos | cmd.exe /c date 01-01-01cmd.exe /c time 00:00 | O privilégio permite alterar a hora do sistema, potencialmente levando a problemas de integridade da trilha de auditoria, pois os eventos serão armazenados com data/hora errada. - Tenha cuidado com formatos de data/hora. Use valores sempre seguros se não tiver certeza. - Às vezes o nome do privilégio usa "T" maiúsculo e é referido como SeSystemTime. |
SeTakeOwnership | Admin | Comandos internos | 1. takeown.exe /f "%windir%\system32"2. icacls.exe "%windir%\system32" /grant "%username%":F3. Renomear cmd.exe para utilman.exe 4. Bloquear o console e pressionar Win+U | O ataque pode ser detectado por algum software antivírus. Método alternativo depende da substituição de binários de serviço armazenados em 'Program Files' usando o mesmo privilégio. - Veja PoC por @daem0nc0re |
SeTcb | Admin | Ferramenta de terceiros | Manipular tokens para incluir direitos de administrador local. | Código de exemplo+exe criando tokens arbitrários disponível em PsBits. |
SeTimeZone | Bagunça | Comandos internos | Alterar o fuso horário. tzutil /s "Chatham Islands Standard Time" | |
SeTrustedCredManAccess | Ameaça | Ferramenta de terceiros | Extrair credenciais do Gerenciador de Credenciais | Ótimo post no blog por @tiraniddo. - veja PoC por @daem0nc0re |
SeUndock | Nenhum | - | - | O privilégio é habilitado ao desencaixar, mas nunca observado ser verificado para conceder/negar acesso. Na prática, significa que não é utilizado e não pode levar a qualquer escalonamento. |
SeUnsolicitedInput | Nenhum | - | - | O privilégio não é usado no Windows OS. |