Leena-Sai-Sree/Threat-Investigation-Detection-Pipeline

GitHub: Leena-Sai-Sree/Threat-Investigation-Detection-Pipeline

一个端到端的威胁调查与检测分析项目,通过模拟网络攻击流量,自动化检测C2 Beaconing、DGA等恶意行为并提取威胁情报。

Stars: 0 | Forks: 0

# 威胁调查与检测 Pipeline ![Python](https://img.shields.io/badge/Python-3.10%2B-3776AB?style=for-the-badge&logo=python&logoColor=white) ![Splunk](https://img.shields.io/badge/Splunk-SIEM%20Detections-FF6900?style=for-the-badge&logo=splunk&logoColor=white) ![Wireshark](https://img.shields.io/badge/Wireshark-Traffic%20Analysis-1679A7?style=for-the-badge&logo=wireshark&logoColor=white) ![状态](https://img.shields.io/badge/Status-Complete-brightgreen?style=for-the-badge) ![类别](https://img.shields.io/badge/Category-Threat%20Detection%20%7C%20DFIR-8B0000?style=for-the-badge) ## 项目概述 本项目实现了一个**端到端的威胁调查与检测 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 与威胁分析 ![C2 Beaconing 和威胁检测结果](https://raw.githubusercontent.com/Leena-Sai-Sree/Threat-Investigation-Detection-Pipeline/main/screenshots/C2-beaconing-and-threat-detection-results_png.png) *分析了 358 个连接和 173 条 DNS 记录。Pipeline 检测到了 Beaconing(平均间隔 120.07秒,标准差 0.71秒)、一个 3194 秒的持久隧道,并在 4 个检测模块中标记了共 77 项发现。* ### 高严重性威胁检测 ![高严重性威胁检测](https://raw.githubusercontent.com/Leena-Sai-Sree/Threat-Investigation-Detection-Pipeline/main/screenshots/High-severity-threat-detections_png.png) *跨多个内部主机标记了 68 个 SUSPICIOUS_PORT 事件。在 `10.10.2.77` 上产生了 3 个针对 `update-service.net`、`cdn-delivery.xyz` 和 `analytics-ping.io` 的 CRITICAL 级别 KNOWN_BAD_DOMAIN 命中 - 这些域名均与活跃的 C2 基础设施相关。* ### 提取的威胁情报 - IOC ![提取的威胁情报 IOC](https://raw.githubusercontent.com/Leena-Sai-Sree/Threat-Investigation-Detection-Pipeline/main/screenshots/extracted-threat-intelligence-iocs_png.png) *提取了 49 个恶意 IP 和 7 个可疑域名。域名包括 DGA 生成的 FQDN(`3ukqpxnsaviqjh0yy.info`、`mlw15y05bck78hnpd.biz`)和已知恶意 C2 域名(`update-service.net`、`cdn-delivery.xyz`)。* ### 结构化检测结果数据集 ![检测结果数据集](https://raw.githubusercontent.com/Leena-Sai-Sree/Threat-Investigation-Detection-Pipeline/main/screenshots/detection-findings-dataset_png.png) *`findings.csv` 结构化输出 - 每行包含检测类型、源 IP、目标 IP、端口、严重性和时间元数据。可直接用于导入 SIEM 或进行威胁情报富化。* ### IOC 提取与结果摘要 ![IOC 提取和结果摘要](https://raw.githubusercontent.com/Leena-Sai-Sree/Threat-Investigation-Detection-Pipeline/main/screenshots/Ioc-extraction-and-results-summary_png.png) *由 `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, 句柄查看, 威胁情报, 威胁检测, 安全大数据, 安全运营, 开发者工具, 恶意流量检测, 扫描框架, 指标提取, 攻击时间轴, 数字取证与应急响应, 无后门, 端到端, 网络信息收集, 网络安全, 网络安全工具, 网络攻击模拟, 逆向工具, 隐私保护, 隧道检测