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










## 📋 目录
| 章节 | 描述 |
|---------|-------------|
| [执行摘要](#-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 横向移动风险 | 业务风险评估 |

*图 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 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


*如果这项调查对您有所帮助 — 请给该仓库点个 ⭐*
标签:APT28, Metaprompt, SecList, 内存取证, 威胁情报, 开发者工具, 数字取证, 紫队, 自动化脚本, 逆向工具