GPOddity 项目旨在通过 NTLM 中继(及其他方式)实现 GPO 攻击向量的自动化。
有关攻击的更多详细信息以及如何使用该工具的演示,请参阅相关文章: https://www.synacktiv.com/publications/gpoddity-exploiting-active-directory-gpos-through-ntlm-relaying-and-more
你可以通过以下命令使用 pipx 安装 GPOddity:
$ python3 -m pipx install git+https://github.com/synacktiv/GPOddity
或者,你也可以通过克隆仓库并安装依赖项来手动安装 GPOddity:
$ git clone https://github.com/synacktiv/GPOddity
$ python3 -m pip install -r requirements.txt
$ python3 gpoddity.py --help
Usage: gpoddity.py [OPTIONS]
╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --help 显示此帮助信息并退出。 │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ 通用选项 ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ * --domain TEXT 目标域 [默认: None] [必填] │
│ * --gpo-id TEXT GPO 对象 GUID(不带花括号,例如 '1328149E-EF37-4E07-AC9E-E35920AD2F59')[默认: None] [必填] │
│ * --username TEXT 对 GPO AD 对象具有写入权限的用户名。可以是机器账户(例如 'SRV01$')[默认: None] [必填] │
│ --password TEXT 对 GPO AD 对象具有写入权限的用户密码 [默认: None] │
│ --hash TEXT 对 GPO AD 对象具有写入权限的用户的 NTLM 哈希,格式为 'LM:NT' [默认: None] │
│ --dc-ip TEXT [可选] 如果域名无法解析,则指定域控制器的 IP 地址。[默认: None] │
│ --ldaps [可选] 使用 LDAPS 替代 LDAP(端口 636) │
│ --verbose [可选] 启用详细输出 │
│ --just-clean [可选] 仅从 --clean-file 标志指定的文件中读取值并执行清理操作。可在利用不完整或非正常退出时用于清理。 │
│ --clean-file TEXT [可选] 包含要恢复值的文件(来自 'cleaning/' 文件夹),与 --just-clean 标志配合使用。路径相对于 GPOddity 安装文件夹或使用绝对路径。 │
│ [默认: None] │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ 恶意组策略模板生成选项 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --command TEXT 应通过恶意 GPO 执行的命令 [默认: None] │
│ --powershell [可选] 使用 powershell 替代 cmd 来执行命令 │
│ --gpo-type [user|computer] [可选] 目标 GPO 的类型,可以是 'user' 或 'computer' [默认: computer] │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ 组策略模板位置欺骗选项 ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --rogue-smbserver-ip TEXT 托管恶意 GPT 的主机的 IP 地址或 DNS 名称。如果使用 GPOddity 的 SMB 服务器,应指定当前主机在内网中的 IP 地址(例如 192.168.58.101)。 │
│ [默认: None] │
│ --rogue-smbserver-share TEXT 提供恶意 GPT 的共享名称(例如 'synacktiv')。如果使用内置 SMB 服务器,请不要提供包含 'SYSVOL' 或 'NETLOGON' 的名称(默认受 UNC 路径硬化保护)。 │
│ [默认: None] │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ SMB 服务器选项 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --machine-name TEXT [可选] 用于 Netlogon 身份验证的有效域机器账户名称(例如 SRV01$)。如果省略,将使用 --username 指定的用户,并假设其为有效的机器账户。 │
│ [默认: None] │
│ --machine-pass TEXT [可选] 如果指定了 --machine-name,则该机器账户的密码 [默认: None] │
│ --machine-hash TEXT [可选] 如果指定了 --machine-name,则该机器账户的 NTLM 哈希,格式为 'LM:NT' [默认: None] │
│ --comment TEXT [可选] 查询共享时显示的注释 [默认: None] │
│ --interface TEXT [可选] GPOddity SMB 服务器监听的接口 [默认: 0.0.0.0] │
│ --port TEXT [可选] GPOddity SMB 服务器监听的端口 [默认: 445] │
│ --smb-mode [embedded|forwarded|none] [可选] 'embedded'(内嵌)SMB 服务器将在本机运行 SMB 服务器。'forwarded'(转发)会将 SMB 流量转发至假域控制器(需要机器账户及其对应的 │
│ DNS 记录指向攻击者机器,生成的 GPT 需上传至假 DC)。'none' 将不运行任何 SMB 服务器(生成的 GPT 需上传至域中可写的 SMB 共享)。 │
│ [默认: embedded] │
│ --empty-gpo [可选] 默认情况下,GPOddity 会克隆目标 GPO 并添加恶意即时任务。如果指定此标志,将使用空 GPO 替代克隆合法 GPO(在某些边缘情况下有用, │