Communitygithub.com

DD 與 DCFLDD 硬碟映像擷取

在 Linux 鑑識工作站上,使用 dd 或 dcfldd 建立具數位鑑識健全性的位元對位元磁碟映像,並透過雜湊驗證 (MD5/SHA) 在擷取過程中維護證據完整性。

DD 與 DCFLDD 硬碟映像擷取 是什麼?

此技能指導使用者如何在 Linux 鑑識工作站上,使用 dd 或 dcfldd 工具從嫌疑硬碟、USB 裝置或記憶卡建立位元對位元(bit-for-bit)的鑑識映像。它涵蓋了完整的鑑識擷取流程,從識別目標設備、啟用寫入保護、使用 dd 進行基本擷取,到使用 dcfldd 進行進階擷取(內建雜湊與分段輸出),以及後續的完整性驗證與文件記錄。此技能尤其適用於需要為法律或執法程序提供可驗證複本的情境,或在進行破壞性分析前保存證據。支援的平台包括任何基於 Linux 的鑑識工作站(如 SIFT、Kali),並詳細解釋了硬體與軟體寫入阻斷器、區塊大小選擇、錯誤處理(conv=noerror,sync)等關鍵鑑識概念,確保擷取過程符合證據監管鏈(chain of custody)標準。

相容平台~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 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
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

# 壓縮記錄檔以供歸檔
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/

關鍵概念

概念說明
位元對位元複本包含未配置空間與 Slack 空間的原始複本
寫入阻斷器防止寫入證據媒體的硬體或軟體機制
雜湊驗證比較來源與映像的加密雜湊以證明完整性
區塊大小 (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,使用 dcfldd 搭配 SHA-256 雜湊,分割成 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

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,

相關技能