- Cisco Talos は、これまで情報がなかった悪意のあるドライバ「RedDriver」の複数のバージョンを発見しました。ドライバベースのブラウザハイジャッカーであり、Windows フィルタリング プラットフォーム(WFP)を使用してブラウザのトラフィックを傍受します。RedDriver は遅くとも 2021 年から展開されています。
- RedDriver は HookSignTool を利用して署名のタイムスタンプを偽造し、Windows ドライバの署名ポリシーをバイパスします。
- RedDriver の感染チェーンの開発には、複数のオープンソースツールのコードが使用されています。具体的には HP-Socket や、ReflectiveLoader のカスタム実装などです。
- RedDriver の作者はドライバの開発に習熟していて、Windows OS に関する深い知識を持っているようです。
- この脅威は、ハイジャックの対象として中国語ブラウザを探していることから、中国語を母国語とするユーザーを標的にしていると考えられます。また、おそらくは作者自身も中国語を話します。
中国語ユーザーを狙う RedDriver
この脅威が、中国語を母国語とするユーザーを標的にしていることは明らかです。まず、RedDriver には中国語ブラウザのプロセス名のリストがハードコードされており、このリストを基にブラウザを検索してハイジャックします。ある事例では、RedDriver にドライバ名のリストが含まれており、その多くは複数の中国語インターネットカフェ管理ソフトウェア製品に関連するものでした。また、RedDriver の作者自身の母国語が中国語であることも多く示唆されています。
多段階からなる RedDriver の感染チェーン
RedDriver の感染チェーンは、Ultimate Packer for eXecutables(UPX)でパック処理された「DnfClientShell32.exe」という実行ファイルから始まります。DnfClientShell32 バイナリのリソースセクションには 2 つの DLL が含まれています。1 つは「DnfClient」、もう 1 つはよく名付けたもので、「ReflectiveLoader32」といいます。
- DnfClientShell32 – 5a13091832ef2fd837c33acb44b97c37d4f1f412f31f093faf0ce83dcd7c314e
- DnfClient – 9e59eba805c361820d39273337de070efaf2bf804c6ea88bbafc5f63ce3028b1
- ReflectiveLoader32 – c96320c7b57adf6f73ceaf2ae68f1661c2bfab9d96ffd820e3cfc191fcdf0a9b
「DnfClient」というファイル名を使用しているのは、おそらく「Dungeon Fighter Online」(別名「DNF」)というゲームの実行ファイルを装うためだと思われます。この Dungeon Fighter は中国で絶大な人気を博しているゲームです。
実行後、DnfClientShell32 はリソースセクションの ReflectiveLoader32 バイナリを使用して、リモートプロセスに DnfClient リソースを挿入します。挿入処理が完了すると、DnfClient はコマンド & コントロール(C2)インフラストラクチャと暗号化通信を始め、RedDriver のペイロードのダウンロードを開始します。次に RedDriver からリダイレクトされたブラウザトラフィックを受信するためにリスニングポートを開きます。ネットワークの通信を容易にするため、DnfClient はオープンソースライブラリ HP-Socket のコードを利用します。
RedDriver の概要
Cisco Talos は HookSignTool の調査中、それまで情報がなかった悪意のあるドライバが展開されていることを確認しました。このドライバは盗まれた証明書を利用して署名のタイムスタンプを偽造し、Windows のポリシー(ドライバ署名の強制)を効果的にバイパスします。RedDriver というこのドライバの名前は、バイナリに含まれる文字列「RedDriver」と、PDB ファイルパスのファイル名「E:\\Project\\PTU\\PTU\\Bin\\x64\\Release\\RedDriver.pdb」に由来します。
逆アセンブリした RedDriver 名
RedDriver は多段階からなる感染チェーンの重要なコンポーネントであり、最終的にブラウザのトラフィックをハイジャックして localhost(127.0.0.1)にリダイレクトします。ハイジャック対象のブラウザは RedDriver にハードコードされているリストの中から選択されます。このリストには、Google Chrome や Microsoft Edge だけでなく、多くの一般的な中国語ブラウザのプロセス名が含まれています。
RedDriver にハードコードされているブラウザ名のリスト
RedDriver は、Windows フィルタリング プラットフォームのコンポーネントである FWPKCLNT.sys から複数の関数をインポートします。
「Windows フィルタリング プラットフォーム (WFP) は、ネットワーク フィルタリング アプリケーションを作成するためのプラットフォームを提供する一連の API およびシステム サービスです。WFP API を使用すると、開発者は、オペレーティング システムのネットワーク スタック内の複数のレイヤーで行われるパケット処理と対話するコードを記述できます。ネットワーク データをフィルター処理し、宛先に到達する前に変更することもできます」(出典:Microsoft MSDN)
RedDriver による FWPKCLNT.sys のインポート
RedDriver はインポートした関数を使用して、ハイジャックしたブラウザのトラフィックをリダイレクトし、宛先の IP アドレスを 127.0.0.1 に置き換えます。これにより、DnfClient が開くリスニングポートにトラフィックがリダイレクトされるようになります。また、標的となったシステムには、ユーザーが操作することなくルート証明書がサイレントインストールされます。これは、以下のレジストリエントリが追加されていることで明らになりました。
“MACHINE\SOFTWARE\MICROSOFT\SYSTEMCERTIFICATES\ROOT\CERTIFICATES\9743EE39882EFD63036E6EAD3AFFD6D765628161”
この記事の公開時点では、ブラウザのトラフィックをリダイレクトする最終的な目的は不明です。ただ、どういう意図があるにせよ、RedDriver に感染したシステムにとっては重大な脅威であり、リダイレクトによってブラウザを経由するすべてのトラフィックが改ざんされることになります。
WFP の技術的な側面についてはこのブログでは説明しませんが、理解しておきたいのは、WFP からインポートした関数によって RedDriver がパケットレベルでブラウザのトラフィックを操作できるようになることです。WFP は非常に複雑なプラットフォームであり、WFP を適切に導入している事実は、RedDriver の作者のスキルの高さを物語っています。WFP を理解するには、Microsoft 社が公開している WFP についてのドキュメントを参照することをお勧めします。
RedDriver がブラウザのトラフィックを再ルーティングするためには、まず関数「FwpsCalloutRegister1」を使用して「コールアウト」を登録する必要があります。IP アドレスを localhost に変更するためには、「FwpsAcquireClassifyHandle0」を使用して対象のネットワークトラフィックのハンドルを取得し、そのハンドルを「FwpsAcquireWritableLayerDataPointer0」に渡す必要があります。
書き込み対象のネットワークトラフィックを取得
目的のデータを取得すると、RedDriver は IP アドレスに対して必要な変更を行い、トラフィックを localhost へ再ルーティングさせることができます。
ネットワークトラフィックに IP の変更を適用
古い RedDriver の例
RedDriver の調査中に、遅くとも 2021 年には展開されていたと思われる古いバージョンの RedDriver を発見しました。バージョン間で違いはありますが、全体の機能と構造は似ています。ただし、古いバージョンの RedDriver に数十のドライバ名のリストが含まれていた事例もあり、その多くは中国由来のソフトウェアに関連していました。リストに記載されているのは、インターネットカフェで使用されるソフトウェアのドライバ名のようで、多くはインターネットカフェ管理ソフトウェア、グラフィックスカード、ブラウザのドライバでした。以下は、古いバージョンの RedDriver に含まれていたドライバ名の一部です。すべてを網羅しているわけではありません。
- atikmdag.sys — ATI Radeon Kernel Mode Driver Package
- fastshutdown.sys — iCafe, Sunward Information Technology Co. Ltd
- genfs.sys — Pubwin, Hintsoft(インターネットカフェ ソフトウェア)
- genvf64.sys — Pubwin, Hintsoft (インターネットカフェ ソフトウェア)
- genvf.sys — Pubwin, Hintsoft(インターネットカフェ ソフトウェア)
- Kboot64.sys — Internet Cafe Butler(网吧管家)
- nv4_mini.sys — Nvidia, RIVA TNT
- qqprotectx64.sys — Tencent QQ(インスタントメッセージ)
- devicepnp64.sys — FaceIt(対戦型ゲームプラットフォーム)
- Tsqbdrv.sys — テクノロジー企業 Tencent の QQ ブラウザのドライバ
古いバージョンの RedDriver は、デバッグ文字列にある「AntiMinifilterThread」という関数内で、Windows API 関数「FltEnumerateFilters」を使用して上記のようなドライバの存在をチェックします。この API 関数は、列挙されたドライバのリストが含まれている FLT_FILTER 構造体へのポインタを返します。この構造体のオフセット 0x1a8 には FLT_OPERATION_REGISTRATION 構造体があり、RedDriver がフィルタドライバの存在を確認するために必要な情報が含まれています。
HookSignTool を利用して署名の強制をバイパス
RedDriver は、Windows でドライバ署名の強制をバイパスするために、HookSignTool というオープンソースの署名タイムスタンプ偽造ツールを使用します。RedDriver に関連してこのツールがどのように使用されているか理解するには、HookSignTool の使用について解説した Talos のブログを読むことをお勧めします。RedDriver の署名にはいくつかのコード署名証明書が使用されており、そちらのブログにすべての証明書を記載しています。RedDriver の署名に使用されていることが確認された証明書の所有者名は、Beijing JoinHope Image Technology Ltd. と北京汇聚四海商贸有限公司です。
Cisco Secure 製品には現在、これらの証明書と、HookSignTool についてのブログ記事で取り上げたすべての証明書を検出する機能が含まれています。Talos が証明書の悪用について Microsoft 社に通知したところ、同社はすぐに対策を講じました。
HookSignTool を使用するとドライバ署名の強制ポリシーがバイパスされ、本来は実行がブロックされるはずのドライバを展開できるようになります。RedDriver は、HookSignTool が悪意のある状況で効果的に使用されている実例です。HookSignTool に関する Talos の調査によると、タイムスタンプ偽造ツールを利用している悪意のあるドライバファミリは RedDriver だけではありません。悪意のあるドライバを展開することのメリットに注目する攻撃者が増える可能性があるので、脅威をめぐる状況においては、今後も署名のタイムスタンプ偽造という手口が使用されると考えるのが妥当です。
作者が中国語ユーザーであることを示す痕跡
RedDriver の感染チェーンで確認されたバイナリのメタデータに含まれる言語コードと、この後説明するいくつかの要素を踏まえると、RedDriver の作者は中国語を母国語とするユーザーである可能性が高いと考えられます。RedDriver の背後にある意図は不明ですが、中国のインターネットカフェが中国を拠点とするサイバー犯罪グループの標的になることは珍しくありません。2018 年には、中国全土のインターネットカフェの 10 万台以上のコンピュータが暗号通貨マイナーに感染し、80 万米ドル以上の「siacoin」を生成しました。感染を引き起こしたのは、現地のコンピュータサービス会社と共謀した攻撃者でした。
最もわかりやすい痕跡は、C2 インフラストラクチャの地理的情報です。Talos が調査中に確認したドメインはすべて、中国にある IP アドレスに解決されます。
RedDriver に関連するドメイン:
- poilcy[.]itosha[.]top — 47.109.63.172
- newport[.]tofu77[.]top — 8.137.97.186
- workpoilcy.zhedwe[.]top — 47.109.66.222
- reserve.itosha[.]top — 47.109.33.213
- file[.]zhedwe[.]top — 103.91.208.32
- red[.]zhedwe[.]top — 47.109.73.113
- aireport[.]umpteen[.]top — 47.108.76.161
- q5y2qclsk18[.]malaji[.]top — 47.109.66.222
- laomao[.]run — 47.108.64.162
RedDriver の感染チェーンは、複数のオープンソースツールのコードと、中国語フォーラムの投稿からコピーしたコードを利用しています。これらのコードベースの興味深い点は、作者がすべて中国語を母国語とするユーザーであることです。
https://github.com/strivexjun/DriverInjectDll
https://www.oschina.net/p/hp-socket
https://github.com/Jemmy1228/HookSigntool/tree/master
オープンソースのリポジトリ以外では、RedDriver をドロップする初期のバイナリ(DnfClientShell32.exe)のコードのセクションの一部が、もともとは中国語のフォーラム bbs[.]kanxue[.]com に投稿されていたことを確認しました。このコードをフォーラムに投稿したユーザーは、ReflectiveLoader のソースコードの解釈をやり直し、独自のバージョンを実装したと述べています。
ReflectiveLoader のコードの書き換えを含むフォーラムの投稿(中国語からの翻訳)
このユーザーが投稿したコードのセクションと、アンパックされた初期のバイナリの 0x00407ca0 にある反射型コード読み込みの関数の逆アセンブリを比較すると、明らかに類似点があります。
フォーラムに投稿されたコードのセクション
0x00407ca0 にある RedDriver の初期のバイナリの関数のセクション
RedDriver の作者はドライバ開発に習熟
悪意のあるドライバを開発するための学習曲線は急で習得が困難であることから、RedDriver はスキルの高い攻撃者が開発した可能性が高いと思われます。Windows ドライバのコードを書くには非常に特殊なスキルセットと Windows OS に関する深い知識が必要です。たとえばドライバは非常にクラッシュしやすいのですが、Talos での分析中にクラッシュが発生することも、「ブルースクリーン」(BSOD エラー)が表示されることもありませんでした。これは、作者のスキルの高さを物語っています。コードが不適切に記述されていると、悪意がないドライバであってもシステムにダメージを与えたり、クラッシュさせたりする可能性があります。また、WFP は実装が複雑なプラットフォームであり、完全に理解するには一般的にかなりのドライバ開発経験が必要です。
作者はソフトウェア開発のライフサイクルに精通している(経験がある)こともわかっています。これも、過去の開発経験が必要となるスキルセットです。たとえば感染チェーンの開発には Jenkins が使用されています。これは、ソフトウェア開発者がソフトウェアの開発、構築、テストを自動化するために一般的に使用するツールです。「Jenkins」の使用は、DnfClient バイナリのデバッグセクションの .PDB ファイルパス「C:\Jenkins\workspace\DnfClient\Bin\DnfClientShell32.pdb」で確認できます。
作者の開発経験を示すもう 1 つの痕跡は、オープンソースツールの特定のセクションを使用していることです。RedDriver の作者は、ツールのコードベース全体を使用するのではなく、感染チェーンの複数の段階でソースコードの一部を借用し、統合しています。
カバレッジ
Cisco Secure Endpoint(旧 AMP for Endpoints)は、この記事で説明したマルウェアの実行を阻止するのに最適です。Cisco Secure Endpoint の無料トライアルはこちらからお申し込みください。
Cisco Secure Web Appliance の Web スキャンは、悪意のある Web サイトへのアクセスを防止し、上述したような攻撃で使用されるマルウェアを検出します。
Cisco Secure Email(旧 E メールセキュリティ)は、攻撃の一環として攻撃者が送りつける不正な電子メールをブロックします。Cisco Secure Email の無料トライアルはこちらからお申し込みください。
Threat Defense Virtual、適応型セキュリティアプライアンス、Meraki MX など、Cisco Secure Firewall(旧次世代ファイアウォールおよび Firepower NGFW)アプライアンスは、この脅威に関連する悪意のあるアクティビティを検出できます。
Cisco Secure Malware Analytics(Threat Grid)は、悪意のあるバイナリを特定し、シスコのすべてのセキュリティ製品に保護機能を組み込みます。
Umbrella(シスコのセキュア インターネット ゲートウェイ(SIG))は、社内ネットワークの内外で悪意のあるドメイン、IP、URL への接続をブロックします。Umbrella の無料トライアルはこちらからお申し込みください。
Cisco Secure Web Appliance(旧 Web セキュリティアプライアンス)は、危険性のあるサイトを自動的にブロックし、ユーザーがアクセスする前に疑わしいサイトを検査します。
特定の環境および脅威データに対する追加の保護機能は、Firewall Management Center から入手できます。
Cisco Duo は、ユーザーに多要素認証を提供し、承認されたユーザーのみがネットワークにアクセスできるようにします。
オープンソースの Snort サブスクライバルールセットをお使いであれば、Snort.org で購入可能な最新のルールパックをダウンロードすることで、最新状態を維持できます。
ClamAV で、次の脅威を検出できます。
- Win.Malware.RedDriver-10006025
- Win.Tool.DriverInjectDll-10006024
IOC
この脅威に関連する IOC は、こちらをご覧ください。
本稿は 2023 年 07 月 11 日に Talos Group のブログに投稿された「Undocumented driver-based browser hijacker RedDriver targets Chinese speakers and internet cafes」の抄訳です。