Yash-Patil-1/adseckit
GitHub: Yash-Patil-1/adseckit
ADSecKit 是一款自动化 Active Directory 渗透测试实验室工具,提供一键式漏洞环境配置、攻击链自动化执行与检测规则映射功能。
Stars: 1 | Forks: 0
# 🛡️ ADSecKit — Active Directory 攻击与检测实验室
[](https://www.python.org/downloads/)
[](LICENSE)
[]()
[]()
**为渗透测试人员和红队提供的自动化 Active Directory 实验环境配置、攻击链自动化和检测映射工具。**
## 概述
ADSecKit 提供了一个完整的 Active Directory 渗透测试实验室,只需一条命令即可启动。它会配置一个故意存在漏洞的 Windows 域(域控 + 工作站),然后提供模块化的攻击模块,供您练习完整的 AD 攻击链 —— 从枚举到域控接管。
### 实验室架构
```
┌─────────────────────────────────────────────────┐
│ Host-Only Network │
│ 172.16.0.0/24 │
│ │
│ ┌──────────────────────┐ ┌──────────────────┐ │
│ │ DC01 │ │ WS01 │ │
│ │ Windows Server 2022 │ │ Windows 11 Pro │ │
│ │ Domain Controller │ │ Domain Joined │ │
│ │ IP: 172.16.0.10 │ │ IP: 172.16.0.20 │ │
│ │ RAM: 3GB / 2 vCPU │ │ RAM: 2GB / 2 vCPU│ │
│ │ │ │ │ │
│ │ adseclab.local │ │ Vulns injected: │ │
│ │ │ │ - Local admin │ │
│ │ Vulns injected: │ │ - AlwaysElevate │ │
│ │ - Kerberoastable │ │ - Unquoted paths │ │
│ │ - AS-REP roastable │ │ - Stored creds │ │
│ │ - Weak ACLs │ │ - Weak perms │ │
│ │ - Unconst deleg │ │ │ │
│ └──────────────────────┘ └──────────────────┘ │
└─────────────────────────────────────────────────┘
```
### 内置漏洞
| 漏洞 | 目标 | 攻击阶段 |
|--------------|--------|-------------|
| 可 Kerberoast 的 SPN | `sql_svc`, `web_svc` | Kerberos 攻击 (P3) |
| 可 AS-REP Roast 的账户 | `bob_jones` | Kerberos 攻击 (P3) |
| 弱 ACL (GenericAll) | `alice_smith` 对 Admins OU | ACL 滥用 (P5) |
| 非约束委派 | `dc01` 计算机 | 委派滥用 (P3) |
| DCSync 路径 | 位于 Domain Admins 中的 `sql_svc` | 凭据攻击 (P4) |
| LAPS 错误配置 | WS01 extensionAttribute | 凭据攻击 (P4) |
| AlwaysInstallElevated | WS01 注册表 | 提权 (P7) |
| 未加引号的服务路径 | WS01 上的 `VulnSvc` | 提权 (P7) |
| 已保存的凭据 | Windows 凭据管理器 | 凭据攻击 (P4) |
| 弱文件权限 | WS01 上的 `db_config.ini` | 提权 (P7) |
## 快速开始
### 前置条件
- **Linux、macOS 或 Windows**(需支持虚拟化)
- **建议 16GB+ 内存**(最低 12GB)
- 50GB 可用磁盘空间
### 安装说明
#### 第一步:安装 ADSecKit(Python 包)
```
# Clone 仓库
git clone https://github.com/Yash-Patil-1/adseckit.git
cd adseckit
# 创建并激活虚拟环境
python3 -m venv venv
source venv/bin/activate
# 安装 ADSecKit
pip install -e .
# 验证是否正常工作
adseckit --help
```
#### 第二步:安装系统依赖(Vagrant + VirtualBox)
```
# 推荐 — 通过 ADSecKit CLI
adseckit provision install-deps
# 或手动操作:
sudo apt update
sudo apt install -y virtualbox virtualbox-ext-pack vagrant
vagrant plugin install vagrant-winrm
```
### 配置实验环境
```
# 启动完整实验环境(DC01 + WS01)
adseckit provision up
# 或启动单个 VM
adseckit provision up dc01
adseckit provision up ws01
# 检查状态
adseckit provision status
# 显示配置
adseckit config
```
### 当您运行 `adseckit provision up` 时会发生什么
1. **DC01** 启动 Windows Server 2022
2. PowerShell 安装 AD DS 角色 → 提升为域控 → 创建林 `adseclab.local`
3. 重启
4. 注入漏洞:易受攻击的用户、SPN、弱 ACL、非约束委派
5. 重启
6. **WS01** 启动 Windows 11 Pro
7. PowerShell 配置 DNS → 等待 DC → 加入域
8. 重启
9. 注入工作站漏洞:AlwaysInstallElevated、存储的凭据、计划任务
10. **准备好进行攻击!**
### 销毁环境
```
# 停止 VM(保留状态)
adseckit provision down
# 销毁 VM(删除所有内容)
adseckit provision destroy
```
## 实验室用户
| 用户名 | 密码 | 类型 | 备注 |
|----------|----------|------|-------|
| `Administrator` | `ADSecKitP@ss2026!` | Domain Admin | 内置 DA |
| `dave_admin` | `Admin@2026!` | Domain Admin | 特权用户 |
| `sql_svc` | `Service@2026!` | 服务账户 | **可 Kerberoast** — SPN: MSSQLSvc |
| `web_svc` | `Svc@dmin2026` | 服务账户 | **可 Kerberoast** — SPN: HTTP |
| `alice_smith` | `Password123!` | 标准用户 | 对 Admins OU 拥有 **GenericAll** |
| `bob_jones` | `Password123!` | 标准用户 | **无需预认证** — 可 AS-REP Roast |
| `charlie_brown` | `Password123!` | 标准用户 | 普通用户 |
| `svc_backup` | `Backup@2026!` | 本地管理员 (WS01) | 后备本地管理员 |
## 攻击模块
| 阶段 | 模块 | 状态 |
|-------|--------|--------|
| **1** | 实验环境配置 | ✅ **已完成** |
| **2** | **BloodHound 自动化** | ✅ **已完成** |
| **3** | **Kerberos 攻击** | ✅ **已完成** |
| **4** | 凭据攻击 | ✅ **已完成** |
| **5** | ACL 滥用 | ✅ **已完成** |
| **6** | 横向移动 | ✅ **已完成** |
| **7** | 提权 | ✅ **已完成** |
| **8** | 检测映射 | ✅ **已完成** |
| **9** | 报告生成 | ✅ **已完成** |
## CLI 参考
### 环境配置命令
```
adseckit provision install-deps # Install VirtualBox + Vagrant (+ dry-run flag)
adseckit provision up [dc01|ws01] # Start VMs
adseckit provision down [dc01|ws01] # Stop VMs
adseckit provision destroy [dc01|ws01] # Destroy VMs
adseckit provision status # Check VM status
adseckit provision ssh [dc01|ws01] # Open WinRM session
```
### BloodHound 自动化命令(阶段 2)
```
# 从实验环境收集 AD 数据
adseckit bloodhound collect # Uses bloodhound.py (or LDAP fallback)
adseckit bloodhound collect --username dave_admin --password "Admin@2026!"
# Neo4j 数据库管理(Docker)
adseckit bloodhound start # Start Neo4j container
adseckit bloodhound stop # Stop & remove Neo4j container
adseckit bloodhound status # Show pipeline status
adseckit bloodhound status --json # JSON output for scripting
# 导入和分析
adseckit bloodhound import # Load collected data into Neo4j
adseckit bloodhound analyze # Run Cypher attack path queries
adseckit bloodhound report # Generate markdown findings report
# 完整流程(所有步骤)
adseckit bloodhound pipeline # Collect → Import → Analyze → Report
adseckit bloodhound pipeline --skip-collect # Re-analyze existing data
# 依赖项
adseckit bloodhound install-deps # Install bloodhound + neo4j + ldap3
```
### Kerberos 攻击命令(阶段 3)
```
# 安装 impacket(一次性)
adseckit kerberos install-deps
# LDAP 枚举
adseckit kerberos find-spns # Find Kerberoastable accounts
adseckit kerberos find-asrep # Find AS-REP roastable accounts
# Roasting
adseckit kerberos roast # Kerberoast all SPN accounts
adseckit kerberos roast --target sql_svc # Kerberoast specific user
adseckit kerberos asrep # AS-REP roast all vulnerable accounts
adseckit kerberos asrep --target bob_jones # AS-REP roast specific user
# 针对 BloodHound 的攻击
adseckit kerberos targeted-roast # Kerberoast using BH findings
adseckit kerberos targeted-asrep # AS-REP roast using BH findings
# Hash 破解
adseckit kerberos crack kerberos_data/kerberoast_*.txt
adseckit kerberos crack kerberos_data/asrep_*.txt --wordlist /path/to/wordlist.txt
# 完整流程
adseckit kerberos pipeline # Enumerate → Roast → Report
adseckit kerberos pipeline --crack # Include hash cracking
adseckit kerberos pipeline --skip-enum # Skip LDAP enumeration
```
**哈希格式:**
- Kerberoast: `$krb5tgs$23$*user$realm$service/spn*...` (hashcat 模式 **13100**)
- AS-REP Roast: `$krb5asrep$23$user@realm:...` (hashcat 模式 **18200**)
### 配置
```
adseckit config # Show lab config
adseckit check # Check dependencies
adseckit --version # Show version
```
### BloodHound 工作流演示
```
# 1. 安装依赖项(一次性)
adseckit bloodhound install-deps
# 2. 运行完整流程
adseckit bloodhound pipeline
# 或分步运行:
adseckit bloodhound collect # Collect AD data
adseckit bloodhound start # Start Neo4j
adseckit bloodhound import # Import data into Neo4j
adseckit bloodhound analyze # Find attack paths
adseckit bloodhound report # Generate report
```
**输出:**
- 收集的数据:`bh_data/bh_collect/*.json`
- Neo4j 数据:`bh_data/neo4j_data/`(持久化)
- 报告:`bh_data/bh_report_*.md`
**Neo4j 凭据(仅限本地实验环境):**
- Bolt: `localhost:7687`
- HTTP: `http://localhost:7474` (BloodHound CE / Neo4j Browser)
- 认证:`neo4j` / `bloodhound`
## 项目结构
```
adseckit/
├── Vagrantfile # 2-VM topology (DC01 + WS01)
├── provisioning/
│ ├── ConfigureDC.ps1 # AD DS install + domain promotion
│ ├── InjectVulnsDC.ps1 # DC misconfigs (users, SPNs, ACLs)
│ ├── ConfigureWS.ps1 # Domain join + DNS + tools
│ └── InjectVulnsWS.ps1 # WS misconfigs (priv esc paths)
├── adseckit/ # Python CLI tool
│ ├── __init__.py # Package version
│ ├── __main__.py # python -m adseckit
│ ├── cli.py # Argparse CLI entry point
│ ├── provision.py # Vagrant wrapper (up/down/status/deps)
│ └── config.py # Lab configuration constants
├── pyproject.toml # Package config
└── README.md # This file
```
## 安全提示
- **此实验环境故意存在安全漏洞** —— 切勿将其暴露至您的本地网络
- 虚拟机配置在 **Host-Only 网络** 上 —— 与您的局域网隔离
- 默认凭据已在上方列出,请勿在生产环境中使用
- 不使用时,请务必销毁实验环境:`adseckit provision destroy`
## 作者
**Yash Patil** — 网络安全分析师 | 渗透测试工程师
- 📧 yashpatil7714@gmail.com
- 🔗 [LinkedIn](https://www.linkedin.com/in/yash-patil-997357330)
- 🐙 [GitHub](https://github.com/Yash-Patil-1)
## 许可证
MIT 许可证 — 详情请参阅 [LICENSE](LICENSE)。
标签:AI合规, PE 加载器, Vagrant, Web报告查看器, 攻击模拟, 模拟器, 活动目录, 自动化环境部署, 请求拦截, 逆向工具, 配置修复, 驱动签名利用