计算机取证入门:四个阶段、核心工具与实战思路
什么是计算机取证
计算机取证(Computer Forensics)的目标可以概括为:回答「谁(Who)、在什么时间(When)、从哪里(Where)、怎样(How)进行了什么(What)」的非法活动,并形成可供司法审查的电子证据。
取证全程必须遵循证据的完整性、真实性与可追溯性原则,保证从原始介质上采集的数据不被任何操作污染或篡改。
计算机取证的四个阶段
取证过程一般划分为四个阶段:保护现场 → 证据获取 → 证据鉴定与分析 → 证据追踪与提交结果,英文可概括为 评估 - 获取 - 分析 - 报告(Assessment / Acquisition / Analysis / Reporting)。
1. 评估(Assessment)
在动手采集之前,先建立可控、干净的取证环境,避免引入二次污染:
- 建立取证环境
- 确保使用干净的设备和软件(不含恶意代码、无未授权残留)。
- 使用只读设备(如只读 USB 或只读光驱)进行数据获取。
- 准备好取证工具,如 FTK Imager、EnCase 等。
- 记录取证现场环境
- 记录系统时间和日期(用于时间线还原)。
- 记录正在运行的进程和网络连接情况。
- 拍摄系统状态截图,留存现场快照。
2. 获取(Acquisition)
对易失性数据(内存、网络连接、进程信息)优先固定,再对持久化介质做完整镜像:
- 硬盘镜像:使用 FTK Imager、
dd命令等制作完整硬盘映像;用哈希值(MD5、SHA-1)验证映像完整性,确保与原始介质一致。 - 网络流量:使用 Wireshark 等工具捕获网络流量。
- 内存(RAM):使用 Belkasoft Live RAM Capturer、Magnet RAM Capture 等工具抓取内存镜像。
3. 分析(Analysis)
对镜像进行逐层解析,提取高价值证据:
- 文件系统:使用 Autopsy、EnCase 等工具分析文件系统,查找删除文件、隐藏文件和可疑文件。
- 日志:分析 Windows 事件日志,查找登录事件、安全事件和系统错误等记录。
- 注册表:使用 RegRipper、Registry Explorer 等工具提取分析注册表信息,查找启动项、最近使用的文件、USB 连接记录等。
- 网络活动:使用 Wireshark 分析捕获的网络流量,查找可疑的网络连接与数据传输。
- 内存:使用 Volatility、Rekall 等工具分析内存镜像,查找正在运行的进程、网络连接、加载的模块等信息。
4. 报告(Reporting)
- 包含取证过程的详细描述。
- 提供所有发现的证据和分析结果。
- 附上截图、日志和其他相关文件的副本。
- 提供法律意见:根据分析结果给出法律建议,说明可能的安全事件和建议的应对措施。
取证时机
取证并非只发生在事件结束后,不同场景下启动取证的侧重点不同:
- 安全事件发生后:当出现主机入侵、数据泄露、网络攻击(DDoS、注入攻击等)、恶意代码感染等事件,需立即启动取证。此时需优先固定易失性数据(内存、网络连接、进程信息),避免证据因系统运行、重启等操作灭失,再逐步开展镜像制作、数据分析等工作。
- 应急响应处置中:取证与应急响应同步进行。在事件遏制、根除阶段(如隔离受感染主机、终止恶意进程),需同步记录操作轨迹、留存相关证据(如进程日志、网络流量包),确保应急操作不破坏原始证据,同时为后续溯源提供支撑。
- 案件受理后:接到司法案件、企业内部合规调查需求后,按标准流程(案件受理 → 证据固定)启动取证。需先明确取证范围与合规要求,再对涉案设备(主机、移动设备、服务器)进行封存,避免证据被篡改或二次污染。
取证对象与常见格式
常见取证文件格式
取证的原始数据通常以镜像或导出的文件形式出现:
zip、iso、vmdk、vhd、raw、dmp、dump、e01、vmem、mem、img、npbk(夜神模拟器镜像)、evtx(Windows 事件日志)、reg(注册表)
注意:注册表
.reg文件千万不要直接在本机双击打开——注册表是系统活动的配置库,直接导入本机注册表可能导致系统异常、重启或重装。应在隔离的取证环境中使用专用工具解析。
支持取证的系统类型
| 系统 | 常见文件系统 |
|---|---|
| Windows | NTFS / FAT / exFAT |
| Linux | Ext2 / Ext3 / Ext4 |
| macOS | HFS / HFS+ |
| Android | 各类闪存/加密分区 |
| iOS | APFS 等 |
此外,取证还包括 WEB 站点取证、移动设备取证等方向。
核心取证分支
文件系统取证
文件系统(File System)是操作系统中的一种核心组件,负责管理计算机上存储的文件和目录结构。
主要功能:
- 文件命名:将文件赋予唯一名称,方便用户访问和管理。
- 文件存储:将文件写入磁盘或其他存储设备。
- 文件检索:根据文件名、路径或其他条件检索文件。
- 文件删除:从磁盘或其他存储设备中删除文件。
- 目录结构管理:创建、移动、重命名和删除目录。
组件组成:
- 根目录(Root Directory):计算机的主目录,所有文件和目录从这里开始。
- 子目录(Subdirectory):位于根目录下的目录。
- 文件(File):存储在磁盘上的数据单元。
- 目录(Directory):容纳多个文件和子目录的结构单元。
内存取证
内存取证是数字取证的核心分支,针对计算机/移动设备的易失性内存(RAM)进行数据采集与分析,目的是提取系统运行时的实时、动态数据。这类数据断电即失,无法通过传统磁盘取证获取,是还原系统行为、追溯入侵痕迹、破解恶意代码的关键手段。
取证目标:
- 进程与线程分析:枚举所有运行进程(包括 rootkit 隐藏的进程)、进程的内存空间、加载的 DLL/共享库、进程间通信(IPC)信息。
- 系统状态还原:获取系统启动时间、当前用户、注册表(Windows)/内核参数(Linux)、已挂载的文件系统。
- 网络痕迹提取:恢复活跃的网络连接(TCP/UDP)、监听端口、未发送的数据包、恶意程序的 C2(命令与控制)服务器地址。
- 敏感数据挖掘:提取内存中的明文密码、加密密钥、剪贴板内容、浏览器缓存、用户输入的命令记录。
- 恶意代码分析:定位内存中的恶意进程,提取注入的 Shellcode,识别 Rootkit/木马的内核级钩子(Hook)。
- 文件与句柄分析:恢复进程打开的文件句柄、未保存的文档内容、临时文件。
采集工具:
- Windows:FTK Imager、DumpIt、WinPMEM
- Linux/macOS:LiME(Linux Memory Extractor)、
dd(简单场景,可能存在数据不完整风险) - 通用开源:Volatility Framework(支持采集 + 分析)
采集时应优先使用只读模式,避免工具自身进程向内存写入数据、破坏证据。
镜像分析思路:对镜像文件进行解析、提取目标数据,是内存取证的核心步骤。分析逻辑围绕「系统层 → 进程层 → 数据层」逐层深入:
- 系统层分析:确定镜像对应的操作系统版本(Windows 7/10、Linux 内核版本)、系统启动时间、用户信息,为后续分析提供环境上下文。
- 进程层分析:枚举所有进程,与正常进程列表对比,识别异常进程(如无路径的进程、伪装成系统进程的恶意程序);分析进程的内存空间,提取加载的模块和注入痕迹。
- 数据层分析:从进程内存或系统内存中提取敏感数据(密码、密钥、网络连接)、恶意代码片段。
磁盘取证
磁盘取证是数字取证的核心分支,针对计算机/移动设备的持久性存储介质(硬盘、SSD、U 盘、SD 卡等)进行数据采集、分析与恢复,目的是提取存储介质上的静态数据、历史行为痕迹和隐藏证据。与内存取证的「易失性数据」互补,磁盘取证聚焦持久化数据,是还原系统历史行为、追溯入侵痕迹的关键手段。
取证目标:
- 恢复删除/隐藏数据:恢复被用户手动删除、恶意软件隐藏的文件(如删除的日志、犯罪证据文档、CTF 中的 flag 文件)。
- 提取文件元数据:分析文件的创建时间、修改时间、访问时间(MAC 时间)、所有者、权限等,还原用户操作轨迹。
- 解析系统与应用日志:提取操作系统日志(Windows 事件日志、Linux syslog)、应用日志(浏览器历史、邮件记录、数据库日志),定位异常行为。
- 定位恶意文件与痕迹:查找磁盘中的恶意程序样本、配置文件、C2 通信日志、注册表启动项(Windows)、恶意脚本残留。
- 检测隐藏分区与加密数据:识别磁盘中的隐藏分区、加密卷(如 BitLocker、LUKS),提取加密密钥线索。
- 还原用户行为:通过文件访问记录、浏览器缓存、下载记录、文档编辑痕迹,还原用户的操作习惯和历史行为。
采集:将目标磁盘的全部数据(包括未分配空间、删除文件碎片、分区表)完整拷贝为镜像文件,核心要求是只读访问,避免写入操作破坏原始数据。
- 商业工具:FTK Imager、EnCase Forensic(司法取证首选)。
- 开源工具:
dd(Linux 命令行工具,简单易用)、dcfldd(dd的增强版,支持哈希实时校验)、Guymager(图形化开源工具)。 dd指令示例:
# 将 /dev/sda 磁盘完整镜像为 disk_image.raw
dd if=/dev/sda of=disk_image.raw bs=4M conv=noerror,sync
# 实时生成 MD5 哈希用于完整性验证
md5sum disk_image.raw > disk_image.md5镜像分析思路:对镜像文件逐层解析,分析逻辑分为「物理层 → 分区层 → 文件系统层 → 数据层」:
- 物理层:解析磁盘的 MBR(主引导记录)或 GPT(GUID 分区表),识别所有分区(包括隐藏分区),修复损坏的分区表。
- 分区层:挂载单个分区镜像,识别文件系统类型(如 NTFS、ext4、FAT32),解析文件系统的超级块、inode 等结构。
- 文件系统层:枚举所有文件(包括未分配空间中的删除文件),分析文件元数据(MAC 时间、权限、所属用户),恢复删除文件(利用文件系统的删除标记,如 NTFS 的
$MFT记录、ext4 的 inode 删除标记)。 - 数据层:提取日志文件、用户文档、应用数据,查找敏感信息或恶意痕迹。
常用取证工具清单
| 用途 | 工具 |
|---|---|
| 镜像采集/制作 | FTK Imager、EnCase、dd、DiskGenius |
| 磁盘挂载/解密 | FTK Imager、CnCrypt、VeraCrypt、Arsenal Image Mounter、夜神模拟器(Android 镜像) |
| 内存分析 | Volatility(2/3)、Rekall |
| 注册表分析 | Registry Explorer、MiTeC Windows Registry Recovery(WRR)、RegRipper |
| Windows 日志分析 | Procmon |
| 商业取证平台 | 取证大师、火眼(付费) |
实战案例
在 CTF 比赛中,取证题一般会提供一个较大的文件(磁盘文件/内存文件/镜像等),选手需要综合利用 Windows 或 Linux 知识,并结合一些 Misc 杂项知识找到 flag。这类题目通常以多问形式逐步加深难度,或直接询问 flag。
注册表取证:Windows 配置单元
Windows 注册表的用户/系统关键配置存储在配置单元(Hive)中,C:\Windows\System32\config 目录下常见文件及含义:
| 配置单元 | 作用 |
|---|---|
| SOFTWARE | 包含系统软件和应用程序的配置信息 |
| SYSTEM | 包含系统硬件配置及其驱动程序的关键信息 |
| SECURITY | 有关系统安全设置的信息 |
| DEFAULT | 包含系统默认用户配置的数据 |
| SAM | 用于存储系统用户和组信息 |
分析 SAM 可提取用户与口令哈希;分析 SOFTWARE 的启动项(如 Run 键)可定位持久化后门。
内存取证:Volatility 实战流程
Volatility 是内存取证最常用的开源框架。基础命令格式:
python vol.py -f [镜像文件名] --profile=[操作系统] [插件参数]注:
vol.py是 Volatility 2 的用法;Volatility 3 已改为vol3 -f <镜像> <插件>,无需指定--profile(自动识别)。
先用 imageinfo 判断镜像 Profile(如 WinXPSP2x86),再按以下思路逐步深入:
- 使用
imageinfo获取镜像的 Profile 信息。 - 使用
filescan对系统文件做全盘扫描,一般会在桌面上放置压缩包、图片之类的 hints,可结合系统命令做筛选(findstr或grep)。 - 使用
dumpfiles或memdump对数据进行导出——前者导出文件,后者导出进程内存,然后分析这个文件或进程。 - 前面导出的文件可能包含密码或只能拿到一部分有价值数据,此时使用
pstree、psscan、pslist、cmdscan等命令检查可疑项。 - 结合可疑项和前面导出的文件做进一步分析——可疑项可能是一个 key,或需要从可疑项中读取某个值。
- 一般只要掌握常用的
vol命令,并能结合前面的图片、压缩包分析对导出的文件做分析,就差不多能拿到 flag。
常用插件及作用:
| 插件 | 作用 |
|---|---|
imageinfo | 获取镜像信息,给出 profile 参考值 |
pslist | 查看进程信息 |
cmdline | 显示进程命令行参数 |
clipboard | 提取 Windows 剪贴板中的内容 |
cmdscan | 查看终端记录 |
dumpfiles | 提取内存中映射或缓存的文件,指定偏移量 -Q 和输出目录 -D |
filescan | 提取文件对象池信息,可结合 grep 筛选 |
hashdump | 查看用户名密码信息(密码为哈希值,需爆破) |
screenshot | 屏幕截图 |
memdump | 转储进程的可寻址内存,提取指定进程 |
printkey | 打印注册表项及其子项和值 |
磁盘取证:回收站 $Recycle.Bin
$Recycle.Bin 文件夹是系统重要的隐藏文件,一般存在于磁盘根目录下,是系统「回收站」在每一个磁盘上的链接文件夹,用于保存磁盘上删除的文件或文件夹信息,恢复误删除到回收站中的文件或文件夹时大有用处。一般需要显示磁盘的隐藏文件后才能看到它。
$Recycle.Bin 是正常的系统文件,不是病毒、不用删除。如果回收站设置成「删除文件时不进入回收站」,该文件夹是可以删除的,而且会自动恢复。
相关法律法规
取证证据最终要进入司法程序,取证过程必须符合电子数据取证的相关规定:
- 《关于办理刑事案件收集提取和审查判断电子数据若干问题的规定》(最高人民法院、最高人民检察院、公安部):重点约束电子数据的收集、提取、审查判断环节,原文整理时重点关注第 22-28 条(涉及电子数据的审查判断)。
- 《中华人民共和国网络安全法》:规定网络运营者在发生安全事件时负有留存相关网络日志、配合调查等义务。
- 《中华人民共和国数据安全法》:规定数据处理活动中的安全保护义务,涉及取证与数据保护的边界。
- 《中华人民共和国电子签名法》:明确数据电文作为证据的效力与要求。
提示:本文基于个人培训笔记整理,具体取证流程与法规适用请以现行有效的法律条文及所在机构/司法机关的规范为准。
- 本文链接: https://diyuyizhu.github.io/posts/computer-forensics-intro/
- 版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 许可协议。
