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