jackiecloudsec/threat-hunting-lab
GitHub: jackiecloudsec/threat-hunting-lab
基于 Wazuh SIEM 和多种 DFIR 工具的协作式威胁狩猎训练平台,提供预置攻击场景、内存取证和自动评分,支持 AWS 一键部署。
Stars: 0 | Forks: 0
# 威胁狩猎实验室
用于协作威胁狩猎和 DFIR 练习的共享虚拟机。两名狩猎人员同时通过 SSH 登录,在 Wazuh (SIEM) 中调查预加载的攻击场景,并使用 Volatility、Chainsaw 和 Hayabusa 等取证工具。
## 架构
```
┌─────────────────────────────────────────────────────┐
│ AWS EC2 (t3.large — 2 vCPU, 8GB RAM) │
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │ hunter1 │ │ hunter2 │ ← SSH (concurrent) │
│ └────┬─────┘ └────┬─────┘ │
│ │ │ │
│ ┌────▼──────────────▼────┐ │
│ │ Docker │ │
│ │ ├─ Wazuh Manager │ ← SIEM + log analysis │
│ │ ├─ Wazuh Indexer │ ← OpenSearch backend │
│ │ ├─ Wazuh Dashboard │ ← Web UI (:443) │
│ │ └─ CyberChef │ ← Data analysis (:8080)│
│ └────────────────────────┘ │
│ │
│ /opt/hunting-lab/ │
│ ├── datasets/scenarios/ ← Attack log datasets │
│ ├── datasets/memory/ ← Memory dumps │
│ ├── hunts/ ← Hunt guides │
│ └── tools/ ← DFIR tool installer │
│ │
│ Installed tools: │
│ volatility3, chainsaw, hayabusa, yara, sigma, │
│ plaso, velociraptor, cyberchef, deepbluecli │
└─────────────────────────────────────────────────────┘
```
## 快速入门
### 1. 部署虚拟机
有关完整的设置,请参阅上方的[部署选项](#deployment-options)。
### 2. 连接(两名狩猎人员同时进行)
```
# Hunter 1
ssh hunter1@
# Hunter 2 (不同终端)
ssh hunter2@
```
### 3. 开始狩猎
通过 SSH 登录后:
```
hunt-list # See available scenarios
hunt-load ransomware-veeam # Load scenario into Wazuh
hunt-generate # Generate fresh datasets
hunt-memory ransomware-veeam pslist # Memory forensics (pslist/netscan/handles/cmdline/suspicious)
hunt-score ransomware-veeam # Score your findings when done
```
在浏览器中打开 Wazuh 仪表板:`https://` (admin / HuntLab!)
## 攻击场景
| 场景 | 描述 | 事件 | 关键技术 |
|----------|-------------|--------|---------------|
| ransomware-veeam | RDP 暴力破解 → 凭据转储 → Veeam 备份破坏 → GPO 勒索软件推送 | ~180 | T1110, T1003, T1490, T1486 |
| apt-living-off-the-land | 钓鱼 → 宏 → LOLBins 侦察 → PsExec 横向移动 → 数据窃取 | ~60 | T1566, T1059, T1021, T1567 |
| insider-threat-sabotage | 非工作时间访问 → 批量文件窃取 → USB 数据窃密 → 逻辑炸弹 | ~40 | T1078, T1039, T1052, T1485 |
每个场景都在 `hunts/` 目录中包含一份狩猎指南,其中提供了时间线、狩猎问题、关键工件以及 Wazuh 查询语句。
## 检测规则
自定义 Wazuh 规则位于 `docker/wazuh-rules/hunting-lab-rules.xml`,并会自动挂载到 Wazuh Manager 容器中。
部分规则被故意**禁用**(已注释掉),以便狩猎人员必须手动寻找这些攻击阶段,而不是依赖警报。启用的规则将在仪表板中作为 Wazuh 警报触发。这创建了一个贴近现实的寻找盲点练习。
| 规则 ID | 检测项 | 状态 |
|---------|-----------|--------|
| 100001-100002 | RDP 暴力破解 | 启用 |
| 100010 | LSASS 凭据转储 | 启用 |
| 100020 | Veeam 服务关闭 | 启用 |
| 100030-100031 | 卷影副本删除 | 启用 |
| 100040 | GPO 修改 | **禁用** |
| 100050-100051 | Word 宏 / 编码 PowerShell | 启用 |
| 100060 | 注册表 Run 键持久化 | **禁用** |
| 100070 | DNS 隧道 | 启用 |
| 100080 | USB 设备连接 | **禁用** |
| 100090 | 审计日志清除 | 启用 |
| 100095 | 计划任务创建 | 启用 |
| 100098 | 启动恢复禁用 | 启用 |
## 添加新场景
在 `scripts/generate_datasets.py` 中创建一个新的生成器函数:
```
def generate_my_scenario():
events = []
# ... generate events with make_event() ...
return events
# 添加到 SCENARIOS 字典:
SCENARIOS["my-scenario"] = ("Description", generate_my_scenario)
```
然后运行:
```
python3 scripts/generate_datasets.py --scenario my-scenario
```
新数据集将出现在 `datasets/scenarios/` 中,并可以加载到虚拟机上的 Wazuh 中。
## 添加新 DFIR 工具
编辑 `tools/install.sh` —— 添加一个函数并注册它:
```
install_my_tool() {
log "Installing my-tool..."
# ... install commands ...
log "my-tool ready"
}
# 添加到 TOOLS 数组:
[my_tool]="My Tool — description here"
```
然后执行:`sudo ./tools/install.sh my_tool`
## 部署选项
### 选项 A:Cloud-init(简单,启动约需 15 分钟)
```
cd terraform
cp terraform.tfvars.example terraform.tfvars
# 编辑 terraform.tfvars — 添加 SSH 密钥、允许的 IP
terraform init && terraform apply
```
Cloud-init 在首次启动时安装所有内容。大约需要 15 分钟,但无需额外的工具。
### 选项 B:通过 Packer 预构建 AMI(快速,启动约需 2 分钟)
```
cd packer
packer init hunting-lab.pkr.hcl
packer build hunting-lab.pkr.hcl
# 记下输出中的 AMI ID
cd ../terraform
cp terraform.tfvars.example terraform.tfvars
# 添加:use_custom_ami = "ami-xxxxxxxxx"
terraform init && terraform apply
```
Packer 将 Docker、Wazuh 镜像、DFIR 工具和数据集预安装到 AMI 中。虚拟机启动后约 2 分钟即可开始狩猎。
## 成本管理
- **t3.xlarge 常开:** ~$120/月
- **开启自动停止(默认 UTC 凌晨 2 点):** ~$40-50/月,具体取决于使用情况
- **停止的实例:** ~$8/月(仅 EBS 存储)
- **已销毁:** $0
```
make stop # Stop the VM (keeps data)
make start # Start it back up
make destroy # Delete everything
```
## 命令
```
make help Show all commands
make deploy Deploy VM to AWS
make destroy Tear down VM
make start Start stopped VM
make stop Stop VM (saves money)
make status Connection info + cost
make ssh1 SSH as hunter1
make ssh2 SSH as hunter2
make generate Generate all datasets
make list-scenarios List attack scenarios
make install-tools Install all DFIR tools (on VM)
make list-tools List available DFIR tools
```
标签:AWS EC2, Chainsaw, CyberChef, Docker, Hayabusa, SecList, SSH并发, TGT, Wazuh, 内存取证, 协作式虚拟机, 子域名变形, 安全信息与事件管理, 安全运营, 安全防御评估, 扫描框架, 搜索引擎爬取, 攻击场景, 攻防演练, 数字取证与事件响应, 无线安全, 网络安全靶场, 评分系统, 请求拦截, 逆向工具, 黑客实验