Windowsミニフィルターを活用したランサムウェア検知:ファイル変更イベントを傍受する新手法

概要:Windowsミニフィルターによるランサムウェア対策の新手法

セキュリティ研究者の0xflux氏が、オペレーティングシステムの最深部でランサムウェアを阻止するための新しい概念実証(PoC)ツールをGitHubで公開しました。このプロジェクトは「Sanctum」と名付けられた広範なエンドポイント検出・対応(EDR)戦略の一部であり、Windowsミニフィルターを使用して、悪意のあるファイル暗号化を検知し、傍受する方法を示しています。

「フィルタードライバー」の役割と「チョークポイント」の活用

このプロジェクトの核心は、Windowsの「フィルタードライバー」というコンポーネントにあります。フィルタードライバーは、アプリケーション(ユーザーモード)とハードドライブ(コアドライバー)の間のスタックに位置し、すべてのファイル活動(ファイルの作成、書き込み、名前変更など)がここを通過する「チョークポイント」として機能します。この独自のポジションが、悪意のあるアクターを阻止するための完璧な可視性とレバレッジを提供します。当初はRustでの実装が検討されていましたが、フィルタードライバーに必要なバインディングがRustにはまだ存在しないため、最終的にはC言語で記述されました。

ランサムウェア検知の鍵となる二つの「コールバック」

Sanctumドライバーは、特定のイベントが発生した際にシステムに通知する「コールバック」を登録することで機能します。このプロジェクトは、ランサムウェアの挙動を検出するために特に二つの重要な信号に焦点を当てています。

  • IRP_MJ_CREATE: プロセスがファイルをオープンしようとするときに発生するイベントです。ドライバーは、多数のファイルに対して迅速に「書き込み」または「削除」アクセスを試みるプロセスを監視し、これは暗号化の一般的な前兆となります。
  • IRP_MJ_SET_INFORMATION: このPoCの主要な検知メカニズムです。ファイルの名前変更など、ファイルのメタデータが変更されたときにトリガーされます。ランサムウェアはファイルを暗号化した後、被害者に侵害されたことを示すためにファイル名を変更することが多く、このPoCでは悪名高いLockBitランサムウェアの亜種に関連する拡張子「.HLJkNskOq」を具体的に監視しています。

技術的実装と攻撃者の特定

ドライバーが名前変更イベントを検出すると、FltGetFileNameInformation APIを使用して完全なファイル名を解析します。その後、新しい拡張子を既知のランサムウェア署名のリストと照合します。一致が検出された場合、ドライバーは単にアクションをブロックするだけでなく、IoThreadToProcessなどのヘルパー関数を用いて、変更の原因となったプロセスID(PID)とプログラム名を即座に特定します。これにより、セキュリティチームは、どのプログラムがファイルをロックしようとしているのかを正確に把握し、高精度なアラートを受け取ることができます。

現状と今後の展望

現在のプロジェクトは、危険なイベントをログに記録する「テレメトリツール」として機能しています。しかし、研究者はシステムのさらなる拡張計画を概説しています。次のイテレーションでは、ファイルの「エントロピー」(ランダム性)を分析してリアルタイムで暗号化を検出し、さらに悪意のあるプロセスのスレッドをフリーズさせて攻撃を瞬時に停止させる機能が検討されています。このプロジェクトは、防御をカーネルレベルに移行することで、従来のアンチウイルスソフトウェアではしばしば見られない速度と可視性の優位性を提供することを示しています。


元記事: https://gbhackers.com/detecting-ransomware-using-windows-minifilters/