shell-3/APT28-BlueDelta-DFIR-Investigation

GitHub: shell-3/APT28-BlueDelta-DFIR-Investigation

一份完整的 APT28 紫队演练与 DFIR 数字取证调查报告,涵盖从攻击仿真到取证分析和检测工程的端到端流程。

Stars: 0 | Forks: 0

# 🐻 APT28 · BlueDelta · Operation BlueBalance ## DFIR 调查与紫队报告 **行动 ID:** `BLUEDELTA_20260607_072802`  |  **日期:** `2026-06-07`  |  **分析师:** Adham Alhamidi ![DFIR](https://img.shields.io/badge/DFIR-Investigation-1B2A4A?style=for-the-badge&logo=shield&logoColor=white) ![Threat Hunting](https://img.shields.io/badge/Threat-Hunting-C0392B?style=for-the-badge&logo=target&logoColor=white) ![Purple Team](https://img.shields.io/badge/Purple-Team-6C3483?style=for-the-badge&logo=shield&logoColor=white) ![MITRE ATT&CK](https://img.shields.io/badge/MITRE-ATT%26CK-E67E22?style=for-the-badge&logo=target&logoColor=white) ![Memory Forensics](https://img.shields.io/badge/Memory-Forensics-1E8449?style=for-the-badge&logo=database&logoColor=white) ![Volatility3](https://img.shields.io/badge/Volatility-3-2E75B6?style=for-the-badge&logo=linux&logoColor=white) ![Sysmon](https://img.shields.io/badge/Sysmon-Telemetry-1B2A4A?style=for-the-badge&logo=windows&logoColor=white) ![Wireshark](https://img.shields.io/badge/Wireshark-Network-1679A7?style=for-the-badge&logo=wireshark&logoColor=white) ![Network Forensics](https://img.shields.io/badge/Network-Forensics-2C3E50?style=for-the-badge&logo=cisco&logoColor=white) ![Threat Intelligence](https://img.shields.io/badge/Threat-Intelligence-922B21?style=for-the-badge&logo=intel&logoColor=white)
## 📋 目录 | 章节 | 描述 | |---------|-------------| | [执行摘要](#-executive-summary) | 高层级调查概述 | | [场景概述](#-scenario-overview) | 演练范围与环境 | | [威胁行为者画像](#-threat-actor-profile-apt28--bluedelta) | APT28 归因与 TTPs | | [攻击流](#-attack-flow-overview) | 端到端杀伤链演练 | | [调查方法论](#-investigation-methodology) | 检测与取证方法 | | [关键发现](#-key-findings) | 五项关键分析师结论 | | [事件时间线](#-incident-timeline) | 经取证验证的事件序列 | | [MITRE ATT&CK 映射](#-mitre-attck-mapping) | 完整技术覆盖范围 | | [内存取证](#-memory-forensics) | Volatility 3 分析结果 | | [网络取证](#-network-forensics) | Wireshark / TLS 数据外泄证据 | | [检测工程](#-detection-engineering) | Suricata + Sysmon + Sigma 规则 | | [知识图谱](#-knowledge-graph--attack-visualization) | 管理层攻击可视化 | | [Obsidian Canvas](#-obsidian-dfir-investigation-canvas) | 分析师调查板 | | [IOC 汇总](#-indicators-of-compromise) | 综合 IOC 主表 | | [事件响应](#-incident-response--remediation) | NIST 800-61r2 剧本 | | [经验教训](#-lessons-learned) | 战略性防御改进措施 | | [参考资料](#-references) | 来源与文档 | ## 🎯 执行摘要 本仓库记录了 **Operation BlueBalance** —— 一次于 `2026-06-07` 在隔离的 Windows 10 实验室环境中进行的完整的端到端 APT28 (Fancy Bear / BlueDelta) 威胁仿真演练。此次行动仿真了对真实世界目标实施的确切攻击手法,包括 2016 年 DNC 入侵事件、WADA 凭据窃取行动,以及 2025 年针对土耳其能源公司和欧洲智库的 BlueDelta 凭据收割行动。 | 指标 | 值 | 指标 | 值 | |--------|-------|--------|-------| | **目标主机** | `DESKTOP-N56M5HA` | **攻击者 IP** | `192.168.88.135` | | **操作系统** | Windows 10 (10.0.19045) | **架构** | AMD64 | | **行动 ID** | `BLUEDELTA_20260607_072802` | **用户名** | Shell | | **凭据转储** | ✅ 已确认 | **数据外泄** | ✅ 已确认 | | **攻击持续时间** | ~40 秒(自动化) | **内存取证** | ✅ 完成 | | **MITRE 技术** | 9 项已确认 | **检测覆盖率** | 100% | ### 执行发现仪表板 | 攻击阶段 | MITRE ID | 状态 | 置信度 | |-------------|----------|--------|------------| | Initial Access — 鱼叉式网络钓鱼 | T1566.001 | ✅ 已确认 | 高 | | Execution — 恶意文件 | T1204.002 | ✅ 已确认 | 高 | | Discovery — 侦察命令 | T1087/T1016/T1057 | ✅ 已确认 | 高 | | Privilege Escalation — SeDebugPrivilege | T1134 | ✅ 已确认 | 高 | | Credential Access — LSASS 转储 | T1003.001 | ✅ 已确认 | 高 | | Exfiltration — Gmail SMTP TLS | T1041 | ✅ 已确认 | 高 | | 检测覆盖率 — 所有阶段 | 所有 | ✅ 完整 | 高 | | 内存取证 — Volatility 3 | — | ✅ 完成 | 高 | | 威胁归因 — GRU 26165 部队 | G0007 | ✅ 已归因 | 中-高 | ## 🔬 场景概述 **Operation BlueBalance** 模拟了 APT28 记录在案的凭据窃取和数据外泄技术 —— 这些技术同样用于针对全球政治、政府和国防目标的真实行动中。 ### 环境 ``` Hypervisor: VMware Workstation (Host-Only Network — Isolated) Guest OS: Windows 10 Pro Build 19045 (AMD64) Hostname: DESKTOP-N56M5HA User: Shell (Standard + Admin context for attack) Network: Isolated — controlled Gmail exfiltration only ``` ### 工具栈 | 工具 | 角色 | 配置 | |------|------|---------------| | **Sysmon 64** | Endpoint Telemetry | SwiftOnSecurity 配置 — EID 1, 3, 7, 10 | | **Wireshark** | 网络捕获 | 过滤器: `tls or smtp or http` — 所有接口 | | **DumpIt** | 内存采集 | 输出: `C:\NulltackLab\evidence\memory.raw` | | **Volatility 3** | 内存取证 | `windows.pslist`, `psscan`, `handles` | | **NulltackKatz.py** | APT28 仿真工具 | `C:\NulltackLab\NulltackKatz.py` | | **Mimikatz** | 凭据转储 | 由 NulltackKatz 自动调用 | ### 证据目录结构 ``` C:\NulltackLab\ ├── NulltackKatz.py # APT28 emulation payload ├── logs\ │ ├── phishing_email_BLUEDELTA_*.txt │ ├── mimikatz_output_simulated.txt │ └── exfiltration_report_BLUEDELTA_*.txt └── evidence\ └── memory.raw # 4GB full RAM capture ``` ## 🐻 威胁行为者画像:APT28 / BlueDelta APT28(也称为 **Fancy Bear**、**BlueDelta**、**Sednit**、**Sofacy**、**STRONTIUM** 和 **Forest Blizzard**)是一个由国家支持的网络间谍组织,归属于 **俄罗斯武装力量总参谋部情报总局 (GRU) — 26165 部队 (85th GTsSS)**。该组织自 2007 年以来一直活跃,主要针对政府、军事、金融、能源和政治组织。 | 属性 | 详情 | |-----------|---------| | **已知别名** | Fancy Bear, BlueDelta, Sednit, Sofacy, STRONTIUM, Pawn Storm, Tsar Team, Forest Blizzard | | **归因** | 俄罗斯 GRU — 26165 部队 (85th GTsSS) | | **MITRE 组织 ID** | [G0007](https://attack.mitre.org/groups/G0007/) | | **活跃时间** | 2007 年(公开确认约在 2014 年) | | **动机** | 政治间谍活动、凭据窃取、情报收集、干预选举 | | **主要领域** | 政府、军事、金融、能源、媒体、政治 | | **相关部门** | Sandworm (GRU 74455 部队) — 破坏性行动;29155 部队 — 蓄意破坏 | ### 历史行动 | 行动 | 年份 | 目标 | 关键技术 | |-----------|------|--------|----------------| | 干预美国大选 | 2016 | DNC, Clinton Campaign, DCCC | T1566.001, T1078, T1041 | | WADA / USADA 行动 | 2014–2018 | 反兴奋剂机构 | T1566, T1213, T1078 | | OPCW / Spiez 实验室攻击 | 2018 | 化学武器调查员 | 鱼叉式网络钓鱼, T1003, T1041 | | BlueDelta 凭据收割 | 2025 | 土耳其能源部门、欧盟智库 | T1566.001, T1003.001, 滥用 OWA | | Operation Pawn Storm / Sofacy 行动 | 2014–2015 | NATO, 白宫, 德国联邦议院 | T1204.001, T1566, T1071 | ## ⚔️ 攻击流概述 ``` ┌─────────────────────────────────────────────────────────────────────────────┐ │ APT28 BlueDelta Kill Chain │ │ Campaign: BLUEDELTA_20260607_072802 │ ├──────────┬──────────┬──────────┬──────────┬──────────┬──────────┬──────────┤ │ Phase 1 │ Phase 2 │ Phase 3 │ Phase 4 │ Phase 5 │ Phase 6 │ Phase 7 │ │ │ │ │ │ │ │ │ │ SPEAR- │ MALICIOUS │ DISCOVERY │ PRIVILEGE │ CREDENTIAL│ MEMORY │ EXFIL- │ │ PHISHING │ EXECUTION │ │ ESCALATION│ ACCESS │ FORENSICS │ TRATION │ │ │ │ │ │ │ │ │ │T1566.001 │T1204.002 │T1087.001 │ T1134 │T1003.001 │Volatility │ T1041 │ │ │ │T1016 │ │ │ 3 │ │ │ │ │T1057 │ │ │ │ │ ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │DHS lure │NulltackKa│net user │privilege │Mimikatz │DumpIt + │Gmail │ │Gmail→ │tz.py via │ipconfig │::debug │sekurlsa │memory.raw│SMTP TLS │ │Drive link│python.exe│tasklist │Priv 20 OK │NTLM+plain │pslist/ │Port 587 │ │ │ │ │ │text creds │psscan │SNI conf │ └──────────┴──────────┴──────────┴──────────┴──────────┴──────────┴──────────┘ INFRASTRUCTURE LAYER: APT28 → phishing email → DESKTOP-N56M5HA → NulltackKatz.py → LSASS (PID 672) → mimikatz (PID 1384) → credentials → smtp.gmail.com:587 → adhamalhamidi00@gmail.com ``` ### 阶段详情 **阶段 1 — 鱼叉式网络钓鱼 (T1566.001)** 双层诱饵策略: - **诱饵 1:** 来自 `anmar@nulltack.com` 的“IT 安全”工资发放紧急邮件(伪造了显示名称) - **诱饵 2:** 精心伪造的 DHS Directive 2025-09,引用了虚假的 CVE-2025-2847、NIST SP 800-63B 和伪造的证书指纹 —— 发件人地址为 `anmarma100@gmail.com`,冒充“Elena Vasquez,IT 安全合规主管” **阶段 2 — 执行 (T1204.002)** 受害者通过 Python 执行 `NulltackKatz.py`。父进程链:`电子邮件附件 → python.exe (PID 2156)`。该脚本立即启动了发现和提权链。 **阶段 3 — 发现 (T1087.001 / T1016 / T1057)** 在 Sysmon EID 1 和外泄报告中捕获了三条发现命令: - `net user` — 本地账户枚举 (T1087.001) - `ipconfig /all` — 网络配置发现 (T1016) - `tasklist` — 运行进程发现 (T1057) **阶段 4 — 提权 (T1134)** `privilege::debug` 授予 SeDebugPrivilege (Privilege 20 OK),从而允许直接进行 LSASS 内存访问。 **阶段 5 — 访问凭据 (T1003.001)** `sekurlsa::logonpasswords` 转储了 NTLM 哈希和明文密码。提取的凭据: - Administrator: `31d6cfe0d16ae931b73c59d7e0c089c0` - Shell: `8846f7eaee8fb117ad06bdd830b7586c` - 明文: `Admin123!`, `Winter2025!`, `P@ssw0rd123`, `Finance2024` **阶段 6 — 内存取证** DumpIt 捕获了 4GB 的内存镜像 (`memory.raw`)。Volatility 3 确认了内存中完整的攻击工具链 —— PID 为 1384 的 mimikatz 持有对 lsass.exe (PID 672) 的进程句柄 `0x2ac`,且 `GrantedAccess=0x1010`。 **阶段 7 — 数据外泄 (T1041)** 凭据报告通过 Gmail SMTP(端口 587,TLS 1.3)传输至 `adhamalhamidi00@gmail.com`。在 Wireshark 中确认了 3,834 字节的 Application Data payload。SMTP 250 OK 确认了送达。 ## 🔍 调查方法论 调查遵循了跨越五个证据流的标准化 DFIR 方法: ``` Email Analysis → Sysmon Telemetry → Process Tree → Network PCAP → Memory Forensics │ │ │ │ │ T1566.001 T1003.001 T1204.002 T1041 T1003.001 Phishing IoC EID 10 (0x1010) EID 1 (PID) TLS SNI handles Header mismatch EID 1 (cmdline) Parent chain Port 587 psscan/pslist ``` ### 证据交叉关联 | 证据来源 | 关键发现 | 确认的 MITRE | |----------------|-------------|-----------------| | `phishing_email_BLUEDELTA_*.txt` | 发件人不匹配:`nulltack.com` / 回复地址 `anmarma100@gmail.com` | T1566.001 | | Sysmon EID 1 | `python.exe` PID2156 → `mimikatz.exe` 命令行:`privilege::debug sekurlsa::logonpasswords exit` | T1204.002, T1003.001 | | Sysmon EID 10 | 对 `lsass.exe` (PID 672) 的 `GrantedAccess=0x1010` | T1003.001 | | Sysmon EID 3 | `python.exe` → `142.251.127.108:587` | T1041 | | Wireshark PCAP | TLS SNI:`smtp.gmail.com` — 数据帧 106 和 137;3,834 字节的 App Data | T1041 | | Volatility `windows.handles` | PID 1384 (mimikatz) → lsass PID 672 的进程句柄 `0x2ac`,`GrantedAccess=0x1010` | T1003.001 | ## 🔑 关键发现 ### 发现 1 — 根本原因:社会工程学实现了完整攻击链 根本原因是一次成功的鱼叉式网络钓鱼攻击 (T1566.001),利用了两个分层的社会工程学载体。**没有利用任何技术漏洞** —— 此次攻击完全依赖于人为因素。在 **40 秒** 的自动化执行过程中,凭据便被完全泄露。 ### 发现 2 — 40 秒自动化攻陷 从脚本执行到确认数据外泄的完整攻击链在约 40 秒内完成。检测措施**必须预先部署** —— 在自动化阶段,根本没有时间进行人工 SOC 干预。 ``` 00s Execution starts (NulltackKatz.py) 10s Discovery commands complete 20s SeDebugPrivilege acquired 25s LSASS memory read (GrantedAccess 0x1010) 27s Credentials extracted 29s SMTP TCP SYN to 142.251.127.108:587 31s TLS handshake (SNI=smtp.gmail.com) 35s Application Data transmitted (3,834 bytes) 40s SMTP 250 OK — exfiltration CONFIRMED ``` ### 发现 3 — 三大取证支柱(独立印证) 三个独立的证据流印证了每一项发现 —— 跨源验证排除了任何误报: 1. **Sysmon EID 10** — 针对子 `lsass.exe` 的 `GrantedAccess=0x1010`(端点遥测) 2. **Wireshark TLS SNI** — 在数据帧 106 和 137 中确认了 `smtp.gmail.com`(网络取证) 3. **Volatility 3 `windows.handles`** — PID 1384 → lsass PID 672, `0x1010`(内存取证) ### 发现 4 — 识别出五个检测瓶颈 五项预先部署的管控措施可以独立捕获此攻击: 1. **电子邮件网关** — 发件人域 `nulltack.com` + 回复地址不匹配 2. **Sysmon EID 1** — `python.exe` 从 `C:\NulltackLab\` 执行 `.py` 文件 3. **Sysmon EID 10** — 非白名单进程对 `lsass.exe` 发起 `GrantedAccess 0x1010`(**严重**) 4. **Sysmon EID 3** — `python.exe` 向外部 IP 发起出站 TCP/587 连接 5. **Suricata TLS SNI** — 工作站握手过程中的 `smtp.gmail.com` ### 发现 5 — 严重的防御漏洞 - **缺失:** Windows Credential Guard(可以完全防止 T1003.001) - **缺失:** 阻止来自工作站的出站 SMTP(可以阻止 T1041) - **缺失:** 对 `.py` 文件的电子邮件附件沙箱检查(可以阻止 T1204.002) - **缺失:** 未启用 LSA 保护 (`RunAsPPL=1`) ## 📅 事件时间线 | 时间 (本地) | UTC | 事件 | 证据来源 | MITRE | |-------------|-----|-------|----------------|-------| | `07:28:00` | `04:28:00` | 📧 钓鱼邮件送达 — DHS Directive 2025-09 诱饵 | `phishing_email_BLUEDELTA_*.txt` | T1566.001 | | `07:28:05` | `04:28:05` | 🐍 `python.exe` (PID 2156) 执行 `NulltackKatz.py` | Sysmon EID 1 (PID 2156) | T1204.002 | | `07:28:15` | `04:28:15` | 🔍 发现:`net user`, `ipconfig /all`, `tasklist` | exfiltration_report §2-3 | T1087/T1016/T1057 | | `07:28:25` | `04:28:25` | 🔑 `privilege::debug` — SeDebugPrivilege 已启用 (Privilege 20 OK) | Sysmon EID 1 + mimikatz 输出 | T1134 | | `07:28:30` | `04:28:30` | 💀 LSASS (PID 672) 被访问 — `GrantedAccess=0x1010` | Sysmon EID 10 | T1003.001 | | `07:28:32` | `04:28:32` | 🗝️ 提取了 NTLM 哈希 + 明文凭据 | `mimikatz_output_simulated.txt` | T1003.001 | | `07:28:34` | `04:28:34` | 📡 SMTP 连接:`192.168.88.135:49844 → 142.251.127.108:587` | Sysmon EID 3 (PID 7824) | T1041 | | `07:28:36` | `04:28:36` | 🔒 TLS 1.3 Client Hello — `SNI=smtp.gmail.com` (数据帧 106) | Wireshark PCAP 数据帧 106 | T1041 | | `07:28:38` | `04:28:38` | 📤 STARTTLS + 传输了 3,834 字节的 Application Data | Wireshark 数据帧 127.240727 | T1041 | | `07:28:40` | `04:28:40` | ✅ **确认数据外泄** — SMTP 250 OK 发送至 `adhamalhamidi00@gmail.com` | exfiltration_report | T1041 | | `11:38:17` | `08:38:17` | 🔁 手动执行 mimikatz — EID 10 `GrantedAccess=0x1010` (PID 1652 → lsass 672) | Sysmon EID 10 | T1003.001 | | `19:00:41 UTC` | `19:00:41` | 🧠 在内存中确认 `mimikatz.exe` PID 1384 — DumpIt 采集完成 | Volatility 3 `windows.pslist` | 内存取证 | 📄 完整时间线:[`timeline/Incident_Timeline.md`](timeline/Incident_Timeline.md) ## 🗺️ MITRE ATT&CK 映射 | 技术 ID | 技术名称 | 战术 | 检测方法 | 状态 | |-------------|----------------|--------|------------------|--------| | **T1566.001** | 鱼叉式网络钓鱼附件 | Initial Access | 电子邮件网关、信头分析、域名信誉 | ✅ 已确认 | | **T1204.002** | 恶意文件执行 | Execution | Sysmon EID 1 — `python.exe` + NulltackKatz.py | ✅ 已确认 | | **T1087.001** | 本地账户发现 | Discovery | Sysmon EID 1 — `net user` 命令 | ✅ 已确认 | | **T1016** | 系统网络配置发现 | Discovery | Sysmon EID 1 — `ipconfig /all` | ✅ 已确认 | | **T1057** | 进程发现 | Discovery | Sysmon EID 1 — `tasklist` | ✅ 已确认 | | **T1134** | 访问令牌操纵 | Privilege Escalation | Sysmon EID 1 — `privilege::debug` | ✅ 已确认 | | **T1003.001** | 操作系统凭据转储:LSASS | Credential Access | Sysmon EID 10 — `GrantedAccess=0x1010` | ✅ 已确认 | | **T1041** | 经 C2 通道外泄 | Exfiltration | Wireshark TLS SNI、Sysmon EID 3 端口 587 | ✅ 已确认 | | **T1021** | 远程服务(潜在) | Lateral Movement | 可用于 PtH 的 NTLM 哈希 — 已识别为风险 | ⚠️ 风险已识别 | 📄 完整映射:[`mitre/MITRE_Mapping.md`](mitre/MITRE_Mapping.md) ## 🧠 内存取证 攻击执行后立即使用 **DumpIt** 执行了 RAM 采集(4GB `memory.raw`)。分析使用了 **Volatility 3 Framework 2.28.1**。 ### 系统配置 ``` Plugin: windows.info ───────────────────────────────────────────────────── Is64Bit: True NtMajorVersion: 10 (Windows 10) SystemTime: 2026-06-07 19:00:56 UTC NtSystemRoot: C:\WINDOWS Kernel Base: 0xf80348a00000 KeNumberProcessors: 2 ``` ### 攻击进程链 ``` # Volatility 3 — windows.pslist(攻击进程) PID PPID ImageFileName CreateTime ───────────────────────────────────────────────────────────────── 672 504 lsass.exe 2026-06-07 13:08:45 UTC ← TARGET 2216 4480 powershell.exe 2026-06-07 18:52:00 UTC ← ATTACKER SHELL 2112 2064 python.exe 2026-06-07 19:00:35 UTC ← NulltackKatz 1384 2216 mimikatz.exe 2026-06-07 19:00:41 UTC ← CREDENTIAL DUMPER 6444 6824 DumpIt.exe 2026-06-07 19:00:55 UTC ← FORENSIC CAPTURE ``` ### 关键句柄关系 ``` # Volatility 3 — windows.handles(LSASS 访问确认) PID 1384 (mimikatz.exe) → Process handle 0x2ac → lsass.exe PID 672 GrantedAccess: 0x1010 = PROCESS_VM_READ | PROCESS_QUERY_LIMITED_INFORMATION ↑ Identical to Sysmon EID 10 GrantedAccess value → Memory-level corroboration of T1003.001 ``` ### psscan 检测 (Anti-DKOM) ``` # Volatility 3 — windows.psscan(绕过用户态隐藏) PID=1384 PPID=2216 ImageFileName=mimikatz.exe Offset=0xae0820b16080 CreateTime=2026-06-07 19:00:41 UTC Result: No DKOM evasion detected — mimikatz fully visible in physical memory ``` ## 🌐 网络取证 ### Wireshark 证据链 **过滤器 1 — SMTP 握手** ``` Filter: smtp Result: EHLO from DESKTOP-N56M5HA.localdomain (192.168.88.135) Server: 220 smtp.gmail.com ESMTP ← Exfiltration channel confirmed STARTTLS negotiation visible ``` **过滤器 2 — TCP 端口 587 完整会话** ``` Filter: tcp.port == 587 Packets 127-129: TCP SYN → SYN-ACK → ACK (three-way handshake) Packets 134-136: SMTP EHLO/250, STARTTLS upgrade Packet 137: TLSv1.3 Client Hello (SNI=smtp.gmail.com) Packets 138+: TLS Application Data (encrypted credential payload) ``` **过滤器 3 — TLS SNI 确认** ``` Filter: tls.handshake.extensions_server_name contains "smtp.gmail.com" Results: Frame 106 — TLSv1.3 Client Hello (SNI=smtp.gmail.com) Frame 137 — TLSv1.3 Client Hello (SNI=smtp.gmail.com) → Definitive, non-repudiable network evidence for T1041 ``` **过滤器 4 — 加密外泄流** ``` Filter: tls and ip.dst == 142.251.127.0/24 Frame 127.240727: 3,834-byte Application Data → Credential payload confirmed in encrypted stream ``` ### 网络 IOC 汇总 ``` Source: 192.168.88.135 (DESKTOP-N56M5HA) Destination: 142.251.127.108:587 (Gmail SMTP Primary) 142.251.127.109:587 (Gmail SMTP Secondary) Protocol: SMTP / STARTTLS / TLSv1.3 Payload: 3,834 bytes (encrypted credential report) Confirmed: SMTP 250 OK — delivery to adhamalhamidi00@gmail.com ``` ## 🛡️ 检测工程 ### Suricata 规则 ``` # 规则 1 — 通过 Gmail 进行 SMTP 数据外发 (T1041) alert tcp $HOME_NET any -> $EXTERNAL_NET 587 ( msg:"APT28 T1041 - Gmail SMTP Credential Exfiltration"; flow:established,to_server; classtype:trojan-activity; sid:9000001; rev:1;) # 规则 2 — 带有 SNI 检查的到 Gmail SMTP 的 TLS (T1041) alert tls $HOME_NET any -> $EXTERNAL_NET 465 ( msg:"APT28 T1041 - SMTPS Exfiltration to Gmail"; tls.sni; content:"smtp.gmail.com"; classtype:trojan-activity; sid:9000002; rev:1;) # 规则 3 — 针对 Gmail SMTP 基础设施的 DNS 查询 alert dns $HOME_NET any -> any 53 ( msg:"APT28 T1041 - DNS Lookup smtp.gmail.com"; dns.query; content:"smtp.gmail.com"; sid:9000003; rev:1;) ``` 📄 完整规则:[`detection/suricata/`](detection/suricata/) | [`detection/sigma/`](detection/sigma/) | [`detection/sysmon/`](detection/sysmon/) ### Sysmon 检测 — 关键事件 ID | 事件 ID | 规则 | 触发条件 | |----------|------|---------| | **EID 1** | 进程创建 | Image 中包含 `mimikatz` / `NulltackKatz` 或 CommandLine 中包含 `sekurlsa` | | **EID 10** | 进程访问 | `TargetImage=lsass.exe` 且 `GrantedAccess=0x1010/0x1410/0x143a` | | **EID 3** | 网络连接 | `DestinationPort=587/465` 或主机名包含 `gmail.com` | | **EID 7** | 镜像加载 | ImageLoaded 中包含 `sekurlsa` / `kerberos` | ### 针对 SOC 的三个优先检测规则 | # | 规则 | 逻辑 | |---|------|-------| | 1 | **LSASS 内存读取** | 告警:任何以 `GrantedAccess 0x1010/0x1410/0x143a` 访问 `lsass.exe` 的进程 (Sysmon EID 10) — 仅对 AV/EDR 设置白名单 | | 2 | **异常出站 SMTP** | 告警:任何发起出站 TCP/587 或 TCP/465 连接的工作站 — 财务主机绝对不应发起 SMTP | | 3 | **脚本 → 网络外泄链** | 关联:`python.exe` / `wscript.exe` 进程创建 (EID 1) → 同一 PID 在 5 分钟内发起出站 TCP/587 连接 (EID 3) | ## 🕸️ 知识图谱与攻击可视化 ### 9.1 管理层攻击知识图谱(图 49) 知识图谱跨越九个分析维度映射了完整的 APT28 攻击链: | KG 层级 | 内容 | 分析价值 | |----------|---------|-----------------| | **威胁行为者** | APT28 / GRU 26165 部队 / Fancy Bear | 归因 + 对手画像 | | **基础设施** | APT28 → DESKTOP-N56M5HA → LSASS → smtp.gmail.com → 攻击者邮箱 | C2 通信流 | | **MITRE ATT&CK** | T1566.001 → T1204.002 → T1087/T1016/T1057 → T1134 → T1003.001 → T1041 | 时序杀伤链 | | **证据层** | Sysmon EID 1/3/10 → Wireshark PCAP → Volatility 3 pslist/psscan/handles | 取证锚点 | | **结果** | NTLM 哈希 + 明文凭据泄露;T1021 横向移动风险 | 业务风险评估 | ![Figure 49 — APT28 Executive Attack Knowledge Graph](https://raw.githubusercontent.com/shell-3/APT28-BlueDelta-DFIR-Investigation/main/knowledge_graph/Attack_Knowledge_Graph.png) *图 49 — APT28 管理层攻击知识图谱:行动 BLUEDELTA_20260607_072802 的端到端视图。基础设施:APT28 → DESKTOP-N56M5HA → LSASS → smtp.gmail.com → adhamalhamidi00@gmail.com。MITRE 链:T1566.001 → T120.002 → T1087/T1016/T1057 → T1134 → T1003.001 → T1041。* ## 🔭 Obsidian DFIR 调查 Canvas Obsidian Canvas 通过分析师层级的调查逻辑对图 49 进行了补充: **Canvas 节点结构:** - 🟦 **APT28 节点** — 威胁行为者画像与归因 (GRU 26165 部队, G0007) - 🟧 **攻击阶段节点** — 每个阶段(从 Initial Access 到 Impact)作为一个调查节点 - 🟩 **证据节点** — Sysmon EID、Wireshark PCAP、Volatility 结果作为工件节点 - 🟥 **IOC 节点** — 电子邮件地址、IP、文件哈希、进程名 - 🟪 **检测节点** — Suricata 规则、Sysmon 配置、Sigma 规则引用 **证据关系:** ``` phishing_email → T1566.001 confirmed ↓ NulltackKatz.py → python.exe (Sysmon EID 1) → T1204.002 ↓ mimikatz.exe → lsass.exe handle (EID 10, Volatility handles) → T1003.001 ↓ SMTP session (EID 3) → Wireshark SNI → smtp.gmail.com → T1041 ``` **Canvas 中的时间线重建:** ``` 07:28 UTC ──→ Email delivery (T1566.001) 07:28 UTC ──→ Script execution (T1204.002) 07:28 UTC ──→ Discovery + SeDebug (T1087/T1134) 07:28 UTC ──→ LSASS dump (T1003.001) 07:28 UTC ──→ Exfiltration confirmed (T1041) 19:00 UTC ──→ Memory forensics (Volatility 3) ``` ![Obsidian DFIR Investigation Canvas](https://raw.githubusercontent.com/shell-3/APT28-BlueDelta-DFIR-Investigation/main/knowledge_graph/Obsidian_Canvas.png) *Obsidian Canvas — APT28 BlueBalance DFIR 调查板:分析师层级的调查视图,涵盖所有取证工件节点、MITRE ATT&CK 映射 (T1566.001 → T1041)、Sysmon/Suricata/Volatility IOC 检测规则、基础设施层,以及从 Initial Access (07:28 UTC) 到 Exfiltration (07:33 UTC) 的攻击重建 — 行动 BLUEDELTA_20260607_072802,GRU 26165 部队。* ## 🚨 攻陷指标 📄 完整 IOC 表:[`iocs/IOC_Master_Table.csv`](iocs/IOC_Master_Table.csv) | [`iocs/IOC_Summary.md`](iocs/IOC_Summary.md) ### 网络指标 | 类型 | 指标 | 用途 | 置信度 | |------|-----------|---------|------------| | IP | `142.251.127.108` | Gmail SMTP 外泄服务器 (主要) | 高 | | IP | `142.251.127.109` | Gmail SMTP 外泄服务器 (次要) | 高 | | IP | `192.168.88.135` | 受害者工作站 (DESKTOP-N56M5HA) | 高 | | 主机名 | `smtp.gmail.com` | C2 外泄通道 (已确认 TLS SNI) | 高 | | 端口 | `TCP/587` | SMTP STARTTLS 外泄通道 | 高 | | 协议 | `TLSv1.3` | 加密外渗传输 | 高 | | 域名 | `nulltack.com` | 钓鱼发件人域名 | 高 | ### 电子邮件指标 | 类型 | 指标 | 用途 | |------|-----------|---------| | 电子邮件 | `anmarma100@gmail.com` | 钓鱼发件人 (冒充 "Elena Vasquez") | | 电子邮件 | `anmar@nulltack.com` | 钓鱼显示地址 (伪造的 IT 安全部门) | | 电子邮件 | `adhamalhamidi00@gmail.com` | 攻击者邮箱 — 凭据接收方 | ### 文件与进程指标 | 类型 | 指标 | 用途 | |------|-----------|---------| | 文件 | `NulltackKatz.py` | APT28 仿真 payload (`C:\NulltackLab\`) | | 文件 | `mimikatz.exe` | 凭据转储可执行文件 | | 哈希 (SHA256) | `92804FAAAB2175DC501D73E814663058C78C0A042675A8937266357BCFB96C50` | mimikatz.exe — 所有实例 | | 进程 | `python.exe` (PID 2156/7824/2112) | NulltackKatz 执行器 | | 进程 | `mimikatz.exe` (PID 1384) | 凭据转储工具 — 常驻 RAM | ### 凭据指标 ⚠️ 需采取行动 | 类型 | 值 | 操作 | |------|-------|--------| | NTLM | `31d6cfe0d16ae931b73c59d7e0c089c0` (Shell) | **立即重置** | | NTLM | `31d6cfe0d16ae931b73c59d7e0c089c0` (Administrator) | **立即重置** | | 明文 | `Admin123!`, `Winter2025!`, `P@ssw0rd123`, `Finance2024` | **立即重置** | | Kerberos | `krbtgt ticket — TESTLAB.LOCAL` | **使其失效** | ## 🚑 事件响应与补救 遵循 **NIST SP 800-61r2** 生命周期。完整剧本:[`incident_response/`](incident_response/) ### 10.1 遏制 ``` # 立即隔离主机 netstat -anob >> C:\IR\netstat.txt && arp -a >> C:\IR\arp.txt # 封锁攻击者基础设施 null route 142.251.127.108/109 # 阻断数据外发通道 Block outbound TCP/587 and TCP/465 from workstation VLANs # 封禁钓鱼发送者 Block: anmarma100@gmail.com, anmar@nulltack.com ``` **关键凭据重置:** - Shell (SID: `S-1-5-21-672327993-1804208324-2312081050-1001`) — NTLM `31d6cfe0...` — **立即重置** - Administrator (RID 500) — **立即重置** - 重置 `krbtgt` 密码**两次**(间隔 24 小时) ### 10.2 根除 ``` # 移除恶意 artifacts Remove-Item C:\NulltackLab\NulltackKatz.py Remove-Item C:\NulltackLab\mimikatz-master\ -Recurse # 验证持久化 Get-ScheduledTask | Where-Object {$_.State -ne "Disabled"} | Format-List Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run # 清除攻击者 artifacts Remove-Item $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt ``` ### 10.3 恢复 ``` # 启用 LSA Protection reg add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v RunAsPPL /t REG_DWORD /d 1 /f # 启用 Credential Guard (Group Policy) # Computer Configuration > Administrative Templates > Virtualization Based Security # 为所有特权账户强制执行 MFA # 通过 Group Policy 要求最少 16 个字符的密码短语 ``` 📄 完整剧本:[`incident_response/Containment.md`](incident_response/Containment.md) | [`incident_response/Eradication.md`](incident_response/Eradication.md) | [`incident_response/Recovery.md`](incident_response/Recovery.md) ## 📚 经验教训 📄 完整文档:[`incident_response/Lessons_Learned.md`](incident_response/Lessons_Learned.md) ### 社会工程学意识 DHS Directive 2025-09 诱饵展示了 APT28 对美国监管术语和制造紧迫感手段的深刻理解。**强制性对策:** - 每季度进行使用针对财务部门的政府指令式诱饵进行网络钓鱼模拟 - 针对任何涉及可执行附件的紧急 IT 请求执行带外验证程序 ### 电子邮件与附件安全 - 在所有电子邮件域上强制执行 DMARC (p=reject)、DKIM、SPF - 对 `.py`、`.ps1`、`.vbs` 附件进行沙箱检查 — 财务用户没有合法理由通过电子邮件接收 Python 脚本 - 在电子邮件网关处阻止指向脚本文件的 Google Drive 链接 ### 凭据保护 - **部署 Windows Credential Guard** — 可以**完全**防止 T1003.001 - 在 LSA 注册表项中启用 `RunAsPPL=1` - 将所有特权账户添加到 Protected Users 安全组 - 实施 PAM (CyberArk / BeyondTrust) 并采用 Just-in-Time 访问 ### 网络监控漏洞 - 对来自工作站 VLAN 的首次出现出站 SMTP (端口 587) 进行告警 — **这是缺失的关键检测点** - 部署 UEBA:建立 `python.exe` 网络行为基线 — 任何外部连接都应告警 - 在出口处进行完整 PCAP 捕获并保留 30 天 - DNS 日志记录:对来自工作站(Gmail SMTP PTR 空间)的首次出现 `*.1e100.net` 查询进行告警 ## 📖 参考资料 | 来源 | 链接 | |--------|------| | MITRE ATT&CK G0007 (APT28) | https://attack.mitre.org/groups/G0007/ | | BlueDelta 2025 行动 | https://cybernoz.com/bluedelta-hackers-target-microsoft-owa-google-and-sophos-vpn-to-steal-credentials/ | | MIVD 警报 (荷兰) | https://www.defensie.nl/actueel/nieuws/2025/05/21/mivd-nederland-ook-doelwit-spionagecampagne-russische-hackers | | NIST SP 800-61r2 | https://csrc.nist.gov/publications/detail/sp/800-61/rev-2/final | | Volatility 3 文档 | https://volatility3.readthedocs.io | | Suricata 文档 | https://docs.suricata.io/en/latest/rules/ | | Sysmon (Sysinternals) | https://docs.microsoft.com/en-us/sysinternals/downloads/sysmon | | Mimikatz (GitHub) | https://github.com/gentilkiwi/mimikatz | 📄 完整参考资料:[`references/References.md`](references/References.md) ## 📁 仓库结构 ``` APT28-BlueDelta-DFIR-Investigation/ │ ├── 📄 README.md ← This file (world-class overview) ├── 📄 LICENSE ← MIT License ├── 📄 SECURITY.md ← Security and disclosure policy ├── 📄 CONTRIBUTING.md ← Contribution guidelines ├── 📄 CODE_OF_CONDUCT.md ← Community standards │ ├── 📁 report/ │ ├── APT28_DFIR_Report.pdf ← Full 44-page DFIR report (PDF) │ └── APT28_DFIR_Report.docx ← Full report (Word format) │ ├── 📁 figures/ ← All evidence screenshots │ ├── figure_01_attack_overview.png │ ├── figure_02_phishing_email.png │ ├── figure_03_sysmon_eventid1.png │ ├── figure_04_sysmon_eventid10.png │ ├── figure_05_memory_forensics.png │ ├── figure_06_tls_smtp_gmail.png │ ├── figure_07_attack_knowledge_graph.png │ └── figure_08_obsidian_canvas.png │ ├── 📁 detection/ │ ├── suricata/ │ │ └── apt28_bluedelta.rules ← 3 production Suricata rules │ ├── sigma/ │ │ ├── apt28_lsass_access.yml ← LSASS dump Sigma rule │ │ ├── apt28_smtp_exfiltration.yml ← SMTP exfil Sigma rule │ │ └── apt28_script_execution.yml ← Script execution Sigma rule │ └── sysmon/ │ └── apt28_sysmon_config.xml ← Sysmon rule group │ ├── 📁 iocs/ │ ├── IOC_Master_Table.csv ← Machine-readable IOC list │ └── IOC_Summary.md ← Human-readable IOC summary │ ├── 📁 timeline/ │ └── Incident_Timeline.md ← Full forensic timeline │ ├── 📁 mitre/ │ └── MITRE_Mapping.md ← Complete ATT&CK mapping │ ├── 📁 knowledge_graph/ │ ├── Attack_Knowledge_Graph.png ← Figure 49 (Executive view) │ └── Obsidian_Canvas.png ← Investigation canvas │ ├── 📁 incident_response/ │ ├── Containment.md ← NIST 800-61r2 Containment │ ├── Eradication.md ← Eradication procedures │ ├── Recovery.md ← Recovery procedures │ └── Lessons_Learned.md ← Strategic improvements │ ├── 📁 references/ │ └── References.md ← Full bibliography │ └── 📁 docs/ └── index.md ← GitHub Pages site ``` ## ⚠️ 法律免责声明
**编制:** Adham Alhamidi  |  **团队:** 紫队  |  **主管:** Anmar Mohammed **行动:** `BLUEDELTA_20260607_072802`  |  **日期:** `2026-06-07`  |  **支持:** Nulltack ![Stars](https://img.shields.io/github/stars/adhamalhamidi/APT28-BlueDelta-DFIR-Investigation?style=social) ![Forks](https://img.shields.io/github/forks/adhamalhamidi/APT28-BlueDelta-DFIR-Investigation?style=social) *如果这项调查对您有所帮助 — 请给该仓库点个 ⭐*
标签:APT28, Metaprompt, SecList, 内存取证, 威胁情报, 开发者工具, 数字取证, 紫队, 自动化脚本, 逆向工具