Leena-Sai-Sree/Threat-Investigation-Detection-Pipeline
GitHub: Leena-Sai-Sree/Threat-Investigation-Detection-Pipeline
一个端到端的威胁调查与检测分析项目,通过模拟网络攻击流量,自动化检测C2 Beaconing、DGA等恶意行为并提取威胁情报。
Stars: 0 | Forks: 0
# 威胁调查与检测 Pipeline





## 项目概述
本项目实现了一个**端到端的威胁调查与检测 Pipeline**,模拟真实的 SOC 分析师针对恶意网络流量的工作流程。
该 Pipeline 涵盖:
- 合成 C2/恶意软件流量生成(兼容 Zeek 的 conn + DNS 日志)
- 自动化检测 Beaconing、DGA 域名、已知恶意指标和隧道
- 格式化用于威胁情报平台的 IOC 提取
- 从原始日志数据重建攻击时间线
- 7 条可用于生产环境的 Splunk SPL 检测规则
## 问题描述
现代威胁依赖于:
- **Beaconing 植入** - 具有低抖动的周期性回调,以逃避行为检测
- **DGA**(域名生成算法)- 击败静态阻止列表的高熵域名
- **长连接隧道** - 伪装为正常 HTTPS 流量的持久 TCP 会话
- **已知恶意基础设施** - 与活跃威胁行为者活动相关的 C2 IP 和域名
## 环境与工具
| 组件 | 详情 |
|------------|------------------------------------------------------------|
| 语言 | Python 3.10+ |
| 网络分析 | Wireshark / Zeek conn + DNS 日志格式 |
| SIEM | Splunk SPL(7 条检测规则) |
| 核心库 | `pandas`, `numpy`, `matplotlib`, `tabulate`, `colorama` |
| 日志格式 | Zeek `conn.log` TSV,通用 CSV(列标准化) |
| 输出 | CSV 发现、JSON IOC、Markdown 时间线、PNG 图表 |
## 仓库结构
```
threat-detection-pipeline/
├── analysis/
│ ├── c2_beacon_detector.py # Core: beaconing, DGA, port, tunnel detection
│ ├── timeline_reconstructor.py # Merges findings → chronological attack timeline
│ └── visualize_results.py # 4-chart output: severity, types, timing, talkers
├── detections/splunk/
│ ├── detection_rules.spl # 7 Splunk SPL detection rules
│ └── threat_intel_domains.csv # IOC lookup table (domain → actor/family)
├── scripts/
│ └── generate_traffic.py # Synthetic C2/benign traffic generator
├── screenshots/ # Pipeline output screenshots
├── data/ # Auto-generated conn.csv + dns.csv
├── results/ # Pipeline output (findings.csv, iocs.json)
├── run_pipeline.sh # One-command pipeline orchestrator
├── requirements.txt
└── README.md
```
## 方法论
### 步骤 1 - 流量生成
使用 `scripts/generate_traffic.py` 生成了一个逼真的合成网络数据集,模拟具有不同 C2 行为的受损内部主机:
| 主机 | 行为 | C2 IP | 端口 |
|----------------|------------------------------------------------|--------------------|------|
| `10.10.1.50` | Cobalt Strike 风格的 Beacon(60秒 ±0.4秒抖动) | `185.220.101.42` | 443 |
| `10.10.1.50` | 反向 HTTPS 隧道(3194秒持续时间) | `185.220.101.42` | 443 |
| `10.10.1.50` | DGA 域名查询(熵值 3.8–4.1) | - | - |
| `10.10.2.77` | 较慢的 Beacon(120秒 ±0.71秒抖动) | `194.165.16.5` | 8080 |
| `10.10.2.77` | 已知恶意域名查找 | - | - |
| `10.10.3.200` | 可疑端口出站(4444, 1337) | `52.88.14.66` | 4444 |
### 步骤 2 - 检测模块
四个独立的检测引擎对摄入的日志运行:
| 检测器 | 技术 | 阈值 |
|------------------------|--------------------------------------------------------------|-----------------------------------|
| **Beaconing** | 按 (源 IP, 目的 IP, 端口) 分组 → 计算到达时间间隔标准差 | `标准差 < 5.0s`,`计数 ≥ 6` |
| **DGA 域名** | 子域标签上的 Shannon 熵 | `熵值 > 3.8`,`标签长度 > 8` |
| **已知恶意查找** | 与威胁情报域名集进行精确匹配 | 任何匹配 → CRITICAL |
| **长连接** | 出站 TCP 会话的持续时间阈值 | `持续时间 ≥ 300s` |
### 步骤 3 - IOC 提取
所有确认的发现都会经过后处理,生成一个干净的 IOC 集:
- **49 个恶意外部 IP** - 可直接用于防火墙阻止列表或 SIEM 监视列表
- **7 个可疑域名** - 包括 DGA 生成的和已知的恶意 C2 域名
### 步骤 4 - Splunk 检测规则
7 条可用于生产环境的 SPL 规则可在实时 SIEM 环境中复现 Python 检测器的功能:
| 规则 | 检测内容 | 核心逻辑 |
|------|-------------------------------|-------------------------------------------------------|
| 1 | C2 Beaconing | `stdev(duration)` groupby + Beacon 评分公式 |
| 2 | DGA 域名(高熵值) | SPL 中按字符频率的熵计算 |
| 3 | 已知恶意域名查找 | 针对 `threat_intel_domains.csv` 的 `inputlookup` |
| 4 | 可疑端口出站 | `dest_port IN (4444, 1337, 31337, 9001, 9002)` |
| 5 | 长持续时间连接 | `duration_min >= 5` 并进行字节比率分析 |
| 6 | Beaconing (MLTK/DBSCAN) | ML Toolkit 对到达时间差的聚类分析 |
| 7 | 数据渗出异常 | 每小时出站字节与 24 小时滚动基线的 Z-score 分析 |
## 结果
| 指标 | 数值 |
|-----------------------------|------|
| 分析的总连接数 | 358 |
| 分析的总 DNS 记录数 | 173 |
| 生成的总告警数 | **77**|
| 识别的受损主机数 | 3 |
| 恶意外部 IP (IOC) | **49**|
| 可疑域名 (IOC) | **7** |
| CRITICAL 级别告警 | 3 |
| HIGH 级别告警 | 71 |
| MEDIUM 级别告警 | 3 |
## 截图
### 检测输出 - C2 Beaconing 与威胁分析

*分析了 358 个连接和 173 条 DNS 记录。Pipeline 检测到了 Beaconing(平均间隔 120.07秒,标准差 0.71秒)、一个 3194 秒的持久隧道,并在 4 个检测模块中标记了共 77 项发现。*
### 高严重性威胁检测

*跨多个内部主机标记了 68 个 SUSPICIOUS_PORT 事件。在 `10.10.2.77` 上产生了 3 个针对 `update-service.net`、`cdn-delivery.xyz` 和 `analytics-ping.io` 的 CRITICAL 级别 KNOWN_BAD_DOMAIN 命中 - 这些域名均与活跃的 C2 基础设施相关。*
### 提取的威胁情报 - IOC

*提取了 49 个恶意 IP 和 7 个可疑域名。域名包括 DGA 生成的 FQDN(`3ukqpxnsaviqjh0yy.info`、`mlw15y05bck78hnpd.biz`)和已知恶意 C2 域名(`update-service.net`、`cdn-delivery.xyz`)。*
### 结构化检测结果数据集

*`findings.csv` 结构化输出 - 每行包含检测类型、源 IP、目标 IP、端口、严重性和时间元数据。可直接用于导入 SIEM 或进行威胁情报富化。*
### IOC 提取与结果摘要

*由 `10.10.1.50` 查询的 4 个算法生成域名的 DGA 熵值分数在 3.807–4.122 之间。Pipeline 输出:`findings.csv`(6,022 字节)和 `iocs.json`(1,341 字节)已保存至 `results/`。*
## 主要发现
**确认 Beaconing:** 主机 `10.10.2.77` 表现出自动回调行为,平均到达时间间隔为 **120.07 秒,且仅有 0.71秒 的抖动** - 这与在默认休眠模式下运行的 Cobalt Strike 或 Sliver 植入一致。
**检测到 DGA 活动:** 主机 `10.10.1.50` 查询了 4 个算法生成的域名,Shannon 熵值介于 **3.807–4.122** 之间。高熵子域表明存在一个活跃的、基于 DGA 的 C2 备用通道,正在遍历基于种子的词表。
**已知恶意基础设施:** 由 `10.10.2.77` 查询的三个域名与活跃 C2 活动相关的威胁情报条目匹配 - 全部评为 CRITICAL 级别严重性。
**疑似隧道数据渗出:** 一个从 `10.10.1.50` 到端口 443 上 C2 IP 的 **3194 秒 TCP 会话** 表明存在持久性 HTTPS 隧道,可能用于交互式访问或分阶段的数据渗出。
## 如何运行
```
# 1. Clone 仓库
git clone https://github.com/YOUR_USERNAME/threat-detection-pipeline
cd threat-detection-pipeline
# 2. 安装依赖 (Windows 上使用 Anaconda Prompt)
pip install -r requirements.txt
# 3. 生成 synthetic traffic
python scripts/generate_traffic.py
# 4. 运行 detection pipeline
python analysis/c2_beacon_detector.py --conn data/conn.csv --dns data/dns.csv --out results
# 5. 重建 attack timeline
python analysis/timeline_reconstructor.py
# 6. 生成 visualizations
python analysis/visualize_results.py
```
## 局限性
- 合成数据集(n=358 个连接)- 具有方向性,不能在统计上代表生产环境的流量规模
- Beaconing 检测器使用连接持续时间标准差作为间隔代理;要获得真正的精度需要 Zeek `ts` 字段的时间戳
- 没有 JA3/JA3S 哈希分析 - 需要完整的 Zeek SSL 日志集成
- 没有横向移动检测 - 需要 SMB/RDP 日志源
## 可能的扩展
- [ ] 通过 `pyshark` 或 Zeek 实时捕获与真实 PCAP 文件集成
- [ ] 添加 JA3/JA3S TLS 指纹识别,用于 C2 框架识别(Cobalt Strike、Sliver、Havoc)
- [ ] MISP/OpenCTI API 集成以自动提交 IOC
- [ ] Elastic SIEM 检测规则 (EQL) 作为 Splunk SPL 的替代方案
- [ ] 使用 NetworkX 进行基于图的 C2 基础设施映射
## 展示的技能
- 威胁检测与 DFIR
- C2 Beaconing 分析(到达时间间隔、抖动分析)
- 通过 Shannon 熵进行 DGA 检测
- IOC 提取与威胁情报关联
- Splunk SPL - 7 条检测规则,包括 MLTK (DBSCAN)
- Python - 端到端安全自动化 Pipeline
- 攻击时间线重建
- Wireshark / Zeek 网络日志分析
## 作者
**Leena Sai Sree Maridi**
网络安全研究生 | 威胁检测与 DFIR
*在受控的模拟环境中进行,仅供教育和研究目的。*
标签:AMSI绕过, C2 Beaconing, DGA域名, DNS分析, DNS枚举, IOC提取, IP 地址批量处理, Python, Rootkit, SOC分析师, SPL, Wireshark, Zeek, 句柄查看, 威胁情报, 威胁检测, 安全大数据, 安全运营, 开发者工具, 恶意流量检测, 扫描框架, 指标提取, 攻击时间轴, 数字取证与应急响应, 无后门, 端到端, 网络信息收集, 网络安全, 网络安全工具, 网络攻击模拟, 逆向工具, 隐私保护, 隧道检测