Icex0/domain_audit.py

GitHub: Icex0/domain_audit.py

一款从渗透测试视角出发的 Active Directory 自动化安全审计工具,集成了大量域环境安全检查功能。

Stars: 1 | Forks: 0

# 域审计 ![DomainAudit Logo](https://static.pigsec.cn/wp-content/uploads/repos/cas/65/650cc622b0eeb9c8d5b63756d7e2aa68fe7987a4cd32eaf1128d2c2f6426d98a.svg) Active Directory 安全审计工具。是 [`domain_audit.ps1`](https://github.com/0xJs/domain_audit) 的 Python 移植版本,并增加了额外的检查和改进。 ## 环境要求 - Python 3.10+ - 可访问目标 Domain Controller 的网络权限 - 有效的 AD 凭据 - **netexec** - 安装命令:`pipx install --force git+https://github.com/Pennyw0rth/NetExec` - **certipy** - 安装命令:`pipx install --force certipy-ad` ## 安装说明 ### 使用 UV(推荐) ``` # 如果你尚未安装 UV,请安装它 (Linux & macOS) curl -LsSf https://astral.sh/uv/install.sh | sh # For Windows powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" # 在系统范围内安装 domain-audit # 从项目根目录运行此命令 uv tool install --force . # 现在你可以在任何地方运行 domain-audit! domain-audit --help ``` ### 替代方案:使用 pip ``` # 创建虚拟环境 python3 -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate # 安装 pip install . ``` ### Docker ``` # 构建 Docker image docker build -t domain-audit . # 运行 audit (结果保存到 ./results) docker run --rm -it -v $(pwd)/results:/data domain-audit -d contoso.com -dc 10.0.0.1 -u domainuser -p 'Password123!' ``` ## 用法 ``` # 运行完整 audit domain-audit -d contoso.com -dc 10.0.0.1 -u domainuser -p 'Password123!' # 使用 LDAPS domain-audit -d contoso.com -dc 10.0.0.1 -u domainuser -p 'Password123!' --ldaps # 跳过 BloodHound collection domain-audit -d contoso.com -dc 10.0.0.1 -u domainuser -p 'Password123!' --skip-bloodhound # 跳过 Kerberoasting/AS-REP roasting domain-audit -d contoso.com -dc 10.0.0.1 -u domainuser -p 'Password123!' --skip-roasting # 列出可用检查 domain-audit -L # 运行特定检查 domain-audit --check adcs -d contoso.com -dc 10.0.0.1 -u domainuser -p 'Password123!' ``` ## 功能说明 ### 枚举 - 用户、组、计算机、OU、GPO - Domain Controller 和域 SID - 特权用户(Domain Admins、Enterprise Admins 等) - 域信任 ### 安全检查 **域和密码策略** - 域功能级别评估 - 默认密码策略(长度、复杂性、锁定) - 细粒度密码策略(FGPP)枚举 - Kerberos 策略设置(票据生命周期、加密类型) **LAPS** - Schema 检测(旧版 LAPS vs Windows LAPS) - 计算机对象中的部署覆盖率 - 未启用 LAPS 的计算机 - LAPS 密码可读性检查(当前用户权限) - LAPS 策略配置(AdminAccountName、PasswordComplexity、PasswordLength、PasswordAgeDays、PwdExpirationProtectionEnabled、AdmPwdEnabled) **Kerberos 攻击** - Kerberoastable 账户(用户账户上的 SPN) - AS-REP roastable 账户(DONT_REQ_PREAUTH) - 通过 Impacket 提取哈希以进行离线破解 **委派** - 用户和计算机上的非约束性委派 - 约束性委派(S4U2Self/S4U2Proxy) - 基于资源的约束性委派(RBCD) **用户属性** - PASSWD_NOTREQD 标志(可以具有空密码的账户) - DONT_EXPIRE_PASSWORD 标志 - 启用了可逆加密 - 仅 DES 的 Kerberos 加密 - 用户/组/计算机描述中的敏感数据 - userPassword 属性暴露(明文或哈希密码) **特权账户** - Protected Users 组成员身份 - 管理员账户上的 NOT_DELEGATED 标志 - 特权用户的密码时长(>180 天) - KRBTGT 密码时长 - 高特权组的成员身份(Account Operators、Backup Operators、Print Operators、DNS Admins、Schema Admins) **过期对象** - 不活跃的计算机和用户(6 个月以上无登录) - 停止支持的操作系统(Server 2008/2012,Windows 7/10 EOL 版本) - Pre-Windows 2000 Compatible Access 组成员身份 - ANONYMOUS LOGON (S-1-5-7) 组成员身份检测(当与 Authenticated Users 结合时会发出警告) - Pre-Windows 2000 计算机密码喷射列表生成 - 域加入权限(ms-DS-MachineAccountQuota) **信任** - 域信任枚举 - 信任方向和类型分析 - SID 过滤状态(SID 历史记录注入风险) **ADIDNS** - 经过身份验证的用户的区域权限 - 通配符记录检测 **证书 (ADCS)** - PKI 注册服务器枚举 - 证书颁发机构检测 - **通过 certipy 检测易受攻击的证书模板**(ESC1、ESC2、ESC3、ESC4、ESC5、ESC6、ESC7、ESC8、ESC9、ESC10、ESC11、ESC13、ESC14、ESC15) **Exchange** - 默认 Exchange 组检测 - Exchange Windows Permissions WriteDACL 提权路径(PrivExchange) - Organization Management 提权风险 **Azure** - Azure AD Connect 检测 - AZUREADSSOACC 安全性(Seamless SSO): - 账户上禁用了非约束性委派 - 禁用了约束性委派(账户无法委派给其他服务) - 账户上禁用了基于资源的约束性委派(RBCD) - 没有其他账户可以委派给 AZUREADSSOACC - Kerberos 解密密钥时长(建议 30 天更新一次) **SCCM** - SCCM System Management 容器检测 **WSUS** - 通过 GPO (SYSVOL) 进行 WSUS 服务器配置 - HTTP 与 HTTPS 检测(HTTP 容易受到通过 WSUSpect/wsuks 进行的 MITM 攻击) **DC 漏洞** - Zerologon (CVE-2020-1472) - 域接管漏洞 - NoPac (CVE-2021-42278/CVE-2021-42287) - 提权至 Domain Admin **NTLM 安全** - NTLMv1 支持检测(LmCompatibilityLevel 0/1/2 容易受到降级/中继攻击) - NTLM 限制策略(RestrictNTLMInDomain、RestrictSendingNTLMTraffic、RestrictReceivingNTLMTraffic) - 启用 LLMNR 检测(容易受到 Responder 凭据捕获攻击) **网络服务** - IP 解析和 /24 范围计算 - 端口扫描(SMB、WinRM、RDP、MSSQL、HTTP) - SMB 签名强制要求 - SMBv1 检测 - SMB 空会话身份验证检查 - SMB 访客访问检查 - 非 DC 上的域管理员会话 - SMB/RDP/WinRM/MSSQL 访问检查(通过 netexec 获得本地管理员权限) - RDP NLA 禁用检测 - WebClient 服务检测 - NTLM 反射漏洞检测 - Domain Controller 上的 PrintSpooler **LDAP 安全** - LDAP 匿名绑定检测(未经身份验证访问域数据) - LDAP 签名要求 - LDAPS 通道绑定配置 **文件共享** - SYSVOL 密码搜索(GPP、脚本) - NETLOGON 脚本凭据分析 **SQL Server** - MSSQL 服务器发现 - MSSQL sysadmin 角色检测 - 加密配置 - 链接服务器枚举 - 模拟检查 ### 外部工具集成 - **Impacket** - Kerberoasting、AS-REP roasting、身份验证 - **NetExec** - SMB 枚举、LDAP 检查、SQL 枚举 - **Certipy** - ADCS 证书模板漏洞检测 ## 启动检查 该工具在启动时会自动验证: 1. **DNS 配置** - 检查 DNS 是否设置为 DC IP,如果以 root/管理员身份运行则尝试自动配置 2. **netexec 可用性** - 验证是否已安装 `nxc`/`netexec` 3. **certipy 可用性** - 验证是否已安装 `certipy` 如果任何检查失败,该工具将提供安装说明并退出。 ## 输出 结果将写入 `{domain}-{date}/` 目录中,包含三个文件夹: ``` contoso.com-20260201/ ├── findings/ # Issues to report (red) ├── checks/ # Requires manual review (yellow) └── data/ # Raw enumeration data ``` ## 待办事项 - [ ] 支持 Kerberos 身份验证 - [ ] 更好的 netexec 错误处理 - [ ] 支持 PowerUpSQL 中的更多 MSSQL 检查
标签:Active Directory, Checkov, Plaso, Python, Web报告查看器, 无后门, 请求拦截, 逆向工具