Check Pointの研究者は、Microsoftの正規の修復用ドライバーがカーネルレベルのファイル操作・レジストリ操作に悪用され得ることを発見しました。これにより攻撃者がセキュリティ制御を改ざんできる可能性があります。
Microsoft署名済みのWindows Defender修復用ドライバーが、ファイル削除やレジストリ改変、セキュリティ制御の無効化まで行えるカーネルレベルの「操作エンジン」として悪用可能であることが、Check Point Research(CPR)の新たな調査で明らかになりました。
この手法は脆弱性を突くものではなく、従来型のBring Your Own Vulnerable Driver(BYOVD)モデルにも依拠していません。代わりに、Defenderの起動時削除用ドライバー「BTR.sys」に意図的に組み込まれた機能を悪用するものだと、CPRの研究者Jiří Vinopal氏はブログ投稿で述べています。
Vinopal氏はこのドライバーと、その未公開のトランザクション形式をリバースエンジニアリングし、BTR.sysに対してカーネルモードから任意のファイル操作・レジストリ操作を指示できることを突き止めました。
BTR.sysはMicrosoft署名済みの正規コンポーネントであり、ロックされたファイルの削除など、Defenderが再起動を伴う修復処理を必要とする際に使用されます。
CPRのチームは、この手法を実証する概念実証(PoC)ツール「BTR_CLI」を公開しており、Windows 7から最新パッチ適用済みのWindows 11 25H2まで幅広いバージョンで動作することを示しています。
この攻撃経路は依然として塞がれておらず、現時点で実際の悪用事例は確認されていません。Microsoftのセキュリティレスポンスセンター(MSRC)は、この問題について「即時修正の基準を満たさない」と判断したとのことです。
MSRCによれば、この攻撃は既存の権限を前提とするものだといいます。
Defenderのクリーンアップ機構が悪用の対象に
この手法は、BTR.sysが命令を受け取る仕組みを悪用しています。この使い捨て型のドライバーは、一般的なIOCTLインターフェースを公開する代わりに、自身に付随する代替データストリーム(ADS)に保存された暗号化済み設定情報を読み込む仕組みになっています。
CPRの調査によると、この設定情報はハードコードされた256バイトの鍵を用いるRC4暗号化と、独自のCRC-32整合性チェックによって保護されています。
復号すると、この設定情報にはファイル削除、ディレクトリ削除、ファイル移動、レジストリ操作といった一連のアクションが含まれています。可能なレジストリ操作としては、レジストリキーや値の削除、レジストリ値の設定、任意のレジストリ変更などが確認されており、これらは永続化やセキュリティ制御の改ざんに悪用される可能性もあります。
移動先としてSystem32が指定された場合、このファイル移動機能は任意のファイル書き込み機能に転じ得る、とVinopal氏は指摘しています。
この悪用手順はBTR_CLIによって自動化されており、ローカルのDefenderインストールから正規ドライバーを抽出し、暗号化されたトランザクションを構築、ドライバーを読み込むところまでを一括で行います。対象マシン自体が持つBTR.sysを利用するため、従来のBYOVD攻撃のように外部からドライバーを持ち込む必要がない点も特徴だと、CPRは指摘しています。
研究者らは、Microsoft署名済みの64ビット版ドライバーとして18種の異なるバージョンを特定し、調査対象となったすべてのバージョンで同一のトランザクション形式とRC4鍵が使われていることを確認しました。
MicrosoftはCSOのコメント依頼に対し、現時点で回答していません。
起動タイミングが状況をさらに悪化させる
CPRはまた、Windowsの起動シーケンスにおけるBTR.sysの位置づけにも注意を促しています。このドライバーは従来型のStart=0の起動ドライバーとしては動作できないものの、Boot Bus Extenderグループに属するStart=1のシステムドライバーとして設定されていれば、フェーズ1のごく初期段階で実行され得ます。
Vinopal氏によれば、このタイミングにより「ゴールデンウィンドウ」と呼べる隙が生まれます。ファイルシステムはすでに改変可能な状態にある一方で、重要なセキュリティサービスやユーザーモードの保護コンポーネントはまだ起動していないためです。「主要なアンチウイルスサービスは、BTRドライバーが処理を終えてからおよそ34秒後に起動します」と同氏は述べています。
CPRは、このタイミングを悪用すれば、保護サービスが起動する前にDefenderのバイナリを削除したり、Defender関連のレジストリキーを改変したりできることを実証しました。CPRは、BTR.sys自体は正規のものであるため署名ベースのブロックは効果がなく、代わりに挙動に基づく検知を用いるべきだとしています。異常なプロセスの親子関係や、想定外のファイル・レジストリ操作といった、ドライバーが通常のDefenderの動作フロー以外で使われている兆候を監視することが有効な対策になり得るとしています。