mcpField
R
recovering-deleted-files-with-photorec

recovering-deleted-files-with-photorec

github.com/mukul975セキュリティ35.2k36 回インストール8 週間前に更新
リポジトリ

recovering-deleted-files-with-photorec について

デジタルフォレンジック向けに、ディスクイメージやストレージから PhotoRec でファイルを復元するスキルです。形式を絞った復元から整理、検証まで扱います。

主な機能

  1. 01生セクターからのファイル復元
  2. 02ファイル形式を絞ったスキャン
  3. 03復元ファイルの整理
  4. 04署名と完全性の確認

活用シーン

  1. 01フォレンジックイメージから削除文書を復元
  2. 02フォーマット済みドライブからの復元
  3. 03メモリーカードから監視映像を取得
  4. 04破損したファイルシステムからデータ抽出

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill recovering-deleted-files-with-photorec

インストール後、Claude Code で/recovering-deleted-files-with-photorecを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

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

詳細

PhotoRecによる削除ファイルの復元

使用するタイミング

  • フォレンジックディスクイメージやストレージデバイスから削除されたファイルを復元する場合
  • ファイルシステムが破損、フォーマット、または上書きされている場合
  • 文書、画像、動画、データベースの復元が必要な調査の場合
  • ファイルシステムのメタデータは利用できないが、生のデータセクターが残っている場合
  • メモリカード、USBドライブ、ハードドライブからファイルを復元する場合

前提条件

  • PhotoRecがインストールされていること(TestDiskスイートに含まれています)
  • フォレンジックディスクイメージ、またはデバイスへの直接アクセス(読み取り専用)
  • 十分な出力ストレージ容量(ソースより大きくなる可能性があります)
  • 元のメディアで作業する場合はライトブロッカー
  • デバイスアクセスのためのrootまたはsudo権限
  • 対象を絞った復元のための、対象ファイルタイプの知識

ワークフロー

ステップ1: PhotoRecのインストールと環境の準備
# Install TestDisk (includes PhotoRec) on Debian/Ubuntu
sudo apt-get install testdisk

# On RHEL/CentOS
sudo yum install testdisk

# On macOS
brew install testdisk

# Verify installation
photorec --version

# Create output directory structure
mkdir -p /cases/case-2024-001/recovered/{all,documents,images,databases}

# Verify the forensic image
file /cases/case-2024-001/images/evidence.dd
ls -lh /cases/case-2024-001/images/evidence.dd
ステップ2: 対話モードでのPhotoRecの実行
# Launch PhotoRec against a forensic image
photorec /cases/case-2024-001/images/evidence.dd

# Interactive menu steps:
# 1. Select the disk image: evidence.dd
# 2. Select partition table type: [Intel] for MBR, [EFI GPT] for GPT
# 3. Select partition to scan (or "No partition" for whole disk)
# 4. Select filesystem type: [ext2/ext3/ext4] or [Other] for NTFS/FAT
# 5. Choose scan scope: [Free] (unallocated only) or [Whole] (entire partition)
# 6. Select output directory: /cases/case-2024-001/recovered/all/
# 7. Press C to confirm and begin recovery

# For direct device scanning (with write-blocker)
sudo photorec /dev/sdb
ステップ3: 対象を絞った復元のためのコマンドラインオプションでのPhotoRecの実行
# Non-interactive mode with specific file types
photorec /d /cases/case-2024-001/recovered/documents/ \
   /cmd /cases/case-2024-001/images/evidence.dd \
   partition_table,options,mode,fileopt,search

# Recover only specific file types using photorec command mode
photorec /d /cases/case-2024-001/recovered/documents/ \
   /cmd /cases/case-2024-001/images/evidence.dd \
   options,keep_corrupted_file,enable \
   fileopt,everything,disable \
   fileopt,doc,enable \
   fileopt,docx,enable \
   fileopt,pdf,enable \
   fileopt,xlsx,enable \
   search

# Recover only image files
photorec /d /cases/case-2024-001/recovered/images/ \
   /cmd /cases/case-2024-001/images/evidence.dd \
   fileopt,everything,disable \
   fileopt,jpg,enable \
   fileopt,png,enable \
   fileopt,gif,enable \
   fileopt,bmp,enable \
   fileopt,tif,enable \
   search

# Recover database files
photorec /d /cases/case-2024-001/recovered/databases/ \
   /cmd /cases/case-2024-001/images/evidence.dd \
   fileopt,everything,disable \
   fileopt,sqlite,enable \
   fileopt,dbf,enable \
   search
ステップ4: 復元されたファイルの整理とカタログ化
# PhotoRec outputs files into recup_dir.1, recup_dir.2, etc.
ls /cases/case-2024-001/recovered/all/

# Count recovered files by type
find /cases/case-2024-001/recovered/all/ -type f | \
   sed 's/.*\.//' | sort | uniq -c | sort -rn > /cases/case-2024-001/recovered/file_type_summary.txt

# Sort recovered files into directories by extension
cd /cases/case-2024-001/recovered/all/
for ext in jpg png pdf docx xlsx pptx zip sqlite; do
   mkdir -p /cases/case-2024-001/recovered/sorted/$ext
   find . -name "*.$ext" -exec cp {} /cases/case-2024-001/recovered/sorted/$ext/ \;
done

# Generate SHA-256 hashes for all recovered files
find /cases/case-2024-001/recovered/all/ -type f -exec sha256sum {} \; \
   > /cases/case-2024-001/recovered/recovered_hashes.txt

# Generate file listing with metadata
find /cases/case-2024-001/recovered/all/ -type f \
   -printf "%f\t%s\t%T+\t%p\n" | sort > /cases/case-2024-001/recovered/file_listing.txt
ステップ5: 復元されたファイルの検証とフィルタリング
# Verify file integrity using file signatures
find /cases/case-2024-001/recovered/all/ -type f -exec file {} \; \
   > /cases/case-2024-001/recovered/file_signatures.txt

# Find files with mismatched extension/signature
while IFS= read -r line; do
   filepath=$(echo "$line" | cut -d: -f1)
   filetype=$(echo "$line" | cut -d: -f2-)
   ext="${filepath##*.}"
   if [[ "$ext" == "jpg" ]] && ! echo "$filetype" | grep -qi "JPEG"; then
      echo "MISMATCH: $filepath -> $filetype"
   fi
done < /cases/case-2024-001/recovered/file_signatures.txt > /cases/case-2024-001/recovered/mismatches.txt

# Filter out known-good files using NSRL hash comparison
hashdeep -r -c sha256 /cases/case-2024-001/recovered/all/ | \
   grep -vFf /opt/nsrl/nsrl_sha256.txt > /cases/case-2024-001/recovered/unknown_files.txt

# Remove zero-byte and corrupted files
find /cases/case-2024-001/recovered/all/ -type f -empty -delete
find /cases/case-2024-001/recovered/all/ -name "*.jpg" -exec jpeginfo -c {} \; 2>&1 | \
   grep "ERROR" > /cases/case-2024-001/recovered/corrupted_images.txt

主要な概念

概念説明
ファイルカービングファイルのヘッダー/フッターのシグネチャを使用して、生データからファイルを復元すること
ファイルシグネチャファイルの先頭にあり、種類を識別するマジックバイト(例:JPEGの場合はFF D8 FF)
未割り当て領域どのアクティブなファイルにも割り当てられていないディスクセクター。削除されたデータが含まれている場合があります
断片化されたファイル連続しないセクターに保存されたファイル。完全にカービングするのが困難です
クラスター/ブロックサイズファイルシステム上の最小割り当て単位。カービングの粒度に影響します
ファイルフッターファイルの終わりを示すバイト列(すべての形式にフッターがあるわけではありません)
データ残留セクターが上書きされるまで、削除後も残っている残存データ
誤検出シグネチャに一致するものの、データが破損または不完全なカービング結果

ツールとシステム

ツール用途
PhotoRec300種類以上のファイル形式に対応するオープンソースのファイルカービングツール
TestDiskパーティションの復元と修復のためのコンパニオンツール
Foremost米国空軍OSIが最初に開発した代替のファイルカーバー
ScalpelForemostをベースにした高性能ファイルカーバー
hashdeep再帰的なハッシュ計算および監査ツール
jpeginfoJPEGファイルの整合性検証
fileマジックバイトによってファイルタイプを識別するUnixユーティリティ
exiftool復元された画像および文書ファイルからメタデータを抽出

一般的なシナリオ

シナリオ1: 容疑者のUSBドライブからの削除された証拠の復元 dcfldd でドライブのイメージを作成し、文書および画像形式を対象にPhotoRecを実行して、ファイルタイプ別に整理します。復元されたすべてのファイルのハッシュを計算し、既知の不正ハッシュセットと照合して、画像からGPSおよびタイムスタンプ情報のメタデータを抽出します。

シナリオ2: フォーマットされたハードドライブの復元 フォーマットされたパーティション全体に対して「Whole」モードでPhotoRecを実行し、すべてのファイルタイプを復元します。ファイルの断片化により誤検出率が高くなることを想定し、シグネチャチェックで復元されたファイルを検証し、証拠の連鎖のためにカタログ化してハッシュを計算します。

シナリオ3: 監視カメラのメモリカード メモリカードのイメージから削除された動画ファイル(AVI、MP4、MOV)を復元します。対象を絞ったファイルタイプの選択を使用して復元を高速化し、動画ファイルが再生可能かを確認し、フレームのタイムスタンプを抽出して、復元内容を事件メモに記録します。

シナリオ4: 証拠ドライブのファイルシステム破損 ファイルシステムのメタデータが破壊されている場合、PhotoRecはファイルシステムを完全にバイパスし、生のセクターからカービングを行います。可能な限り多くのデータを復元し、ファイル名とディレクトリ構造は失われることを受け入れ、レビュー時に内容に基づいてファイル名を変更します。

出力形式

PhotoRec Recovery Summary:
  Source Image:     evidence.dd (500 GB)
  Partition:        NTFS (Partition 2)
  Scan Mode:        Free space only

  Files Recovered:  4,523
    Documents:      234 (doc: 45, docx: 89, pdf: 67, xlsx: 33)
    Images:         2,145 (jpg: 1,890, png: 198, gif: 57)
    Videos:         34 (mp4: 22, avi: 12)
    Archives:       67 (zip: 45, rar: 22)
    Databases:      12 (sqlite: 8, dbf: 4)
    Other:          2,031

  Data Recovered:   12.4 GB
  Corrupted Files:  312 (flagged for review)
  Output Directory: /cases/case-2024-001/recovered/all/
  Hash Manifest:    /cases/case-2024-001/recovered/recovered_hashes.txt

コメント