Windows Minifilterを使用してファイル変更イベントを傍受し、ランサムウェアを検知する

あるセキュリティ研究者が、オペレーティングシステムの最深部でランサムウェアを阻止することを目的とした新しい概念実証(PoC)ツールをGitHubで公開しました。

「Sanctum」と名付けられたより広範なエンドポイント検知・対応(EDR)戦略の一部として、このプロジェクトは、Windows Minifilterを用いて悪意あるファイル暗号化をユーザーデータが破壊される前に検知し、傍受する方法を防御側に示しています。

ランサムウェアの検知

このプロジェクトの中核は、「フィルタードライバー」と呼ばれるWindowsコンポーネントに依存しています。簡単に言えば、フィルタードライバーは、実行しているアプリケーション(ユーザーモード)とハードドライブ(コアドライバー)の間にあるスタックに位置します。

0xfluxとして知られる研究者は、この位置を、すべてのファイル操作(作成、書き込み、名前変更)が必ず通過しなければならないため「チョークポイント」だと説明しています。

これにより、ドライバーは完全な可視性と、悪意ある攻撃者を止めるための影響力を得られます。

研究者は当初Rustプログラミング言語の使用を意図していましたが、Rustにはフィルタードライバーに必要なバインディングがまだ存在しないため、最終的にドライバーはCで書かれました。

さらに見る

エクスプロイト

サイバーセキュリティソフトウェアスイート

セキュリティ情報・イベント管理

Sanctumドライバーは、特定のイベントが発生するたびにシステムへ通知する「コールバック」シグナルを登録することで動作します。

このプロジェクトは、ランサムウェアの検知動作のために、2つの重要なシグナルに焦点を当てています:

  1. IRP_MJ_CREATE: プロセスがファイルを開こうとするときに発火するイベントです。ドライバーはこれを監視し、多数のファイルに対して短時間で「書き込み」または「削除」アクセスを得ようとするプロセスを見つけます。これは暗号化の一般的な前兆です。
  2. IRP_MJ_SET_INFORMATION: このPoCにおける主要な検知メカニズムです。ファイル名の変更など、ファイルのメタデータが変化したときにトリガーされます。

ランサムウェアは、暗号化後にファイル名を変更し、被害者が侵害されたことを示す「不気味な」拡張子を付加することがよくあります。

このデモでは、ドライバーは特に拡張子 .HLJkNskOq を監視します。これは悪名高いLockBitランサムウェアの亜種に関連付けられています。

技術的な実装

ドライバーが名前変更イベントを検知すると、 FltGetFileNameInformation APIを使用して完全なファイル名を解析します。

次に、新しい拡張子を既知のランサムウェア署名のリストと比較します。

一致が見つかった場合、ドライバーは単に動作をブロックするだけでなく、攻撃者を特定します。

Image
ファイルの検知 – 出典: fluxsec

 IoThreadToProcess のようなヘルパー関数を使用することで、ドライバーは直ちにプロセスID(PID)と、変更を引き起こしたプログラム名を取得できます。

これにより、セキュリティチームに対して高精度のアラートが提供され、どのプログラムがファイルをロックしようとしているのかを正確に把握できます。

さらに見る

デジタル・フォレンジックサービス

コンピュータセキュリティ

エンドポイント検知・対応ツール

現在、このプロジェクトはテレメトリツールとして機能し、これらの危険なイベントをログに記録します。しかし研究者は、将来的にシステムを拡張する計画を示しています。

次のイテレーションでは、ファイルの「エントロピー」(ランダム性)を解析して暗号化をリアルタイムに検知し、悪意あるプロセスのスレッドを凍結して攻撃を即座に停止することさえ可能になるかもしれません。

このプロジェクトは、防御をカーネルへ移すことで、従来のアンチウイルスソフトウェアでは得られない速度と可視性の優位性を提供できることを示しています。

翻訳元: https://gbhackers.com/detecting-ransomware-using-windows-minifilters/

ソース: gbhackers.com