削除されようとしたファイルをバックアップコピーするツール

EXE、TMP、SYS、BAT ——— 何でも一緒だ。マルウェア解析では、どんなものからも目を離してはいけない。

ファイルが削除されようとしたタイミングで、そのファイルをバックアップコピーするフィルタドライバを書いてみました(ScavengerFolk.cab)。よければどうぞー。


以前に、デバイスドライバを自動的にバックアップコピーするツールを作りました。このツールを使って、マルウェアが生成したデバイスドライバファイルを効率的に収集することができるようになりました(たぶん!)。このツールはデバイスドライバ以外のファイルには関知していませんでしたが、実際にはデバイスドライバ以外にもマルウェアが自身の痕跡を消すためにファイルを削除してしまうケースは珍しくありません。

そこで今回は、ファイルが削除されようとしたタイミングで、そのファイルを自動的にバックアップコピーするツールを作成しました。これによって、前回のツールではできなかった通常のファイルの削除時のバックアップコピーができるようになりました。

このツールを使うことによって、マルウェアの初期解析の段階において「生成されることは確認できたが、削除もされてしまっているために内容が確認できないファイル」を簡単に取得できるようになります。特にバッチファイルなどは自分自身を削除できることもあり、しばしばこのような使われ方をします。これらのファイルを確実かつ効率的に収集することで、手作業での解析作業に取り掛かる前の初期解析段階でより多くの情報を得ることが可能になります。


……、や、これはやや嘘っぱちですね^^; フィルタドライバ書いたことなかったので書いてみただけです。とりあえず以下の特徴があるので興味のある人は使ったり、ソースを流用してそれぞれにとって有意義なものにしてください。


このツールはファイル システム フィルター ドライバー(ミニ フィルター ドライバー)として実装されており、インストーラーとしてexeも実装しています。このフィルタドライバをロードさせた直後から、アンロードされるまでの間に削除されたすべてのファイルをバックアップコピーします。
バックアップコピーは \WINDOWS\ScavengerFolk\ という前でコピーされ、各 に対応するもともとのファイル名は同じディレクトリの ScavengerFolk.log に記録されていきます。
ドライブの種類はたぶん問いません。とりあえずHDD、USB、フロッピー、NW共有あたりでちゃんと動くことを確認しています。

ちなみにこのツールは誤ったファイル削除に対する保護を目的とするものではありません
すべての削除ファイルをCRC32を計算したうえでコピー、という性質上、削除時のレスポンスの低下*1や、ディスクの使用量が一切減らない、状況によってはユーザーの意図に反してファイルがコピーされている、という望ましくない事態も起こりえるうえ、フィルタドライバ書くの初めてなの、テヘ、みたいな面があるので常用はしないでください。いや、してもいいけど自己責任で^^;


ということで、更に闘う者達の日々のお仕事にお役立てくださいませ。たぶん、リビルドすればXP SP2以降のすべてのOSで動きます。


参考

CRC32の実装に「プログラミングのメモ帳」さまのコードを利用させていただきました。
それと @iwata_m さんからもアドバイスをいただきました。感謝です。

応用

ファイルシステム ミニ フィルタードライバーはかなり強力な仕組みです。
たとえば実行可能イメージをメモリにロードする操作もハンドルでき、そのタイミングで「拒否」を返すことによって(たとえば悪性の)ファイルが実行されることを防ぐことができます。
この手の技術に関心がある場合は、Kernel Data and Filtering Support For Vista SP1を参照してください。レジストリ、プロセス、IOをフィルタする方法が書かれています。NWがらみはWindows Filtering Platformだと斜め後ろの席の人が言ってました。まだいじったことがないのですが。

*1:関連して。削除されるファイルサイズ分のNonPagedPoolを確保しようとするので、数十MBぐらいの大きいファイルはメモリが確保できずにコピーできないことがあります。