Windows Policy の抜け穴を悪用:カーネル・モード・ドライバー偽署名が横行している

Hackers Exploit Windows Policy Loophole to Forge Kernel-Mode Driver Signatures

2023/07/11 TheHackerNews — Microsoft Windows におけるポリシーの抜け穴が、主に中国語を用いる脅威アクターにより悪用され、カーネルモード・ドライバー署名の偽造に使われていることが確認されていた。Cisco Talos は、「この脅威アクターは、期限切れの証明書で署名された悪意の未検証のドライバーをロードするために、カーネルモード・ドライバーの署名日を変更するという、複数のオープンソース・ツールを活用している。カーネルへのアクセスは、システムへの完全なアクセスを可能にするため深刻な脅威となる」と、The Hacker News と共有した2部構成の包括的なレポートの中で述べている。


その一方で、責任ある開示を受けた Microsoft は、脅威を軽減するために全ての証明書をブロックする措置を講じたと述べた。さらに、調査の結果として、「この ADV230001 に関する活動はいくつかの開発者プログラム・アカウントの悪用に限定されており、Microsoft アカウントの侵害は確認されていない」と述べている。

Microsoft は、事件に関与した開発者プログラム・アカウントを一時停止したほか、脅威アクターがドライバーを使用する前に、侵害していたシステム上で、すでに管理者権限を得ていたことを強調している。

2022年12月に同社は、ランサムウェア攻撃者が侵害後の活動において、Microsoft 署名のドライバーを使用するのを防ぐために、同様のブロッキング保護を展開していた。

カーネルモード・ドライバーに対して、Microsoft の Dev Portal からの証明書によるデジタル署名を要求するドライバー署名の実施は、悪意のドライバーに対する重要な防御線である。この悪意のドライバーは、セキュリティ・ソリューションを回避し、システム・プロセスを改ざんし、永続性を維持するために武器化される可能性がある。このポリシーの変更は、Windows Vista のデビュー時に導入された。

Cisco Talos が発見した新たな弱点は、カーネルモード・ドライバーの署名を偽造することを可能にし、それにより Windows 証明書ポリシーのバイパスを可能にするというものだ。

これは、互換性を維持するために、Microsoft が3つに切り分けた例外により可能になるものである。具体的に言うと、コンピュータが Windows の古いリリースからWindows 10 のバージョン 1607 にアップグレードされた場合、そして、BIOS でセキュアブートがオフになっている場合、サポートされているクロス署名された [認証局] にチェーンされている、2015年7月29日以前に発行されたエンド・エンティティ証明書でドライバーが署名されている場合に、クロス署名されたドライバーが許可される。

Cisco Talos は、「3番目の例外は、証明書がサポートされている相互署名認証局にチェーンされている場合に限るものであり、新しくコンパイルされたドライバーが、2015年7月29日より前に発行された場合に、または、それより前に期限切れになった場合に、失効していない証明書で署名できるようにするという抜け穴が作成される。ただし、それは、証明書がサポートされている相互署名認証局に、チェーンされている場合に限る」と述べている。

その結果として、この方法で署名されたドライバーは、Windows デバイスへのロードが防止されないため、脅威アクターはエスケープ条項を利用して、Microsoft に検証を依頼することなく、何千もの悪意のある署名付きドライバーを展開することが可能になる。

これらの不正ドライバーは、2018年〜2019年から公開されている、HookSignTool や FuckCertVerifyTimeValidity といった署名タイム・スタンプ偽造ソフトウェアを介して展開されている。

HookSignTool は 2020年1月7日から GitHub 経由でアクセス可能であり、FuckCertVerifyTimeValidity は 2018年12月14日にコードホスティング・サービスにコミットされた。

Kernel-Mode Driver Signatures


Cisco Talos は、「HookSignTool は、Windows API へのフックと、正規コード署名ツールのインポート・テーブルに対する手動変更の組み合わせにより、署名プロセス中にドライバーの署名日を変更する、ドライバー署名偽造ツールである」と説明している。

具体的には、証明書の有効期限を検証する CertVerifyTimeValidity 関数にフックして、実行中に署名のタイム・スタンプを変更する。

FuckCertVerifyTimeValidity の GitHub ページには、「この小さなプロジェクトは、signtool が証明書の有効時間を検証するのを防ぎ、手動でシステム時間を変更することなく、古い証明書で bin に署名できるようにする。crypt32!CertVerifyTimeValidity をフックして常に “0” を返すようにインストールし、signtool のコマンドラインに “-fuckyear 2011” を追加して、2011年の証明書に署名できるように、kernel32!GetLocalTime が望むものを返すようにする」と記されている。

とはいえ、こうした偽造を成功させるには、2015年7月29日以前に発行され失効していないコード署名証明書と、証明書の秘密鍵とパスフレーズが必要だ。

Cisco Talos によると、FuckCertVerifyTimeValidity のフォークされた GitHub リポジトリ内でホストされている PFX ファイルに、キーとパスワードが含まれているコード署名証明書を十数枚発見したという。これらの証明書が、どのようにして入手されたのかは、現時点では明らかになっていない。

さらに、HookSignTool は、デジタル著作権管理 (DRM) の整合性チェックを回避するために、クラックされたドライバーへの再署名のために使用されていることが確認されている。”Juno_Jr” という名前のアクターは、2022年11月9日に中国のソフトウェア・クラッキング・フォーラムで、正規のソフトウェア・キャッシング・ソリューションである PrimoCache のクラックされたバージョンをリリースした。

Talos の研究者は、「クラックされたバージョンのパッチが適用されたドライバーは、もともと “Shenzhen Luyoudashi Technology Co., Ltd.” に発行された証明書で再署名されており、この証明書は GitHub 上の PFX ファイルに含まれている。この、クラックされたドライバーをすり抜けさせる機能により、署名されたドライバーの DRM チェックを回避しようとする際の、重大な障害が取り除かれる」と述べている。

Kernel-Mode Driver Signatures


それが全てではない。 HookSignTool は、RedDriver として特定された、これまで文書化されていないドライバーからも、署名のタイム・スタンプを偽造するために利用されている。このドライバーは、遅くとも 2021年から活動しており、Windows フィルタリング・プラットフォーム (WFP) を利用してブラウザ・トラフィックを傍受し、ローカルホスト (127.0.0.1) に再ルーティングするという、ドライバー・ベースのブラウザ・ハイジャッカーとして機能している。

ターゲットとなるブラウザは、Liebao/QQ Browser/Sogou/UC Browser/Google Chrome/Microsoft Edge/Mozilla Firefox などの、中国でも人気のあるラウザのプロセス名を含む、ハードコードされたリストからランダムに選択される。

Cisco Talos の Outreach Researcher である Chris Neal は、「このサンプルは、疑わしいと思われる最初のものであった。私の注意を引いたのは、RedDriver ファイル内に保存されている Web ブラウザのリストだった」と述べている。

このブラウザ・トラフィックのリダイレクトの、最終的な目的は明らかではないが、このような機能を悪用してブラウザ・トラフィックを、パケット・レベルで改ざんできることは言うまでもない。

RedDriver の感染チェーンは、”DnfClientShell32.exe” というバイナリの実行から始まり、このバイナリが Command and Control (C2) サーバとの暗号化通信を開始し、悪意のあるドライバーをダウンロードする。

Chris Neal は、「最初のファイルの配信を観察していなかったが、そのファイルがゲーム・ファイルを装うためにパッケージ化され、悪意のダウンロード・リンク上でホストされていた可能性が非常に高い。おそらく、被害者は正規のソースからファイルをダウンロードしていると思い、実行可能ファイルを走らせた。DNFClient は、中国で人気のあるゲームであり、一般には DNF と呼ばれる Dungeon Fighter Online に属するファイルの名前である 」と述べている。

Cisco Talos は、「RedDriver は、悪意のドライバーを開発するための、学習曲線が急速である。したがって、高度に熟練した脅威アクターにより開発された可能性が高い。この脅威アクターは、中国語を母国語とする人々をターゲットにしているように見えるが、作者も中国語を母国語とする人々である可能性が高い。また、作者は、ソフトウェア開発ライフサイクルに精通しており、その経験があることを示している」と述べている。

Saophos は、「Microsoft などにより署名された 100以上の悪意のカーネル・ドライバーを発見した。そのうちの、いくつかは2023年4月ころから、セキュリティ・ソフトウェアの実行を妨害し、WFP を介してネットワーク・トラフィックを監視する、ステルス・ルート・キットとして使用されている」と述べている。

Saophos の研究者である Andrew Brandt は、「悪意のドライバーの作成者は、1つの “親”バージョン・ドライバーを作成し、その親バージョンを複数のパッカー・ユーティリティに通し、場合によっては数十の “子” 亜種を作成していた。しかし、ドライバーを開発するのは、ユーザー・モードのマルウェアよりも遥かに困難である。ドライバーは EDR で検出され難く、特に難読化が施されている場合には分析が難しい」と指摘している。

Microsoft が認めている3つの例外により、Windows Policy の抜け穴を悪用され、カーネル・モード・ドライバーの偽署名が可能になるという内容の記事です。これまでにも、2023/05/22 の「Windows 環境に潜む悪意のカーネル・ドライバー:BlackCat ランサムウェアの回避策が判明」で解説されているように、BlackCat (ALPHV) が署名された不正な Windows カーネル・ドライバーを採用しているようです。これも、Saophos が発見した、100件以上の悪意のカーネル・ドライバーの1つなのでしょう。なお、この ADV230001 は、2023年7月の Patch Tuesday において、ゼロデイの1つとして解説されています。