fatihpurtas/ASREPRoast-scanner
GitHub: fatihpurtas/ASREPRoast-scanner
一款无需管理员权限和 AD 模块的 PowerShell 脚本,通过 LDAP 查询快速发现 Active Directory 中存在 AS-REP Roasting 风险的账户。
Stars: 0 | Forks: 0
# AS-REP Roasting 扫描器
此 PowerShell 脚本会审计 **Active Directory** 中
**禁用了 Kerberos 预身份验证**(`DONT_REQUIRE_PREAUTH` 标志)的账户,并
将结果导出为 CSV 文件。
## 目的
当账户禁用了预身份验证时,KDC 会向**任何人**返回
加密的 AS-REP,而不需要有效的凭据。该
响应包含由账户密码加密的材料,攻击者
可以对其进行离线破解(例如使用 Hashcat 的 18200 模式)。这被称为
**AS-REP Roasting**。
- 检测所有设置了 `userAccountControl` 位 `0x400000` (4194304) 的用户账户。
- 标记特权账户(`adminCount >= 1`)以及同时具有 SPN 的账户(同时可进行 Kerberoast)。
- 默认排除已禁用的账户。
## 主要功能
- 仅使用内置的 **System.DirectoryServices** 类,**不需要 ActiveDirectory 模块**。
- **无需管理员权限**即可运行;只需要对 AD 的读取权限。
- 可在加入域的环境中运行,或通过 `-Server` 对指定的 DC 运行。
- 分页 LDAP 查询(每页 1000 条),适用于大型域。
- 导出为 CSV:Name, SamAccountName, Enabled, AdminCount, AlsoKerberoastable, PwdLastSet, LastLogon, DistinguishedName。
## 工作原理
1. 绑定到 `RootDSE` 以发现默认的命名上下文(或使用 `-SearchBase`)。
2. 运行 LDAP 过滤器:
(&(objectCategory=person)(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=4194304))
(除非使用 `-IncludeDisabled`,否则会附加一个 `(!(...:=2))` 子句以跳过已禁用的账户)
3. 提取相关属性,将 FileTime 值转换为可读的 UTC 时间。
4. 导出结果并打印摘要。
## 用法
```
# 交互式:当前 domain,仅启用的 accounts
.\ASREPRoast.ps1
# 特定 DC 和输出路径
.\ASREPRoast.ps1 -Server dc01.example.com -OutputPath C:\Audit\asrep.csv
# 包含已禁用的 accounts
.\ASREPRoast.ps1 -IncludeDisabled
```
| 参数 | 描述 |
|-----------|-------------|
| `-Server` | 直接查询的域控制器(`dc01.example.com` 或 `:636`)。 |
| `-SearchBase` | 用于限定搜索范围的 Distinguished name。 |
| `-OutputPath` | CSV 输出路径。默认为 `.\asrep_roastable_.csv`。 |
| `-IncludeDisabled` | 包含已禁用的账户(默认排除)。 |
## 要求
- PowerShell 5.1 或更高版本
- 域连接(已加入域或可通过 `-Server` 访问 DC)
- 对 Active Directory 的读取权限
## 安全影响
- **先修复,后狩猎。** 从任何并非严格需要的账户中移除“Do not require Kerberos preauthentication”设置(传统的 Unix/Kerberos 集成通常是造成此问题的原因)。
- **优先处理特权账户**(`adminCount >= 1`)以及任何同时可进行 Kerberoast 的账户。
- 对于必须保持禁用预身份验证的账户,**使用强长密码**,并尽可能强制使用 AES 加密类型。
- **监控**没有预身份验证的 AS-REQ 请求(Event ID 为 4768 且预身份验证类型为 0)作为检测信号。
标签:Active Directory, AI合规, AS-REP Roasting, Checkov, IPv6, LDAP, Libemu, Plaso, PowerShell, 多人体追踪