Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
profilehound — ProfileHound - ドメインマシンに保存されているユーザープロファイルのためのBloodHound OpenGraphコレクター。ドメインマシン上のアクティブなユーザープロファイルを特定することで、秘密情報の収奪について情報に基づいた判断を下せます。 | Kitploit
ツール/GitHubGitHub/m4lwhere/profilehound
OSINT (オープンソースインテリジェンス)偵察横移動情報収集ポストエクスプロイトペネトレーションテストレッドチーミング
GitHubm4lwhere/profilehound

profilehound

ProfileHound - ドメインマシンに保存されているユーザープロファイルのためのBloodHound OpenGraphコレクター。ドメインマシン上のアクティブなユーザープロファイルを特定することで、秘密情報の収奪について情報に基づいた判断を下せます。

リポジトリを見る
16393ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
root@kitploit:~
    ____             _____ __     __  __                      __
   / __ \_________  / __(_) /__  / / / /___  __  ______  ____/ /
  / /_/ / ___/ __ \/ /_/ / / _ \/ /_/ / __ \/ / / / __ \/ __  /
 / ____/ /  / /_/ / __/ / /  __/ __  / /_/ / /_/ / / / / /_/ /
/_/   /_/   \____/_/ /_/_/\___/_/ /_/\____/\__,_/_/ /_/\__,_/

ProfileHound

ProfileHound は、権限昇格後のツールであり、ドメインユーザープロファイルをマシン上で特定することで、レッドチーミングの目標達成を支援します。BloodHound の OpenGraph 形式を利用して、HasUserProfile という新しいエッジを構築します。このエッジは、あるコンピューター上にユーザープロファイルが存在するかどうかを判定します。これにより、オペレーターはシークレットの収集のためにどのコンピューターを標的にするか、情報に基づいた判断ができるようになります。

このツールは、ターゲットマシンの C$ 共有に対して管理者権限でのアクセスが必要です。

Remi Gascou 氏 (@podalirius) の ShareHound および bhopengraph ツールに多大な感謝を捧げます。このデータを収集するツールを以前から作りたいと考えており、これらのライブラリを使用することで、配管作業ではなく構築に集中することができました。

[!WARNING] ProfileHound は開発初期段階にあり、すべての収集モードがまだ実装されていません。本番環境での使用は注意して行い、このツールの使用に伴うリスクはすべて利用者が負うものとします。

なぜ?

Active Directory におけるポストエクスプロイテーションの目標は、オンプレミスに保存されたデータから SaaS アプリケーションやクラウドへと移行しています。オフェンシブセキュリティで価値を示すためには、これらのサービスへのアクセスがいかに侵害されうるかを実証する必要があります。多くの場合、これらのサービスは HR や財務など特定のグループやユーザーのみが使用しています。また、特定の SaaS アプリケーションは特定のマシンからしかアクセスできないシナリオもあります。

BloodHound の HasSession エッジは優れていますが、ユーザーがマシンにログオンしている場合にのみ有用です。データ収集時にユーザーがマシンにログオンしていない場合、さらなる悪用を促進するシークレットが含まれているコンピューターを見つけるのは困難になる可能性があります。ユーザープロファイルには、DPAPI、キャッシュされた資格情報、SSH 鍵、クラウド鍵など、かなりの量の価値ある情報が含まれている可能性があり、これらにアクセスするのにアクティブなユーザーセッションは必要ありません。

HasUserProfile Edge Example

ProfileHound は BloodHound の OpenGraph 形式 を使用して、HasUserProfile という新しいグラフエッジを構築します。これは、ドメインユーザープロファイルがドメインマシン上に存在するかどうかを判定します。これにより、オペレーターは価値の高いユーザーやグループのプロファイルが存在するマシンに焦点を絞ることができます。

HasUserProfile エッジには、プロファイルの作成日と最終更新日のプロパティが含まれています。この情報は以下の判断に役立ちます。

  • プロファイルが現在使用中か(数日以内にログオンしたか)
  • プロファイルが何年も使用されているか(大量のシークレットを含んでいる可能性が高い)

HasUserProfile Edge Properties Example

また、このエッジにはプロファイルの作成および変更のタイムスタンプのプロパティもあり、特定の Cypher クエリを使用して、特定のマシン上のアクティブなユーザープロファイルや長期間使用されているユーザープロファイルを見つけることができます。

インストール

ProfileHound は pipx を使用してインストールします(依存関係地獄を避けるため):

root@kitploit:~
pipx install profilehound

最新版(最先端)を使用する場合は、ソースからインストールできます:

root@kitploit:~
pipx install git+https://github.com/m4lwhere/profilehound.git

Docker

コンテナ化されたアプローチを使用するには、以下のようにイメージをビルドしてツールを実行します:

root@kitploit:~
docker build -t profilehound .
docker run --rm profilehound --help
docker run --rm -v ${PWD}:/profilehound profilehound --auth-user alice --auth-password whiteRabbit --auth-domain sccm.lab --dns 192.168.57.10 --auth-dc-ip 192.168.57.10

使用方法

例えば、ドメイン管理者アカウント sccm.lab\alice とパスワード whiteRabbit を使用して実行する場合:

root@kitploit:~
$ profilehound --auth-user alice --auth-password whiteRabbit --auth-domain sccm.lab --target 192.168.57.0/27
    ____             _____ __     __  __                      __
   / __ \_________  / __(_) /__  / / / /___  __  ______  ____/ /
  / /_/ / ___/ __ \/ /_/ / / _ \/ /_/ / __ \/ / / / __ \/ __  /
 / ____/ /  / /_/ / __/ / /  __/ __  / /_/ / /_/ / / / / /_/ /
/_/   /_/   \____/_/ /_/_/\___/_/ /_/\____/\__,_/_/ /_/\__,_/    v0.1.1
@m4lwhere

BloodHound CE OpenGraph collector for user profiles stored on domain machines.

[12/30/25 11:58:05] INFO     Loaded 32 targets
[12/30/25 11:58:08] INFO     Successful authentication on 192.168.57.10 (192.168.57.10) as sccm.lab\alice
                    INFO     Successfully connected to share \\192.168.57.10\C$ as sccm.lab\alice
                    INFO     Enumerating profiles in \\192.168.57.10\C$\Users\...
                    INFO         vagrant:    S-1-5-21-3016982856-3796307652-1246469985-1000  created:2025-11-07      modified:2025-11-07
                    INFO     Found 1 domain profile(s) for 192.168.57.10
                    INFO     Successful authentication on 192.168.57.11 (192.168.57.11) as sccm.lab\alice
[12/30/25 11:58:09] INFO     Successfully connected to share \\192.168.57.11\C$ as sccm.lab\alice
                    INFO     Enumerating profiles in \\192.168.57.11\C$\Users\...
                    INFO         administrator:      S-1-5-21-3016982856-3796307652-1246469985-500   created:2025-11-07      modified:2025-11-07
                    INFO         alice:      S-1-5-21-3016982856-3796307652-1246469985-1112  created:2025-12-28      modified:2025-11-07
                    INFO         eve:        S-1-5-21-3016982856-3796307652-1246469985-1116  created:2025-12-27      modified:2025-11-07
                    INFO     Found 3 domain profile(s) for 192.168.57.11
                    INFO     Successful authentication on 192.168.57.12 (192.168.57.12) as sccm.lab\alice
                    INFO     Successfully connected to share \\192.168.57.12\C$ as sccm.lab\alice
                    INFO     Enumerating profiles in \\192.168.57.12\C$\Users\...
                    INFO         alice:      S-1-5-21-3016982856-3796307652-1246469985-1112  created:2025-12-28      modified:2025-12-28
                    INFO         franck:     S-1-5-21-3016982856-3796307652-1246469985-1117  created:2025-12-27      modified:2025-11-07
                    INFO         sccm-sql:   S-1-5-21-3016982856-3796307652-1246469985-1121  created:2025-11-07      modified:2025-11-07
                    INFO     Found 3 domain profile(s) for 192.168.57.12
                    INFO     Successful authentication on 192.168.57.13 (192.168.57.13) as sccm.lab\alice
                    INFO     Successfully connected to share \\192.168.57.13\C$ as sccm.lab\alice
                    INFO     Enumerating profiles in \\192.168.57.13\C$\Users\...
                    INFO         alice:      S-1-5-21-3016982856-3796307652-1246469985-1112  created:2025-12-26      modified:2025-12-28
                    INFO         sccm-account-da:    S-1-5-21-3016982856-3796307652-1246469985-1119  created:2025-12-26      modified:2025-11-07
                    INFO     Found 2 domain profile(s) for 192.168.57.13
[12/30/25 11:59:27] INFO     Found 4 machines with profiles
                    INFO     Exported OpenGraph intel to profilehound_20251230-115805.json

これにより、カレントディレクトリに profilehound_20251230-115805.json というファイルが作成されます。このファイルは、BloodHound UI にドラッグ&ドロップすることで BHCE に直接インポートできます。自動的に解析され、SID を介してノードが関連付けられます。新しいエッジ HasUserProfile が作成され、ユーザーとプロファイルの関係を示します。

ProfileHound は完了時にコンソールに小さな統計サマリーを出力します:

root@kitploit:~
╭───────────────────────── General Summary ──────────────────────────────╮
│        ProfileHound Statistics                                         │
│  Total Targets with Profiles    4                                      │
│  Total Unique Profiles (Users)  7                                      │
│  Average Profiles per Target    2.25                                   │
╰────────────────────────────────────────────────────────────────────────╯
       Top Connected Users
┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ User          ┃ Machine Count ┃
┡━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ alice         │ 3             │
│ vagrant       │ 1             │
│ administrator │ 1             │
│ eve           │ 1             │
│ franck        │ 1             │
└───────────────┴───────────────┘
     Top Populated Machines
┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Machine       ┃ Profile Count ┃
┡━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ 192.168.57.11 │ 3             │
│ 192.168.57.12 │ 3             │
│ 192.168.57.13 │ 2             │
│ 192.168.57.10 │ 1             │
└───────────────┴───────────────┘
                       Oldest User Profiles
┏━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ User            ┃ Machine         ┃ Created    ┃ Last Modified ┃
┡━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ vagrant         │ DC.sccm.lab     │ 2025-11-07 │ 2025-11-07    │
│ sccm-sql        │ MSSQL.sccm.lab  │ 2025-11-07 │ 2025-11-07    │
│ administrator   │ MECM.sccm.lab   │ 2025-11-07 │ 2025-11-07    │
│ sccm-account-da │ CLIENT.sccm.lab │ 2025-12-26 │ 2025-11-07    │
│ alice           │ CLIENT.sccm.lab │ 2025-12-26 │ 2025-12-28    │
└─────────────────┴─────────────────┴────────────┴───────────────┘
                Longest Lived Profiles (Created -> Modified)
┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ User          ┃ Machine         ┃ Age (Days) ┃ Created    ┃ Last Modified ┃
┡━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ alice         │ CLIENT.sccm.lab │ 1.8        │ 2025-12-26 │ 2025-12-28    │
│ alice         │ MSSQL.sccm.lab  │ 0.0        │ 2025-12-28 │ 2025-12-28    │
│ sccm-sql      │ MSSQL.sccm.lab  │ 0.0        │ 2025-11-07 │ 2025-11-07    │
│ administrator │ MECM.sccm.lab   │ 0.0        │ 2025-11-07 │ 2025-11-07    │
│ vagrant       │ DC.sccm.lab     │ 0.0        │ 2025-11-07 │ 2025-11-07    │
└───────────────┴─────────────────┴────────────┴────────────┴───────────────┘
                     Top 5 Machines to Focus On (Hubs)
┏━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Machine         ┃ Score ┃ Reason                                         ┃
┡━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ MECM.sccm.lab   │ 4.5   │ Has 3 profiles, potential lateral movement hub │
│ MSSQL.sccm.lab  │ 4.5   │ Has 3 profiles, potential lateral movement hub │
│ CLIENT.sccm.lab │ 3.5   │ Has 2 profiles, potential lateral movement hub │
│ DC.sccm.lab     │ 1.0   │ Has 1 profiles, potential lateral movement hub │
└─────────────────┴───────┴────────────────────────────────────────────────┘

動作原理

ProfileHound は C$ 共有を使用して、\\<ターゲット>\C$\Users\ にあるドメインマシン上のユーザープロファイルを列挙します。ユーザーの NTUSER.DAT ファイルを読み取り、ファイルメタデータから SID を取得することで、そのユーザーがドメインアカウントかローカルアカウントかを判断します。例えば、\\<ターゲット>\C$\Users\ にあるすべてのユーザーディレクトリを収集し、各ディレクトリをループして \\<ターゲット>\C$\Users\<ユーザー名>\NTUSER.DAT にある NTUSER.DAT ファイルを見つけます。NTUSER.DAT ファイルが既知の SID によって所有されている場合、そのユーザーの DPAPI ディレクトリ(例:\\<ターゲット>\C$\Users\<ユーザー名>\AppData\Roaming\Microsoft\Protect\<SID>)を読み取ることでユーザーの SID を見つけようとします。

C$ 共有にアクセスするため、ターゲットマシンに認証するための管理者アカウントが必要です。ProfileHound は提供された資格情報を使用してターゲットマシンに認証します。ドメインアカウントを使用する場合は --auth-domain オプションでドメインを指定できます。ローカルアカウントを使用する場合は --smb-local-auth オプションを使用します。

デフォルトでは、ProfileHound は SMB ドメイン認証の失敗後に処理を停止し、アカウントロックアウトのリスクを低減します。一部のエンドポイントでドメイン認証が拒否されることが予想され、残りのターゲットのスキャンを続行する場合は、--smb-ignore-failed-domain-auth を使用します。

プロファイルがすでに見つかった後に SMB データ収集中に ProfileHound が停止した場合、部分的な OpenGraph 結果をエクスポートしてから終了します。

NTUSER.DAT ファイルの作成日と最終更新日が収集され、プロファイルがアクティブかどうかの判断に使用できます。この関連付けはエッジプロパティに対する Cypher クエリ内で処理されます。以下に例を示します。

興味深い点として、NTUSER.DAT ファイルの最終更新日が作成日より前の場合、そのプロファイルは作成されたものの実質的に使用されていない可能性が高いです。この状態は、新しいユーザープロファイルが作成される際に NTUSER.DAT ファイルが C:\Users\Default プロファイルからコピーされ、作成日が後であるにもかかわらず同じ更新日が維持されるために発生します。そのため、特定のプロファイルにはシークレットが含まれていないと合理的に判断できます。

ターゲットの選択

ProfileHound は @podalirius_ の ShareHound をライブラリとして使用してターゲットを列挙します。--target または --target-file オプションが指定されていない場合、ProfileHound は LDAP に接続してドメイン内のすべてのマシンの FQDN を自動的に収集します。

便利なクエリ

このデータからは多くの強力な結論を導き出すことができ、どこに注力すべきかを示してくれます。以下のクエリはすべて、ProfileHound_Cypher_Queries.zip ファイル を BloodHound UI の 保存済みクエリ ページにある インポート ボタンを使用してドラッグ&ドロップすることでインポートできます。 以下にいくつかの例を示します。

すべてのユーザープロファイルエッジを検索

これは、グラフ内のすべてのユーザープロファイルを検索するシンプルなクエリです。

root@kitploit:~
MATCH p=(u:User)-[:HasUserProfile]->(c:Computer)
RETURN p

グループ名でユーザープロファイルを検索

これは、ドメイン "Administrators" グループのメンバーであるすべてのユーザープロファイルを検索します。

root@kitploit:~
MATCH p=(g:Group)<-[:MemberOf*1..]-(u:User)-[:HasUserProfile]->(c:Computer)
WHERE toLower(g.samaccountname) = "administrators"
RETURN p

直近3日以内にアクティブなユーザープロファイルを検索

これは、過去3日以内に変更されたすべてのユーザープロファイルを検索します。これにより、ユーザープロファイルがそのユーザーの主要なマシンであり、良い「戦利品」がある可能性が高い場所を特定できます。

root@kitploit:~
WITH 3 as active_days
MATCH p = (u:User)-[e:HasUserProfile]-(c:Computer)
WHERE e.profileModified > (datetime().epochseconds - (active_days * 86400))
RETURN p

特定のグループ内のアクティブなユーザープロファイル(強力)

これは、特定のグループのメンバーについて、過去3日以内に使用されたユーザープロファイルを特定する非常に強力なクエリです。

root@kitploit:~
WITH 3 as active_days, "administrators" as group_name
MATCH p = (g:Group)<-[:MemberOf*1..]-(u:User)-[e:HasUserProfile]-(c:Computer)
WHERE e.profileModified > (datetime().epochseconds - (active_days * 86400)) AND toLower(g.samaccountname) = group_name
RETURN p

未使用のユーザープロファイルを削除

これは、NTUSER.DAT ファイルの更新日が作成日より前であるユーザープロファイルをすべて削除します。これは、プロファイルが作成されたものの実質的に使用されていないことを示します。この状態は、新しいユーザープロファイルが作成される際に NTUSER.DAT ファイルが C:\Users\Default プロファイルからコピーされ、作成日が後であるにもかかわらず同じ更新日が維持されるために発生します。

root@kitploit:~
match p = (u:User)-[e:HasUserProfile]-(c:Computer)
where e.profileCreated < e.profileModified
return p

クレジット

これは、Remi Gascou 氏(@podalirius)の ShareHound と bhopengraph ライブラリなしには実現できませんでした。

今後の改善点

このツールの焦点は、特定のユーザーにとってシークレットが含まれている可能性が最も高いマシンを特定することです。今後の改善点は以下の通りです。

  • @garrettfoster13 の SCCMHunter をライブラリとして実装し、データ収集を改善する。
    • get_lastlogon 関数を使用して、マシン上に HasUserProfile エッジを作成する。
    • get_puser 関数を使用して、ドメインユーザーを特定のマシンのプライマリデバイス所有者として関連付ける。
  • AzureHound からの Azure AD デバイス所有権の関連付けを実装する。
    • これは、.data.owners[owner.DeviceOwner.onPremisesSecurityIdentifier] で AZDeviceOwner オブジェクトとして既に収集されているようです。
  • ShareHound を使用して、一致するプロファイル内の機密ファイルをスパイダーし、グラフに取り込む。
  • NTUSER.DAT ファイルをマイニングして、最近使用されたプログラム、ドキュメント、ブラウザのアクティビティを取得する。
ツールをダウンロード