diff --git a/windows-hardening/windows-local-privilege-escalation/privilege-escalation-abusing-tokens.md b/windows-hardening/windows-local-privilege-escalation/privilege-escalation-abusing-tokens.md index 4516705cf..7400a9048 100644 --- a/windows-hardening/windows-local-privilege-escalation/privilege-escalation-abusing-tokens.md +++ b/windows-hardening/windows-local-privilege-escalation/privilege-escalation-abusing-tokens.md @@ -1,8 +1,8 @@ -# Abusing Tokens +# Abusando de Tokens
-Aprenda hacking AWS do zero ao avançado com htARTE (HackTricks AWS Red Team Expert)! +Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)! * Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) @@ -24,7 +24,7 @@ Se você **não sabe o que são Tokens de Acesso do Windows**, leia esta página ### SeImpersonatePrivilege -Este é um privilégio que é mantido por qualquer processo que permite a impersonação (mas não a criação) de qualquer token, desde que seja possível obter um identificador para ele. Um token privilegiado pode ser adquirido de um serviço do Windows (DCOM) induzindo-o a realizar autenticação NTLM contra um exploit, possibilitando posteriormente a execução de um processo com privilégios de SISTEMA. Essa vulnerabilidade pode ser explorada usando várias ferramentas, como [juicy-potato](https://github.com/ohpe/juicy-potato), [RogueWinRM](https://github.com/antonioCoco/RogueWinRM) (que requer que o winrm seja desativado), [SweetPotato](https://github.com/CCob/SweetPotato) e [PrintSpoofer](https://github.com/itm4n/PrintSpoofer). +Este é um privilégio que é mantido por qualquer processo que permite a impersonação (mas não a criação) de qualquer token, desde que um identificador para ele possa ser obtido. Um token privilegiado pode ser adquirido de um serviço do Windows (DCOM) induzindo-o a realizar autenticação NTLM contra um exploit, possibilitando posteriormente a execução de um processo com privilégios do SISTEMA. Essa vulnerabilidade pode ser explorada usando várias ferramentas, como [juicy-potato](https://github.com/ohpe/juicy-potato), [RogueWinRM](https://github.com/antonioCoco/RogueWinRM) (que requer que o winrm seja desativado), [SweetPotato](https://github.com/CCob/SweetPotato) e [PrintSpoofer](https://github.com/itm4n/PrintSpoofer). {% content-ref url="roguepotato-and-printspoofer.md" %} [roguepotato-and-printspoofer.md](roguepotato-and-printspoofer.md) @@ -38,21 +38,21 @@ Este é um privilégio que é mantido por qualquer processo que permite a impers É muito semelhante ao **SeImpersonatePrivilege**, ele usará o **mesmo método** para obter um token privilegiado.\ Então, este privilégio permite **atribuir um token primário** a um processo novo/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, não é possível modificar o token primário de um processo em execução). +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 -Se você habilitou este token, pode usar **KERB\_S4U\_LOGON** para obter um **token de impersonação** para qualquer outro usuário sem conhecer 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). +Se você tiver habilitado este token, poderá usar **KERB\_S4U\_LOGON** para obter um **token de impersonação** para qualquer outro usuário sem conhecer 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 -O sistema é levado a **conceder acesso de leitura total** a qualquer arquivo (limitado a operações de leitura) por este privilégio. Ele é utilizado para **ler os hashes de senha das contas de Administrador local** do registro, após o que, ferramentas como "**psexec**" ou "**wmicexec**" podem ser usadas com o hash (técnica Pass-the-Hash). No entanto, essa técnica falha sob duas condições: quando a conta de Administrador Local está desativada ou quando uma política está em vigor que remove direitos administrativos de Administradores Locais conectando remotamente.\ +O sistema é levado a **conceder todo acesso de leitura** a qualquer arquivo (limitado a operações de leitura) por este privilégio. Ele é utilizado para **ler os hashes de senha das contas de Administrador local** do registro, após o que, ferramentas como "**psexec**" ou "**wmicexec**" podem ser usadas com o hash (técnica Pass-the-Hash). No entanto, essa técnica falha sob duas condições: quando a conta de Administrador Local está desativada, ou quando uma política está em vigor que remove direitos administrativos dos Administradores Locais conectando remotamente.\ Você pode **abusar deste privilégio** com: * [https://github.com/Hackplayers/PsCabesha-tools/blob/master/Privesc/Acl-FullControl.ps1](https://github.com/Hackplayers/PsCabesha-tools/blob/master/Privesc/Acl-FullControl.ps1) * [https://github.com/giuliano108/SeBackupPrivilege/tree/master/SeBackupPrivilegeCmdLets/bin/Debug](https://github.com/giuliano108/SeBackupPrivilege/tree/master/SeBackupPrivilegeCmdLets/bin/Debug) * seguindo **IppSec** em [https://www.youtube.com/watch?v=IfCysW0Od8w\&t=2610\&ab\_channel=IppSec](https://www.youtube.com/watch?v=IfCysW0Od8w\&t=2610\&ab\_channel=IppSec) -* Ou conforme explicado na seção **escalando privilégios com Operadores de Backup** em: +* Ou conforme explicado na seção **escalando privilégios com Operadores de Backup** de: {% content-ref url="../active-directory-methodology/privileged-groups-and-token-privileges.md" %} [privileged-groups-and-token-privileges.md](../active-directory-methodology/privileged-groups-and-token-privileges.md) @@ -87,7 +87,6 @@ Este caminho é `\Registry\User\\System\CurrentControlSet\Services\DriverNa 2. Crie o caminho `\Registry\User\\System\CurrentControlSet\Services\DriverName` dentro do `HKCU`, onde `` representa o Identificador Relativo do usuário atual. 3. Defina o `ImagePath` como o caminho de execução do binário. 4. Atribua o `Type` como `SERVICE_KERNEL_DRIVER` (`0x00000001`). - ```python # Example Python code to set the registry values import winreg as reg @@ -99,13 +98,11 @@ reg.SetValueEx(key, "ImagePath", 0, reg.REG_SZ, "path_to_binary") reg.SetValueEx(key, "Type", 0, reg.REG_DWORD, 0x00000001) reg.CloseKey(key) ``` - Mais maneiras de abusar desse privilégio em [https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges#seloaddriverprivilege](https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges#seloaddriverprivilege) ### SeTakeOwnershipPrivilege Isso é semelhante ao **SeRestorePrivilege**. Sua função principal permite que um processo **assuma a propriedade de um objeto**, contornando a necessidade de acesso discricionário explícito por meio da concessão de direitos de acesso WRITE\_OWNER. O processo envolve primeiro garantir a propriedade da chave de registro pretendida para fins de escrita e, em seguida, alterar o DACL para permitir operações de escrita. - ```bash takeown /f 'C:\some\file.txt' #Now the file is owned by you icacls 'C:\some\file.txt' /grant :F #Now you have full access @@ -121,81 +118,72 @@ icacls 'C:\some\file.txt' /grant :F #Now you have full access %WINDIR%\system32\config\default.sav c:\inetpub\wwwwroot\web.config ``` - ### SeDebugPrivilege Este privilégio permite **depurar outros processos**, incluindo ler e escrever na memória. Várias estratégias de injeção de memória, capazes de evadir a maioria dos antivírus e soluções de prevenção de intrusões de host, podem ser empregadas com este privilégio. #### Dump de memória -Você pode usar o [ProcDump](https://docs.microsoft.com/en-us/sysinternals/downloads/procdump) da [SysInternals Suite](https://docs.microsoft.com/en-us/sysinternals/downloads/sysinternals-suite) para **capturar a memória de um processo**. Especificamente, isso pode se aplicar ao processo **Local Security Authority Subsystem Service (**[**LSASS**](https://en.wikipedia.org/wiki/Local\_Security\_Authority\_Subsystem\_Service)**)**, que é responsável por armazenar as credenciais do usuário uma vez que o usuário tenha feito login com sucesso em um sistema. +Você pode usar o [ProcDump](https://docs.microsoft.com/en-us/sysinternals/downloads/procdump) da [SysInternals Suite](https://docs.microsoft.com/en-us/sysinternals/downloads/sysinternals-suite) para **capturar a memória de um processo**. Especificamente, isso pode se aplicar ao processo **Local Security Authority Subsystem Service (**[**LSASS**](https://en.wikipedia.org/wiki/Local\_Security\_Authority\_Subsystem\_Service)**)**, que é responsável por armazenar as credenciais do usuário depois que um usuário fez login com sucesso em um sistema. Você pode então carregar esse dump no mimikatz para obter senhas: - ``` mimikatz.exe mimikatz # log mimikatz # sekurlsa::minidump lsass.dmp mimikatz # sekurlsa::logonpasswords ``` - #### RCE -Se você deseja obter um shell `NT SYSTEM`, você pode usar: +Se deseja obter um shell `NT SYSTEM`, você pode usar: * [**SeDebugPrivilege-Exploit (C++)**](https://github.com/bruno-1337/SeDebugPrivilege-Exploit) * [**SeDebugPrivilegePoC (C#)**](https://github.com/daem0nc0re/PrivFu/tree/main/PrivilegedOperations/SeDebugPrivilegePoC) * [**psgetsys.ps1 (Powershell Script)**](https://raw.githubusercontent.com/decoder-it/psgetsystem/master/psgetsys.ps1) - ```powershell # Get the PID of a process running as NT SYSTEM import-module psgetsys.ps1; [MyProcess]::CreateProcessFromParent(,) ``` - ## Verificar privilégios - ``` whoami /priv ``` - Os **tokens que aparecem como Desativados** podem ser ativados, e na verdade você pode abusar dos tokens _Ativados_ e _Desativados_. ### Ativar Todos os tokens Se você tiver tokens desativados, você pode usar o script [**EnableAllTokenPrivs.ps1**](https://raw.githubusercontent.com/fashionproof/EnableAllTokenPrivs/master/EnableAllTokenPrivs.ps1) para ativar todos os tokens: - ```powershell .\EnableAllTokenPrivs.ps1 whoami /priv ``` - Ou o **script** incorporado neste [**post**](https://www.leeholmes.com/adjusting-token-privileges-in-powershell/). ## Tabela Folha de dicas completa de privilégios de token em [https://github.com/gtworek/Priv2Admin](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](https://twitter.com/Defte\_) 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 são úteis 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 disponível em [FuzzySecurity](https://github.com/FuzzySecurity/PowerShell-Suite/blob/master/Conjure-LSASS.ps1) | -| **`SeLoadDriver`** | _**Admin**_ | Ferramenta de terceiros |

1. Carregar um driver de kernel com falha 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. ou seja: fltMC sysmondrv

|

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

| -| **`SeRestore`** | _**Admin**_ | **PowerShell** |

1. Iniciar o 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 alguns softwares de AV.

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

| -| **`SeTakeOwnership`** | _**Admin**_ | _**Comandos integrados**_ |

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

|

O ataque pode ser detectado por alguns softwares de AV.

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

| -| **`SeTcb`** | _**Admin**_ | Ferramenta de terceiros |

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

Para ser verificado.

| | +| 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](https://twitter.com/Defte\_) 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](https://github.com/FuzzySecurity/PowerShell-Suite/blob/master/Conjure-LSASS.ps1) | +| **`SeLoadDriver`** | _**Admin**_ | Ferramenta de terceiros |

1. Carregar driver de kernel com bugs 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. ou seja: fltMC sysmondrv

|

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

| +| **`SeRestore`** | _**Admin**_ | **PowerShell** |

1. Iniciar o 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 alguns softwares de AV.

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

| +| **`SeTakeOwnership`** | _**Admin**_ | _**Comandos integrados**_ |

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

|

O ataque pode ser detectado por alguns softwares de AV.

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

| +| **`SeTcb`** | _**Admin**_ | Ferramenta de terceiros |

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

Para ser verificado.

| | ## Referência -* Consulte esta tabela definindo tokens do Windows: [https://github.com/gtworek/Priv2Admin](https://github.com/gtworek/Priv2Admin) -* Consulte [**este artigo**](https://github.com/hatRiot/token-priv/blob/master/abusing\_token\_eop\_1.0.txt) sobre elevação de privilégios com tokens. +* Dê uma olhada nesta tabela definindo tokens do Windows: [https://github.com/gtworek/Priv2Admin](https://github.com/gtworek/Priv2Admin) +* Dê uma olhada neste [**artigo**](https://github.com/hatRiot/token-priv/blob/master/abusing\_token\_eop\_1.0.txt) sobre elevação de privilégios com tokens.
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)! -* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! +* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com) * **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**