hacktricks/windows-hardening/windows-local-privilege-escalation/privilege-escalation-abusing-tokens
2023-06-06 18:56:34 +00:00
..
abuse-seloaddriverprivilege.md Translated to Portuguese 2023-06-06 18:56:34 +00:00
README.md Translated to Portuguese 2023-06-06 18:56:34 +00:00

Abusando de Tokens

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Tokens

Se você não sabe o que são Tokens de Acesso do Windows, leia esta página antes de continuar:

{% content-ref url="../access-tokens.md" %} access-tokens.md {% endcontent-ref %}

Talvez você possa ser capaz de elevar privilégios abusando dos tokens que já possui

SeImpersonatePrivilege (3.1.1)

Qualquer processo que possua este privilégio pode impersonar (mas não criar) qualquer token para o qual ele possa obter um handle. Você pode obter um token privilegiado de um serviço do Windows (DCOM) fazendo-o realizar uma autenticação NTLM contra o exploit, em seguida, executar um processo como SYSTEM. Explorá-lo com juicy-potato, RogueWinRM (precisa de winrm desativado), SweetPotato, PrintSpoofer:

{% content-ref url="../roguepotato-and-printspoofer.md" %} roguepotato-and-printspoofer.md {% endcontent-ref %}

{% content-ref url="../juicypotato.md" %} juicypotato.md {% endcontent-ref %}

SeAssignPrimaryPrivilege (3.1.2)

É muito semelhante ao SeImpersonatePrivilege, usará o mesmo método para obter um token privilegiado.
Em seguida, este privilégio permite atribuir um token primário a um novo processo/suspenso. Com o token de impersonação privilegiado, você pode derivar um token primário (DuplicateTokenEx).
Com o token, você pode criar um novo processo com 'CreateProcessAsUser' ou criar um processo suspenso e definir o token (em geral, você não pode modificar o token primário de um processo em execução).

SeTcbPrivilege (3.1.3)

Se você habilitou este token, pode usar KERB_S4U_LOGON para obter um token de impersonação para qualquer outro usuário sem saber as credenciais, adicionar um grupo arbitrário (administradores) ao token, definir o nível de integridade do token como "médio" e atribuir este token à thread atual (SetThreadToken).

SeBackupPrivilege (3.1.4)

Este privilégio faz com que o sistema conceda todo o controle de acesso de leitura a qualquer arquivo (somente leitura).
Use-o para ler os hashes de senha das contas de Administrador local do registro e, em seguida, use "psexec" ou "wmicexec" com o hash (PTH).
Este ataque não funcionará se o Administrador Local estiver desativado ou se estiver configurado que um Administrador Local não é administrador se estiver conectado remotamente.
Você pode abusar deste privilégio com:

{% content-ref url="../../active-directory-methodology/privileged-groups-and-token-privileges.md" %} privileged-groups-and-token-privileges.md {% endcontent-ref %}

SeRestorePrivilege (3.1.5)

Controle de acesso de escrita a qualquer arquivo no sistema, independentemente da ACL dos arquivos.
Você pode modificar serviços, DLL Hijacking, definir debugger (Image File Execution Options)... Muitas opções para escalar.

SeCreateTokenPrivilege (3.1.6)

Este token pode ser usado como método de EoP apenas se o usuário puder impersonar tokens (mesmo sem SeImpersonatePrivilege).
Em um cenário possível, um usuário pode impersonar o token se for para o mesmo usuário e o nível de integridade for menor ou igual ao nível de integridade do processo atual.
Neste caso, o usuário poderia criar um token de impersonação e adicionar a ele um SID de grupo privilegiado.

SeLoadDriverPrivilege (3.1.7)

Carregar e descarregar drivers de dispositivo.
Você precisa criar uma entrada no registro com valores para ImagePath e Type.
Como você não tem acesso para escrever em HKLM, você tem que usar HKCU. Mas HKCU não significa nada para o kernel, a maneira de guiar o kernel aqui e usar o caminho esperado para uma configuração de driver é usar o caminho: "\Registry\User\S-1-5-21-582075628-3447520101-2530640108-1003\System\CurrentControlSet\Services\DriverName" (o ID é o RID do usuário atual).
Então, você tem que criar todo esse caminho dentro de HKCU e definir o ImagePath (caminho para o binário que será executado) e Type (SERVICE_KERNEL_DRIVER 0x00000001).\

{% content-ref url="abuse-seloaddriverprivilege.md" %} abuse-seloaddriverprivilege.md {% endcontent-ref %}

SeTakeOwnershipPrivilege (3.1.8)

Este privilégio é muito semelhante ao SeRestorePrivilege.

takeown /f 'C:\some\file.txt' #Now the file is owned by you
icacls 'C:\some\file.txt' /grant <your_username>:F #Now you have full access
# Use this with files that might contain credentials such as
%WINDIR%\repair\sam
%WINDIR%\repair\system
%WINDIR%\repair\software
%WINDIR%\repair\security
%WINDIR%\system32\config\security.sav
%WINDIR%\system32\config\software.sav
%WINDIR%\system32\config\system.sav
%WINDIR%\system32\config\SecEvent.Evt
%WINDIR%\system32\config\default.sav
c:\inetpub\wwwwroot\web.config

SeDebugPrivilege (3.1.9)

Ele permite ao usuário depurar outro processo, o que inclui ler e escrever na memória desse processo.
Existem muitas estratégias de injeção de memória que podem ser usadas com esse privilégio e que evitam a maioria das soluções AV/HIPS.

Dump memory

Um exemplo de abuso desse privilégio é executar o ProcDump do SysInternals para despejar a memória de um processo. Por exemplo, o processo Local Security Authority Subsystem Service (LSASS), que armazena as credenciais do usuário após o login em um sistema.

Você pode então carregar esse despejo no mimikatz para obter senhas:

mimikatz.exe
mimikatz # log
mimikatz # sekurlsa::minidump lsass.dmp
mimikatz # sekurlsa::logonpasswords

RCE

Se você deseja obter um shell do NT SYSTEM, você pode usar:

# Get the PID of a process running as NT SYSTEM
import-module psgetsys.ps1; [MyProcess]::CreateProcessFromParent(<system_pid>,<command_to_execute>)

Verificar privilégios

whoami /priv

Os tokens que aparecem como Desabilitados podem ser habilitados, e você pode abusar dos tokens Habilitados e Desabilitados.

Habilitar todos os tokens

Você pode usar o script EnableAllTokenPrivs.ps1 para habilitar todos os tokens:

.\EnableAllTokenPrivs.ps1
whoami /priv

Tabela

Cheatsheet completo de privilégios de token em https://github.com/gtworek/Priv2Admin, o resumo abaixo listará apenas maneiras diretas de explorar o privilégio para obter uma sessão de administrador ou ler arquivos sensíveis.\

Privilégio Impacto Ferramenta Caminho de execução Observações
SeAssignPrimaryToken Admin Ferramenta de terceiros "Permitiria a um usuário se passar por tokens e elevar privilégios para o sistema nt usando ferramentas como potato.exe, rottenpotato.exe e juicypotato.exe" Obrigado Aurélien Chalot pela atualização. Tentarei reformular para algo mais parecido com uma receita em breve.
SeBackup Ameaça Comandos integrados Ler arquivos sensíveis com robocopy /b

- Pode ser mais interessante se você puder ler %WINDIR%\MEMORY.DMP

- SeBackupPrivilege (e robocopy) não é útil quando se trata de arquivos abertos.

- Robocopy requer tanto SeBackup quanto SeRestore para funcionar com o parâmetro /b.

SeCreateToken Admin Ferramenta de terceiros Criar token arbitrário, incluindo direitos de administrador local com NtCreateToken.
SeDebug Admin PowerShell Duplicar o token lsass.exe. Script a ser encontrado em FuzzySecurity
SeLoadDriver Admin Ferramenta de terceiros

1. Carregar driver de kernel com defeito, como szkg64.sys
2. Explorar a vulnerabilidade do driver

Alternativamente, o privilégio pode ser usado para descarregar drivers relacionados à segurança com o comando integrado ftlMC. i.e.: fltMC sysmondrv

1. A vulnerabilidade szkg64 é listada como CVE-2018-15732
2. O código de exploração szkg64 foi criado por Parvez Anwar

SeRestore Admin PowerShell

1. Inicie o PowerShell/ISE com o privilégio SeRestore presente.
2. Ative o privilégio com Enable-SeRestorePrivilege).
3. Renomeie utilman.exe para utilman.old
4. Renomeie cmd.exe para utilman.exe
5. Bloqueie o console e pressione Win+U

O ataque pode ser detectado por alguns softwares AV.

O método alternativo depende da substituição de binários de serviço armazenados em "Program Files" usando o mesmo privilégio

SeTakeOwnership Admin Comandos integrados

1. takeown.exe /f "%windir%\system32"
2. icalcs.exe "%windir%\system32" /grant "%username%":F
3. Renomeie cmd.exe para utilman.exe
4. Bloqueie o console e pressione Win+U

O ataque pode ser detectado por alguns softwares AV.

O método alternativo depende da substituição de binários de serviço armazenados em "Program Files" usando o mesmo privilégio.

SeTcb Admin Ferramenta de terceiros

Manipular tokens para incluir direitos de administrador local. Pode exigir SeImpersonate.

A ser verificado.

Referência

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥