millie-altman/cti-research-lab
GitHub: millie-altman/cti-research-lab
一个集成的威胁情报和自动化OSINT研究环境,支持端到端威胁分析。
Stars: 1 | Forks: 0
# CTI 研究实验室
**分析师:** Millie Altman







**分类:** 未分类 // 仅限组合使用
**环境类型:** 紫色团队研究实验室
**框架:** MITRE ATT&CK | 钻石模型
**状态:** 活动
## 内容
- [实验室环境](#lab-environment)
- [第一阶段 — 基础与遥测](#phase-1--foundation--telemetry-infrastructure)
- [第二阶段 — 被动检测](#phase-2--passive-detection-operations)
- [第三阶段 — 激活对手模拟](#phase-3--active-adversary-emulation)
- [检测覆盖总结](#detection-coverage-summary)
- [计划研究](#planned-research)
## 概述
一个受控的紫色团队研究环境,旨在模拟已记录的对手技术,验证检测能力,并产生可操作的情报发现。实验室在三个功能阶段运行 — 基础设施和遥测、被动检测操作和激活对手模拟 — 每个阶段都建立在之前的基础上,以支持从初始访问到取证调查的端到端威胁分析。
所有练习都是ATT&CK映射的、证据记录的和分析上下文化的。发现直接输入到完成的情报产品中,并在更广泛的组合中维护的威胁行为者配置文件。
## 实验室环境
| 组件 | 角色 |
|---|---|
| VMware Workstation (NAT) | 隔离的虚拟机管理程序环境 |
| Wazuh (Manager + Indexer + Dashboard) | SIEM — 日志聚合、警报引擎、威胁狩猎 |
| Windows 10 Pro + Sysmon | 受害端点 — 精细的过程和网络遥测 |
| Kali Linux 2026.x | 对手节点 — 攻击模拟和侦察 |
| Atomic Red Team | ATT&CK映射的对手技术模拟框架 |
| AbuseIPDB API | 威胁情报丰富 — IP声誉查找 |
**设计说明:** Wazuh代理在受害者和对手节点上部署。这种紫色团队配置在单个SIEM视图中捕获完整的攻击生命周期 — 攻击者操作和受害者遥测。
## 第一阶段 — 基础与遥测基础设施
### 目标
建立一个稳定、隔离的研究环境,具有端点遥测收集功能,能够支持对手模拟和取证分析。
### 已完成工作
**SIEM部署**
在VMware NAT网络上通过OVA部署了Wazuh。将Windows 10 Pro注册为受监控的端点,并在Wazuh仪表板中确认代理活动状态。
**端点遥测 — Sysmon**
安装了64位的Sysmon,并启用了网络监控。配置Windows Wazuh代理以摄取`Microsoft-Windows-Sysmon/Operational`事件通道 — 将遥测扩展到标准Windows事件日志之外,以捕获:
- EID 1 — 带有完整命令行参数的过程创建
- EID 3 — 带有源/目标元数据的网络连接
- EID 5 — 进程终止
**文件完整性监控**
在自定义监控目录(`C:\lab_monitor`)上配置了实时FIM。在活动发生后几秒钟内验证了文件创建、修改和删除事件的警报生成。
**对手节点集成**
部署了Kali Linux 2026.x作为受控的对手节点。诊断并解决了DHCP子网不匹配问题,将资产分割到两个网络范围 — 将所有虚拟适配器迁移到统一的VMnet8 NAT段,并更新了代理配置。将Kali注册为Wazuh代理以实现紫色团队遥测覆盖。
**网络验证**
在Windows端点上创建了一个范围有限的ICMPv4入站防火墙规则(`Allow_Lab_Ping`),以允许在实验室子网内进行受控的双向通信。确认了三节点连接性。
| 证据 | |
|---|---|
| 自定义防火墙规则(ICMPv4,子网范围) |  |
| Wazuh — 两个代理同时活动 |  |
| Ping确认 — Kali到Windows |  |
| Ping确认 — Windows到Kali |  |
| ossec.conf — Sysmon通道配置 |  |
| Sysmon遥测已确认在Wazuh中 |  |
完整文档:[`docs/Day1_Foundation.md`](./docs/day1-foundation.md) | [`docs/Day2_Attacker_Setup.md`](./docs/day2-attacker-setup.md)
## 第二阶段 — 被动检测操作
### 目标
在没有激活模拟的情况下,针对现实对手活动验证检测管道 — 建立SIEM检测、检测精度和条件的基础。
### 练习2.1 — 侦察检测(T1046)
**方法:** 从Kali对手节点对Windows端点执行了激进的Nmap扫描(`nmap -A -T4`)。
**防火墙结果:** 所有1000个扫描端口都返回了过滤 — 基于主机的外围控制成功阻止了未经请求的入站流量。
**SIEM结果:** Wazuh独立检测到侦察尝试,生成了以下警报:
| 规则 | 描述 |
|---|---|
| 92031 | 执行了发现活动 — Nmap脚本引擎检测到 |
| 92032 | 可疑的Windows cmd shell执行 |
| Sysmon EID 3 | 在进程遥测中捕获了来自Kali IP的网络连接 |
**分析发现:** 多层防御验证。防火墙阻止了访问;SIEM检测到了意图。仅依赖防火墙阻止日志的分析师将无法看到Nmap NSE活动。分层遥测是检测要求,而不是增强。
| 证据 | |
|---|---|
| Nmap终端 — 所有端口过滤 |  |
| Wazuh — 规则92031和92032 |  |
完整文档:[`docs/Day3_Detection_Operations.md`](./docs/day3-detection-operations.md)
## 第三阶段 — 激活对手模拟
### 目标
使用Atomic Red Team模拟已记录的对手技术,分析Wazuh中的结果遥测,并开发自定义检测逻辑以解决已识别的差距。所有练习都映射到MITRE ATT&CK,并针对真实威胁行为者报告进行上下文化。
### 练习3.1 — 持久性模拟(T1053.005)
**技术:** 调度任务/作业:调度任务
**威胁行为者上下文:** APT29在SolarWinds妥协期间使用`schtasks.exe`建立SUNSPOT持久性,这是一种在MITRE ATT&CK小组报告中记录的技术。
**执行:**
```
Invoke-AtomicTest T1053.005 -TestNumbers 1
```
**结果:** 成功创建了两个持久性任务 — `T1053_005_OnLogon`(在用户登录时执行)和`T1053_005_OnStartup`(在系统启动时执行)。
**取证分析:** 在前15分钟窗口内查询了Wazuh威胁狩猎,并恢复了显示`cmd.exe`生成`schtasks.exe`的Sysmon EID 1进程创建事件。捕获的原始JSON有效负载包含了注册两个任务所使用的完整命令行参数,包括触发器和操作,提供了持久机制完整的取证重建。
**关键恢复证据:**
| 字段 | 值 |
|---|---|
| `data.win.eventdata.image` | `C:\\Windows\\System32\\schtasks.exe` |
| `data.win.eventdata.parentImage` | `C:\\Windows\\System32\\cmd.exe` |
| `data.win.eventdata.commandLine` | 包含任务名称和触发器的完整`schtasks /create`命令 |
**补救措施:`Invoke-AtomicTest T1053.005 -TestNumbers 1 -Cleanup` — 清除任务,端点返回到验证基线**。
| 证据 | |
|---|---|
| Atomic Red Team — 安装和T1053.005测试枚举 |  |
| 任务创建已确认 — 两个任务处于就绪状态 |  |
| Wazuh JSON — schtasks.exe进程树和完整cmdline |  |
| 清理 — 持久性任务已清除 |  |
完整文档:[`docs/Day4_Adversary_Simulation.md`](./docs/day4-adversary-simulation.md)
### 练习3.2 — 自定义检测规则工程(T1059.001)
**目标:** 设计一个自定义Wazuh检测规则,将实时Sysmon遥测与本地威胁情报指示数据库相关联 — 关闭任何默认规则都没有解决的检测差距。
#### 威胁情报数据库
创建了一个包含一个归因于模拟APT29活动的文件指示符的Wazuh CDB列表:
```
/var/ossec/etc/lists/custom-intel-blacklist
malicious_script.ps1:APT29_Campaign
```
在规则集块下注册列表,用于在规则评估期间进行活动内存查找。
#### 规则开发
**最终规则 — `local_rules.xml`:**
```
92029
(?i)malicious_script\.ps1
CTI Match: System Log Contains Known Malicious Indicator
T1059.001
```
**设计理由:**
`92029 `将规则范围限定为Sysmon进程创建事件 — 这是必需的,以便Wazuh解析器访问`win.eventdata`字段树。PCRE2不区分大小写的匹配在命令行字段上提供了可靠的检测,针对现实世界有效负载变体,而不依赖于精确的字符串格式。
#### 工程迭代
在规则100050正确触发之前,测试了三种配置。每次失败都揭示了Wazuh日志解析架构中的特定约束:
| 迭代 | 方法 | 结果 | 原因 |
|---|---|---|---|
| 1 | ``标签 — 广泛的字符串扫描 | 规则从未触发 | ``仅扫描原始syslog标题;Sysmon将命令行数据存储在嵌套字段对象中,这些对象无法访问此标签 |
| 2 | `ossec ` + 字段定位 | 管理器解析失败 | 没有显式的``父规则依赖项,引擎无法解析`win.eventdata`字段树 |
| 3 | `lookup="match_key_value"`针对CDB列表 | 静默查找失败 | Windows事件有效负载字符串与平面CDB文本格式之间的尾随空格不匹配 |
| 证据 | |
|---|---|
| CDB列表 — 威胁指示数据库 |  |
| ossec.conf — 在规则集块下注册列表 |  |
| local_rules.xml — 规则100050 |  |
| 迭代1错误 — 匹配标签 |  |
| 迭代2错误 — 类别不兼容 |  |
| 迭代3错误 — 查找语法 |  |
#### 运营验证
在Windows端点上执行了黑名单指示符:
```
Write-Output "Write-Host 'Running campaign checks...'" > C:\Windows\Temp\malicious_script.ps1
powershell.exe -ExecutionPolicy Bypass -File C:\Windows\Temp\malicious_script.ps1
```
**结果:** 规则100050触发 — 生成级别12高严重性警报,并确认了MITRE T1059.001映射。
| 证据 | |
|---|---|
| 执行黑名单指示符的PowerShell |  |
| Wazuh — 规则100050,级别12,确认检测 |  |
完整文档:[`docs/Day5_Threat_Intelligence_Enrichment.md`](./docs/day5-threat-intelligence-enrichment.md)
### 练习3.3 — CTI分析与对手配置文件
**目标:** 将实验室遥测与开源情报相关联,构建对手配置文件,并使用ATT&CK导航器映射检测覆盖。
#### 取证分析
| 文件 | 分析师评估 |
|---|---|
| 二进制:`powershell.exe` | 基于本地执行 — 原生实用程序不产生恶意软件签名;绕过基于签名的检测(T1059.001) |
| 标志:`-ExecutionPolicy Bypass -File` | 故意绕过Windows脚本执行策略 — 与未签名或不受信任的有效负载部署一致 |
| 路径:`C:\Windows\Temp\` | 易失性目录执行 — 高置信度指示了利用后的部署活动 |
#### OSINT相关性 — APT29
将实验室观察到的指示符与MITRE ATTCK APT29小组文档进行了交叉引用:
- **T1059.001:** APT29使用编码的PowerShell来解包二级有效负载(CozyCar,SeaDuke)并绕过执行控制 — 与观察到的执行标志和路径一致
- **T1053.005:** APT29在SolarWinds妥协期间使用`schtasks.exe`建立SUNSPOT持久性 — 与练习3.1模拟一致
#### ATT&CK导航器覆盖
构建了ATT&CK导航器层,以可视化验证的检测覆盖针对模拟技术,并确定需要额外规则工程才能解决的差距。

#### 钻石模型
```
[ ADVERSARY ]
(APT29)
/ \
/ \
[ CAPABILITY ]——[ INFRASTRUCTURE ]
(T1059.001 (C:\Windows\Temp\
T1053.005) staging path)
\ /
\ /
[ VICTIM ]
(Windows endpoint)
```
| 证据 | |
|---|---|
| MITRE ATT&CK — APT29 T1059.001 |  |
| MITRE ATT&CK — APT29 T1053.005 |  |
| Wazuh — 规则100050取证遥测 |  |
完整文档:[`docs/Day6_Adversary_Profiling_OSINT.md`](./docs/day6-adversary-profiling_OSINT.md)
## 检测覆盖总结
| 技术 | ATT&CK ID | 检测到 | 检测方法 |
|---|---|---|---|
| 网络服务发现 | T1046 | 是 | Wazuh规则92031 / 92032 |
| 调度任务持久性 | T1053.005 | 是 | Sysmon EID 1 — schtasks.exe进程树 |
| PowerShell执行 | T1059.001 | 是 | 自定义规则100050 — 级别12 |
| 文件完整性违规 | T1565 | 是 | Wazuh FIM — 实时 |
## IP丰富工具
在实验室操作期间开发的Python脚本,用于自动化对SIEM
标签:逆向工具