# 僵尸网络自检 - 信息收集与分析策划方案
> 基于 NIST SP 800-86 取证标准、MITRE ATT&CK 框架、2026 学术研究及行业实战经验
> 编制日期:2026-07-14
---
## 一、专家咨询综述
本方案综合了以下专家视角与标准框架:
| 来源 | 视角 | 核心贡献 |
|------|------|----------|
| NIST SP 800-86 | 数字取证标准 | 数据采集顺序(易失性优先)、证据链保全 |
| MITRE ATT&CK | 攻击行为框架 | 20+ 技术映射、攻击链重建方法论 |
| 绿盟伏影实验室 2026 报告 | 威胁情报 | 最新僵尸网络趋势、反检测技术、活跃家族 |
| CyberDefenders | 安全教育 | Beaconing 检测、DGA 检测、NetFlow 分析 |
| Microsoft Defender 调查包 | 端点取证 | 标准化数据采集包结构(自启/连接/进程/日志) |
| 学术研究(Nature/IEEE 2026) | 前沿检测 | Hilbert+CNN、GNN、EROIKA 多阶段框架 |
| Botnet Studies Skill | 知识体系 | C2 拓扑分类、DGA 逆向、Fast-Flux 检测、博弈论 |
| NIST SP 800-61 r3 | 事件响应 | 应急响应流程、后改进建议 |
**核心共识:** 僵尸网络检测不能靠单一维度,必须"网络+主机+内存+情报+行为"五维联动,遵循 NIST 易失性优先原则采集数据,用 ATT&CK 框架重建攻击链。
---
## 二、信息收集框架(NIST 易失性优先原则)
按 NIST SP 800-86 的 Order of Volatility(OoV),从最易失到最持久依次采集:
```
采集顺序(先采易失的,再采持久的):
① CPU 寄存器/缓存 ← 微秒级消失(本研究跳过,需专业硬件)
② 内存(RAM) ← 秒级消失 ★ 重点采集
③ 网络状态 ← 分钟级消失 ★ 重点采集
④ 运行进程 ← 分钟级消失 ★ 重点采集
⑤ 磁盘数据 ← 持久化 ★ 全面采集
⑥ 日志/备份 ← 长期保存 ★ 补充采集
```
---
## 三、详细数据采集清单(6 层 45 项)
### 第 1 层:内存取证(易失性最高,必须优先)
| # | 采集项 | 采集方法 | 检测目标 |
|---|--------|----------|----------|
| 1 | 完整内存镜像 | `winpmem` / `DumpIt` / `Magnet RAM Capture` | 后续离线分析 |
| 2 | 运行进程列表+完整路径 | Volatility `pslist` / `psscan` | 隐藏进程、已终止但内存残留的进程 |
| 3 | 进程注入检测 | Volatility `malfind`(RWX 内存区域) | 进程注入(T1055) |
| 4 | 进程网络连接 | Volatility `netscan` | 内存中的活跃 C2 连接 |
| 5 | 加载的 DLL 模块 | Volatility `dlllist` + `ldrmodules` | 恶意 DLL、未备份模块 |
| 6 | 内核驱动/Rootkit | Volatility `modscan` / `modules` | 内核态 Rootkit |
| 7 | 凭据/密钥 | Volatility `hashdump` / `lsadump` | 被窃取的凭据 |
| 8 | 进程环境变量+命令行 | Volatility `cmdline` / `environ` | 恶意启动参数(如 RCtea 的 `telnet.curl`) |
| 9 | 注册表内存映像 | Volatility `printkey` / `hivelist` | 运行时被修改的注册表 |
| 10 | 网络套接字/连接表 | Volatility `sockscan` / `connections` | 隐藏的网络连接 |
**工具:** Volatility 3 / Rekall / winpmem
**输出:** 内存取证报告(进程树+注入标记+网络连接+恶意模块)
---
### 第 2 层:网络状态采集(易失性高)
| # | 采集项 | 采集方法 | 检测目标 |
|---|--------|----------|----------|
| 11 | 活跃网络连接 | `netstat -ano` / `psutil.net_connections()` | C2 连接、异常外连 |
| 12 | TCP/UDP 监听端口 | `netstat -an` / `psutil` | 后门监听端口 |
| 13 | ARP 缓存表 | `arp -a` | 内网被入侵的其他主机 |
| 14 | DNS 解析缓存 | `ipconfig /displaydns` | DGA 域名、恶意域名解析记录 |
| 15 | 路由表 | `route print` | 流量劫持、VPN 隧道 |
| 16 | 防火墙规则 | `netsh advfirewall show` | 被篡改的防火墙规则 |
| 17 | Wi-Fi 历史/配置 | `netsh wlan show profiles` | 非法 Wi-Fi 连接 |
| 18 | 网络适配器配置 | `ipconfig /all` | 异常网卡、VPN 配置 |
| 19 | TLS 连接指纹 | 抓包分析 JA3/JA4/JARM | C2 服务器 TLS 指纹匹配 |
| 20 | 流量采样(5分钟) | Wireshark / `pyshark` 抓包 | Beaconing 模式、流量异常 |
**工具:** netstat / Wireshark / pyshark / sslyze
**输出:** 网络连接审计报告(外连IP+端口+进程+Beaconing分析+TLS指纹)
---
### 第 3 层:运行进程采集
| # | 采集项 | 采集方法 | 检测目标 |
|---|--------|----------|----------|
| 21 | 全部进程列表 | `tasklist /v` / `wmic process get` / `psutil` | 来源不明进程 |
| 22 | 进程树(父子关系) | `psutil` 或 Process Explorer 导出 | 异常父子链(Office→PowerShell) |
| 23 | 进程可执行文件路径 | `wmic process get executablepath` | 临时目录进程、伪装进程 |
| 24 | 进程数字签名 | `Get-AuthenticodeSignature` / `sigcheck` | 无签名/签名异常 |
| 25 | 进程命令行参数 | `wmic process get commandline` | 反沙箱参数、编码命令 |
| 26 | 进程-网络关联 | 交叉 #11 和 #21 | 哪些进程在对外通信 |
| 27 | 进程 OOM 设置 | 读取进程优先级/内存保护 | 反杀机制(RCtea 特征) |
| 28 | 已加载 DLL 全表 | `tasklist /m` / Process Explorer | DLL 劫持、注入模块 |
**工具:** psutil / Sysinternals Process Explorer / sigcheck
**输出:** 进程审计报告(进程树+路径+签名+命令行+网络关联+注入标记)
---
### 第 4 层:持久化机制采集(14 项全覆盖)
| # | 采集项 | 采集方法 | ATT&CK ID |
|---|--------|----------|-----------|
| 29 | 注册表 Run/RunOnce | `winreg` 读 HKLM+HKCU(含 WOW6432Node) | T1547.001 |
| 30 | Winlogon 键 | `winreg` 读 Shell/Userinit | T1547.002 |
| 31 | AppInit_DLLs | `winreg` 读 AppInit_DLLs + LoadAppInit_DLLs | T1546.010 |
| 32 | IFEO 调试器劫持 | `winreg` 读 Image File Execution Options | T1546.012 |
| 33 | COM 劫持 | `winreg` 读 InprocServer32 | T1546.015 |
| 34 | 计划任务 | `schtasks /query /fo CSV /v` | T1053 |
| 35 | 系统服务 | `sc query` + `psutil.win_service_iter()` | T1543.003 |
| 36 | svchost ServiceDll | `winreg` 读 Svchost 键 | T1543.003 |
| 37 | 启动文件夹 | 检查 ProgramData + APPDATA Startup | T1547.001 |
| 38 | WMI 事件订阅 | PowerShell `Get-WMIObject __EventConsumer` | T1546.003 |
| 39 | 屏幕保护程序 | `winreg` 读 SCRNSAVE.EXE | T1546.002 |
| 40 | AppCertDLLs | `winreg` 读 AppCertDlls | T1546.009 |
| 41 | BootExecute | `winreg` 读 Session Manager | T1547.003 |
| 42 | 组策略脚本 | `gpresult /r` + 检查 GPO 脚本路径 | T1547.004 |
**基线对比:** 与干净同版本 Windows 的 Autoruns 导出比对
**交叉验证:** 同一文件出现在多个持久化位置 = 高危
**输出:** 持久化审计报告(14项逐条+基线差异+ATT&CK映射+风险评估)
---
### 第 5 层:文件系统采集
| # | 采集项 | 采集方法 | 检测目标 |
|---|--------|----------|----------|
| 43 | 系统目录未知可执行文件 | 遍历 System32/SysWOW64,对比白名单 | 植入的恶意文件 |
| 44 | 临时目录可执行文件 | 遍历 Temp/AppData/Downloads | 残留恶意样本 |
| 45 | 近期创建文件(7天) | `os.path.getmtime()` 筛选 | 新植入文件 |
| 46 | 高熵文件 | Shannon 熵计算(> 7.0 标记) | 加壳/加密文件 |
| 47 | 隐藏属性文件 | 检查 FILE_ATTRIBUTE_HIDDEN | 隐藏的恶意文件 |
| 48 | 文件哈希 | SHA256 计算 + VirusTotal 比对 | 已知恶意文件 |
| 49 | Hosts 文件 | 读取 `drivers\etc\hosts` | DNS 劫持 |
| 50 | YARA 规则扫描 | `yara-python` 加载社区规则 | 已知恶意特征匹配 |
| 51 | 交替数据流(ADS) | `dir /R` 检查 NTFS ADS | 隐藏在 ADS 中的恶意数据 |
**工具:** hashlib / yara-python / VirusTotal API
**输出:** 文件审计报告(路径+哈希+熵值+隐藏属性+情报标记+YARA匹配)
---
### 第 6 层:日志与事件采集
| # | 采集项 | 采集方法 | 检测目标 |
|---|--------|----------|----------|
| 52 | 安全日志 4624/4625 | `wevtutil` 或 `pywin32` | 异常登录/暴破 |
| 53 | 安全日志 4688 | 进程创建审计 | 恶意进程创建链 |
| 54 | 系统 7045 | `wevtutil` | 新服务创建 |
| 55 | PowerShell 4104 | 脚本块日志 | 编码命令、下载执行 |
| 56 | Task Scheduler 日志 | 事件日志 Microsoft-Windows-TaskScheduler | 恶意计划任务创建 |
| 57 | Sysmon 日志(如已装) | 事件 ID 1/3/7/8/10/11/13 | 进程/网络/镜像加载/文件创建 |
| 58 | 浏览器历史 | 解析 Chrome/Firefox/Edge 历史库 | 钓鱼网站访问记录 |
| 59 | 最近文档记录 | `winreg` 读 RecentDocs | 最近打开的恶意文件 |
| 60 | Prefetch 预读 | 解析 `C:\Windows\Prefetch\*.pf` | 程序执行历史 |
| 61 | 事件日志时间线 | `log2timeline` 或手动整合 | 超级时间线分析 |
**工具:** wevtutil / pywin32 / EvtxECmd / log2timeline / Timeline Explorer
**输出:** 事件日志审计报告(异常登录+进程链+服务创建+PowerShell+时间线)
---
## 四、威胁情报采集清单
### 在线情报源(API 对接)
| # | 情报源 | 查询内容 | 用途 |
|---|--------|----------|------|
| 62 | VirusTotal API v3 | 文件哈希 / IP / 域名 / URL | 多引擎检测+信誉 |
| 63 | AbuseIPDB API | IP 信誉 | 恶意 IP 识别 |
| 64 | AlienVault OTX | IoC 订阅 | 社区共享威胁情报 |
| 65 | Abuse.ch ThreatFox | C2 IoC | 最新 C2 IP/域名/哈希 |
| 66 | Abuse.ch URLhaus | 恶意 URL | 恶意分发 URL |
| 67 | PhishTank | 钓鱼 URL | 钓鱼网站比对 |
| 68 | Spamhaus DROP/EDROP | 恶意 IP 段 | 已知恶意网段 |
### 本地情报库(定期更新)
| # | 数据源 | 内容 | 更新频率 |
|---|--------|------|----------|
| 69 | 绿盟伏影通报 | 国内僵尸网络 IoC | 不定期 |
| 70 | CNCERT 预警 | 国家级安全通报 | 不定期 |
| 71 | MISP(自建) | 综合威胁情报 | 社区驱动 |
| 72 | 本地 JARM 指纹库 | 已知 C2 TLS 指纹 | 每周 |
| 73 | 本地 C2 IP/域名库 | 已知 C2 基础设施 | 每日 |
### 情报增强处理
对所有检测到的 IP/域名/哈希/证书执行:
1. 批量查询上述情报源
2. 标注:恶意/可疑/未知/清洁
3. 记录:首次发现时间、关联家族、关联 ATT&CK 技术
4. 输出 STIX 2.1 格式 IoC 包(供 SIEM 导入)
---
## 五、分析方法论(五维联动)
### 5.1 关联分析矩阵
```
网络 进程 持久化 文件 日志
网络 ─── Beaconing 进程↔连接 C2持久化 C2文件 登录+连接
进程 进程↔连接 ─── 父子链 持久化↔进程 进程↔文件 进程创建
持久化 C2持久化 持久化↔进程 ─── 交叉验证 持久化↔文件 任务创建
文件 C2文件 进程↔文件 持久化↔文件 ─── 哈希+熵 文件创建
日志 登录+连接 进程创建 任务创建 文件创建 ─── 时间线
```
**关联规则示例:**
- 规则1:进程A(临时目录) + 网络连接B(非常规端口) + 持久化项C(指向A) = 高危僵尸节点
- 规则2:计划任务(每5分钟执行) + 执行文件(高熵) + 外连IP(情报标记恶意) = 确认感染
- 规则3:进程A(伪装系统进程名) + 路径不在System32 + 无数字签名 = 伪装检测
- 规则4:TLS连接 JARM指纹匹配已知C2 + 证书自签名 + 连接间隔低抖动 = C2 通信确认
### 5.2 ATT&CK 攻击链重建
将所有检测到的异常按 ATT&CK 战术阶段排列,重建攻击链:
```
Initial Access → Execution → Persistence → C2 → Action
(钓鱼?) (PowerShell) (计划任务) (HTTP) (DDoS?)
↓ ↓ ↓
[模块6日志] [模块3] [模块1]
```
如果链路覆盖 3+ 个战术阶段 → 高置信度感染判定
### 5.3 行为基线建模
1. **首次运行**:采集系统快照作为"干净基线"
2. **后续扫描**:与基线比对,标记所有新增项
3. **网络基线**:统计正常时段的连接模式(目标IP/端口/频率分布)
4. **异常评分**:偏离基线的程度 → 异常分数
### 5.4 前沿检测算法(可选,第四期)
| 算法 | 数据输入 | 论文准确率 | 适用场景 |
|------|----------|-----------|----------|
| Hilbert曲线+CNN | 网络流特征→2D图像 | 98.34% | 未知家族泛化检测 |
| CNN-LSTM-GRU | IoT 网络流量时序 | 99.99% | IoT 设备检测 |
| GNN异构图 | DNS查询关系图 | 95% | DNS层僵尸节点检测 |
| EROIKA条件自编码器 | 网络流量模式 | 99.61% | 多阶段检测+关键行为者识别 |
| Fast-Flux检测 | DNS TTL+A记录数+ASN多样性 | - | Fast-Flux C2 识别 |
---
## 六、采集工具清单
### 取证采集工具
| 工具 | 用途 | 来源 |
|------|------|------|
| Volatility 3 | 内存取证分析 | 开源 |
| winpmem / DumpIt | 内存镜像采集 | 开源 |
| Sysinternals Autoruns | 持久化项全面扫描 | 微软官方 |
| Sysinternals Process Explorer | 进程树+DLL+句柄 | 微软官方 |
| Sysinternals TCPView | 实时网络连接 | 微软官方 |
| Sysinternals sigcheck | 数字签名验证 | 微软官方 |
| EvtxECmd | Windows事件日志解析 | Eric Zimmerman |
| log2timeline | 超级时间线生成 | 开源 |
| YARA | 恶意文件规则匹配 | 开源 |
| FTK Imager | 磁盘镜像(可选) | 商业免费 |
### 开发依赖(Python)
| 库 | 用途 |
|----|------|
| psutil | 进程/网络/系统信息 |
| winreg | 注册表读取 |
| hashlib | 文件哈希 |
| scipy | 熵值计算 |
| requests | 情报 API 调用 |
| pyOpenSSL / ssl | TLS 证书分析 |
| yara-python | YARA 规则扫描 |
| pywin32 | Windows API/事件日志 |
| jinja2 | HTML 报告生成 |
| scapy | 网络包构造/分析 |
| pyshark | 流量抓包分析 |
| stix2 | IoC 标准化输出 |
---
## 七、采集执行流程(标准操作程序 SOP)
```
步骤 1: 准备阶段
├── 确认管理员权限
├── 准备采集工具(USB 或本地)
├── 记录系统时间、主机名、IP(时间线基准)
└── 启动审计日志(如未开启)
步骤 2: 内存采集(最高优先级)
├── winpmem 采集完整内存镜像
└── 保存到外部存储,计算 SHA256
步骤 3: 网络状态采集
├── netstat -ano(活跃连接+PID)
├── netstat -an(监听端口)
├── arp -a(ARP 缓存)
├── ipconfig /displaydns(DNS 缓存)
├── route print(路由表)
├── netsh advfirewall show(防火墙规则)
└── 抓包 5 分钟(流量基线采样)
步骤 4: 进程采集
├── tasklist /v(全部进程)
├── wmic process get name,executablepath,pid,commandline
├── tasklist /m(已加载模块)
└── Get-AuthenticodeSignature(签名验证)
步骤 5: 持久化采集(14 项)
├── 注册表 12 项逐条导出
├── schtasks /query /fo CSV /v
├── sc query(全部服务)
├── 启动文件夹文件列表
└── WMI 事件订阅查询
步骤 6: 文件系统采集
├── 系统目录可执行文件清单
├── 临时目录可执行文件清单
├── 近7天新文件清单
├── 文件哈希批量计算
├── 熵值检测
├── 隐藏文件检测
├── Hosts 文件读取
└── YARA 扫描(可选)
步骤 7: 日志采集
├── 安全日志导出(4624/4625/4688)
├── 系统日志导出(7045)
├── PowerShell 日志(4104)
├── Task Scheduler 日志
├── Prefetch 文件列表
└── 浏览器历史导出
步骤 8: 情报比对
├── 批量查询 IP/域名/哈希
├── JARM 指纹比对
├── 证书指纹比对
└── 输出情报增强标注
步骤 9: 关联分析
├── 五维关联矩阵计算
├── ATT&CK 攻击链重建
├── 基线差异对比
└── 风险评分计算
步骤 10: 报告生成
├── HTML 综合报告
├── ATT&CK 热力图
├── 控制台摘要
└── STIX JSON(供 SIEM 导入)
```
---
## 八、综合分析报告结构
### 报告目录
```
1. 执行摘要
1.1 检测时间与范围
1.2 风险评级(🔴🟠🟡🟢)+ 总分
1.3 关键发现摘要(3-5 条)
1.4 建议措施(按紧急程度排序)
2. 系统概况
2.1 主机信息(名称/IP/OS版本/补丁状态)
2.2 系统时间与时区
2.3 已安装安全软件
2.4 网络配置概览
3. 网络连接审计
3.1 活跃连接全表(进程/IP/端口/状态)
3.2 可疑外连详情(含情报标注)
3.3 Beaconing 分析(间隔分布图+变异系数)
3.4 非常规端口检测
3.5 DoT/DoH 通信检测
3.6 TLS 指纹分析(JARM+证书)
4. 进程审计
4.1 进程树可视化
4.2 可疑进程详情(路径/签名/命令行/父子链)
4.3 进程注入检测结果
4.4 伪装进程检测
4.5 进程-网络关联表
5. 持久化审计
5.1 14 项检查结果逐条
5.2 基线差异对比
5.3 交叉验证发现
5.4 注册表时间窗口分析
6. 文件系统审计
6.1 可疑文件列表(路径/哈希/熵值/隐藏属性)
6.2 威胁情报匹配结果
6.3 YARA 规则命中
6.4 Hosts 文件检查
7. DNS 与域名审计
7.1 DNS 缓存可疑条目
7.2 DGA 域名检测结果
7.3 DNS 隧道特征
7.4 Hosts 篡改检测
8. 行为审计
8.1 网络流量基线分析
8.2 CPU/内存异常检测
8.3 事件日志告警(登录/进程/服务/PowerShell)
8.4 横向扫描检测
8.5 时间线分析
9. MITRE ATT&CK 映射
9.1 命中技术热力图
9.2 攻击链重建图
9.3 僵尸网络家族匹配概率
10. 威胁情报综合
10.1 IoC 命中汇总
10.2 关联家族分析
10.3 情报来源与置信度
11. 基线对比
11.1 新增进程/连接/文件/持久化项
11.2 基线漂移评分
12. 建议与后续行动
12.1 紧急措施(如确认感染)
12.2 深入排查建议
12.3 加固建议
12.4 定期复检计划
附录 A: 原始数据(JSON)
附录 B: IoC 清单(STIX 2.1 格式)
附录 C: 工具版本与签名
附录 D: 采集时间线日志
```
---
## 九、误报控制策略
| 策略 | 说明 |
|------|------|
| 基线对比 | 首次运行建立干净基线,后续只报差异 |
| 白名单机制 | 合法进程/连接/服务白名单,自动过滤 |
| 时间窗口 | 注册表项 LastWriteTime 与可疑事件时间比对 |
| 交叉验证 | 同一 IoC 在多维度出现才标记高危 |
| 签名验证 | 有微软签名 ≠ 安全,但无签名 + 异常路径 = 高危 |
| 路径规则 | System32 下基本安全,AppData 下重点关注 |
| 情报置信度 | 多源情报命中 > 单源命中 > 仅行为异常 |
---
## 十、采集性能预估
| 模块 | 预计耗时 | 数据量 |
|------|----------|--------|
| 内存镜像 | 30-60 秒 | 2-16 GB |
| 网络状态 | 5 秒 | < 1 MB |
| 流量采样 5 分钟 | 5 分钟 | 10-100 MB |
| 进程采集 | 10 秒 | < 5 MB |
| 持久化 14 项 | 15 秒 | < 2 MB |
| 文件系统扫描 | 1-3 分钟 | < 50 MB |
| 日志采集 | 30 秒 | 10-500 MB |
| 情报比对(在线) | 1-2 分钟 | 取决于 API 限速 |
| 关联分析 | 10 秒 | - |
| 报告生成 | 5 秒 | < 10 MB |
| **总计** | **约 8-12 分钟** | **不含内存镜像** |
---
## 十一、参考标准与文献
| # | 来源 | 标题/内容 |
|---|------|-----------|
| 1 | NIST SP 800-86 | Guide to Integrating Forensic Techniques into Incident Response |
| 2 | NIST SP 800-61 r3 | Incident Response Recommendations |
| 3 | MITRE ATT&CK | Botnet TTP Mapping (TA0011/T1547/T1053 等) |
| 4 | 绿盟伏影实验室 | 2026 Botnet 趋势报告 |
| 5 | CNCERT | RCtea 僵尸网络风险提示 |
| 6 | Nature Sci Rep 2026 | Representation Learning for Botnet Detection (98.34%) |
| 7 | IEEE TON 2026 | TNT: P2P Botnet Detection Framework |
| 8 | IEEE OJCOMS 2026 | EROIKA: Multi-Stage Botnet Detection (99.61%) |
| 9 | Applied Sciences 2026 | GNN for Botnet Node Detection (95%) |
| 10 | ICCCN 2025 | CNN-LSTM-GRU for IoT Botnet (99.99%) |
| 11 | Microsoft Learn | Defender Investigation Package 结构 |
| 12 | CyberDefenders | Botnet Architecture, Lifecycle, Detection |
| 13 | Botnet Studies Skill | C2 Topology, DGA, Fast-Flux, Game Theory |
| 14 | Law et al. (2009) | Host-Based Botnet Investigation Methodology |
| 15 | Zhang et al. (2020) | Mirai Botnet Forensic Case Study |