mcpField
A
acquiring-disk-image-with-dd-and-dcfldd

acquiring-disk-image-with-dd-and-dcfldd

github.com/mukul975安全35.2k678 次安装8 周前更新
代码仓库

关于 acquiring-disk-image-with-dd-and-dcfldd

为数字取证人员提供使用 dd 和 dcfldd 获取磁盘镜像的操作指南,涵盖写保护、逐位复制、哈希校验和过程记录。适用于事件响应及证据保全。

主要功能

  1. 01识别设备并启用写保护
  2. 02使用 dd 或 dcfldd 创建镜像
  3. 03计算并核对哈希值
  4. 04记录采集过程与证据链
  5. 05处理远程采集和故障磁盘

适用场景

  1. 01调查前复制嫌疑磁盘
  2. 02为法律程序保全经验证的副本
  3. 03从受感染工作站采集 USB 介质
  4. 04处理故障磁盘或远程采集

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill acquiring-disk-image-with-dd-and-dcfldd

安装后在 Claude Code 中输入/acquiring-disk-image-with-dd-and-dcfldd确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
references/
api-reference.md
scripts/
agent.py

详细介绍

使用 dd 和 dcfldd 获取磁盘镜像

何时使用

  • 当你需要为调查创建嫌疑磁盘的取证副本时
  • 在事件响应期间,需要在分析前保存易失性磁盘证据时
  • 当执法或法律程序需要经过验证的逐位副本时
  • 在对存储设备执行任何破坏性分析之前
  • 当需要从物理磁盘、USB 设备或存储卡获取镜像时

前置条件

  • 基于 Linux 的取证工作站(SIFT、Kali 或任意 Linux 发行版)
  • dd(所有 Linux 系统均预装)或 dcfldd(增强型取证版本)
  • 已配置硬件写阻断器或软件写阻断
  • 具有足够存储空间的目标磁盘(大于源磁盘)
  • 取证工作站上的 root/sudo 权限
  • SHA-256 或 MD5 哈希工具(sha256sum、md5sum)

工作流

步骤 1:识别目标设备并启用写保护
# List all connected block devices to identify the target
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT,MODEL

# Verify the device details
fdisk -l /dev/sdb

# Enable software write-blocking (if no hardware blocker)
blockdev --setro /dev/sdb

# Verify read-only status
blockdev --getro /dev/sdb
# Output: 1 (means read-only is enabled)

# Alternatively, use udev rules for persistent write-blocking
echo 'SUBSYSTEM=="block", ATTRS{serial}=="WD-WCAV5H861234", ATTR{ro}="1"' > /etc/udev/rules.d/99-writeblock.rules
udevadm control --reload-rules
步骤 2:准备目标磁盘并记录源设备信息
# Create case directory structure
mkdir -p /cases/case-2024-001/{images,hashes,logs,notes}

# Document source drive information
hdparm -I /dev/sdb > /cases/case-2024-001/notes/source_drive_info.txt

# Record the serial number and model
smartctl -i /dev/sdb >> /cases/case-2024-001/notes/source_drive_info.txt

# Pre-hash the source device
sha256sum /dev/sdb | tee /cases/case-2024-001/hashes/source_hash_before.txt
步骤 3:使用 dd 获取镜像
# Basic dd acquisition with progress and error handling
dd if=/dev/sdb of=/cases/case-2024-001/images/evidence.dd \
   bs=4096 \
   conv=noerror,sync \
   status=progress 2>&1 | tee /cases/case-2024-001/logs/dd_acquisition.log

# For compressed images to save space
dd if=/dev/sdb bs=4096 conv=noerror,sync status=progress | \
   gzip -c > /cases/case-2024-001/images/evidence.dd.gz

# Using dd with a specific count for partial acquisition
dd if=/dev/sdb of=/cases/case-2024-001/images/first_1gb.dd \
   bs=1M count=1024 status=progress
步骤 4:使用 dcfldd 获取镜像(首选取证方法)
# Install dcfldd if not present
apt-get install dcfldd

# Acquire image with built-in hashing and split output
dcfldd if=/dev/sdb \
   of=/cases/case-2024-001/images/evidence.dd \
   hash=sha256,md5 \
   hashwindow=1G \
   hashlog=/cases/case-2024-001/hashes/acquisition_hashes.txt \
   bs=4096 \
   conv=noerror,sync \
   errlog=/cases/case-2024-001/logs/dcfldd_errors.log

# Split large images into manageable segments
dcfldd if=/dev/sdb \
   of=/cases/case-2024-001/images/evidence.dd \
   hash=sha256 \
   hashlog=/cases/case-2024-001/hashes/split_hashes.txt \
   bs=4096 \
   split=2G \
   splitformat=aa

# Acquire with verification pass
dcfldd if=/dev/sdb \
   of=/cases/case-2024-001/images/evidence.dd \
   hash=sha256 \
   hashlog=/cases/case-2024-001/hashes/verification.txt \
   vf=/cases/case-2024-001/images/evidence.dd \
   verifylog=/cases/case-2024-001/logs/verify.log
步骤 5:验证镜像完整性
# Hash the acquired image
sha256sum /cases/case-2024-001/images/evidence.dd | \
   tee /cases/case-2024-001/hashes/image_hash.txt

# Compare source and image hashes
diff <(sha256sum /dev/sdb | awk '{print $1}') \
     <(sha256sum /cases/case-2024-001/images/evidence.dd | awk '{print $1}')

# If using split images, verify each segment
sha256sum /cases/case-2024-001/images/evidence.dd.* | \
   tee /cases/case-2024-001/hashes/split_image_hashes.txt

# Re-hash source to confirm no changes occurred
sha256sum /dev/sdb | tee /cases/case-2024-001/hashes/source_hash_after.txt
diff /cases/case-2024-001/hashes/source_hash_before.txt \
     /cases/case-2024-001/hashes/source_hash_after.txt
步骤 6:记录获取过程
# Generate acquisition report
cat << 'EOF' > /cases/case-2024-001/notes/acquisition_report.txt
DISK IMAGE ACQUISITION REPORT
==============================
Case Number: 2024-001
Date/Time: $(date -u +"%Y-%m-%d %H:%M:%S UTC")
Examiner: [Name]

Source Device: /dev/sdb
Model: [from hdparm output]
Serial: [from hdparm output]
Size: [from fdisk output]

Acquisition Tool: dcfldd v1.9.1
Block Size: 4096
Write Blocker: [Hardware/Software model]

Image File: evidence.dd
Image Hash (SHA-256): [from hash file]
Source Hash (SHA-256): [from hash file]
Hash Match: YES/NO

Errors During Acquisition: [from error log]
EOF

# Compress logs for archival
tar -czf /cases/case-2024-001/acquisition_package.tar.gz \
   /cases/case-2024-001/hashes/ \
   /cases/case-2024-001/logs/ \
   /cases/case-2024-001/notes/

关键概念

概念描述
逐位副本源设备的精确复制,包括未分配空间和松弛空间
写阻断器防止对证据介质进行写入的硬件或软件机制
哈希验证通过加密哈希比对源设备与镜像以证明完整性
块大小(bs)影响速度的传输块大小;取证通常使用 4096 或 64K
conv=noerror,sync在读取错误时继续并用零填充以保持偏移对齐
证据链证明证据未被篡改的书面记录
分卷镜像将大型镜像拆分为较小文件以便存储和传输
Raw/dd 格式无元数据容器开销的逐位镜像格式

工具与系统

工具用途
dd用于原始镜像的标准 Unix 磁盘复制工具
dcfldd美国国防部计算机取证实验室的 dd 增强版本,支持哈希计算
dc3dd来自美国国防部网络犯罪中心的另一个取证 dd 变体
sha256sum用于完整性验证的 SHA-256 哈希计算
blockdev用于将块设备设置为只读模式的 Linux 命令
hdparm磁盘识别和参数报告
smartctl用于磁盘健康和识别的 S.M.A.R.T. 数据检索
lsblk块设备枚举和识别

常见场景

场景 1:获取嫌疑笔记本电脑硬盘 通过 Tableau T35u 硬件写阻断器连接硬盘,识别为 /dev/sdb,使用带 SHA-256 哈希的 dcfldd,拆分为 4GB 分段以便 DVD 归档,验证哈希匹配,在案件笔记中记录。

场景 2:为受感染工作站的 USB 闪存盘制作镜像 使用 blockdev --setro 进行软件写阻断,使用 dcfldd 获取镜像并同时计算 MD5 和 SHA-256 双重哈希,镜像足够小可作为单个文件,验证并存储到加密的案件磁盘上。

场景 3:通过网络进行远程获取 使用 dd 通过 netcat 或 ssh 管道进行远程获取:ssh root@remote "dd if=/dev/sda bs=4096" | dd of=remote_image.dd bs=4096,在两端分别计算哈希以验证传输完整性。

场景 4:从故障磁盘获取镜像 先使用 ddrescue 恢复可读扇区,然后使用带 conv=noerror,sync 的 dd 用零填充间隙,在错误日志中记录哪些扇区不可读。

输出格式

Acquisition Summary:
  Source:       /dev/sdb (500GB Western Digital WD5000AAKX)
  Destination:  /cases/case-2024-001/images/evidence.dd
  Tool:         dcfldd 1.9.1
  Block Size:   4096 bytes
  Duration:     2h 15m 32s
  Bytes Copied: 500,107,862,016
  Errors:       0 bad sectors
  Source SHA-256:  a3f2b8c9d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1
  Image SHA-256:   a3f2b8c9d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1
  Verification:    PASSED - Hashes match

评论

支持 Markdown