返回更新列表
已更新Jul 16, 2026

GPOHound — 已更新!

攻击性GPO转储与分析工具,利用并丰富BloodHound数据

分享

GPOHound

GPOHound 是一款用于从 SYSVOL 共享中提取和分析组策略对象(GPO)的工具。

它提供结构化的、形式化的格式,帮助发现在 Active Directory 环境中的错误配置、不安全设置以及权限提升路径。

该工具与 BloodHound 的 Neo4j 数据库集成,将其用作 Active Directory 信息的类似 LDAP 来源,同时通过基于分析结果添加新的关系(边)和节点属性来丰富数据。

功能

转储

  • 以结构化的 JSON 或树形格式转储 GPO
  • 处理多个域
  • 将 GPO 名称与 GPO GUID 关联
  • 按 GPO 文件、GPO GUID 和域过滤输出
  • 使用正则表达式搜索键值对

分析

  • 按受影响对象(例如本地组、注册表)分组设置
  • 检测添加到本地特权组的成员
  • 检测不安全的注册表设置、存储的凭据和特权权限
  • 支持解密 VNC 凭据和 GPP 密码
  • 查找受 GPO 影响的域、容器和 OU
  • 获取应用于特定用户、计算机、OU、容器或域的 GPO
  • 通过关系和属性丰富 BloodHound 数据

安装

使用 pip 安装

git clone "https://github.com/cogiceo/GPOHound"
cd GPOHound
pip install .

使用 pipx 安装

pipx install "git+https://github.com/cogiceo/GPOHound"

为 Neo4j 设置 APOC

你需要设置 Neo4j APOC 以进行 BloodHound 数据丰富:

  • 如果你使用的是标准 Neo4j 安装,可以通过将 APOC jar 文件复制到插件文件夹,然后重启 Neo4j 来启用 APOC:

    cp /var/lib/neo4j/labs/apoc-* /var/lib/neo4j/plugins/
    neo4j restart
    
  • 如果你使用“Docker Compose”安装 Neo4j,请添加环境变量 NEO4J_PLUGINS=["apoc"]

    neo4j:
      image: neo4j:latest
      environment:
        - NEO4J_PLUGINS=["apoc"]
    

有关更多详细信息或其他安装方法,请参阅官方 APOC 文档

添加 BloodHound 查询

要可视化 GPOHound 添加的关系和属性,你可以从 customqueries.json 文件导入自定义查询到 BloodHound。默认情况下,此文件位于 ~/.config/bloodhound/customqueries.json

先决条件

转储 SYSVOL

首先从域控制器下载 SYSVOL 内容。

  • 下载完整的 SYSVOL

    gpohound sysvol --dc $DC_HOST -d $DOMAIN -u $USER -p $PASSWORD 
    
  • 仅下载 GPO:

    gpohound sysvol --dc $DC_HOST -d $DOMAIN -u $USER -p $PASSWORD --gpos
    
  • 排除部分内容下载:

    gpohound sysvol --dc $DC_HOST -u $USER -p $PASSWORD --exclude '/Policydefinitions/','/scripts/' --max-size 100
    

转储 LDAP

从 LDAP 检索所有必要数据:

gpohound ldap --dc $DC_HOST -d $DOMAIN -u $USER -p $PASSWORD

BloodHound

为了进行 BloodHound 数据丰富,你必须使用诸如 bloodhound.pySharpHound.exe 之类的收集器收集 BloodHound 数据,并将收集到的数据导入 BloodHound 界面。

使用

example.zip 中提供了示例 GPOHound 文件。使用 unzip example.zip 解压它们。

有关自定义默认值和配置的说明,请参见 CONFIG.md

gpohound --neo4j-user $USER --neo4j-pass $PASS dump
gpohound --neo4j-user $USER --neo4j-pass $PASS analysis

解析

gpohound parse "gpos/sysvols/$DOMAIN/Policies/{31B2F340-016D-11D2-945F-00C04FB984F9}/MACHINE/Registry.pol"

转储

gpohound dump
gpohound dump --list
gpohound dump --guid 31B2F340-016D-11D2-945F-00C04FB984F9
gpohound dump --policies scripts psscripts
gpohound dump --search 'VNC.*Server' --show

分析

gpohound analysis
gpohound analysis --affected
gpohound analysis --trustee 'SRV01.SEVENKINGDOMS.LOCAL'
gpohound analysis --trustee 'SRV01.SEVENKINGDOMS.LOCAL' --list
gpohound analysis --trustee 'SRV01.SEVENKINGDOMS.LOCAL' --dump
gpohound analysis --enrich
gpohound analysis --enrich-ce

当前分析与丰富

[!IMPORTANT]

  • 安全筛选器、WMI 筛选器和项目级定位等条件不会被解释。
  • 不会模拟 GPO 冲突,以避免遗漏有效的设置。

本地组

  • 检测登录时分配给特权本地组的用户

  • 检测重命名的内置特权本地组

  • 检测使用“首选项进程变量”(例如 %ComputerName%、%DomainName%)添加到特权本地组的受托人

  • 检测使用 sAMAccountName 劫持的可滥用受托人

  • 检测添加到特权本地组的任何受托人:

    AdministratorsAdminTo
    Remote Desktop UsersCanRDP
    Distributed COM UsersExecuteDCOM
    Remote Management UsersCanPSRemote
    Backup OperatorsCanPrivEsc
    Print OperatorsCanPrivEsc
    Network Configuration OperatorsCanPrivEsc

注册表

分析属性
“Everyone” 组包含“Anonymous Logon”
SMB 服务器会话签名未启用smbSigningEnabled: false
SMB 服务器会话签名非必需smbSigningRequired: false
支持 NTLMv1 身份验证NTLMv1Support: true
Windows 自动登录默认密码
VNC 凭据(通用:RealVNC、TightVNC、TigerVNC 等)*VNC*PASS*(各种)
FileZilla 存储的密码
PuTTY 代理密码
TeamViewer 存储的凭据
WinSCP 保存的会话
Picasa 存储的密码

特权权限

默认特权受托人以及 SID 以 S-1-5-8 开头的服务帐户会被排除在分析之外。

权限描述
SeDebugPrivilege允许用户调试并与任何进程交互CanPrivEsc
SeBackupPrivilege授予对敏感文件的访问权限CanPrivEsc
SeRestorePrivilege在还原期间绕过对象权限CanPrivEsc
SeAssignPrimaryTokenPrivilege启用令牌模拟以提升至 SYSTEMCanPrivEsc
SeImpersonatePrivilege允许在另一个用户的上下文中创建进程CanPrivEsc
SeTakeOwnershipPrivilege允许用户获取系统对象的所有权CanPrivEsc
SeTcbPrivilege授予作为操作系统一部分执行的能力CanPrivEsc
SeCreateTokenPrivilege允许创建身份验证令牌CanPrivEsc
SeLoadDriverPrivilege授权加载/卸载驱动程序CanPrivEsc
SeManageVolumePrivilege授予卷或磁盘管理权限CanPrivEsc
SeEnableDelegationPrivilege允许计算机和用户帐户被信任用于委派

改进

  • 改进日志记录
  • 集成 LDAP
  • 集成 SMB
  • 解析其余扩展
  • Web 界面
  • 高亮显示 GPO 之间的潜在冲突

GPO 文档

SYSVOL 和 LDAP

仅 LDAP

分类