Communitygithub.com

使用 dd 和 dcfldd 获取磁盘镜像

在 Linux 取证工作站上,使用 dd 或 dcfldd 创建法医上可靠的逐位磁盘镜像,并通过哈希验证(MD5/SHA)在采集过程中保证证据完整性。适用于对嫌疑驱动器、USB 设备或存储卡进行成像调查,在事件响应期间保存易失性磁盘证据,或在任何破坏性分析之前为法律或执法程序生成经过验证的副本。

使用 dd 和 dcfldd 获取磁盘镜像 是什么?

该技能指导用户使用经典的 Unix 工具 `dd` 及其法医增强版 `dcfldd` 在 Linux 系统上进行法医级别的磁盘镜像获取。核心目标是创建原始存储设备的逐位精确副本(包括未分配空间和松散空间),并通过 SHA-256 或 MD5 等加密哈希保证副本的完整性。技能提供从识别目标设备、启用写入阻断,到使用 `dcfldd` 的内置哈希功能进行采集,以及最终验证镜像完整性并生成详细取证报告的完整端到端工作流。支持多种实际场景,如通过硬件写入阻断器采集硬盘、使用软件写入阻断成像 USB 驱动器、通过 SSH 进行远程采集以及处理有坏道的故障驱动器。该技能适用于 SIFT 或 Kali 等任何 Linux 取证工作站,强调严格的证据保管链文档和可靠性,适用于事件响应、执法调查和数字取证实验室。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mukul975/Anthropic-Cybersecurity-Skills/tree/main/skills/acquiring-disk-image-with-dd-and-dcfldd

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

使用 dd 和 dcfldd 获取磁盘镜像 是做什么的?

何时使用

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

先决条件

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

工作流

步骤 1:识别目标设备并启用写入保护

# 列出所有连接的块设备以识别目标
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT,MODEL

# 验证设备详情
fdisk -l /dev/sdb

# 启用软件写入阻断(如果没有硬件写入阻断器)
blockdev --setro /dev/sdb

# 验证只读状态
blockdev --getro /dev/sdb
# 输出:1(表示已启用只读)

# 或者,使用 udev 规则实现持久写入阻断
echo 'SUBSYSTEM=="block", ATTRS{serial}=="WD-WCAV5H861234", ATTR{ro}="1"' > /etc/udev/rules.d/99-writeblock.rules
udevadm control --reload-rules

步骤 2:准备目标位置并记录源信息

# 创建案例目录结构
mkdir -p /cases/case-2024-001/{images,hashes,logs,notes}

# 记录源驱动器信息
hdparm -I /dev/sdb > /cases/case-2024-001/notes/source_drive_info.txt

# 记录序列号和型号
smartctl -i /dev/sdb >> /cases/case-2024-001/notes/source_drive_info.txt

# 对源设备进行预哈希
sha256sum /dev/sdb | tee /cases/case-2024-001/hashes/source_hash_before.txt

步骤 3:使用 dd 获取镜像

# 基本的 dd 采集,包含进度显示和错误处理
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

# 压缩镜像以节省空间
dd if=/dev/sdb bs=4096 conv=noerror,sync status=progress | \
   gzip -c > /cases/case-2024-001/images/evidence.dd.gz

# 使用指定计数的 dd 进行部分采集
dd if=/dev/sdb of=/cases/case-2024-001/images/first_1gb.dd \
   bs=1M count=1024 status=progress

步骤 4:使用 dcfldd 获取镜像(首选取证方法)

# 安装 dcfldd(如果未安装)
apt-get install dcfldd

# 使用内置哈希和分块输出获取镜像
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

# 将大镜像拆分为可管理的大小
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

# 带验证过程的采集
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:验证镜像完整性

# 对获取的镜像进行哈希
sha256sum /cases/case-2024-001/images/evidence.dd | \
   tee /cases/case-2024-001/hashes/image_hash.txt

# 比较源哈希和镜像哈希
diff <(sha256sum /dev/sdb | awk '{print $1}') \
     <(sha256sum /cases/case-2024-001/images/evidence.dd | awk '{print $1}')

# 如果使用分块镜像,验证每个分块
sha256sum /cases/case-2024-001/images/evidence.dd.* | \
   tee /cases/case-2024-001/hashes/split_image_hashes.txt

# 重新哈希源设备以确认未发生更改
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:记录采集过程

# 生成采集报告
cat << 'EOF' > /cases/case-2024-001/notes/acquisition_report.txt
磁盘镜像采集报告
==============================
案件编号:2024-001
日期/时间:$(date -u +"%Y-%m-%d %H:%M:%S UTC")
检查员:[姓名]

源设备:/dev/sdb
型号:[来自 hdparm 输出]
序列号:[来自 hdparm 输出]
大小:[来自 fdisk 输出]

采集工具:dcfldd v1.9.1
块大小:4096
写入阻断器:[硬件/软件型号]

镜像文件:evidence.dd
镜像哈希(SHA-256):[来自哈希文件]
源哈希(SHA-256):[来自哈希文件]
哈希匹配:是/否

采集期间错误:[来自错误日志]
EOF

# 压缩日志用于归档
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 哈希计算
blockdevLinux 命令,用于设置块设备只读模式
hdparm驱动器识别和参数报告
smartctl用于驱动健康状态和识别的 S.M.A.R.T. 数据检索
lsblk块设备枚举和识别

常见场景

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

场景 2:对受感染工作站的 USB 闪存驱动器进行成像 使用 blockdev --setro 软件写入阻断,使用包含 MD5 和 SHA-256 双重哈希的 dcfldd 进行采集,镜像足够小可存为单一文件,验证后存储在加密的案件驱动器上。

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

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

输出格式

采集摘要:
  源设备:      /dev/sdb (500GB Western Digital WD5000AAKX)
  目标位置:    /cases/case-2024-001/images/evidence.dd
  工具:        dcfldd 1.9.1
  块大小:      4096 字节
  持续时间:    2 小时 15 分 32 秒
  复制字节数:  500,107,862,016
  错误:        0 个坏扇区
  源 SHA-256:  a3f2b8c9d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1
  镜像 SHA-256: a3f2b8c9d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1
  验证结果:     通过 - 哈希匹配

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

abusing-dpapi-for-credential-access

Extract and decrypt Windows DPAPI-protected secrets (Credential Manager, browser logins/cookies, Wi-Fi credentials, KeePass keys) online or offline using SharpDPAPI, SharpChrome, Mimikatz, or Impacket

abusing-shadow-credentials-for-privesc

Take over Active Directory accounts by writing attacker-controlled public keys to msDS-KeyCredentialLink (Shadow Credentials) with pyWhisker, Whisker, or Certipy, then authenticate via PKINIT to recover the target

achieving-cmmc-level-2-compliance

>-

analyzing-active-directory-acl-abuse

Detect dangerous ACL misconfigurations in Active Directory using ldap3

analyzing-android-malware-with-apktool

Perform static analysis of Android APK malware using apktool for resource decompilation, jadx for Java source recovery, and androguard for manifest inspection, dangerous permission-combination detection, and identification of obfuscated code, dynamic code loading, and reflection-based API calls. Use to statically triage a suspicious APK without executing it or to build mobile malware detection rules.

analyzing-api-gateway-access-logs

Parses API Gateway access logs (AWS API Gateway, Kong, Nginx) to detect

analyzing-apt-group-with-mitre-navigator

Query ATT&CK data with attackcti, mitreattack-python, and stix2, then build MITRE ATT&CK Navigator layers and multi-layer heatmap overlays mapping one or more APT groups

analyzing-azure-activity-logs-for-threats

Queries Azure Monitor activity logs and sign-in logs via azure-monitor-query

analyzing-bootkit-and-rootkit-samples

Analyzes bootkit and advanced rootkit malware infecting the Master

analyzing-browser-forensics-with-hindsight

Parse Chromium-based browser databases with Hindsight to extract and correlate browsing history, downloads, cookies, cached content, autofill data, saved passwords, and extensions from Chrome, Edge, Brave, Opera, and Vivaldi into a unified timeline (XLSX, JSON, or SQLite output). Use during incident response, insider-threat investigations, or criminal cases when you need to reconstruct a user

analyzing-campaign-attribution-evidence

Systematically evaluate cyber-campaign evidence to attribute an operation to a threat actor, using the Diamond Model and Analysis of Competing Hypotheses (ACH) to weigh infrastructure overlaps, TTP consistency, malware code similarity, and timing/language artifacts into confidence-weighted attribution assessments. Use when an incident investigation needs a defensible attribution confidence level.

analyzing-certificate-transparency-for-phishing

Monitor Certificate Transparency logs using crt.sh and Certstream to

analyzing-cloud-storage-access-patterns

Detect abnormal access in AWS S3, GCS, and Azure Blob Storage by analyzing CloudTrail Data Events, GCS audit logs, and Azure Storage Analytics for after-hours bulk downloads, new-IP access, and API-call spikes (e.g. GetObject) via statistical baselines and time-series anomaly detection. Use when investigating suspected cloud data exfiltration or building related detection rules.

analyzing-cobalt-strike-beacon-configuration

Extract and analyze Cobalt Strike beacon configuration from PE files

analyzing-cobaltstrike-malleable-c2-profiles

Parse and analyze Cobalt Strike Malleable C2 profiles with dissect.cobaltstrike (profiles and beacon-payload configs) and pyMalleableC2 (AST parsing) to extract HTTP/DNS transforms, URIs, headers, sleep/jitter, and injection behavior, then generate network detection signatures. Use when reverse-engineering a captured malleable profile or building detections against Cobalt Strike Beacon traffic.

analyzing-command-and-control-communication

Analyzes malware C2 communication over HTTP, HTTPS, DNS, and custom

analyzing-cyber-kill-chain

Analyzes intrusion activity against the Lockheed Martin Cyber Kill Chain

analyzing-disk-image-with-autopsy

Perform comprehensive forensic analysis of raw (dd), E01, or AFF disk images with Autopsy and The Sleuth Kit, recovering deleted files, examining metadata and embedded artifacts, keyword searching, and building investigation timelines with visual reports. Use for structured analysis of a forensic disk image or when stakeholders need visual reports from evidence.

analyzing-dns-logs-for-exfiltration

Analyzes DNS query logs to detect data exfiltration via DNS tunneling,

analyzing-docker-container-forensics

Investigate compromised Docker containers by analyzing images, layers,

相关技能