isarmadfarooq/APT29-CTI-STIX21-Pipeline

GitHub: isarmadfarooq/APT29-CTI-STIX21-Pipeline

基于 GPT-4o 的自动化威胁情报流水线,将 PDF 格式的 APT 报告转化为符合 STIX 2.1 标准的结构化知识图谱。

Stars: 0 | Forks: 0

# 🛡️ APT29 CTI Pipeline — 基于 LLM 的威胁情报与 STIX 2.1 生成
![Python](https://img.shields.io/badge/Python-3.10-3572A5?style=for-the-badge&logo=python&logoColor=white) ![Google Colab](https://img.shields.io/badge/Google_Colab-F9AB00?style=for-the-badge&logo=googlecolab&logoColor=white) ![OpenAI](https://img.shields.io/badge/GPT--4o-412991?style=for-the-badge&logo=openai&logoColor=white) ![STIX](https://img.shields.io/badge/STIX_2.1-E34234?style=for-the-badge&logoColor=white) ![MITRE](https://img.shields.io/badge/MITRE_ATT%26CK-003865?style=for-the-badge&logoColor=white) **学生:** Sarmad Farooq  |  **学号:** 25i-7722  |  **活动:** 4  |  **指导教师:** Dr. Zafar  |  **学院:** FAST-NUCES
## 📌 项目概述 本项目实现了一个完全自动化的 **网络威胁情报 (CTI) 提取与结构化流水线**,并在 Google Colab 中构建。它通过一个多阶段的流水线处理 APT29 *"Cozy Bear"* CTI 报告 (PHANTOM BEAR 行动): - 提取原始 PDF 威胁情报报告 - 使用 **pdfplumber** 提取并清理全文 - 将文本拆分为对 LLM 安全的块,并发送给 **GPT-4o** 进行实体提取 - 使用 `stix2` Python 库将提取的实体映射为 **STIX 2.1 SDOs 和 SROs** - 组装经过验证的 **STIX 2.1 Bundle** 并导出为 JSON - 使用 OASIS STIX Visualizer 可视化威胁知识图谱 该流水线生成了一个包含 **66 个对象的 STIX 2.1 知识图谱**,涵盖了 APT29 在 2023–2024 年针对欧洲外交使团的 PHANTOM BEAR 行动的完整威胁概况。 ## 📊 输出统计 | 指标 | 值 | |--------|-------| | 🧩 STIX 对象总数 | **66** | | 🔗 关系 SROs | **34** | | 🎯 MITRE ATT&CK TTPs | **10** | | 🚨 IOC 指标 | **9** | | 🦠 恶意软件家族 | **3** | | 🔓 漏洞 (CVEs) | **3** | | 🏗️ 基础设施对象 | **2** | | 📓 Notebook 单元格数 | **27** | ## 🔁 流水线架构 ``` ┌─────────────┐ ┌──────────────┐ ┌─────────────┐ ┌──────────────┐ │ PDF Upload │───▶│ Text Extract │───▶│ Clean+Chunk │───▶│ GPT-4o NER │ │ (Colab GUI) │ │ (pdfplumber) │ │ (12k chars)│ │ (Structured) │ └─────────────┘ └──────────────┘ └─────────────┘ └──────┬───────┘ │ ┌─────────────┐ ┌──────────────┐ ┌─────────────┐ ┌──────▼───────┐ │ Graph Viz │◀───│ Validate │◀───│ STIX Bundle │◀───│ STIX Mapping │ │(OASIS Tool) │ │ (Compliance) │ │ (Export) │ │ SDOs + SROs │ └─────────────┘ └──────────────┘ └─────────────┘ └──────────────┘ ``` ## 📁 仓库结构 ``` APT29-CTI-STIX21-Pipeline/ │ ├── 📓 APT29_CTI_STIX21_Pipeline.ipynb # Main Google Colab notebook (27 cells) ├── 📦 APT29_STIX21_Bundle.json # Exported STIX 2.1 bundle (66 objects) ├── 📄 APT29_CTI_Report.pdf # Source CTI report — TLP:WHITE ├── 🖼️ Activity4_Presentation.pptx # 18-slide pipeline walkthrough ├── 🌐 APT29_CTI_Portfolio.html # Interactive GitHub portfolio page └── 📝 README.md # This file ``` ## 🧠 威胁行为者:APT29 / Cozy Bear | 属性 | 值 | |-----------|-------| | **主要名称** | APT29 / Cozy Bear | | **别名** | Midnight Blizzard · NOBELIUM · The Dukes · Dark Halo · Iron Hemlock | | **支持国家** | 俄罗斯联邦 | | **支持机构** | SVR (对外情报局) / FSB | | **活跃时间** | ~2008 | | **动机** | 间谍活动 · 情报收集 · 政治影响 | | **复杂程度** | 专家级 | | **主要目标** | 政府 · 外交 · 国防 · 医疗 · 科技 | | **置信度** | 高 (85%) | | **报告 ID** | CTI-2024-APT29-0042 | ## 🗂️ STIX 2.1 对象细分 | STIX 类型 | 数量 | 描述 | |-----------|-------|-------------| | `threat-actor` | 1 | APT29 / Cozy Bear | | `campaign` | 1 | PHANTOM BEAR 行动 | | `malware` | 3 | WINELOADER · TEARDROP · SUNBURST | | `attack-pattern` | 10 | MITRE ATT&CK 技术 | | `indicator` | 9 | IP · 域名 · 哈希 · URL | | `infrastructure` | 2 | C2 + 钓鱼基础设施 | | `vulnerability` | 3 | CVE-2023-23397 · CVE-2020-10148 · CVE-2019-19781 | | `course-of-action` | 1 | 防御性缓解措施 | | `relationship` | 34 | 连接所有对象的 SROs | | `report` | 1 | 包装报告的 SDO | | `identity` | 1 | 威胁情报部门 | | **总计** | **66** | | ## 🦠 分析的恶意软件家族 ### WINELOADER - **类型:** 后门 / 释放器 - **投递方式:** 通过鱼叉式钓鱼邮件发送的 ZIP 压缩包 - **技术:** 进程注入至 `sqlwriter.exe` - **C2 协议:** HTTPS 端口 443,使用 RC4 + Base64 加密 - **持久化:** `HKCU\Software\Microsoft\Windows\CurrentVersion\Run` - **MD5:** `a3f5c2b1d4e6789012345678abcdef01` - **SHA-256:** `e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855` ### TEARDROP - **类型:** 仅内存运行释放器 - **技术:** 读取伪造的 `favicon.jpg` 以提取内嵌的负载 - **负载:** 定制 Cobalt Strike 信标 (可塑 C2) - **检测:** 具有挑战性 — 无磁盘写入,无取证痕迹 - **SHA-256:** `7acf71afa895df5358b0ede2d71128634bfbbc0e2d9deccff5c5eaa25e6f5510` ### SUNBURST (历史背景) - **CVE:** CVE-2020-10148 (CVSS 10.0) - **基础设施重叠**,与检测到的 PHANTOM BEAR 行动有关 ## 📅 攻击活动时间线:PHANTOM BEAR 行动 ``` Oct 2023 ──▶ Initial spear-phishing emails sent to European embassies (wine-tasting event invitations as social engineering lure) Nov 2023 ──▶ WINELOADER dropper deployed on ambassador workstations Process hollowing into sqlwriter.exe; Registry Run persistence Dec 2023 ──▶ Lateral movement observed Credential harvesting via Mimikatz / LSASS memory dump Jan 2024 ──▶ TEARDROP second-stage delivered Custom Cobalt Strike beacon loaded; data exfiltration begins Feb 2024 ──▶ Campaign detected by defenders C2 infrastructure rotated to new IP ranges ``` ## 🚨 妥协指标 (IOCs) ### 网络指标 | 类型 | 值 | 上下文 | |------|-------|---------| | IP | `185.220.101.45` | WINELOADER C2 — AS59796 Serverius | | IP | `91.108.4.200` | TEARDROP C2 — AS20473 Vultr | | IP | `194.165.16.78` | 钓鱼基础设施 | | 域名 | `update.microsoftonline-cdn.com` | 伪造的 Microsoft C2 域名 | | 域名 | `cdn-telemetry.azure-api.net` | 仿冒域名 — TEARDROP 负载 URL | | 域名 | `oauth2.live-signin.com` | 凭证钓鱼网站 | | URL | `https://update.microsoftonline-cdn.com/api/v2/push` | C2 端点 | ### 文件指标 | 类型 | 哈希 | 文件 | |------|------|------| | SHA-256 | `e3b0c44298fc1c149afbf4c8996fb924...` | `wineloader.dll` | | SHA-256 | `7acf71afa895df5358b0ede2d7112863...` | `teardrop.exe` | | SHA-256 | `aabbcc1234567890aabbcc1234567890...` | `invitation.zip` | | MD5 | `a3f5c2b1d4e6789012345678abcdef01` | `wineloader.dll` | | MD5 | `5f4dcc3b5aa765d61d8327deb882cf99` | `favicon.jpg` | ## 🎯 MITRE ATT&CK TTP 覆盖范围 | ATT&CK ID | 技术 | 战术 | |-----------|-----------|--------| | T1566.001 | 鱼叉式钓鱼附件 | 初始访问 | | T1055.012 | 进程注入 | 防御规避 | | T1547.001 | 注册表运行键 / 启动文件夹 | 持久化 | | T1071.001 | Web 协议 (HTTPS C2) | 命令与控制 | | T1573.001 | 对称加密 (RC4) | 命令与控制 | | T1003.001 | LSASS 内存凭证转储 | 凭证访问 | | T1027 | 混淆文件 (Base64) | 防御规避 | | T1041 | 通过 C2 通道渗出 | 渗出 | | T1078 | 有效账户 (窃取的凭证) | 横向移动 | | T1195.002 | 软件供应链妥协 | 初始访问 | ## 🤖 LLM 提示词工程 该流水线针对 GPT-4o 采用了 **两层提示词设计**: ``` SYSTEM PROMPT: You are an expert Cyber Threat Intelligence (CTI) analyst. Extract structured entities from the threat intelligence text. Entity types to extract: - threat_actors: name, aliases, description, motivation - malware: name, type, description, capabilities - indicators: type [ip/domain/hash/url], value, context - attack_patterns: name, mitre_id, description, phase - vulnerabilities: cve_id, description, cvss, product - infrastructure: name, type, description - relationships: source, target, relationship_type Return ONLY a valid JSON object. No preamble, no markdown. ``` **12,000 个字符**的文本块按顺序处理,并在 STIX 映射之前将结果**合并和去重**。 ## 🔧 技术栈 | 组件 | 工具 / 库 | |-----------|---------------| | 环境 | Google Colab | | 语言 | Python 3.10 | | PDF 提取 | `pdfplumber` | | LLM API | OpenAI GPT-4o | | STIX 2.1 | `stix2` Python 库 | | 数据处理 | `pandas`, `json`, `re` | | 可视化 | OASIS STIX Visualizer | | 演示文稿 | PowerPoint (18 张幻灯片) | | 作品集 | HTML / CSS / JS | ## 🚀 安装与使用 ### 前置条件 ``` pip install pdfplumber openai stix2 requests ipywidgets pandas ``` ### 在 Google Colab 中运行 (推荐) 1. 在 **Google Colab** 中打开 `APT29_CTI_STIX21_Pipeline.ipynb` 2. 将您的 `OPENAI_API_KEY` 添加到 **Colab Secrets** (侧边栏的 🔑 图标) 3. 运行所有单元格:**Runtime → Run All** 4. 当文件小部件出现时,上传 `APT29_CTI_Report.pdf` 5. 在最后一个单元格执行完成后,下载 `APT29_STIX21_Bundle.json` ### 可视化知识图谱 将 `APT29_STIX21_Bundle.json` 加载到 **OASIS STIX Visualizer** 中: [https://oasis-open.github.io/cti-stix-visualization/](https://oasis-open.github.io/cti-stix-visualization/) ## ✅ STIX 2.1 验证 该 Bundle 已通过 STIX 2.1 合规性检查验证: - ✅ 所有对象均包含必填字段 (`type`, `id`, `spec_version`, `created`, `modified`) - ✅ 所有 `id` 字段遵循 `type--UUID4` 格式 - ✅ 所有 `relationship_type` 值均使用有效的 STIX 动词 (`uses`, `attributed-to`, `indicates`, `targets`, `mitigates`, `exploits`, `delivers`, `drops`) - ✅ 所有时间戳均为 ISO 8601 UTC 格式 - ✅ Bundle 将所有 65 个对象包装在单个 `report` SDO 下 ## 🛡️ 防御建议 基于提取的威胁情报: 1. **阻止** 在边界防火墙和 DNS sinkhole 处已知的 C2 域名和 IP 段 2. **立即修补** CVE-2023-23397 — Microsoft Outlook 零点击漏洞 (CVSS 9.8) 3. **为** 所有远程访问和电子邮件服务启用 MFA 4. **部署** 具有内存扫描功能的 EDR 以检测进程注入 5. **监控** `sqlwriter.exe` 和 `svchost.exe` 的异常行为 6. **实施** 网络分段以限制横向移动 7. **针对** 鱼叉式钓鱼识别培训用户 (品酒诱饵模式) 8. **排查** 注册表项:`HKCU\Software\Microsoft\Windows\CurrentVersion\Run` ## 👤 作者 | 字段 | 详情 | |-------|--------| | **姓名** | Sarmad Farooq | | **学号 | 25i-7722 | | **活动** | 活动 4 — CTI 流水线 | | **指导教师** | Dr. Zafar | | **学院** | FAST-NUCES, Islamabad | | **课程** | 网络安全实验室 | ## 📋 报告元数据 | 字段 | 值 | |-------|-------| | 报告 ID | CTI-2024-APT29-0042 | | 日期 | 2024 年 3 月 | | 作者 | 威胁情报部门 | | 分类 | TLP:WHITE — 不受限制的分发 | | 置信度 | 高 (85%) |
*基于 Python · GPT-4o · STIX 2.1 · Google Colab 构建* **FAST-NUCES Islamabad — 网络安全实验室 — 活动 4**
标签:APT29, Cloudflare, CTI管道, DAST, DLL 劫持, Google Colab, GPT-4o, HTTP工具, IOC提取, IP 地址批量处理, LLM, MITRE ATT&CK, Python, STIX 2.1, TTP映射, Unmanaged PE, 大语言模型, 威胁情报, 安全数据分析, 开发者工具, 恶意软件分析, 无后门, 漏洞分析, 网络安全, 自动化信息提取, 路径探测, 隐私保护, 高级持续性威胁