# Performing Endpoint Forensics Investigation

> 对受损端点执行数字取证调查，包括内存获取、磁盘镜像、工件分析和时间线重建。 适用于调查安全事件、为法律诉讼收集证据或分析端点受损范围的场景。 适用于涉及端点取证、内存分析、磁盘取证或事件调查的请求。

- Skill: `killvxk/performing-endpoint-forensics-investigation` (Agent Skill, multi-file: 8 files)
- Install (CLI): `npx skillmds@latest add killvxk/performing-endpoint-forensics-investigation`
- Raw SKILL.md: https://api.skillmd.com/api/skills/killvxk/performing-endpoint-forensics-investigation/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: Apache-2.0
- Author: killvxk (https://skillmd.com/u/killvxk)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/killvxk/performing-endpoint-forensics-investigation

---

# 执行端点取证调查

## 使用场景

在以下情况下使用本技能：
- 调查需要取证分析的已确认或疑似端点入侵
- 为事件响应或法律诉讼收集易失性和非易失性证据
- 分析内存转储以发现恶意软件、注入代码或凭据窃取工件
- 从端点工件（prefetch、shimcache、amcache）重建攻击者时间线

**不适用于**实时威胁狩猎（使用 EDR/SIEM）或网络取证。

## 前置条件

- 配备分析工具的取证工作站（Volatility 3、KAPE、Autopsy、Eric Zimmerman 工具）
- 磁盘镜像的写阻断器（硬件或软件）
- 具有监管链文档的安全证据存储
- 内存获取工具（WinPMEM、FTK Imager、Magnet RAM Capture）
- 目标端点的管理员访问权限（或物理访问）

## 操作流程

### 步骤 1：证据保全（易失性顺序）

按从最易失到最不易失的顺序收集证据：
```
1. 系统内存（RAM）- 最易失
2. 网络连接和路由表
3. 运行中的进程和打开的文件
4. 磁盘内容（文件系统）
5. 可移动媒体
6. 日志和备份数据 - 最不易失
```

**内存获取**：
```powershell
# WinPMEM（Windows）
winpmem_mini_x64.exe memdump.raw

# FTK Imager - 通过 GUI 创建内存捕获
# 文件 → 捕获内存 → 目标路径 → 捕获内存

# Linux（LiME 内核模块）
sudo insmod lime.ko "path=/evidence/memory.lime format=lime"
```

**易失性数据收集**：
```powershell
# 捕获运行中的进程
Get-Process | Export-Csv "evidence\processes.csv" -NoTypeInformation
tasklist /v > "evidence\tasklist.txt"

# 捕获网络连接
netstat -anob > "evidence\netstat.txt"
Get-NetTCPConnection | Export-Csv "evidence\tcp_connections.csv"

# 捕获已登录用户
query user > "evidence\logged_users.txt"

# 捕获计划任务
schtasks /query /fo CSV /v > "evidence\scheduled_tasks.csv"

# 捕获服务
Get-Service | Export-Csv "evidence\services.csv"

# 捕获 DNS 缓存
ipconfig /displaydns > "evidence\dns_cache.txt"
```

### 步骤 2：磁盘镜像

```powershell
# FTK Imager - 创建取证磁盘镜像
# 文件 → 创建磁盘镜像 → 物理驱动器 → E01 格式
# 始终验证镜像哈希（MD5/SHA1）与源匹配

# dd（Linux）
sudo dc3dd if=/dev/sda of=/evidence/disk.dd hash=sha256 log=/evidence/imaging.log

# 验证镜像完整性
sha256sum /evidence/disk.dd
# 与镜像期间生成的哈希对比
```

### 步骤 3：使用 Volatility 3 进行内存分析

```bash
# 识别操作系统配置文件
vol -f memdump.raw windows.info

# 列出运行中的进程
vol -f memdump.raw windows.pslist
vol -f memdump.raw windows.pstree

# 查找隐藏进程
vol -f memdump.raw windows.psscan

# 分析网络连接
vol -f memdump.raw windows.netscan

# 检测进程注入
vol -f memdump.raw windows.malfind

# 提取命令行参数
vol -f memdump.raw windows.cmdline

# 分析进程加载的 DLL
vol -f memdump.raw windows.dlllist --pid 1234

# 从内存提取文件
vol -f memdump.raw windows.filescan | grep -i "suspicious"
vol -f memdump.raw windows.dumpfiles --pid 1234

# 检测凭据窃取
vol -f memdump.raw windows.hashdump
vol -f memdump.raw windows.lsadump

# 从内存进行注册表分析
vol -f memdump.raw windows.registry.printkey --key "Software\Microsoft\Windows\CurrentVersion\Run"
```

### 步骤 4：Windows 工件分析

```
关键取证工件及其工具：

Prefetch 文件（C:\Windows\Prefetch\）：
  工具：PECmd.exe（Eric Zimmerman）
  显示：带时间戳和运行次数的程序执行历史
  命令：PECmd.exe -d "C:\Windows\Prefetch" --csv output\

ShimCache（AppCompatCache）：
  工具：AppCompatCacheParser.exe
  显示：系统中存在过的程序（即使已删除）
  命令：AppCompatCacheParser.exe -f SYSTEM --csv output\

AmCache（C:\Windows\appcompat\Programs\Amcache.hve）：
  工具：AmcacheParser.exe
  显示：带 SHA1 哈希和安装时间戳的程序执行
  命令：AmcacheParser.exe -f Amcache.hve --csv output\

NTFS 工件（$MFT、$UsnJrnl、$LogFile）：
  工具：MFTECmd.exe
  显示：完整文件系统时间线，包括已删除文件
  命令：MFTECmd.exe -f "$MFT" --csv output\

事件日志：
  工具：EvtxECmd.exe
  显示：安全、系统、PowerShell、Sysmon 事件
  命令：EvtxECmd.exe -d "C:\Windows\System32\winevt\Logs" --csv output\

注册表配置单元（SAM、SYSTEM、SOFTWARE、NTUSER.DAT）：
  工具：RECmd.exe 及批处理文件
  显示：用户账户、服务、已安装软件、USB 历史
  命令：RECmd.exe -d "C:\Windows\System32\config" --bn BatchExamples\RECmd_Batch_MC.reb --csv output\
```

### 步骤 5：时间线重建

```bash
# 使用 KAPE 进行自动化工件收集
kape.exe --tsource C: --tdest C:\evidence\kape_output \
  --target KapeTriage --module !EZParser

# 使用 plaso/log2timeline 创建超级时间线
log2timeline.py timeline.plaso disk_image.E01
psort.py -o l2tcsv timeline.plaso -w timeline.csv

# 过滤事件期间附近的时间线
psort.py -o l2tcsv timeline.plaso "date > '2026-02-20' AND date < '2026-02-22'" -w filtered_timeline.csv
```

### 步骤 6：记录发现

取证报告结构：
```
1. 执行摘要
2. 范围和方法论
3. 证据清单（含监管链）
4. 事件时间线
5. 发现和分析
   - 初始访问向量
   - 持久化机制
   - 横向移动
   - 数据访问/泄露
6. 失陷指标（IOC）
7. 建议措施
8. 附录（工具输出、哈希、原始证据）
```

## 关键概念

| 术语 | 定义 |
|------|------|
| **易失性顺序** | 从最易失（RAM）到最不易失（备份）的证据收集优先级 |
| **监管链** | 从收集到呈堂的证据处理完整文档记录 |
| **写阻断器** | 防止修改源证据的硬件或软件设备 |
| **超级时间线** | 所有工件时间戳的综合时间顺序视图，用于事件重建 |
| **Prefetch** | 记录程序执行历史的 Windows 工件 |
| **ShimCache** | 跟踪端点上程序存在情况的应用程序兼容性工件 |

## 工具与系统

- **Volatility 3**：用于分析 RAM 转储的内存取证框架
- **KAPE（Kroll Artifact Parser and Extractor）**：自动化分类收集和解析
- **Eric Zimmerman 工具**：Windows 工件解析器套件（PECmd、MFTECmd、RECmd 等）
- **Autopsy/Sleuth Kit**：用于文件系统分析的磁盘取证平台
- **FTK Imager**：取证镜像和内存获取工具
- **Plaso/log2timeline**：超级时间线创建框架

## 常见误区

- **在实时系统上修改证据**：始终先镜像再分析。在实时系统上运行工具会改变时间戳和内存状态。
- **忘记监管链**：没有记录监管链的证据在法律诉讼中不可采信。
- **只分析磁盘，忽略内存**：仅在内存中的恶意软件（无文件攻击）不留下磁盘工件。始终先捕获内存。
- **未对证据进行哈希**：所有证据必须在收集时进行加密哈希以证明完整性。
- **隧道视野**：专注于单一工件而忽视时间线呈现的更广泛故事。始终构建全面的时间线。

