Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
profilehound — ProfileHound - 用于域机器上存储的用户配置文件的 BloodHound OpenGraph 收集器。通过识别域机器上的活动用户配置文件,就窃取机密做出明智决策。 | Kitploit
工具/GitHubGitHub/m4lwhere/profilehound
OSINT (开源情报)侦察横向移动信息收集后渗透利用渗透测试红队
GitHubm4lwhere/profilehound

profilehound

ProfileHound - 用于域机器上存储的用户配置文件的 BloodHound OpenGraph 收集器。通过识别域机器上的活动用户配置文件,就窃取机密做出明智决策。

查看仓库
163944个月前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 边示例

ProfileHound 使用 BloodHound 的 OpenGraph 格式来构建一个名为 HasUserProfile 的新图边,用于判断域机器上是否存在用户配置文件。这可以帮助操作员将注意力集中在高价值用户或组拥有配置文件的机器上。

HasUserProfile 边包含配置文件的创建日期和最后修改日期等属性。这些信息有助于确定:

  • 配置文件是否被活跃使用(最近几天内登录过)
  • 配置文件是否已使用多年(很可能包含大量机密信息!)

HasUserProfile 边属性示例

该边还包含配置文件创建和修改的时间戳属性,允许通过特定的 Cypher 查询找到特定机器上活跃或长期存在的用户配置文件。

安装

使用 pipx 安装 ProfileHound(除非您喜欢依赖地狱):

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 收集器,用于收集域机器上的用户配置文件。

[12/30/25 11:58:05] INFO     加载了 32 个目标
[12/30/25 11:58:08] INFO     以 sccm.lab\alice 身份在 192.168.57.10 (192.168.57.10) 上认证成功
                    INFO     以 sccm.lab\alice 身份成功连接到共享 \\192.168.57.10\C$
                    INFO     正在枚举 \\192.168.57.10\C$\Users\ 中的配置文件...
                    INFO         vagrant:    S-1-5-21-3016982856-3796307652-1246469985-1000  创建时间:2025-11-07    修改时间:2025-11-07
                    INFO     在 192.168.57.10 上找到 1 个域配置文件
                    INFO     以 sccm.lab\alice 身份在 192.168.57.11 (192.168.57.11) 上认证成功
[12/30/25 11:58:09] INFO     以 sccm.lab\alice 身份成功连接到共享 \\192.168.57.11\C$
                    INFO     正在枚举 \\192.168.57.11\C$\Users\ 中的配置文件...
                    INFO         administrator:      S-1-5-21-3016982856-3796307652-1246469985-500  创建时间:2025-11-07    修改时间:2025-11-07
                    INFO         alice:      S-1-5-21-3016982856-3796307652-1246469985-1112  创建时间:2025-12-28    修改时间:2025-11-07
                    INFO         eve:        S-1-5-21-3016982856-3796307652-1246469985-1116  创建时间:2025-12-27    修改时间:2025-11-07
                    INFO     在 192.168.57.11 上找到 3 个域配置文件
                    INFO     以 sccm.lab\alice 身份在 192.168.57.12 (192.168.57.12) 上认证成功
                    INFO     以 sccm.lab\alice 身份成功连接到共享 \\192.168.57.12\C$
                    INFO     正在枚举 \\192.168.57.12\C$\Users\ 中的配置文件...
                    INFO         alice:      S-1-5-21-3016982856-3796307652-1246469985-1112  创建时间:2025-12-28    修改时间:2025-12-28
                    INFO         franck:     S-1-5-21-3016982856-3796307652-1246469985-1117  创建时间:2025-12-27    修改时间:2025-11-07
                    INFO         sccm-sql:   S-1-5-21-3016982856-3796307652-1246469985-1121  创建时间:2025-11-07    修改时间:2025-11-07
                    INFO     在 192.168.57.12 上找到 3 个域配置文件
                    INFO     以 sccm.lab\alice 身份在 192.168.57.13 (192.168.57.13) 上认证成功
                    INFO     以 sccm.lab\alice 身份成功连接到共享 \\192.168.57.13\C$
                    INFO     正在枚举 \\192.168.57.13\C$\Users\ 中的配置文件...
                    INFO         alice:      S-1-5-21-3016982856-3796307652-1246469985-1112  创建时间:2025-12-26    修改时间:2025-12-28
                    INFO         sccm-account-da:    S-1-5-21-3016982856-3796307652-1246469985-1119  创建时间:2025-12-26    修改时间:2025-11-07
                    INFO     在 192.168.57.13 上找到 2 个域配置文件
[12/30/25 11:59:27] INFO     找到 4 台包含配置文件的机器
                    INFO     已导出 OpenGraph 情报到 profilehound_20251230-115805.json

这在当前目录下创建了一个名为 profilehound_20251230-115805.json 的文件。该文件可以直接导入 BHCE:只需将文件拖放到 BloodHound UI 中即可。它会自动解析并通过 SID 关联节点。新的 HasUserProfile 边将创建以显示用户与配置文件之间的关系。

完成后,ProfileHound 还会在控制台打印一个小型统计摘要:

root@kitploit:~
╭───────────────────────── 常规摘要 ──────────────────────────────╮
│        ProfileHound 统计信息                                      │
│  包含配置文件的机器总数        4                                  │
│  唯一配置文件(用户)总数      7                                  │
│  每台机器平均配置文件数        2.25                               │
╰──────────────────────────────────────────────────────────────────╯
       拥有最多连接的用户
┏━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┓
┃ 用户           ┃ 机器数量       ┃
┡━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━┩
│ alice          │ 3              │
│ vagrant        │ 1              │
│ administrator  │ 1              │
│ eve            │ 1              │
│ franck         │ 1              │
└────────────────┴────────────────┘
       配置文件最多的机器
┏━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┓
┃ 机器           ┃ 配置文件数量   ┃
┡━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━┩
│ 192.168.57.11  │ 3              │
│ 192.168.57.12  │ 3              │
│ 192.168.57.13  │ 2              │
│ 192.168.57.10  │ 1              │
└────────────────┴────────────────┘
                       最旧的用户配置文件
┏━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┓
┃ 用户             ┃ 机器             ┃ 创建时间   ┃ 最后修改时间   ┃
┡━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━┩
│ 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     │
└──────────────────┴──────────────────┴────────────┴────────────────┘
               存活最久的配置文件(创建时间 -> 修改时间)
┏━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┓
┃ 用户           ┃ 机器             ┃ 存活天数   ┃ 创建时间   ┃ 最后修改时间   ┃
┡━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━┩
│ 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     │
└────────────────┴──────────────────┴────────────┴────────────┴────────────────┘
                    重点关注的 5 台机器(枢纽)
┏━━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ 机器             ┃ 得分 ┃ 原因                                             ┃
┡━━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ MECM.sccm.lab    │ 4.5   │ 拥有 3 个配置文件,潜在的横向移动枢纽            │
│ MSSQL.sccm.lab   │ 4.5   │ 拥有 3 个配置文件,潜在的横向移动枢纽            │
│ CLIENT.sccm.lab  │ 3.5   │ 拥有 2 个配置文件,潜在的横向移动枢纽            │
│ DC.sccm.lab      │ 1.0   │ 拥有 1 个配置文件,潜在的横向移动枢纽            │
└──────────────────┴───────┴──────────────────────────────────────────────────┘

工作原理

ProfileHound 使用 C$ 共享在域机器上枚举用户配置文件,路径为 \\<target>\C$\Users\。它会读取用户的 NTUSER.DAT 文件,通过检索文件元数据中的 SID 来判断该用户是域账户还是本地账户。例如,它会收集 \\<target>\C$\Users\ 下的所有用户目录,然后遍历每个目录,在 \\<target>\C$\Users\<username>\NTUSER.DAT 路径下查找 NTUSER.DAT 文件。如果 NTUSER.DAT 文件由已知 SID 所有,它将通过读取用户的 DPAPI 目录(例如 \\<target>\C$\Users\<username>\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 设备所有权关联。
    • 这似乎已作为 AZDeviceOwner 对象收集在 .data.owners[owner.DeviceOwner.onPremisesSecurityIdentifier] 中。
  • 使用 ShareHound 在匹配的配置文件中爬取敏感文件并将其导入图中。
  • 挖掘 NTUSER.DAT 文件中的最近程序、文档和浏览器活动。
下载工具