@port139 Blog

基本的にはデジタル・フォレンジックの技術について取り扱っていますが、記載内容には高確率で誤りが含まれる可能性があります。

削除されたスナップショットの再利用 その1(ボツ)

テスト用のボリュームでシステムの保護を有効にし、スナップショットを作成します。テスト用のボリューム内にあるJPEG画像ファイルを幾つか削除。この段階ではスナップショットファイル内には削除されたJPEG画像ファイルの断片的な情報(変更があったブロック部分、例えばMFTレコードとか)のみがスナップショットファイルに含まれているので、スナップショットファイルに対してJPEG画像を検索しても画像全体を復元することはできません。
スナップショットファイル内に(削除されている)JPEG画像データを全て移動させる為、Cipher /W コマンドを使い未使用領域を完全に上書きします。削除されたJPEG画像ファイルの利用していたクラスタ位置が、Cipherコマンドによって上書きされることで、そのクラスタ位置にあったデータはスナップショットファイルへと移動されます。この段階でスナップショットファイルに対して画像を検索すると、うまく全体をリカバリできる場合もありますが、スナップショットファイル内に保存されたデータブロックが連続していないケースでは、JPEG画像が正しく表示されない、断片的な画像データとしてリカバリが可能になったりします。JPEG画像全体のうち半分程度が表示可能になってしまうケースでは、スナップショットファイル内で分断して保存されているデータブロックを繋げてリカバリする必要がありますが、これを“以前のバージョン”を使わずに、手動で行うのは大変だと思われます。

さて、ここからが今回の主目的となりますが、システムの保護でまずはこのテスト用ボリュームをシステム保護の対象から外し、スナップショットファイルを削除します。ファイルシステム上ではスナップショットファイルは削除された状態になりますが、EnCaseなどのフォレンジックツールであれば削除されたスナップショットファイルを復元できる状態にしておきます。削除行為により変更された MFT レコードなどを、削除前の状態に戻し、システムの保護を有効にすることで、ひょっとしたら削除されたスナップショットファイルを“以前のバージョン”から利用できるようになるのではないか?というのが今回のネタです。(全てVMwareの仮想環境におけるテスト)

とはいえ、仮に削除されたスナップショットファイルが復元可能な(上書きされてない)状態で発見されたとしても、スナップショットファイルが削除された以降で行われたファイルシステムの動きは反映されていないので、そのままスナップショットが利用できたとしても、現在のファイルシステムとは矛盾が発生します。スナップショット内の情報をベースに“以前のバージョン”でファイルを復元したら全然関係ないデータが混じる可能性もありえます。とはいえ(うまくいけばですが)スナップショットファイルを手動でパースするよりはもう少し使いやすくなるかもしれません。
よく考えると、わざわざJPEG画像ファイルを削除したりしなくても、認識するかどうかのテストであれば、事前にコピーしておいたスナップショットファイルを単純にボリュームに戻して認識するかどうかテストすればOKな気がしてきましたが、まぁここまできたので削除されたスナップショットファイルをリカバリして使ってみます。

リカバリしたスナップショットファイルを、テスト用のボリュームに書き戻すことになるので、そもそもこの段階でスナップショットに移動していないクラスタが上書きされる可能性があり、ファイルシステムの状態がスナップショットとの間で矛盾が発生します。今回はスナップショット内のJPEG画像ファイルを戻す実験なので気にせず進めますが、本来であれば元々あったクラスタ位置に書き戻すのが正しいでしょうね。
OSが稼働している状況でそのままSystem Volume Informationフォルダに書き戻そうかとも思ったのですが、システムの保護が有効な状態で書き戻すとおかしくなりそうな気もするので、別の環境でファイルだけ書き戻した仮想ディスクを元のゲストOSに認識させます....とか....色々とやってみましたがやはり単純にファイルコピーによる方法でスナップショットファイルを認識させるのは無理筋っぽいですねぇ。
スナップショットファイルを一度作成して、そのファイルの中身を戻したいものに変更してみるって方法もあるかなぁ...