【ファイルカービング編】壊れたデータからファイルを救出する技術|CTF思考フレームワーク #47
広告・PRを含みます。この記事にはアフィリエイトリンクが含まれます。掲載内容は編集方針に基づいて作成していますが、価格・在庫・キャンペーン内容はリンク先で最新情報を確認してください。

ファイルカービングって、何を救出するの?🔪

壊れたデータの中から、ファイル構造を頼りに『失われたファイル』を救い出す技術。ファイルシステムが壊れたディスク、フォーマット済みのSDカード、断片化したメモリダンプ――そこから写真・PDF・ドキュメントを救出します。
ファイルカービング(File Carving)は、ファイルシステムのメタ情報なしで、生データからファイルを抽出する技術。JPEG ヘッダ(FF D8 FF)・PDF ヘッダ(%PDF-)・ZIP(PK\x03\x04)といったマジックバイトを目印に、ストレージのバイナリから本来のファイルを復元します。Scalpel・PhotoRec が定番。

削除されたファイルも復元できるって、すごい…
この記事は、CTF思考フレームワーク第47回。ファイルカービングの基本(マジックバイト・ヘッダ/フッタ・フッターレス対応)と、PhotoRec・Scalpel・Bulk Extractor の実践テクニック、CTFでの典型問題を整理します。
📖 この記事はシリーズの一部です
「CTF思考フレームワーク」 #47 / 全86記事 → シリーズ一覧を見る →
🪚 ファイルシステムが壊れていても、削除されていても、生のバイト列を眺めれば「ここからここまでがJPEG」「ここからZIP」と切り出せる。それがファイルカービング。
カービングはマジックナンバー(ファイル先頭のシグネチャ)と終端マーカーを頼りに、メタデータに頼らず物理レイアウトから救出する技術。NTFSの未割当領域、SDカードの破損、CTFの「壊れたdmpファイル」で大活躍。
壊れたデータからファイルを救出する技術です🛟

ファイルカービングは「ファイルシステム情報がなくても、生バイトからファイルを切り出す」技術だよ🛟
先に意味を押さえておくと読みやすい用語です。
- CTF: セキュリティの練習問題を解く競技。必ず許可された環境だけで試します。
- マルウェア: 情報を盗む、端末を壊す、勝手に操作するなど悪意あるソフトの総称です。
- フォレンジック: ログや端末の痕跡から、何が起きたかを調べる作業です。
👀 観察フェーズ:まず何を見る?

基本はマジックバイトを頼りに切る!PNGなら89 50 4E 47から49 45 4E 44まで🔍
対象が「生のバイト列」(rawディスク・メモリダンプ・連結ファイル)なら、まずヘッダパターンの分布を眺め、どんなファイル種別がどれくらい埋まっているかを推定。

ファイルシステムが壊れてても「中身のバイト列」から救出できるなんて夢があるね💡
fileでも種別判定できないバイナリの先頭/末尾- JPEG:
FF D8 FF→FF D9 - PNG:
89 50 4E 47→49 45 4E 44 AE 42 60 82 - PDF:
%PDF→%%EOF - ZIP:
50 4B 03 04→50 4B 05 06 - PE:
4D 5A(MZヘッダ)

カービングの典型は4方法。
🤔 仮説フェーズ:攻撃者は何を考える?
🔍 仮説①:ヘッダ+フッタ法
マジックバイトで開始/終了を特定して単純に切る。foremost・scalpelの基本動作。
📐 仮説②:ヘッダ+サイズ法
ヘッダ内にファイルサイズ情報がある形式(BMP・WAV・MP4)はサイズで切り出せる。
🧩 仮説③:構造ベースカービング
JPEG/PNGのチャンク構造を理解して論理的に再構成。photorecが優秀。
🪡 仮説④:断片ファイルの再縫合
ファイルが断片化されていると単純カービングは失敗。隣接候補を試して再結合するbifragmentテク。
🕶️ 攻撃者は「ファイルを連結する」「途中からデータを書き換える」「サイズを偽装してメタデータと不整合にする」などでDFIRを混乱させます。逆にCTF出題者は「ヘッダだけ書き換えて拡張子で誤誘導」「複数ファイルを一つの.binにまとめる」などでパズル性を持たせます。

カービングは「ファイル形式知識」と「総当たり気合」のハイブリッドなんだね💪
🔬 検証フェーズ:どうやって確かめる?

rawディスクにforemost -t all -i image.ddを流すのが入口。専用形式はphotorecの方が精度高め🧪
カービングは foremost / scalpel / binwalk -e が三大ツール。Photorecはディスクイメージから映像・写真を救出するのに特化。

回収後はfileとstringsでどこまで救えたかを確認するんだね💡
# foremost(設定ファイル=/etc/foremost.conf)
foremost -i disk.img -o output/
# binwalk: ヘッダ位置確認
binwalk capture.bin
# 抽出
binwalk -e capture.bin --dd='.*'
# Photorec(ディスク救出)
photorec disk.img

カービングで救う対象トップ3。
⚔️ 攻撃フェーズ:実際の手口
攻撃者がrmしたファイルでも未割当領域に残骸あり。MFTがなくても切り出せる。
pagefile.sys・hiberfil.sysには過去のメモリ内容が残る。クレデンシャル発掘の宝庫。
パーティション情報壊滅でもバイト列さえ読めればカービングで写真・文書を救出可能。
カービングを突破する/逆に活用する例:①ヘッダだけ書き換えてファイル種別偽装、②圧縮で見えなくする、③スパースファイル化、④ZIP内ZIPなどの再帰圧縮(zip bomb)。
# 連結された複数ファイルを切り出す(hexdumpで境界探す)
xxd file.bin | grep -n "ff d8 ff" # JPEG先頭
xxd file.bin | grep -n "ff d9" # JPEG末尾
# ddで切り出し
dd if=file.bin of=img1.jpg bs=1 skip=START count=$((END-START))
PE実行ファイルのoverlay(PE末尾に追加されたデータ)は正規署名済みインストーラへの埋め込みでよく使われ、署名検証だけでは検出しにくいので注意🪤

カービングを活かす&守る3点!🛡️
🛡️ 防御フェーズ:どう守る?
事件機のフルディスクイメージは改ざん不能(WORM)ストレージへ。原本ハッシュも記録。
日常運用ではVSS・LVM Snapshot・クラウドスナップショットで論理的にバージョン管理。カービングに頼らずに済む。
攻撃者からも救出可能なのが怖いところ。退役機の機密はDoD準拠の上書き or 物理破壊。

「消したつもりが残ってる」のがファイルカービングの教訓💪
DFIR運用ではカービングは「未割当領域からの救出」と「持ち出し検知」の両面。DLPで「ヘッダと拡張子の不一致」を検出するのも有効。
- DLP/CASBでヘッダ判定 vs 拡張子の不一致を検知
- メールゲートウェイで連結ファイル・偽装ヘッダを除去
- EDRでoverlay付きPEの実行をアラート
- 退職者対応では未割当領域の解析を含めたディスクイメージ取得
- 機密ファイルはハッシュベースで持ち出し検知
- ファイルシステム特有のslack space監視(cluster末尾の余り)
🛡️ 今日からできる対策ツール
フォレンジックと同じくらい大事なのが「そもそも侵入されない」こと。🛡️ ソースネクストのセキュリティツールなら、買い切りで使えるタイプも多いので、「サブスク疲れ」している人に人気です。
※ 上記は他社サービスへのリンクです。購入は各自でご判断ください。
⚠️ よくある落とし穴
- foremostの設定ファイルを見直さず、デフォルト種別だけで満足
- 断片化したファイルをカービングで「先頭4KBだけ」回収して見逃す
- ZIP bombを安易に展開してDoS被害
- PEのoverlay領域を解析対象外にして埋め込み検出を取りこぼす
- メモリイメージへのカービングを忘れる(Volatility filescan等)
- Slack spaceの存在を知らず、フルクラスタの差分を読まない
🧰 ツール早見表
| ツール | 用途 | 備考 |
|---|---|---|
| foremost | 汎用カービング | 設定ファイルで拡張可能 |
| scalpel | foremost派生 | 高速・カスタマイズ性 |
| binwalk | マジックナンバー走査+抽出 | ファームウェア解析でも定番 |
| Photorec | 写真・動画特化 | 消えたSDカードの救世主 |
| bulk_extractor | 高速並列スキャン | 巨大イメージ対応 |
🎓 本気で学びたい人へ
インシデントレスポンスやフォレンジックを職業として目指したい方へ。🎓 ササエルはインフラとセキュリティの両輪で学べるスクールです。
📚 もっと深く学びたい人へ
実際に手を動かして攻撃手法を体で覚えたいなら『7日間でハッキングをはじめる本 TryHackMe』がおすすめ📚
📚 次に読みたい
- ステガノグラフィ編|CTF思考フレームワーク #46
- マルウェア解析入門編|CTF思考フレームワーク #48
- ログ解析編|CTF思考フレームワーク #45
- タイムライン構築編|CTF思考フレームワーク #49
✍️ 学んだことを発信する
検証記録やレポートをオンラインでまとめるなら、ConoHa WINGのWordPressが手軽で便利です。
⚖️ 大事なお約束
この記事の手法は、必ず自分の環境か、許可されたCTF・脆弱性報奨金プログラム(HackerOne、Bugcrowd等)で試してください。他人のサービスに無断で攻撃を仕掛けるのは不正アクセス禁止法違反、立派な犯罪です。学んだ知識は守る側で活かしましょう🤝



