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. 02dd または 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 形式メタデータコンテナーのオーバーヘッドがないビット単位のイメージ形式

ツールとシステム

ツール用途
ddRaw イメージング用の標準的な Unix ディスク複製ユーティリティ
dcflddハッシュ機能を備えた、DoD Computer Forensics Laboratory による拡張版 dd
dc3ddDoD Cyber Crime Center による、もう 1 つのフォレンジック用 dd 派生版
sha256sum完全性検証のための SHA-256 ハッシュ計算
blockdevブロックデバイスを読み取り専用モードに設定する Linux コマンド
hdparmドライブの識別とパラメーターの報告
smartctlドライブの正常性確認と識別のための S.M.A.R.T. データ取得
lsblkブロックデバイスの列挙と識別

一般的なシナリオ

シナリオ 1:疑わしいノート PC のハードドライブを取得する Tableau T35u ハードウェア書き込みブロッカーを介してドライブを接続し、/dev/sdb として識別します。SHA-256 ハッシュを使用して dcfldd で取得し、DVD への保管用に 4GB のセグメントに分割して、ハッシュが一致することを検証し、事件記録に記録します。

シナリオ 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 を実行し、欠落部分をゼロで埋めます。読み取り不能だったセクターをエラーログに記録します。

出力形式

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

コメント