Windows SysinternalsのSDeleteは、既存のファイルを安全に削除したりディスクの未割当領域を安全に削除することができるツールです。
このツールは攻撃者によっても悪用されることがあり、例えば以下のようにランサムウェアが鍵ファイルの削除に利用しているという事例も報告されています。
CRYPVAULT: New Crypto-ransomware Encrypts and “Quarantines” Files
http://blog.trendmicro.com/trendlabs-security-intelligence/crypvault-new...
このような背景を踏まえ、SDelete実行に伴う変化をフォレンジックの観点で確認してみました。
結論としては、解析することによりSDeleteの実行有無、実行日時、削除されたファイル名、ファイルサイズ、その他のメタデータが判明する可能性があります。また、VSSやバックアップが残っていればデータを復元できる可能性がありますが、原則は困難と思われます。
検証内容は以下の通りです。まず、データを配置して、SDeleteで削除します。
- 全データを0x0Aで埋めた100Mのファイルを作成
- SDelete 0A.binを実行して削除
作成したファイルのメタデータは以下の通りです。
- ファイル名 0A.bin
- 作成日時 2015/04/20 22:55:12
- 更新日時 2015/04/19 17:05:07
- エントリ更新 2015/04/20 22:55:13
- ファイルID 41
- クラスタ 2605-27,019
SDelete実行後は、$MFT内に削除状態のレコードとして情報が残っているもののファイル名がZZZ.ZZZとなり、データ部分はランダム状態となります。
- ファイル名 ZZZ.ZZZ
- 作成日時 2015/04/20 22:55:12
- 更新日時 2015/04/20 22:57:14
- エントリ更新 2015/04/20 22:57:14
- ファイルID 41
- クラスタ 2605-27,019
ファイル名が変更され、更新日時とエントリ更新はSDelete実行時に更新されますが、作成日時やファイルIDは維持されています。
$UsnJrnlを見ると、 先にランダムなデータを書き込んでからファイル名をAAA.AAAにリネーム, BBB.BBBにリネーム...とリネーム処理を繰り返し最後にZZZ.ZZZにリネームしてから削除していることがわかります。
この挙動は公式サイトにも記載があり特徴的な動作であることから、少なくとも$UsnJrnlを解析することにより、実行有無、当初のファイル名、実行日時が判明する可能性があります。
またプリフェッチにもSDeleteの実行履歴は残りますが、プリフェッチ内のファイル情報として削除対象に指定したファイル名の情報は残っていませんでした。そのためプリフェッチに関してはそれほど有益な情報は得られないといえます。
SDeleteには未割当領域をランダムデータでワイプするオプションもあります。その場合にはSDELTEMPというファイル名で空き領域相当のサイズのファイルが生成、削除され, SDELTEMP?(?は数字)とSDELMFT?(?は6桁の数字)というファイル名で、600バイト前後のファイルが作成、削除されます。