USB cables

セキュリティ研究者らは、Windowsの「プラグアンドプレイ」機能を悪用し、脆弱性のある、あるいは安全性の低いベンダー製ソフトウェアをWindowsにインストールさせ、SYSTEM権限を取得する新たな「Plug and Pwn」攻撃を明らかにした。

DEF CON 34でセキュリティ研究者のアレハンドロ・エルナンド氏ボルハ・マルティネス氏が発表したこの研究は、Windowsが新たに接続されたハードウェアを自動的に識別し、対応するドライバーパッケージを検索し、NT AUTHORITYSYSTEM アカウントとしてベンダーソフトウェアをインストールする仕組みを悪用するものである。

研究者らは、ソフトウェアを用いてUSBデバイスをエミュレートすることで、悪用可能なコンポーネントや脆弱性を含む署名付きベンダーパッケージをWindowsに強制的にインストールさせ、それを悪用してSYSTEM権限を取得できることを発見しました。

image

実演された攻撃の中には、ユーザーの操作やログインしたユーザーを必要としないものもあれば、標的のコンピュータに物理的なUSBハードウェアが接続されていなくても、RDPを介してリモートで実行できるものもあります。plugandpwn.com

Windowsのプラグアンドプレイの悪用

Windows は「コインストーラー」と呼ばれる機能をサポートしており、新しい USB デバイスがコンピュータに挿入されると、ベンダーのソフトウェアやドライバーを自動的にダウンロードしてインストールします。

2021年、Razerのマウスやキーボードを接続するだけで、標準的なWindowsユーザーにSYSTEM権限を付与するために、この機能がRazer Synapseの脆弱性と組み合わせて悪用された事例が 報告された

Razerデバイスが接続されると、Windowsは自動的にRazer Synapseインストーラーをダウンロードし、SYSTEM権限で起動しました。インストーラーの欠陥により、標準ユーザーがインストール画面からPowerShellを起動できるようになり、その結果、PowerShellがインストーラーの権限を継承してしまいました。

当時、この脆弱性を検証した結果、約2分でSYSTEM権限を取得できることが確認された。

当時、脆弱性アナリストのウィル・ドーマン氏は、Windowsの「プラグアンドプレイ」を通じて自動的にインストールされる他のソフトウェアにも、同様の脆弱性が存在する可能性が高いと警告していた。

ヘルナンド氏は、『Plug and Pwn』も同様の攻撃手法に属するが、今回の新たな調査ではWindowsデバイスのインストールパスそのものに焦点を当てていると語った。

「Razerのバグも同じ攻撃ファミリーに属します。違いは、特定のベンダーのインストーラーではなく、インストールパスそのものを標的にした点です」と、ヘルナンド氏は語った。

「我々の攻撃チェーンの中には、クリックもログオンセッションも不要なものがあり、そのうちの1つはハードウェアを一切使用せずにRDP経由で実行されます。」

研究者らによると、主な問題は、Windowsが新しいハードウェアを検出すると、関連する署名付きパッケージを自動的に取得し、ベンダーが提供するコンポーネントをSYSTEM権限で実行してしまう可能性がある点にある。

この特権的なインストールパスには、共同インストーラー、サービス、サポート用実行ファイル、ドライバなどが含まれる可能性があり、オペレーティングシステムによってUACのプロンプトが表示されることはない。

偽のUSBデバイスからリモートRDP攻撃まで

研究者らは、小型のLinuxコンピュータに接続されたCynthionおよびGreatFETのハードウェアとFaceDancerを組み合わせて、USBデバイスをエミュレートしたと語った。

FaceDancer は USB デバイスをエミュレートするためのソフトウェアフレームワークであり、研究者は、コンピュータが接続されたデバイスを識別するために使用する記述子、インターフェース、デバイスクラス、およびエンドポイントを定義することができます。

FaceDancer を実行しているハードウェアをコンピュータに接続することで、特定の USB デバイスが接続されたかのようにオペレーティングシステムを動作させることができます。

FaceDancerを使用することで、研究者らは自身のハードウェアをWindowsに対して特定のUSBデバイスであるかのように見せかけ、オペレーティングシステムにエミュレートされたハードウェアを認識させ、関連するベンダー製ドライバーパッケージを検索・インストールさせることができた。

一部の攻撃チェーンでは、エミュレートされたデバイスを一度切断し、別のデバイスIDとして再出現させる必要もあります。

「我々の攻撃チェーンのいくつかは、デバイスを複合デバイスとして提示することに依存しています。そうすることで、Windowsがusbccgp.sysをロードし、各インターフェースを個別に列挙するようになり、これが組み込みドライバではなくベンダーパッケージと一致させる要因となります」と、ヘルナンド氏は説明した。

「また、必要に応じて再列挙を行う必要があり、デバイスを一度切断してから、別の識別子として再接続する必要があります。」

ゼロクリックの物理実証実験において、研究者らはSierra WirelessおよびSony FeliCaのインストールパッケージの挙動を悪用した。

この攻撃では、まずSierra Wirelessのデバイスを装い、Windowsにソフトウェアをインストールさせます。このソフトウェアを悪用することで、コンピュータのDNS設定を変更することが可能になります。

次に、研究者らはソニーFeliCaデバイスを装い、Windowsに追加のソニー製ソフトウェアをインストールさせます。このソフトウェアは、暗号化されていない接続を介してファイルをダウンロードします。

システムのDNS設定を制御することで、研究者らはこれらのダウンロードを自分たちが管理するサーバーにリダイレクトし、ソニー製ソフトウェアの脆弱性を悪用して、SYSTEM権限でシステムに悪意のあるファイルを配置することができる。

最後に、再びSierraデバイスを装うことで、Windowsに悪意のあるファイルを読み込ませ、攻撃者がSYSTEM権限でリバースシェルを開くことを可能にする。

研究者らは、完全に更新されたWindows 11コンピュータ(ログインユーザーなし)に対してこの攻撃チェーンを実証し、攻撃の完了には約5分かかるとしている。

Plug and Pwn Facedancer attack emulating Sony and Sierra hardware
ソニーおよびSierraのハードウェアをエミュレートする「Plug and Pwn Facedancer」攻撃
出典:plugandpwn.com

この攻撃が小型のポータブルデバイスでも実行可能かとの質問に対し、ヘルナンド氏は、研究用のハードウェアはすでに持ち運び可能なほどコンパクトであり、USBガジェットモードで動作するRaspberry Piでも理論上はこの攻撃を実行できるはずだと述べた。

しかし、Flipper Zeroでは現時点でFaceDancer攻撃を実行できないと彼は述べた。

「Flipper Zeroでは無理です。それ用のFaceDancerバックエンドがなく、フレームワークも動作しません」とヘルナンド氏は語った。

「そのBadUSBモードはHIDには問題ないが、任意の複合記述子や再列挙を実現するには、ファームウェアの改修が必要になるだろう」

また、研究者らは「NoPlug & Pwn」と呼ばれる手法も実証した。これは物理的なハードウェアエミュレーションを一切必要としない。

その代わりに、この攻撃はRDP USBリダイレクトを悪用する。これは、ユーザーのローカルコンピュータに接続されたUSBデバイスを、リモートのWindowsセッション内で利用可能にする機能である。

研究者らは、実際のデバイスをリダイレクトするのではなく、RDP経由で接続する際にこのUSBリダイレクト機能を通じて特定のUSB記述子を送信するPython製RDPクライアントを作成した。

すると、リモートの Windows ホストは、この偽の記述子をゲストコンピュータに接続された正当な USB デバイスとして扱い、ホスト上にそれに対応するプラグアンドプレイデバイスを作成し、対応するドライバーやベンダーソフトウェアのインストールを引き起こします。

研究者らの実証実験では、Windows Update パッケージに DLL ハイジャックを通じて悪用され、SYSTEM 権限を取得可能な共同インストーラーが含まれている Intel RealSense カメラを偽装した。

「サーバーのUSBハブドライバが私たちの偽装デバイスを列挙し、Windows PnPは物理的なデモ時とまったく同じ動作を行います。つまり、ハードウェアIDを照合し、SYSTEM権限でドライバをインストールするのです」と、研究者たちはPlug and Pwnサイトで説明しています。

このRDP攻撃は、USBリダイレクトが有効になっているシステムでのみ機能する。ヘルナンド氏によると、これは仮想デスクトップ環境では一般的な設定だという。

コインストーラーを無効化することは有効ですが、「Plug and Pwn」を完全に阻止することはできません

ウィル・ドーマン氏は、この種の攻撃を懸念するWindows管理者は、「DisableCoInstallers」レジストリ値を有効にすることを提案しています。これにより、デバイスインストール中にドライバーパッケージがコインストーラーを実行するのを防ぐことができます。

これを行うには、レジストリエディタを開き、HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionDevice Installerレジストリキーに移動します。

そのキーの下に、「DisableCoInstallers」という名前の DWORD-32 値を追加し、以下に示すように値を1 に設定します。

これにより「Plug and Pwn」を効果的に阻止できるかとの問いに対し、ヘルナンド氏は、ソニーのFeliCa攻撃やIntel RealSense RDP攻撃など、実演された攻撃の一部を妨害できると述べた。

しかし、根本的な攻撃対象領域を排除するものではない。

「効果はあり、私たちが実演した攻撃の一部を阻止できるでしょう」と、ヘルナンド氏は語った。

「とはいえ、この種の攻撃を完全に阻止できるわけではありません。PnPの列挙、Windows Updateの解決、ドライバのステージング、INFの処理、およびINF経由でインストールされるサービスには影響を与えません。」

研究者らは、WacomおよびAtherosのパッケージを用いた別の攻撃例を示してこれを説明した。この攻撃は、コインストーラーではなくINFファイルを介してインストールされたAtherosドライバーサービスに存在する脆弱性(CVE-2019-10617)を悪用するものである。  

ヘルナンド氏は、機密性の高いシステムを運用する組織に対し、「DisableCoInstallers」に加え、追加のデバイスブロック措置を併用することを推奨している。

「機密性の高い環境では、デバイスインストールの制限やハードウェアIDの許可リストと組み合わせて使用し、必要のないRDPおよびVDIホストではPnPデバイスのリダイレクトを無効にする(`fDisablePNPRedir`)ことをお勧めします」と、ヘルナンド氏は語った。

研究者らは、すべての攻撃シナリオを個別のベンダーに対して新たな脆弱性として報告してはいない。その理由として、多くのシナリオは単独ではセキュリティ上の欠陥ではなく、他の機能と組み合わさった場合にのみ悪用可能になるためだと述べている。