取证装备与写保护器

取证装备要解决的矛盾很直接:既要高速读取介质,又绝对不能写入它。

最后更新 2026-10-09版本 v1.0维护 DigiForensics查看历史 0

关键词:写保护器、只读接入、USB、PCIe、SATA、SAS、移动取证箱、耗材清单 难度:入门 前置知识:取证流程与原则

一、概述

取证装备要解决的矛盾很直接:既要高速读取介质,又绝对不能写入它。

普通 USB-SATA 硬盘盒做不到——它是一条完整的双向通路,电脑可以往盘里写任何东西。写保护器就是插在中间的那道物理闸门。

一个流传很广的认知偏差,是把只读挂载当成写保护器。mount -o ro 是操作系统层面的约束,它可以因为参数写错而失效(NTFS 需要 noload、ext4 需要 noload),可以被某些驱动绕过,而且某些文件系统挂载时就会更新挂载计数、写日志。写保护器则是电气层就不允许写命令通过。两者不能互相替代,软写保护的五条局限里最后一条最要命:NVMe 没有传统 ATA 命令集,软方案覆盖度差。

写保护器构成采集环节的硬件前置条件。它决定的不是"能不能采到数据",而是"采到的数据能不能作为证据"。

上游是委托与受理——送检人交来的设备处于什么状态(关机?运行中?已损坏?)直接决定处置顺序。上游还包含取证流程与原则确定的原则:只读接入是纪律,不是偏好。

下游支撑三件事:镜像制作是在硬件通道打开之后才开始的事,dcfldd 的读取速度受限于所选的写保护器接口;只读挂载与安全接入是接入后的软件侧约束,与硬件侧构成两道防线;证据保管链与委托证明则要把"用什么设备、什么接口采集的"记进去。操作步骤里那些准备动作记录的型号与序列号,就是保管链的锚点。

写保护器本体按接口分为 USB / PCIe / SATA / SAS,以及移动设备用的取证箱,接口类型比品牌更决定成败。

固件层的两条查询命令各对应一套隐藏空间机制。hdparm -N /dev/sdX 的输出中 max sectors 大于当前可见容量即说明存在 HPA(Host Protected Area);案例里这条命令的输出是"未发现 HPA",这个否定结论本身就是要写进报告的。hdparm --dco-identify 对应 DCO(Device Configuration Overlay),另一套隐藏空间的机制。

DigiForensics.dd 与 DigiForensics.map 是两遍 ddrescue 策略的产物。mapfile 证明"哪些区段读不到",本身构成证据——报告里那 0.5 GB 不可读区域就是靠它给出的精确偏移范围。

RAID 成员盘在阵列里处于"非独立"状态,单盘直接读会得到错误数据或报错。移动设备取证箱有四种能力层级:逻辑提取 / 文件系统级提取 / 物理提取 / 云端提取,文件系统级价值最高,因为它能拿到已删除内容。防静电装备、USB 线材、电池属于耗材清单里的东西,劣质 USB 线导致供电不足断连,会打断采集产生不完整镜像,这比想象中常见。

能回答的是这些:手头这个设备该选哪种接口的写保护器、怎么验证写保护真的生效(不能只看设备灯,要实测)、怀疑有隐藏空间时怎么查、以及读取次数本身是稀缺资源时该按什么顺序读。

不解决的是这些:镜像怎么采、参数怎么定——dcfldd / ddrescue 的参数与坏扇区策略在镜像制作;镜像拿到之后怎么分析,那是文件系统篇的事。

手机里的数据怎么取也不在范围内。取证箱的能力层级讲过了,但现代手机的 FBE / Data Protection 让难点从"数据在不在"变成"能不能解锁",那属于加密范畴,见BitLocker 全卷加密取证与数据库与配置文件加密。RAID 阵列的条带参数怎么重建缺失条带同样超出这一层,这里只到"单盘不能直接读"这一步,更深的部分本库暂无专篇。

先要理解取证流程的阶段划分,以及为什么只读接入是纪律。后者不是技术问题而是认知问题:如果你相信"我小心点就没事",上面每一条都会显得多余。

建议动手接过一次硬盘。纸上读"写保护器"和手上接过一次,感受完全不同。尤其是那个"想验证写保护生效,于是往 /dev/sdX 写一个零"的动作:**这个动作本身有风险,因为它的正确执行结果就是失败——而失败恰恰是它唯一的有效证据。命令没有指定 seek,默认从第 0 扇区开始写,一旦写保护实际未生效,这 512 个零会真的落到原始检材的头部,覆盖 MBR/VBR 或 GPT 头部。**所以这个测试只在两种前提下做:写保护已经通过另一条独立路径确认有效,或者这块盘是可以牺牲的练习盘。正式检材上的确认方式见第四章对 Read-only file system 与设备声明的区分。

二、核心原理

2.1 两种写保护原理

原理 机制 优点 局限
只读型(Read-Only) 设备只实现读命令,写命令被设备固件拒绝 不改动设备任何状态,兼容性最好 依赖固件正确实现;极少数有实现缺陷的设备
物理阻断(Blocking) 用物理开关或跳线切断写方向的电气通路 与设备固件无关,从硬件层杜绝写入 开关被误置是重大风险;需操作前复核

实务要点:两种原理的可靠性都很高,但"物理阻断型"多一道人工检查环节。

无论哪种类型,每次使用前都必须用只读测试工具验证——不能假设。

2.2 接口类型对照

接口 适用介质 典型速率 注意事项
USB 3.x 2.5"/3.5" SATA 盘、USB 直连盘 5–10 Gbps 通用性最好;供电不足时需外接电源
SATA 2.5"/3.5" HDD/SSD 6 Gbps 台式机内直连,稳定高效
PCIe / NVMe M.2、M-key、U.2 NVMe SSD 3–8 GB/s 必须确认协议层(NVMe 或 SATA)与 key 规格
SAS 企业级 2.5"/3.5" 盘 6–12 Gbps 服务器场景主流;需 HBA 卡
IDE/PATA 老旧设备 100 MB/s 存量案件仍有;需对应接口

⚠️ M.2 的坑:M.2 是形态不是协议。

同样的 M.2 插槽,底层可能是 NVMe/PCIe 或 SATA。买错协议直接读不出数据。

M-key 支持 NVMe,B-key 多为 SATA——下单前务必核对。

2.3 固件层陷阱:HPA 与 DCO

即使完全只读,硬盘固件里仍可能藏着你看不见的空间:

机制 全称 作用 取证含义
HPA Host Protected Area 固件划出一块"主机保护区",对 BIOS 不可见 可能藏有分区表或数据
DCO Device Configuration Overlay 类似 HPA 的另一套机制 同上
RAID 元数据 阵列配置 大型阵列的成员盘是"非独立"状态 单盘直接读会得到错误数据或报错
# 检查 HPA —— 可见容量 vs 真实容量
sudo hdparm -N /dev/sdX

# 读全部 IDENTIFY 数据
sudo hdparm -I /dev/sdX

# DCO 设置
sudo hdparm --dco-identify /dev/sdX

💡 hdparm -N 输出中"max sectors"若大于当前可见容量,说明存在 HPA。这不是造假,可能是厂商预留或历史遗留,但必须记录并在报告中说明。

2.4 软镜像的固有局限

所谓"软写保护"指不用硬件设备,靠操作系统层手段限制写入。它的问题在于:

局限 说明
挂载即可能写 某些文件系统挂载时会更新挂载计数、写入日志
参数写错就失效 mount -o ro 之外,NTFS 需 noload,ext4 需 noload
工具可能绕过 某些取证工具会尝试修复"错误",从而写入
无法覆盖 NVMe NVMe 无传统 ATA 命令集,软方案覆盖度差
日志类设备无法软隔离 磁盘阵列控制器、智能卡等

结论:软写保护可以作为补充,绝不能作为唯一手段。

唯一例外是——镜像已经做好了,只在副本上分析。此时原始介质已封存,软隔离就够了。

2.5 移动设备取证箱的工作方式

移动取证与磁盘取证的物理对象完全不同。取证箱(移动取证箱 / 移动数据提取工作站)的核心能力:

能力 说明 意义
逻辑提取 读取应用层可见数据 快,但拿不到已删除碎片
文件系统级提取 绕过应用锁定,直接读分区 能拿到已删除内容,价值最高
物理提取 整块芯片的比特流 最完整,但通常需拆机或专用接口
云端提取 通过账号获取云端数据 设备已灭失时的替代路径

现实约束:现代手机普遍有硬件级加密(Android 的 FBE、iOS 的 Data Protection)。没有正确凭证时,物理镜像拿到的也是密文。

手机取证的难点从"数据在不在"变成了"能不能解锁"——这属于板块 5 的加密范畴。

2.6 耗材清单

低层取证的真实成本常被低估:

耗材/损耗 消耗原因 影响
硬盘读写头 故障盘反复读取 二次读取会加速损坏
SSD 写入寿命 大量小文件写入 一般不适用于只读取证
USB 线材 移动硬盘供电不足导致断连 频繁断连会打断采集,产生不完整镜像
防静电装备 静电放电损坏主板/内存 手机取证中风险最高
电池损耗 设备长时间不通电 部分电池老化后充电即危险

关键实践:对疑似故障的硬盘,读取次数本身就是稀缺资源。每读一次都可能永久损失数据。

必须先用 ddrescue 逻辑读,确认坏道分布后再决定是否深挖。


三、操作步骤

步骤 1:接写保护器前的准备

# 1) 记录检材信息(接之前就记录,避免混乱)
lsblk -o NAME,SIZE,MODEL,SERIAL,TYPE

# 2) 确认目标未被挂载
findmnt | grep -E 'sd[a-z]|nvme'

# 3) 记录固件可见容量
sudo hdparm -I /dev/sdX | head -30
sudo hdparm -N /dev/sdX

物理层面:

1  取证人员佩戴防静电手环
2  取下检材,记录外观与接口状态
3  检查写保护器开关处于"阻断/只读"位
4  接入写保护器,再接检材(顺序很重要:先接写保护器端)
5  在检材通电前,再次确认开关位置

步骤 2:验证写保护真的生效

这一步绝不能跳过:

# 确认内核层面设备为只读
lsblk -o NAME,RO,RM,SIZE,MODEL
# RO 列必须为 1

# 尝试写入测试 —— 应该失败
# 写测试:未指定 seek,落点在第 0 扇区(MBR/GPT 头)。仅在写保护已由
#   独立路径确认、或使用可牺牲练习盘时执行;正式检材上它必须以失败告终。
sudo dd if=/dev/zero of=/dev/sdX bs=512 count=1
# 期望结果:Read-only file system

⚠️ 注意:RO=1 有时是内核因设备特性(如 USB 直连盘)自动加的保护,不等于物理写保护。真正的验证要看写保护器自身的指示与型号规格。

步骤 3:执行镜像采集

# 正常介质
sudo dcfldd if=/dev/sdX of=DigiForensics.dd \
     hash=md5,sha256 hashlog=DigiForensics.hashlog \
     bs=4M conv=noerror,sync status=on

# NVMe 设备(注意接口名可能是 /dev/nvme0n1)
sudo dcfldd if=/dev/nvme0n1 of=DigiForensics.dd \
     hash=md5,sha256 hashlog=DigiForensics.hashlog \
     bs=4M conv=noerror,sync status=on

步骤 4:疑似故障盘的处置顺序

# 第 1 遍:快速读取,不做坏道重试(快,先拿到大部分数据)
sudo ddrescue -n /dev/sdX DigiForensics.dd DigiForensics.map

# 查看坏道分布
ddrescuelog -t DigiForensics.map

# 第 2 遍:只对失败区域重试
sudo ddrescue -d -r3 /dev/sdX DigiForensics.dd DigiForensics.map

💡 为什么要分两遍:ddrescue -n 跑得快,能尽快把绝大多数数据救出来并建立 mapfile。之后才针对坏道做耗时的逐块重试。如果一开始就 -d,可能耗几天且中途再次损坏。

步骤 5:RAID 阵列的处理

# 识别控制器与阵列状态(需硬件 RAID 卡)
# 先用 lspci 找到 RAID 控制器
lspci | grep -i raid

# 阵列成员的容量与型号通常不一致于单盘标称值
lsblk -o NAME,SIZE,MODEL,SERIAL

# 重要:不要单独读成员盘
# 正确做法:先在原控制器上做一致性备份,或使用阵列卡的镜像功能

⚠️ RAID 的常见翻车点:成员盘单独读出的是不一致的数据(因为条带分布在多盘上)。必须由控制器输出逻辑盘,或从其他成员盘补齐缺失条带。

步骤 6:移动设备处置

1  记录设备状态:是否开机、锁屏、是否有通知
2  若开机:不要解锁,也不要拔线(可能丢失内存中的会话)
3  评估是否需要内存提取(见板块 8)
4  选择提取方式:逻辑 / 文件系统级 / 物理
5  提取后立即对提取物计算哈希

四、常见陷阱

取证装备的失误大多不是技术判断错误,而是把某个"看起来安全"的状态当成了已验证的安全。一章已经点明核心矛盾:只读挂载是操作系统层面的约束,写保护器是物理层面的约束,两者不能互相替代。本章按四个环节展开:硬件连接、写保护验证、固件与容量、故障盘与特殊介质。

★ 标记表示该操作会导致原始检材永久灭失或不可逆改变,执行前必须停下来确认。

4.1 硬件连接与选型

陷阱 1:用普通硬盘盒直接接原始检材

现象:为了省事,原始硬盘直接插进 USB 硬盘盒就开始 dcfldd,采集顺利完成,镜像哈希也算了。

为什么会误判:USB-SATA 桥接芯片让电脑可以往盘里写,它是一条完整的双向通路。而操作序列里的一切信号都是正常的:设备识别成功、读命令返回数据、哈希能算出来、看不出任何异常。问题在于——桥接芯片的写通道一直存在,dcfldd 只是一条读命令,它没写不等于通路没写。而操作系统在这一刻可能正在做的事,完全不在 dcfldd 的视野里:文件系统自动挂载触发日志回放、写保护设备被内核尝试重新挂载、日志或缓存落盘。

误判代价:这是实务中最高频的证据灭失原因,而且它不留痕迹——事后没有任何一个文件能证明检材被写过,唯一能证明检材仍然完整的是事前用对了硬件。更麻烦的是责任归属:镜像"正常采到了",所有后续结论都会建立在一个原始性存疑的基础上。

正确做法:原始检材必须经写保护器接入,且顺序是"先接写保护器端、再接检材"(步骤 1 的物理流程第 4 步明确"顺序很重要"):