hamzaefecarikci/malware-c2-network-analysis
GitHub: hamzaefecarikci/malware-c2-network-analysis
将恶意软件家族与C2基础设施的关系建模为二分图网络,利用社交网络分析方法识别关键枢纽、跨家族桥梁及评估基础设施抗毁性的威胁情报研究工具。
Stars: 0 | Forks: 0
# 恶意软件 ↔ C2 社交网络分析
将恶意软件家族与 Command & Control (C2) 基础设施之间的关系建模为**二分图网络**;利用社交网络分析方法对网络中心的关键节点、家族间的桥梁以及**抗毁性**进行分析。
**数据来源:** [abuse.ch ThreatFox](https://threatfox.abuse.ch/) (7 天快照,2026-05-04 → 2026-05-11)
## 📊 概览
| | 数值 |
|---|---:|
| 节点数 | 4.185 (57 个恶意软件家族 + 4.128 个 IOC) |
| 边数 | 4.128 |
| 连通分量 | 57 (每个家族 → 1 个星形图) |
| 直径 | 2 (星形拓扑) |
| 模块度 (Louvain) | 0.5422 |
| **基于 ASN 的桥梁** | **35** (DigitalOcean, ColoCrossing, AWS, Hetzner, …) |
| **抗毁性** | 定向移除 20 个节点后 LCC 从 64% → 0.3% (scale-free) |

## 🎯 研究问题
**发现摘要(详见报告):**
- **57 个独立的星形图** — 每个恶意软件家族都使用自己孤立的 IOC 集合。
- **ClearFake** 是主要枢纽(占图的 64%)。
- **直接 IOC 桥梁为 0**,但 **在 ASN 层面存在 35 个桥梁** — 托管行业是桥梁机制。
- **Scale-free 抗毁性不对称**:对随机攻击极具抗性,对定向攻击极为脆弱。
## 🚀 快速开始
### 前置条件
- Python 3.10+ (推荐 3.12)
- [abuse.ch Auth-Key](https://auth.abuse.ch/) (免费账户)
- 约 2 GB 磁盘空间 (venv + 数据 + ASN 表)
### 安装
```
# 1. Clone Repository
git clone https://github.com//malware-c2-network-analysis.git
cd malware-c2-network-analysis
# 2. Sanal ortam (Windows için: .venv\Scripts\activate)
python -m venv .venv
source .venv/bin/activate # Linux/Mac
# .venv\Scripts\Activate.ps1 # Windows PowerShell
# 3. Bağımlılıklar
pip install -r requirements.txt
# 4. API anahtarı
cp .env.example .env
# Sonra .env içindeki ABUSE_CH_API_KEY=... değerini doldur
```
### 运行 Pipeline
命令按顺序执行,每个阶段使用前一阶段的输出:
```
python -m src.collect # ThreatFox API → data/raw/threatfox_YYYY-MM-DD.json (~1s)
python -m src.preprocess # Temizleme + ASN enrichment → data/processed/*.csv (~10s, ilk seferde ASN tablosu indirilir)
python -m src.build_graph # NetworkX graph → outputs/graphs/network.graphml (~1s)
python -m src.analyze # 5 merkezilik + Louvain + bridges + dayanıklılık → outputs/tables/*.csv (~30s)
python -m src.visualize # 7 PNG + interaktif HTML → outputs/figures/, outputs/graphs/ (~30s)
```
或者使用 Jupyter 一次性完成全部分析:
```
jupyter notebook notebooks/main_analysis.ipynb
```
## 🏗️ 架构
```
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ collect.py │ → │ preprocess │ → │ build_graph │ → │ analyze.py │ → │ visualize.py │
│ │ │ .py │ │ .py │ │ │ │ │
│ ThreatFox │ │ Temizle + │ │ NetworkX │ │ 5 merkezilik │ │ 7 PNG + │
│ API (1 POST) │ │ ASN enrich │ │ Graph │ │ Louvain │ │ PyVis HTML │
└──────────────┘ └──────────────┘ └──────────────┘ │ Bridge │ └──────────────┘
↑ ▲ │ Resilience │
│ │ └──────────────┘
┌───────┴───────┐ │
│ asn_enrich.py │ │
│ (iptoasn.com) │ │
└───────────────┘ │
│
data/raw/*.json ───┘ (excluded from git)
data/processed/*.csv → (tracked)
outputs/* → (tracked)
```
### 模块
| 模块 | 职责 |
|---|---|
| `src/collect.py` | 从 ThreatFox API 获取 7 天的 IOC 数据 |
| `src/preprocess.py` | 清理、规范化、`/24` 子网 + ASN 丰富化,生成 edges/nodes CSV |
| `src/asn_enrich.py` | 下载 iptoasn.com IPv4→ASN 表并基于范围查找 |
| `src/build_graph.py` | CSV → NetworkX Graph → GraphML |
| `src/analyze.py` | 基本指标,5 种中心性 (degree/betweenness/closeness/eigenvector/pagerank),Louvain,子网+ASN 桥梁,抗毁性 |
| `src/visualize.py` | 7 张静态 PNG (matplotlib) + 1 个交互式 HTML (PyVis) |
## 📁 目录结构
```
malware-c2-network-analysis/
├── CLAUDE.md # Proje bağlamı + kurallar
├── PLAN.md # Aşama aşama görev listesi (her aşama ✅)
├── README.md # Bu dosya
├── LICENSE # MIT
├── requirements.txt
├── .env.example
├── .gitignore
│
├── data/
│ ├── raw/ # Ham JSON (gitignored, API'den çekilir)
│ └── processed/ # Temiz edges.csv + nodes.csv (tracked)
│
├── src/ # 6 Python modülü
│
├── notebooks/
│ ├── main_analysis.ipynb # Tam pipeline showcase (çalıştırılmış, ~10 MB)
│ └── exploration.ipynb # Aşama 1 pilot keşif
│
├── outputs/
│ ├── figures/ # 7 PNG (overview, centrality, community, histogram, bridges×2, resilience)
│ ├── tables/ # 10 CSV (centrality top-5/top-20, communities, bridges, resilience, basic metrics)
│ └── graphs/ # GraphML (Gephi) + interaktif HTML (PyVis)
│
└── reports/
├── final_report.md # Akademik rapor, 9 bölüm (~26 KB, ~10 sayfa)
└── presentation.md # 8-slayt sunum (Marp/Pandoc uyumlu)
```
## 🔬 发现(摘要)
### Top 5 恶意软件家族 (Degree Centrality)
| 排名 | 家族 | Degree | 备注 |
|---:|---|---:|---|
| 1 | **ClearFake** | 0.646 | 伪造更新 / drive-by,2.703 个 IOC |
| 2 | Vidar | 0.159 | Info-stealer,666 个 IOC |
| 3 | Kimwolf | 0.027 | 115 个 IOC |
| 4 | Remcos | 0.026 | RAT,107 个 IOC |
| 5 | Cobalt Strike | 0.019 | 79 个 IOC |
### Top 桥梁 ASN (托管提供商共享)
| AS# | 组织 | 家族数 | IP数 | 特征 |
|---|---|---:|---:|---|
| AS202412 | OMEGATECH-AS | **8** | 15 | Bulletproof |
| AS14061 | **DIGITALOCEAN** | 7 | 45 | Cloud abuse |
| AS36352 | **COLOCROSSING** | 6 | 14 | Bulletproof |
| AS24940 | **HETZNER** | 5 | 22 | Cloud abuse |
| AS16509 | **AMAZON (AWS)** | 3 | 18 | Cloud abuse |
| AS13335 | **CLOUDFLARE** | 2 | 8 | Cloud abuse |

### 抗毁性 (Scale-Free 行为)

移除 20 个节点后:
- **定向攻击:** LCC 2.704 → **11** (64% → 0.3%)
- **随机攻击:** LCC 2.704 → 2.689 (64% → 64.3%)
## 📖 详细报告
完整学术报告:**[`reports/final_report.md`](reports/final_report.md)** (9 个章节,符合模板规范,约 10 页)。
口头报告演示:**[`reports/presentation.md`](reports/presentation.md)** (8 张幻灯片,可使用 Marp 转换为 PDF)。
交互式完整 Pipeline 查看:**[`notebooks/main_analysis.ipynb`](notebooks/main_analysis.ipynb)** (内嵌已生成的图表)。
## 👥 团队
| 姓名 | 贡献 | 联系方式 |
|---|---|---|
| Hamza | 数据收集,Pipeline 架构,分析,报告撰写 | — |
| _(第 2 位成员)_ | _(填写角色)_ | — |
| _(第 3 位成员)_ | _(填写角色)_ | — |
## 📚 使用的工具 / 资源
- **数据:** [abuse.ch ThreatFox](https://threatfox.abuse.ch/) (CC0 许可,开放威胁情报)
- **ASN 映射:** [iptoasn.com](https://iptoasn.com/) (每日更新的 IPv4→ASN 表)
- **NetworkX:** Hagberg et al., 2008 — Python graph 库
- **Louvain:** Blondel et al., 2008 — 社区发现
- **PageRank:** Brin & Page, 1998
- **Scale-free 抗毁性:** Albert, Jeong & Barabási, 2000, *Nature* 406:378–382
完整参考文献:`reports/final_report.md` 的“参考文献”章节。
## ⚠️ 道德声明与局限性
- 本项目仅用于**学术目的**,并非实时威胁情报系统。
- 所有 IOC 均取自 abuse.ch 的公开数据库。
- 报告中的 IP 地址已**屏蔽最后一部分**(`xxx`)。
- 数据属于**7 天快照**;结果仅针对该时间窗口有效。
- **切勿将您的 API 密钥提交到仓库。** `.env` 文件已通过 `.gitignore` 排除。
## 📄 许可证
MIT — 详见 [`LICENSE`](LICENSE)。
## 🤝 参与贡献
这是一个一次性的课程项目,但您可以随意 fork 并扩展。建议:
- **ASN 社区分析:** 根据“提供的服务内容”对托管提供商进行聚类。
- **多快照时间序列:** 在 90 天内每周拉取数据。
- **Domain registrar enrichment:** 使用 `tldextract` 检测跨家族的共同注册商。
- **MISP / OTX 集成:** 进行交叉归因检查。
标签:ASN分析, C2基础设施, ClearFake, IOC指标, IP 地址批量处理, Louvain算法, NetworkX, Python, Scale-free网络, ThreatFox, URL抓取, 二分图, 只读文件系统, 命令与控制, 图论, 威胁情报, 安全可视化, 安全数据分析, 开发者工具, 恶意软件, 恶意软件家族, 数据抓取, 无后门, 枢纽节点, 模块度, 特权检测, 社会网络分析, 突变策略, 系统分析, 网络信息收集, 网络分析, 网络安全, 网络弹性, 网络拓扑结构, 逆向工具, 隐私保护