millie-altman/cti-research-lab

GitHub: millie-altman/cti-research-lab

一个集成的威胁情报和自动化OSINT研究环境,支持端到端威胁分析。

Stars: 1 | Forks: 0

# CTI 研究实验室 **分析师:** Millie Altman ![紫色团队](https://img.shields.io/badge/Focus-Purple%20Team%20Research-darkred) ![MITRE ATT&CK](https://img.shields.io/badge/Framework-MITRE%20ATT%26CK-red) ![钻石模型](https://img.shields.io/badge/Framework-Diamond%20Model-blue) ![Wazuh](https://img.shields.io/badge/Tool-Wazuh%20SIEM-blue) ![Sysmon](https://img.shields.io/badge/Tool-Sysmon-lightgrey) ![Atomic Red Team](https://img.shields.io/badge/Tool-Atomic%20Red%20Team-orange) ![TLP:CLEAR](https://img.shields.io/badge/TLP-CLEAR-white) **分类:** 未分类 // 仅限组合使用 **环境类型:** 紫色团队研究实验室 **框架:** 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,子网范围) | ![防火墙规则](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/d59aac3de6030335.png) | | Wazuh — 两个代理同时活动 | ![代理活动](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/7ed63a49ad030336.png) | | Ping确认 — Kali到Windows | ![Ping K→W](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/2a00b22849030349.png) | | Ping确认 — Windows到Kali | ![Ping W→K](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/7c690da0d6030350.png) | | ossec.conf — Sysmon通道配置 | ![OSSEC配置](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/6449f498fc030351.png) | | Sysmon遥测已确认在Wazuh中 | ![Sysmon](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/c2fd2d6664030351.png) | 完整文档:[`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终端 — 所有端口过滤 | ![Nmap](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/c2f9e3c9d8030352.png) | | Wazuh — 规则92031和92032 | ![警报](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/14e6f94d9e030353.png) | 完整文档:[`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测试枚举 | ![Atomic](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/5cdbd8df95030356.png) | | 任务创建已确认 — 两个任务处于就绪状态 | ![任务](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/1e81c082b9030357.png) | | Wazuh JSON — schtasks.exe进程树和完整cmdline | ![JSON](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/4e1a2517a1030358.png) | | 清理 — 持久性任务已清除 | ![清理](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/0db2465ea0030400.png) | 完整文档:[`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列表 — 威胁指示数据库 | ![CDB](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/c770cd17bd030401.png) | | ossec.conf — 在规则集块下注册列表 | ![ossec](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/48a388337d030402.png) | | local_rules.xml — 规则100050 | ![规则](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/d5bbd12b63030402.png) | | 迭代1错误 — 匹配标签 | ![Err1](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/00cc1d1046030403.png) | | 迭代2错误 — 类别不兼容 | ![Err2](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/207f46ed61030404.png) | | 迭代3错误 — 查找语法 | ![Err3](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/a6b5937e22030405.png) | #### 运营验证 在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 | ![PS](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/a476b83b6b030405.png) | | Wazuh — 规则100050,级别12,确认检测 | ![警报](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/b8b356b191030406.png) | 完整文档:[`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导航器层,以可视化验证的检测覆盖针对模拟技术,并确定需要额外规则工程才能解决的差距。 ![ATT&CK导航器](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/4087937bbe030407.png) #### 钻石模型 ``` [ ADVERSARY ] (APT29) / \ / \ [ CAPABILITY ]——[ INFRASTRUCTURE ] (T1059.001 (C:\Windows\Temp\ T1053.005) staging path) \ / \ / [ VICTIM ] (Windows endpoint) ``` | 证据 | | |---|---| | MITRE ATT&CK — APT29 T1059.001 | ![T1059](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/ebd41d27e9030408.png) | | MITRE ATT&CK — APT29 T1053.005 | ![T1053](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/7dced558e8030409.png) | | Wazuh — 规则100050取证遥测 | ![取证](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/2025a6802c030409.png) | 完整文档:[`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
标签:逆向工具