Windows flaw

Microsoft は、主に中国のハッカーや開発者が、Windows ポリシーの抜け穴を悪用して、侵害されたシステムに悪意のあるカーネル モード ドライバーに署名してロードするために使用するコード署名証明書をブロックしました。

カーネル モード ドライバーは、Windows 上で最高の特権レベル (リング 0) で動作し、ターゲット マシンへの完全なアクセスを可能にして、ステルスな永続性、検出不可能なデータ漏洩、およびほぼすべてのプロセスを終了する機能を実現します。

侵害されたデバイス上でセキュリティ ツールがアクティブになっている場合でも、カーネル モード ドライバーがその動作を妨害したり、高度な保護機能をオフにしたり、検出を回避するために対象となる構成変更を実行したりする可能性があります。

Windows カーネル アーキテクチャ
Windows カーネル アーキテクチャ(Cisco)

Windows Vista では、Microsoft は Windows カーネル モード ドライバーをオペレーティング システムにロードする方法を制限するポリシー変更を導入し、開発者はレビューのためにドライバーを送信し、Microsoft の開発者ポータルを通じて署名する必要がありました。

ただし、古いアプリケーションの問題を防ぐために、Microsoft は古いカーネル モード ドライバーの読み込みを継続できる次の例外を導入しました。

  • PC は、Windows の以前のリリースから Windows 10 バージョン 1607 にアップグレードされました。
  • BIOS でセキュア ブートがオフになっています。
  • ドライバーは、サポートされている相互署名 CA にチェーンされている、2015 年 7 月 29 日より前に発行されたエンドエンティティ証明書で署名されていました。

Cisco Talos による新しいレポートでは、中国の脅威アクターが 2 つのオープンソース ツール「HookSignTool」と「FuckCertVerify」を使用して 3 番目のポリシーを悪用し、悪意のあるドライバの署名日を 2015 年 7 月 29 日より前に変更していると説明しています。

署名日を変更することで、攻撃者は古い、漏洩した、失効していない証明書を使用してドライバーに署名し、特権昇格のために Windows にロードすることができます。

HookSignToolとFuckCertVerify

HookSignTool は、2019 年に中国のソフトウェア クラッキング フォーラムでリリースされた機能豊富なツールで、正規のコード署名ツールと Windows API フックを併用して、悪意のあるドライバーの署名を実行します。

中国フォーラムでの HookSignTool のリリース
中国フォーラムでの HookSignTool のリリース(Cisco)

このツールは、Win32 API 呼び出しを傍受および監視するための Microsoft Detours ライブラリと、無効な時刻を検証する「NewCertVerifyTimeValidity」という名前の「CertVerifyTimeValidity」関数のカスタム実装を使用します。

HookSignTool での迂回の実装
HookSignTool での迂回の実装(Cisco)

HackSignTool では、過去のタイムスタンプを使用してドライバー ファイルに署名するために「JemmyLoveJenny EV ルート CA 証明書」の存在が必要です。この証明書は、ツールの作成者の Web サイトから入手できます。

ただし、この証明書を使用すると、偽造された署名にアーティファクトが残るため、HookSignTool で署名されたドライバーを識別できるようになります。

作者の Web サイトで必要な証明書が提供されます
作者の Web サイトで必要な証明書が提供されます(Cisco)

Cisco Talos は、同じく本日公開された別のレポートで、HookSignTool を使用して署名された「RedDriver」と呼ばれる悪意のあるドライバの実例を詳しく説明しています。

RedDriver はブラウザ トラフィックを傍受するブラウザ ハイジャッカーで、Chrome、Edge、Firefox に加え、中国で人気のあるブラウザの広範なリストをターゲットとしています。

FunCertVerify は、脅威アクターが悪意のあるカーネル モード ドライバーの署名タイムスタンプを変更するために使用するもう 1 つのツールで、元々はゲーム チート ツールとして 2018 年 12 月に GitHub で利用可能になりました。

「FuckCertVerifyTimeValidity は、Microsoft Detours パッケージを使用して “CertVerifyTimeValidity” API 呼び出しに接続し、タイムスタンプを選択した日付に設定するという点で、HookSignTool と同様の方法で動作します」と Cisco Talos は説明します。

「[しかし] HookSignTool とは異なり、FuckCertVerifyTimeValidity は署名するバイナリにアーティファクトを残さないため、このツールがいつ使用されたかを特定することが非常に困難になります。」

どちらのツールも、Microsoft がポリシー変更を導入した 2015 年 7 月 29 日より前に発行された、取り消されていないコード署名証明書と、一致する秘密キーとパスワードが必要です。

証明書が正常に再署名されました
証明書が正常に再署名されました(Cisco)

シスコの研究者らは、GitHub リポジトリと中国語フォーラムで、これらのツールで使用できる十数の証明書を発見しました。これらの証明書は、DRM チェックや悪意のあるカーネル ドライバをバイパスできるゲーム クラックに広く使用されています。

300 個のランダムな悪意のあるサンプルのユーザー起源
300 個のランダムな悪意のあるサンプルのユーザー起源(Cisco)

Cisco Talos は、調査結果を Microsoft に通知したところ、同社は広く悪用されていると報告されたすべての証明書をブロックし、この問題に関する勧告を発表したと述べています。

ただし、さらなる証明書が公開または盗難されたままになる可能性が高く、脅威アクターがこの Windows ポリシーの抜け穴を悪用し続ける可能性があるため、リスクは完全に排除されたわけではありません。