fatihpurtas/ADDelegation-scanner
GitHub: fatihpurtas/ADDelegation-scanner
一个无需 AD 模块和管理员权限的 PowerShell 脚本,用于审计 Active Directory 中三类 Kerberos 委派配置并将结果导出为 CSV。
Stars: 0 | Forks: 0
# Active Directory 委派扫描器
此 PowerShell 脚本用于审计 **Active Directory** 的 **Kerberos 委派**
配置(非约束性、约束性和基于资源的),并将
结果导出至 CSV 文件。
## 目的
Kerberos 委派允许服务向其他服务模拟用户。
错误配置的委派是导致域
完全沦陷的最常见路径之一,因此每个委派账户都应是已知且有正当理由的。
该脚本报告以下三个类别:
| 类型 | 检测方式 | 风险 |
|------|-------------|------|
| **非约束性** | `userAccountControl` 位 `0x80000` (524288) | 最高。主机一旦被攻陷,就会捕获任何向其进行身份验证的用户的 TGT。域控制器合法拥有此属性,并被标记为 `IsDC = True`。 |
| **约束性** | 设置了 `msDS-AllowedToDelegateTo` | 仅限于特定的目标服务。“协议转换”(任何身份验证协议)被单独列出,因为其风险更高。 |
| **基于资源的 (RBCD)** | 设置了 `msDS-AllowedToActOnBehalfOfOtherIdentity` | 允许委派给该对象的主体将从安全描述符中解析并列出。 |
## 主要特性
- 仅使用内置的 **System.DirectoryServices** 类,**不需要 ActiveDirectory 模块**。
- **无需管理员权限**即可运行;只需对 AD 的读取权限。
- 一次运行即可覆盖**用户和计算机**的所有三种委派类型。
- 从原始安全描述符解析 RBCD 主体以获取账户名称。
- 标记域控制器,以便过滤掉预期的非约束性委派。
- 分页 LDAP 查询(每页 1000 条),适用于大型域。
## 工作原理
1. 绑定到 `RootDSE` 以发现默认命名上下文(或使用 `-SearchBase`)。
2. 运行三个 LDAP 搜索:
- `(userAccountControl:1.2.840.113556.1.4.803:=524288)` 用于非约束性委派
- `(msDS-AllowedToDelegateTo=*)` 用于约束性委派
- `(msDS-AllowedToActOnBehalfOfOtherIdentity=*)` 用于 RBCD
3. 对每个对象进行分类,解析 RBCD 主体,并标记 DC。
4. 导出合并的结果并打印摘要。
## 用法
```
.\ADDelegation.ps1
.\ADDelegation.ps1 -Server dc01.example.com -OutputPath C:\Audit\delegation.csv
.\ADDelegation.ps1 -IncludeDisabled
```
| 参数 | 描述 |
|-----------|-------------|
| `-Server` | 直接查询的域控制器(`dc01.example.com` 或 `:636`)。 |
| `-SearchBase` | 用于限定搜索范围的可分辨名称。 |
| `-OutputPath` | CSV 输出路径。默认为 `.\ad_delegation_.csv`。 |
| `-IncludeDisabled` | 包含已禁用的账户(默认排除)。 |
## CSV 列
Name, SamAccountName, ObjectType, Enabled, DelegationType, IsDC, Targets, DistinguishedName。
## 要求
- PowerShell 5.1 或更高版本
- 域连接(已加入域或可通过 `-Server` 访问 DC)
- 对 Active Directory 的读取权限
## 安全影响
- **消除非域控制器上的任何非约束性委派**。迁移到约束性或基于资源的委派。
- **将敏感账户添加到受保护用户组**,和/或将它们标记为“账户敏感,无法被委派”,以便它们永远不会被委派。
- **仔细审查带有协议转换的约束性委派**账户,因为它们可以获取从未向其进行身份验证的用户的票据。
- **审计 RBCD 写入者**:任何能够写入对象 `msDS-AllowedToActOnBehalfOfOtherIdentity` 属性的人,都可以针对该对象发起委派攻击。
标签:Active Directory, AI合规, Checkov, IPv6, Kerberos委派, Libemu, Plaso, PowerShell, 多人体追踪, 配置检查