.
/ V\
/ ` /
<< | IDWolf
/ | Active Directory / Entra hygiene
/ |
/ |
/ \ \ /
( ) | |
________| _/_ | |
<__________\______)\__)

一份来自一次性实验室域的真实报告:评分、图表、AI 摘要及其关于将发现串联成域沦陷的结论、近期攻击中出现的攻击向量、攻击路径图、Tier 0 成员以及各项发现。
IDWolf 在真实的 Active Directory 实验室环境中经过测试,而不仅仅是在合成数据上:该域使用 Vulnerable-AD 以及项目自带的 tests/lab/ 脚本填充,这些脚本会植入 ACL 链、委派和其他错误配置。
IDWolf 是一款针对 Active Directory 和 Microsoft Entra ID 的卫生审计工具,使用纯 PowerShell 编写。它仅使用原生的 ActiveDirectory 模块对你的目录进行只读快照,然后离线分析该快照,并为你提供 HTML 报告、发现项 CSV,以及(如果需要)供 SIEM 使用的 JSON Lines。
在 AD 方面,它运行 169 项检查:Kerberos、特权访问、账户卫生、域配置、权限、DNS、AD CS(ESC1-5、9、10、13、15)、运行状况(复制、DHCP、备份)、从 GPO 读取的主机加固配置(SMB 和 LDAP 签名、NTLM、LM 哈希、用户权限)以及密码质量,全程不接触任何密码哈希。一个独立的收集器覆盖 Microsoft Entra ID,包含 90 项检查,映射到 CIS Microsoft 365 基准。
如果你愿意,Gemini 步骤可以撰写执行摘要和修复计划。发现项本身始终在你的机器上计算,并且在发送任何内容之前,每个目录名称都会被替换为令牌。
报告是一个自包含的 HTML 文件,旨在供需要据此采取行动的人阅读,而不仅仅是运行审计的人。仪表盘标签页包含评分和等级、以 SVG 绘制的攻击路径图和信任图、Tier 0 成员、NIS2 / ISO 27001 / DORA / GDPR 卡片、类别、主要风险和图表;详情标签页包含每项发现及其修复方法。没有外部库,没有 CDN,不从互联网加载任何内容:它可以离线打开,也可以按原样通过邮件发送。
GitHub 将 HTML 文件显示为纯文本,因此请下载示例并在浏览器中打开:
examples/lab_report.html 是 GIF 中的报告。它来自实验室域(使用 Vulnerable-AD 和 tests/lab/ 脚本填充),并包含可选的 Gemini 摘要。examples/demo_report.html 基于一个虚构域构建,包含深度收集和密码质量。其发现项 CSV 和 JSON Lines 位于同一目录下。examples/entra_report.html 是虚构的 Entra 租户。| 脚本 | 运行于 | 需要 | 产出 |
|---|---|---|---|
Start-IDWolf.ps1(或 Start-IDWolf.cmd) | 任意位置 | 无 | 以下所有功能的菜单 |
Collect-ADSnapshot.ps1 | 已加入域的机器 | ActiveDirectory 模块(RSAT)、域账户 | AD 快照 JSON |
Collect-EntraSnapshot.ps1 | 任意机器 | Microsoft Graph SDK、Global Reader | Entra 快照 JSON |
Export-PasswordQuality.ps1 | 任何能访问 PDC 的机器(受信任的管理主机或 DC),或离线 NTDS.dit | DSInternals、DCSync 权限 | 密码质量 JSON(不含哈希) |
IDWolf.ps1 | 任意位置 | 无 | HTML + CSV + JSONL 报告 |
Export-BloodHound.ps1 | 任意位置 | 无 | BloodHound CE zip(测试版) |
Invoke-IDWolfScheduled.ps1 | 计划任务 | 与收集器相同 | 无提示地收集 + 分析,SIEM 数据源 |
你无需告诉 IDWolf.ps1 快照是 AD 还是 Entra。它会自行判断。
| 领域 | 检查项 | 包含内容 |
|---|---|---|
| Kerberos | 14 | Kerberoasting、AS-REP roasting、RC4/DES、委派(非约束委派、约束委派、RBCD、可被 SPN 劫持的孤立目标)、krbtgt 密码年龄、Protected Users |
| 特权访问 | 18 | 通过嵌套和主组按 SID 判定的 Tier 0 成员身份、休眠/外部/计算机管理员账户、操作员组、DnsAdmins、RID 500、silos、使所有人成为本地管理员的 GPO、RODC 密码复制策略以及缓存在 RODC 上的 Tier 0 凭据 |
| 账户卫生 | 19 | 不活跃和从未使用的账户、密码非必需/永不过期/密码写在描述中、sIDHistory、LAPS 部署与轮换、过时的操作系统 |
| 域配置 | 28 | 密码策略和 FGPP、功能级别、回收站、匿名 LDAP、信任关系、DNS 区域和 WPAD 记录、DC 卫生 |
| 权限 | 17 | DCSync 权限、Tier 0 上的危险 ACE(或使用 -Deep 时的任何位置:包括对登录脚本、配置文件路径、证书映射、账户标志和账户限制、RBCD 属性的写访问)、所有者、机密属性的 DirSync 读取者(SyncLAPSPassword)、GPP 密码、脚本机密、gMSA 和 LAPS 读取者、Shadow Credentials、dMSA 创建权限(BadSuccessor)、对 SCCM System Management 容器的写访问、GPO 接管、从共享运行的 GPO 脚本和任务 |
| 证书服务 | 19 | ESC1-5、9、10、13、15、17(基于 HTTPS 的 WSUS)、弱 CA 密钥、即将过期的 CA;在 CA 本身上读取的 ESC6、7、8、11 和 16(CA 主机上的管理员权限),并对任何无法读取的 CA 附上需人工查看的说明 |
| 主机加固(GPO) | 40 | SMB/LDAP 签名和通道绑定、NTLM/LM、WDigest、LSA 保护、审核策略、日志记录、ZeroLogon、LLMNR、mDNS、NBT-NS(在 DC 上实时检查)、空会话、Spooler、WebClient(GPO 及在 DC 上实时检查)、noPac 补丁级别和强制接口(在 DC 上实时检查)、Point and Print(PrintNightmare)、缓存登录、AlwaysInstallElevated、GPO 中的自动登录密码、基于 HTTP 的 WSUS、RDP(NLA、Restricted Admin)、Credential Guard、应用程序控制、IPv6 / mitm6、WPAD 自动发现、Windows Script Host、强制注销 |
| 密码质量 | 5 | 重复、空、默认、已泄露和可逆的密码,且全程不接触哈希 |
| 运行状况 | 9 | 复制、备份、DC 上的 DHCP、FSMO 持有者、无法访问的 DC、DC 之间的时钟偏差、DC 上的磁盘空间和已停止的服务 |
| Entra ID | 90 | MFA(注册、强度、Authenticator 设置)、条件访问(旧式身份验证、设备代码、风险、受管设备、位置、令牌保护、会话限制)、PIM(常设访问、审批、激活和分配设置、组的 PIM 所有者)、管理员(仅云账户、许可证、不活跃、紧急访问)、设备(加入、本地管理员、LAPS、BitLocker)、来宾、应用(同意、权限、凭据策略)、密码设置、有风险的应用同意、应用所有者、位于条件访问排除项和管理员角色背后的组、Entra Connect 应用、仿冒应用名称、Microsoft 应用上的凭据、同步健康状况、联合身份验证、B2B 直接连接、访问包及其目录上的角色、仍在使用已停用 Azure AD Graph 的应用、工作负载身份条件访问、可在设备上运行代码的 Intune 角色以及设备擦除和脚本的多管理员审批(尚未在真实租户上验证);Graph 能读取的每一项 CIS Microsoft 365 v7 控制项 |
完整检查项列表见下文。它们如何映射到 CIS、PingCastle、InfosecMatter Top 16 以及常见攻击技术,见 COVERAGE.md。
2023-2026 年最受关注的入侵事件和研究背后的攻击向量,以及用于查找每种攻击所需条件的检查项。完整表格(包括未覆盖的内容:Microsoft 一侧的缺陷、检测而非配置)见 COVERAGE.md。
| 攻击 | 时间 | 检查项 |
|---|---|---|
| BadSuccessor(Windows Server 2025 上的 dMSA,CVE-2025-53779) | 2025 | badsuccessor_dmsa_create |
| Golden dMSA / Golden gMSA | 2025 | kds_root_key_readable(-Deep) |
| 强制认证 + NTLM 中继至 LDAP 或 AD CS(CVE-2025-24054) | 2025-26 | coercion_unfiltered_dc、adcs_esc8、adcs_esc11、ldap_signing_not_required、ldap_channel_binding_off、webclient_on_dc |
| 基于 SMB 的 NTLM 反射(CVE-2025-33073) | 2025 | smb_signing_not_required、smb_client_signing_not_required(缓解措施) |
| AD CS ESC15(EKUwu)与 ESC16 | 2024-25 | adcs_esc15、adcs_esc16 |
| AD CS ESC17:通过 HTTPS 访问 WSUS,且使用任何人都可申请的证书 | 2026 | adcs_esc17、wsus_http |
| SCCM / MECM:在 AD 中发布恶意管理点 | 2023-26 | sccm_system_management_writable |
| 勒索软件入侵中的 Kerberoasting | 2026 | kerberoastable_user、privileged_kerberoastable、spn_account_rc4 |
| Entra Connect 与 SyncJacking | 2025-26 | entra_admin_synced_from_onprem、entra_connect_app_extra_credentials、dcsync_rights(部分) |
| 密码喷洒(占云环境初始访问的 99% 以上,微软 2026) | 2025-26 | entra_smart_lockout_weak、entra_banned_passwords_off、entra_legacy_auth_allowed、entra_admins_without_mfa |
| 设备代码钓鱼 | 2025-26 | entra_device_code_flow_allowed |
| 中间人攻击与令牌窃取 | 持续 | entra_no_phishing_resistant_admins、entra_token_protection_off、entra_admin_sign_in_frequency |
| OAuth 同意钓鱼、权限过高的应用(Midnight Blizzard) | 2024-26 | entra_users_can_consent、entra_risky_delegated_grant、entra_app_high_privilege |
| 通过服务主体所有权提升权限(Entra Agent ID) | 2026 | entra_privileged_app_sp_owner、entra_privileged_app_owner |
| 从被入侵的 Intune 管理员处大规模擦除设备(Stryker,已报告) | 2026 | entra_intune_no_multi_admin_approval、entra_intune_role_weak_group(尚未在真实租户上验证) |
| 仍在使用 Azure AD Graph 的应用(Actor 令牌缺陷,CVE-2025-55241) | 2025 | entra_app_azure_ad_graph |
每项检查都映射到其可提供证据的控制项,涵盖四个框架:
| 框架 | 控制项 |
|---|---|
| NIS2,指令 (EU) 2022/2555(在意大利为第 138/2024 号立法法令第 24 条) | 第 21(2)(b)、(c)、(e)、(g)、(h)、(i)、(j) 条 |
| ISO/IEC 27001:2022,附录 A | A.5.15-A.5.18、A.8.2、A.8.5、A.8.8、A.8.9、A.8.13-A.8.16、A.8.20、A.8.24 |
| DORA,条例 (EU) 2022/2554 | 第 9(2)、9(4)(b)、(c)、(d)、(f)、10(1)、12(1) 条 |
| GDPR,条例 (EU) 2016/679 | 第 32(1)(a)、(b)、(c) 条 |
报告会针对每项控制项显示:有多少项检查覆盖它、有多少项无法评估以及发现了什么。每项检查都会列出其对应的控制项,CSV 和 JSON Lines 输出中也会包含这些信息。没有 IDWolf 检查覆盖的控制项会明确说明(例如在 AD 报告中,NIS2 21(2)(j) 多因素认证)。这是针对每项控制项中技术性、目录侧部分的证据。它并不能使任何人合规:策略、流程、人员和其他系统不在目录快照的范围内。包含推理过程的完整表格见 COVERAGE.md。
以下是人们通常用来完成类似工作的工具,均为其免费版或社区版。该表格基于截至 2026 年 10 月的公开文档。如果其中有内容过时或错误,请告知。