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) | ![网络概览](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/c2138e9247103028.png) ## 🎯 研究问题 **发现摘要(详见报告):** - **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 | ![桥梁 ASN](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/76b00f2244103029.png) ### 抗毁性 (Scale-Free 行为) ![抗毁性](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/514954e5b3103030.png) 移除 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抓取, 二分图, 只读文件系统, 命令与控制, 图论, 威胁情报, 安全可视化, 安全数据分析, 开发者工具, 恶意软件, 恶意软件家族, 数据抓取, 无后门, 枢纽节点, 模块度, 特权检测, 社会网络分析, 突变策略, 系统分析, 网络信息收集, 网络分析, 网络安全, 网络弹性, 网络拓扑结构, 逆向工具, 隐私保护