dehobbs/ADScan
GitHub: dehobbs/ADScan
基于Python的模块化Active Directory漏洞扫描工具,支持多协议与哈希传递认证,能生成带风险评分的独立HTML报告。
Stars: 2 | Forks: 0
# ADScan
**Active Directory 漏洞扫描器** — 一款基于 Python 的模块化工具,通过 LDAP、LDAPS 和/或 SMB 连接到域控制器,执行全面的安全检查,并生成包含风险评分的独立 HTML 仪表板报告。
## 功能特性
- **多协议支持**:LDAP、LDAPS、SMB(用户可选;默认为全部三种)
- **灵活认证**:密码、Pass-the-Hash(NTLM `LM:NT` 或 `NT`)或交互式提示
- **风险评分**:初始 100 分,根据发现的问题扣分(最低 0 分),等级评定 A–F
- **HTML 报告**:完全独立,支持亮/暗模式切换,严重性标签,可折叠的发现卡片
- **JSON / CSV 输出**:除 HTML 报告外,还提供机器可读的导出文件
- **模块化**:在 `checks/` 中放入新的 `check_*.py` 文件 — 运行时自动发现
- **21 个检查类别**,覆盖最关键的 AD 攻击面
## 安装说明
```
git clone https://github.com/dehobbs/ADScan.git
cd ADScan
pip install -r requirements.txt
```
### 前置条件
| 软件包 | 用途 |
|---------|---------|
| `ldap3` | LDAP / LDAPS 连接 |
| `impacket` | SMB 连接, Pass-the-Hash |
| `pyOpenSSL` | LDAPS 证书处理 |
## 运行方式
```
python adscan.py -d --dc-ip -u -p [options]
python adscan.py -d --dc-ip -u --hash [options]
python adscan.py -d --dc-ip -u # prompts for password
```
### 选项
| 标志 | 描述 | 默认值 |
|------|-------------|---------|
| `-d / --domain` | 目标域 FQDN(例如 `corp.local`) | 必填 |
| `--dc-ip` | 域控制器 IP 或主机名 | 必填 |
| `-u / --username` | 用户名 | 必填 |
| `-p / --password` | 密码(省略此选项将安全提示输入) | — |
| `--hash` | NTLM 哈希(`LM:NT` 或 `NT`) | — |
| `--protocol` | `ldap` \| `ldaps` \| `smb` \| `all` | `all` |
| `--timeout` | 连接超时时间(秒) | `30` |
| `--format` | `html` \| `json` \| `csv` \| `all` | `html` |
| `--log-file PATH` | 将所有日志输出(包括 DEBUG 详情)写入文件,除控制台外 | 关闭 |
| `-o / --output` | 输出报告路径主干 | `Reports/adscan_report_` |
| `-v / --verbose` | 在控制台显示 DEBUG 级别详情(发现详情、受影响对象) | 关闭 |
### 示例
```
# 密码认证,所有协议
python adscan.py -d corp.local -u alice -p 'P@ssw0rd!' --dc-ip 10.10.10.5
# 交互式密码提示(无 -p 标志)
python adscan.py -d corp.local -u alice --dc-ip 10.10.10.5
# Pass-the-hash(仅限 NT)
python adscan.py -d corp.local -u alice --hash aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad06bdd830b7586c
# 仅 LDAPS,自定义输出
python adscan.py -d corp.local -u alice -p 'Secret1' --protocol ldaps -o results/scan.html
# 所有输出格式(HTML + JSON + CSV)
python adscan.py -d corp.local -u alice -p 'Secret1' --dc-ip 10.10.10.5 --format all
# 自定义超时
python adscan.py -d corp.local -u alice -p 'Secret1' --dc-ip 10.10.10.5 --timeout 60
# 编写持久化日志文件以便事后审查
python adscan.py -d corp.local -u alice -p 'Secret1' --dc-ip 10.10.10.5 --log-file scan.log
# 详细控制台输出 + 完整 debug 日志文件
python adscan.py -d corp.local -u alice -p 'Secret1' --dc-ip 10.10.10.5 -v --log-file debug.log
```
## 免责声明
ADScan 仅供授权的安全评估使用。在扫描 Active Directory 环境之前,请务必获得书面许可。未经授权的使用可能违反计算机犯罪法律。
标签:Active Directory, AD域安全, Checkov, HTML报告, Impacket, LDAP, LDAPS, NTLM, Pass-the-Hash, PE 加载器, Plaso, Python, SMB, SNMP, Web报告查看器, 代码生成, 关系图谱, 内存取证对抗, 反取证, 域控制器, 基线检查, 安全评估, 无后门, 渗透测试工具, 逆向工具, 错误配置检测, 防御绕过