首页/安全/应急响应速查/dd 磁盘镜像与校验

dd 磁盘镜像与校验

用 dd/dcfldd 制作磁盘或分区镜像:核对设备与容量,边写边算哈希,完成后校验一致性。

应急响应速查安全更新于 2026-10-13

dd 磁盘镜像与校验

dd 按块复制数据,可以把整块磁盘或某个分区原样写成镜像文件,是取证与迁移的常规手段。它不带校验功能,所以取证场景通常配 dcfldd(可边写边算哈希)或事后对镜像再算一次 sha256。使用前必须做两件事:确认目标写完不会影响来源设备(来源只读挂载或物理只读),以及反复核对输入与输出设备名——dd 把输出写错位置就是数据覆盖,无法撤销。

基本信息

基本命令dd if=/dev/sda of=disk.img bs=4M conv=noerror,sync
参数含义if 输入、of 输出、bs 块大小、conv 转换选项、status 进度显示
容错选项conv=noerror,sync 遇到读取错误继续并把块补零,适合坏盘
带哈希工具dcfldd if=... of=... hash=sha256 hashlog=... 采集即算哈希
速度与进度bs 通常取 1M 到 16M;status=progress 可观测进度
写保护源头只读挂载,或使用硬件写保护器,避免改动原始介质

典型使用场景

  • 取证时固定磁盘或分区内容,供后续离线分析
  • 复制旧盘数据到新盘,或迁移系统盘
  • 为可疑主机做完整镜像,避免在原始介质上操作
  • 制作模板盘的原始副本用于批量部署
  • 对坏盘做容错读取,尽量抢救可读数据

制作镜像并校验

制作镜像并校验
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT,FSTYPE        # 1 先确认设备名与容量的对应关系
blockdev --getsize64 /dev/sda                      # 2 记录来源设备容量,便于事后核对
dd if=/dev/sda of=/evidence/disk.img bs=4M conv=noerror,sync status=progress   # 3 制作镜像
sha256sum /evidence/disk.img | tee /evidence/disk.sha256                       # 4 计算镜像哈希
dcfldd if=/dev/sda of=/evidence/disk2.img bs=4M hash=sha256 hashlog=/evidence/disk2.sha256   # 5 替代方案
ls -l /evidence/disk.img; du -h /evidence/disk.img                             # 6 核对文件大小

参数读法

参数含义使用注意
if输入源写错会读到无关数据,先 lsblk 确认
of输出目标指向已有设备会立刻覆盖,必须反复核对
bs每次读写的块大小太小极慢,太大占用内存,常用 1M 到 16M
conv=noerror,sync读取出错继续并补零,保持偏移对齐取证常用,但会产生零块需在报告里说明
status=progress显示进度长时间执行时用于判断是否卡住
count 与 skip限制长度与跳过偏移只取部分区域时使用,需在记录里写明范围
执行前反复核对 if 与 of,并再次确认设备名没有写反:dd 不会询问确认,of 指向的磁盘内容会被直接覆盖且无法恢复。在取证机上,建议先对来源设备做只读挂载或用硬件写保护器。
镜像文件体积等于磁盘容量,动辄数百 GB:事前确认目标盘剩余空间,事后把哈希、容量与执行时间一起登记进保管记录,作为镜像与来源一致性的证明。

易错点

  • if 与 of 写反:直接覆盖证据盘或生产盘,数据不可恢复
  • 不加 bs 与进度显示:速度慢且无法判断卡在何处,长任务容易误判为死机
  • 不做哈希:镜像与原始介质的一致性没有证据,取证价值大打折扣
  • 在已挂载可写的分区上直接读:源数据可能被系统同时改写,镜像内部不一致
  • 忽略容量核对:没有记录来源设备容量,事后无法判断镜像是否完整

数据来源与参考

  • man 1 dd(conv 与 status 选项)
  • dcfldd 项目文档:哈希与进度支持

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌