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, 多人体追踪