
ネイティブシンボリックリンクとNTパスを悪用し、有効なドライバーサービスをハイジャックして任意の(署名済み)ドライバーをロードする
DriverJack は、あまり知られていない NTFS テクニックを悪用して脆弱なドライバーを読み込むように設計されたツールです。これらの手法は、既存のサービスをハイジャックすることでシステム上でのドライバーサービスの登録をバイパスし、さらにドライバー読み込みイベントに表示されるイメージパスもスプーフィングします。脆弱なドライバーの存在をさらに偽装するため、この攻撃はエミュレートされたファイルシステムの読み取り専用バイパスも悪用し、読み込む前にマウントされた ISO 上のドライバーファイルのコンテンツを置き換えます。
DriverJack は、エミュレートされたファイルシステムにマウントされたファイルを RW ページにリマップしてそのコンテンツを上書きできる可能性を悪用します。この RO バイパスは IoCdfsLib に実装されています。
ISO がマウントされると、攻撃は開始または停止できるサービスドライバー、あるいはトリガーできるものを選択することで進行します。この操作には、設定ミスがない限り管理者権限が必要です。
ISO マウントとドライバー選択
ドライバーパスのハイジャック
このテクニックは、インストーラーが C:\Windows\System32\drivers ディレクトリに直接アクセスできることを悪用し、そこに悪意のあるシンボリックリンクを配置できるようにします。このシンボリックリンクは OS によって優先的に処理されるため、サービスが再起動されると悪意のあるドライバーが読み込まれます。
主な手順:
NtLoadDriver 関数はシンボリックリンクの NT パスを正規化します。ハッカー集団 Secret Club の jonasLyk との共同開発によるこの方法は、ドライバーバイナリが読み込まれるパスの一部である \Device\BootDevice NT シンボリックリンクをリダイレクトします。これにより、システム内にルートキットを隠すことができます。
手順:
BootDevice シンボリックリンクのターゲットをバックアップします。BootDevice シンボリックリンクを改ざんして、マウントされた ISO を指すようにします。BootDevice シンボリックリンクのターゲットを復元します。この方法は、Windows Defender サービスとドライバーを無効化するために unDefender プロジェクトで使用されたテクニックに触発されたものです。ドライバー読み込みイベントには、読み込まれているドライバーの実際のパスが引き続き表示され、ISO マウントポイントを指します。
広く知られているものの、システムの不安定化の可能性があるため、このテクニックが使用されることはほとんどありません。これは、BootPartition に割り当てられたドライブ文字を一時的に変更し、ドライバー読み込みプロセスをだまして別のドライブにアクセスさせます。
前述の NT シンボリックリンク悪用と組み合わせると、このテクニックは読み込まれるドライバーのパスを完全に偽装でき、SysMon やその他の監視ツールによる検出をバイパスします。
DriverJack は、CDFS エミュレートファイルシステムとあまり知られていない NTFS シンボリックリンクのプロパティを活用した、非従来型の脆弱なドライバー読み込み方法を示しています。
このプロジェクトは MIT ライセンスの下でライセンスされています。詳細は LICENSE ファイルを参照してください。