20232304-冯天悦-数字取证镜像技术
冯天悦同学,你好!今天我们来学习取证中的镜像技术。
在党政系统的日常工作中,经常会遇到需要批量对电子数据进行取证的情况,比如审查某个事项时,需要调取相关的文件、邮件或系统日志。这些数据是重要的电子证据,必须保证其在取证过程中不被篡改、完整可信。传统的简单复制粘贴无法满足法律上对证据真实性的严苛要求,而专业的镜像技术正是解决这一痛点的关键。
为什么旧方法行不通?
设想一个场景:某单位需要封存一台涉密电脑的硬盘数据进行调查。如果调查人员只是简单地打开电脑,把文件复制到一个U盘里,会存在什么问题呢?
证据易被污染:直接操作原盘,任何一个误操作都可能修改文件的访问时间等元数据,甚至损坏数据,导致证据在法律上失效。
完整性无法自证:你怎么向法庭证明,U盘里的文件和原始硬盘上的一模一样,一个字节都没变?简单的复制无法提供这种不可否认的证明。
无法应对删除与隐藏数据:复制操作只能拿到现存的文件,但对于已被删除却尚未被覆盖的敏感数据(这可能至关重要),或者隐藏的系统文件,传统方法就无能为力了。
案例对比:在一起真实的内部审查中,调查人员A使用复制粘贴的方式获取了目标文档,但当事人事后质疑文件在复制过程中被修改。由于缺乏有效的完整性校验记录,该证据的证明力大打折扣。而调查人员B对硬盘制作了位对位的精确镜像,并全程记录了哈希校验值,最终形成的证据链完整、可靠,得到了采信。
新解决方案的核心:镜像技术
镜像技术的核心差异在于,它不是复制“文件”,而是复制“扇区”。它像给硬盘拍一张全方位的“X光片”或制作一个“数字石膏模型”,将存储介质上的每一个比特(包括已删除文件的残留数据、未分配空间)都原封不动地打包成一个独立的镜像文件。
适用条件:
党政系统特点:数据敏感度高、审计追溯要求严格、流程必须合规。
核心原则:只读(不改变原始证据)、全程记录(每一步操作都有迹可查)、镜像分析(只对副本进行操作)。
为了帮助理解,你可以把镜像过程想象成文物取证。考古人员发现一件珍贵青铜器,绝不会直接用手去触摸清理(这相当于直接操作原盘)。他们会先喷洒特殊药水制作一个精确的硅胶模具(这相当于创建磁盘镜像),所有的研究、测量、分析都在这个模具或根据模具制作的复制品上进行(这相当于分析镜像文件)。这样既保护了原始文物,又能确保研究结果的准确性。
简化的认知框架
记住取证镜像的三个关键动作:
保护 (Protect):第一时间锁定原始证据,设置为只读模式,防止误写。
克隆 (Clone):使用专业工具,创建完整的、位对位的副本(镜像文件)。
验证 (Verify):计算并比对原始证据和镜像文件的“数字指纹”(哈希值),确保二者完全一致。
实践演练:构建党政系统模拟取证环境
现在,我们为你(学号:20232304 冯天悦)量身打造一个符合党政系统特点的模拟实验。假设你需要对一台涉密信息报送员的Linux办公电脑进行数据固定取证。
取证目的:固定该电脑系统盘中,与某一特定时期涉密信息报送相关的所有数据,包括系统日志、用户文档、邮件等,以备审查。
第一步:数据准备与环境搭建
准备模拟环境:
使用虚拟机(如VirtualBox或VMware)安装一个Linux系统(例如Ubuntu或CentOS),模拟目标办公电脑。
在该虚拟机中,创建一些模拟的“涉密”文档(如.txt, .docx文件)、日志文件,并放在/home/报送员/秘密报送/目录下。同时,也模拟一些其他不相关的文件。

为该虚拟机的虚拟硬盘分配一个独立的磁盘分区(如/dev/sdb1),模拟需要被取证的目标磁盘。
- 我在这里新添加了一个5GB的磁盘,并按照要求分配分区名称为/dev/sdb


安装必要工具:
打开终端,安装本次实验所需的软件包:
# 更新软件包列表
sudo apt update
# 安装dd(通常系统自带)、hashdeep(哈希计算)、autopsy(图形化分析工具)
sudo apt install dd hashdeep autopsy
# 安装支持国产商用密码算法SM3的哈希工具(例如,使用gmssl)
# 添加GMSSL源或下载编译,这里以编译安装为例(需提前安装开发工具)
wget https://github.com/guanzhi/GmSSL/archive/refs/heads/master.zip
unzip master.zip
cd GmSSL-master
./config
make
sudo make install
# 安装后,可以使用 `gmssl sm3` 命令计算SM3哈希值

询问AI得知,由于dd已经默认安装在Linux发行版中,不能也不需要从apt中进行下载安装

此处AI示范给出的操作有误,该系统采用cmake编译系统,并非简单的make,所以查询AI得知应该按照下图所示的步骤进行操作,参考了Kali配置gmssl密码算法库


第二步:开始取证操作(全程记录!)
法律合规要点第一点:只读原则!
在接触任何证据磁盘前,第一要务是挂载为只读模式,实现软件写保护。
# 假设目标证据磁盘为 /dev/sdb
sudo blockdev --setro /dev/sdb
# 验证是否设置成功
sudo blockdev --getro /dev/sdb
# 输出为 1 则表示只读设置成功

在这里我创建了一块新磁盘,并进行了分区


- 磁盘镜像(对整个证据盘制作镜像)
这是最完整的取证方式。
# 使用dd命令创建原始磁盘的完整镜像,并利用pv命令显示进度(需安装pv: sudo apt install pv)
sudo dd if=/dev/sdb | pv | dd of=/evidence/disk_image_20232304_FengTianyue.img bs=1M
# 计算原始磁盘的SM3哈希值(作为原始证据指纹)
sudo gmssl sm3 /dev/sdb > /evidence/hash_original_disk.sm3
# 同样计算镜像文件的SM3哈希值
gmssl sm3 /evidence/disk_image_20232304_FengTianyue.img > /evidence/hash_image_file.sm3
# 对比两个哈希值,必须完全相同!
cat /evidence/hash_original_disk.sm3
cat /evidence/hash_image_file.sm3


- 目录镜像(针对特定目录)
如果只需要固定某个目录(如报送员的工作目录)。
# 使用tar命令打包目录,保留所有文件属性,并计算哈希
cd /
sudo tar -cf - /home/报送员/秘密报送/ | pv | sudo tee /evidence/secret_report_dir.tar > /dev/null
# 计算打包后tar文件的SM3哈希
gmssl sm3 /evidence/secret_report_dir.tar > /evidence/hash_secret_report_dir.tar.sm3

3. 文件复制(针对单个重要文件)
对于极其重要的单个文件,也可以采用复制并校验的方式。
法律合规要点第四点:动态证据! 对于/proc, /sys等虚拟文件系统,其内容随系统状态实时变化,不能用dd做静态镜像,应用cp或tar。
# 例如,复制系统日志(非虚拟文件系统)
sudo cp -a /var/log/syslog /evidence/copied_syslog
# 计算原始文件和复制文件的SM3哈希
sudo gmssl sm3 /var/log/syslog > /evidence/hash_original_syslog.sm3
gmssl sm3 /evidence/copied_syslog > /evidence/hash_copied_syslog.sm3
# 对比哈希值
由于使用虚拟机没有syslog,所以这里以/var/log/boot.log为例。

第三步:证据记录与归档
法律合规要点第二、三点:证据链与原始证据隔离!
所有操作必须记录在案。请创建并填写Acquisition_Report.txt文件:
sudo nano /evidence/Acquisition_Report_20232304.txt
报告内容示例:
数字取证证据获取报告
案例编号:DT-XZ-20232304
操作员:冯天悦 (学号:20232304)
操作时间:2023年XX月XX日 HH:MM:SS
取证目标:模拟涉密信息报送员办公电脑系统盘及相关数据
1. 原始证据标识:
- 磁盘设备:/dev/sdb
- 原始磁盘SM3哈希值:[此处粘贴 hash_original_disk.sm3 中的哈希值]
2. 镜像文件记录:
- 全盘镜像文件:disk_image_20232304_FengTianyue.img
- 镜像文件SM3哈希值:[此处粘贴 hash_image_file.sm3 中的哈希值]
- 哈希比对结果:一致
3. 目录证据记录:
- 目录路径:/home/报送员/秘密报送/
- 打包文件:secret_report_dir.tar
- 打包文件SM3哈希值:[此处粘贴 hash_secret_report_dir.tar.sm3 中的哈希值]
4. 操作记录:
- HH:MM:SS 对/dev/sdb执行blockdev --setro,设置只读成功。
- HH:MM:SS 开始使用dd命令制作全盘镜像。
- HH:MM:SS 镜像完成,计算并验证SM3哈希值一致。
- ... (记录其他所有操作)
5. 证据封存声明:
- 原始磁盘已于XXXX时间物理封存,封存编号:XXXX。
- 后续所有分析工作将仅基于上述镜像文件进行。
操作员签名(电子标识):冯天悦

第四步:使用Autopsy进行初步分析
现在,你可以安全地分析镜像文件了,而无需触碰原始磁盘。
- 在图形界面打开Autopsy。
- 新建一个案例(Case),填入案件信息。
- 添加数据源(Add Data Source),选择我们刚才制作的镜像文件(disk_image_20232304_FengTianyue.img)。
- Autopsy会自动解析文件系统,并允许你:
- 文件浏览:像资源管理器一样查看镜像中的所有文件。
- 关键词搜索:搜索与“涉密”、“报送”等相关的关键词。
- 文件类型分类:快速定位文档、图片等。
- 元数据查看:查看文件的创建、修改、访问时间。
- 已删除文件恢复:尝试恢复已删除但未被覆盖的文件。
通过Autopsy,你可以高效地在镜像文件中查找、筛选出与取证目的相关的证据。
已成功导入镜像,如下图所示,我已经成功找到了预先放置的模拟“涉密”文件。
![img]()
迁移到其他领域
这套方法论不仅适用于党政系统,同样适用于金融审计、企业内部调查、司法鉴定等任何需要电子数据固证的场景。核心思想万变不离其宗:保护原始、精确复制、完整验证、记录留痕。
你的下一步行动
- 动手实践:按照本教程,在你的虚拟机环境中完整复现一遍整个流程。
- 理解记录:深刻理解Acquisition_Report.txt中每一个记录项的法律意义,养成“操作必有记录”的习惯。
- 探索工具:熟悉Autopsy的基本功能,尝试用它在你制作的镜像中找到你预先放置的模拟“涉密”文件。
今天的内容非常扎实,你掌握了电子取证中最核心的镜像技术。坚持练习,你一定能成为一名严谨细致的数字取证能手。
在过程中遇到的问题以及解决方案:
问题清单
| 序号 | 问题描述 | 根本原因 | 解决方法 |
|---|---|---|---|
| 1 | sudo apt install dd 报错"无法定位软件包 dd" |
dd 是 coreutils 自带工具,无需安装 |
只安装 hashdeep 和 autopsy:sudo apt install hashdeep autopsy |
| 2 | ./config 报错"没有那个文件或目录" |
GmSSL 使用 CMake,不是传统 configure | 使用 CMake 构建:mkdir build && cd build && cmake .. && make |
| 3 | 编译 GmSSL 时 bn.c 报错 uint32_t 未定义 |
缺少 #include <stdint.h> |
在 bn.c 第15行添加 #include <stdint.h> |
| 4 | 编译 GmSSL 时 zeta 重复定义错误 |
新版 GCC 链接器更严格,全局变量冲突 | 添加编译选项 -fcommon 或修复源码 |
| 5 | gmssl version 能找到,但 sudo gmssl 找不到 |
sudo 使用 root 的 PATH,不包含 GmSSL 路径 | 使用完整路径或创建软链接:sudo ln -s /usr/local/gzgmssllib/bin/gmssl /usr/local/bin/gmssl |
| 6 | gmssl sm3 /dev/sdb 报错 "illegal option" |
语法错误,缺少 -in 参数 |
正确使用:gmssl sm3 -in /dev/sdb -out hash.sm3 |
| 7 | sudo gmssl sm3 ... > /evidence/... 重定向失败 |
sudo 只作用于 gmssl,> 是 shell 操作,权限不足 |
使用 tee:sudo gmssl sm3 -in /dev/sdb | sudo tee /evidence/hash.sm3 |
| 8 | dd 制作镜像时报错 /evidence 目录不存在 |
目标目录未创建 | 先创建目录:sudo mkdir -p /evidence |
| 9 | sudo autopsy 报错 "Address already in use: 9999" |
端口被占用(可能已运行或崩溃未清理) | 杀死进程 sudo kill -9 $(lsof -t -i:9999) 或换端口 sudo autopsy 8888 |
| 10 | Autopsy 添加镜像时 Type 选择困惑 | 不清楚 Disk 和 Partition 的区别 | 镜像整块磁盘选 Disk,镜像分区选 Partition |
| 11 | Autopsy 中 Import Method 选择困惑 | 不清楚 Symlink/Copy/Move 的区别 | 镜像已在证据目录用 Symlink,其他位置用 Copy |
| 12 | Autopsy 中 Mount Point 填写困惑 | 不确定填什么路径 | 保持默认 /1/ 或填原始挂载点如 /home/ |
| 13 | Autopsy 导入后不知道怎么分析 | 不熟悉界面操作 | 选择 /1/ 分区 → 点击 ANALYZE → 浏览目录树 |
核心知识点总结
GmSSL 使用要点
# 正确语法
gmssl sm3 -in <输入文件> -out <输出文件>
# 计算磁盘哈希(带进度)
sudo pv /dev/sdb | gmssl sm3 > /evidence/hash.sm3
sudo + 重定向陷阱
# ❌ 错误:重定向没有 sudo 权限
sudo gmssl sm3 -in /dev/sdb > /evidence/hash.sm3
# ✅ 正确:用 tee 或整体用 sudo bash
sudo gmssl sm3 -in /dev/sdb | sudo tee /evidence/hash.sm3
sudo bash -c 'gmssl sm3 -in /dev/sdb > /evidence/hash.sm3'
Autopsy 流程
添加镜像 → 选 Disk/Partition → 选 Import 方式 → 选分区 /1/ → ANALYZE → 浏览文件
与AI进行沟通的链接:点击链接查看和 Kimi 的对话


浙公网安备 33010602011771号