** 本記事は、Signed driver malware moves up the software trust chain の翻訳です。最新の情報は英語記事をご覧ください。**
Sophos X-Ops Rapid Response (RR) は、ある顧客のネットワークで攻撃が疑われる活動を調査していたところ、感染したマシンにあった 2 つのファイルを発見しました。この 2 つのファイルは、さまざまなエンドポイントセキュリティ製品ベンダーが使用するプロセスやサービスを終了させるために使用されていました。
RR チームがシステムから攻撃者を追い出し、被害の拡大を防いだため、攻撃者が展開しようとしていたランサムウェアを特定することはできませんでしたが、使用された手法や残されたファイルから、この攻撃の背後にいるグループについて興味深い手がかりを得ることができました。
攻撃後の分析で、SophosLabs は、暗号署名された Windows ドライバ (正規の証明書で署名されている) と、ドライバをインストールするために設計された実行可能な「ローダー」アプリケーションという 2 つの実行可能ファイルが、標的のマシンにてエンドポイントセキュリティツールを無効化しようとした中で、同時に使用されたことを突き止めました。
このローダーアプリケーションをさらに分析した結果、Mandiant が BURNTCIGAR と命名したマルウェアの亜種であることを示す有力な証拠が得られました。他社の調査によると、以前の攻撃でこのツールを使用した攻撃者は、後に Cuba ランサムウェアを展開しようとしたことが判明しています。
ソフォスは、調査で明らかになった署名されたすべてのドライバを Microsoft に報告し、Microsoft は、12月の月例セキュリティパッチの一部として、アドバイザリを公開しました。
増加するドライバの不正使用
セキュリティツールを妨害したり終了させたりする手段としてデバイスドライバを使用するケースは、2022 年に増加の一途をたどりました。これまでの攻撃の中には、攻撃者が、セキュリティ脆弱性を含む正規のソフトウェアメーカーの Windows ドライバを活用する「BYOVD (脆弱なドライバの持ち込み)」のアプローチを採用しているものがあります。BYOVD 攻撃の例としては、2020 年の Robinhood ランサムウェアや、直近では BlackByte ランサムウェアなどがあります。最近の OS のバージョンでは、ドライバが正しく読み込まれるために、正規の暗号署名を搭載することが要求されています。
今回の攻撃で使用されたドライバは、以前に記録された攻撃で使用されたものと酷似しています。その際、ドライバは盗まれた NVIDIA のデジタル証明書を使用してデジタル署名されていました。これは、Lapsus$ として知られる攻撃者によってリークされたファイルの 1 つです。さらに過去の攻撃で使用された関連性が深い別のドライバは、サイバー攻撃に悪用されている可能性が高いと言われている 1 つまたは複数の中国企業の証明書で電子署名されていました。
SophosLabs の調査から、攻撃者は階層の上位にあるより信頼性の高い暗号鍵を使用してドライバに電子署名を行おうとしていることが明らかになりました。信頼できる大手ソフトウェアメーカーの署名があれば、ドライバが Windows に問題なくロードされる可能性が高くなり、Cuba ランサムウェアの攻撃者がセキュリティ製品を停止できる可能性が高まります。
多くのセキュリティ製品を無効にするカーネルへの攻撃
ランサムウェアの多くは、攻撃者がランサムウェア本体を展開する前の重要な前段階として、標的ユーザーのセキュリティソフトウェアを無効化します。最近の攻撃では、一部の攻撃者は、Windows ドライバを使用してセキュリティ製品を無効化しようとしています。
ドライバは、セキュリティにとって重大なリスク要因であるため、Windows はデフォルトで「ドライバ署名の強制」を有効にしています。このポリシーは、すべてのカーネルモードのドライバがロードされるために署名が必要であることを保証します。このポリシーが有効かつドライバが署名されていない場合、Windows はドライバをロードせず、エラーコード 577 を発行し、このファイルのデジタル署名を検証できないというメッセージを表示します。
このセキュリティ対策を回避するために、攻撃者は署名されたドライバを使用する必要があります。これを実現するには、一般的に下記の 2 つの方法があります。
1 つは「BYOVD (脆弱なドライバの持ち込み)」攻撃です。この方法は、セキュリティの脆弱性がある正規の商用ソフトウェアドライバを展開するものです。攻撃者にとって、ゼロからドライバを作成したり、流出したコードサイニング証明書を取得したりする必要がないため、より簡単に実行できる攻撃です。Microsoft Windows Hardware Compatibility Publisher (WHCP) 証明書によって署名された、Windows の認証を受けているすでに存在する証明書を悪用するだけでよいのです。
より高度な方法は、攻撃者が作成した (または攻撃者のために特別に作られた) カスタムドライバを、信頼できる証明書で署名させるものです。これが、今回の攻撃者が採用した方法です。
ほとんどのカーネルドライバ攻撃は、一般的に BYOVD の形式をとっています。最近の例では、グラフィックスカードのオーバークロック用ドライバの脆弱性を利用した BlackByte ランサムウェアや、ビデオゲーム「原神 (Genshin Impact)」のソフトウェアメーカーが作成した、チート対策用ドライバの脆弱性を悪用した別のランサムウェア攻撃者などの例があります。
このドライバによる攻撃の対象にはソフォス製品も含まれていましたが、ソフォスのタンパープロテクション機能により、攻撃者は最終的にソフォス製品を停止させることはできませんでした。
保証されるはずの署名付きコード
Microsoft は、カーネルモードドライバが、ユーザーモードプロセスでは利用できない高度な特権操作を行う可能性があり、一部のアンチマルウェア、エンドポイントセキュリティ、または EDR 製品の有効性を低下させる恐れがあることを理解しています。そこで Microsoft は、同社が精査できるソフトウェアのみを承認する品質保証プロセスと、承認したソフトウェアのみをロードする OS を作成しました。
暗号化コードの署名は、ファイルのプロパティシートに追加される単なるタブではなく、複数の意味を持ちます。第一に、コードが元のプログラムに付加されたコード署名データに記載されている会社のものであることを意味します。これは、そのプログラムが特定の日時にコード署名企業に提示されたものと変わっていないことを、証拠付きで主張するものだろうと考えられます。
また、デジタル署名は、安全性と信頼性のレベルを示すものでもあります。
Microsoft のようなコード署名の機関は、署名のために提出されたドライバを精査するためにさまざまな方法のいずれかを使用して、悪意のあるドライバを除外できます。
Windows は、ドライバのロードを許可する前に、ドライバの署名の有効性をチェックし、妨げられないようにします。Microsoft の MSRC (Microsoft Security Response Center) の広報担当者は、コードの完全性対策として Microsoft はブロックリストを管理しており、同社がそこにドライバを追加すると、「最新のセキュリティ更新プログラムで Windows カーネル内のドライバを取り消す」と説明しています。このようにして失効したドライバは、「Windows のプラットフォームから信頼されなくなり、実行がブロックされる」と説明しています。
Windows は、後に BYOVD 攻撃で悪用されたドライバのような古いソフトウェアも、当初は有効な署名として扱っています。有効期限が過ぎたドライバには悪用可能な脆弱性があるかもしれませんが、Microsoft は何百万と存在する期限切れのサードパーティ製ドライバの中から探し出すことはしません。証明書 (またはドライバ) が無効になるのは、誰かがその証明書 (またはドライバ自身) によって署名されたマルウェアに気付き、Microsoft に警告を発した後です。
したがって、攻撃者はハードディスクにドライバファイルを置き、それをロードする関連サービスを作成できるかもしれませんが、ドライバが署名されていない、または取り消された証明書によって署名されている場合、Windows はエラーを発生させます。
要するに、コード署名者によって課されるこれらの完全性チェックを通過して、正規に署名されたファイルを取得することは、最初に特別なマルウェアドライバを作成するよりもはるかに難しいのです。
NVIDIA の署名証明書のリークによって、失効している証明書が、あるバージョンのドライバの署名に使われたことは疑いようがありません。しかし、方法は明らかではありませんが、マルウェアの作成者は、Microsoft や他のソフトウェアメーカーのコード署名機関によって署名された他のバージョンのドライバを利用することに成功しています。
BURNTCIGAR の深堀り
この攻撃から回収された実行可能ファイルには、.exe (ソフォスはこれを「ローダー」と呼びます) と .sysファイル (ドライバ) が含まれていました。また、公開リポジトリで関連するドライバを検索したところ、ドライバとローダーの両方を含むアーカイブと、多数のエンドポイントセキュリティおよび EDR ソフトウェアパッケージで使用される 186 のプログラムファイル名のリスト (おそらく標的とするプロセスのリスト) を含む、平文のファイルも発見されました。ソフォスが調査したインシデントでは、このようなテキストファイルは回収されていません。
ローダーは実行されると、ドライバを %temp% フォルダにコピーし、5~7 文字のファイル名を付け、コマンドを実行してドライバのサービスエントリ (この例では mEfEk.sys という名前) を作成します。)
そして、ローダーがサービスを開始します。
この処理は、リバースエンジニアリングされたローダーから抽出されたサブルーチンに反映されています (下図)。ドライバをインストールするためのサービスを作成し開始する BURNTCIGAR ローダー
このアプリケーションはドライバと連動して、平文ファイルにリストされたものと同じ名前のサービスやプロセスを強制終了します。リストにある名前のうち 29 はソフォス製品に関連します。
マルウェアが実行を阻止しようとするプロセス
ドライバとローダーは、「¥¥¥¥.¥¥KApcHelperLink1」という名前のシンボリックリンクにアクセスすることで相互に作用します。このプログラムには、少なくとも2 つのハードコードされた IOCTL コード、0x222088 と 0x222094 が含まれており、ドライバと対話するために使用されます。ローダーは、IOCTL コード0x222094 を使用してプロセス名を渡し、ドライバにプロセスを強制終了するように信号を送ります。
下図は、ドライバとのやりとりを担当する関数の逆コンパイルされた結果を示しています。まず、BURNTCIGAR ローダーは、DeviceIoControl を介してドライバと通信するために、\\\.\\KApcHelperLink1 へのハンドルを取得します。IOCTL コードは関数のパラメータとして渡されます。この特徴的な “KApcHelper” という文字列は、VMprotect がパックされていない一部のドライバのビルドパスに現れていました。VirusTotal にアップロードされていたサンプルの 1 つは、KApcHelper_x64.sys という名前でした。
プロセスを無効にする BURNTCIGAR
2022 年 2 月、Mandiant は BURNTCIGAR を「エンドポイントセキュリティソフトウェアに関連するプロセスを終了させ、そのランサムウェアや他のツールが無制限に実行できるようにするユーティリティ」と記しています。Mandiant は当時、攻撃者が標的のシステムのセキュリティを迂回し、その BYOVD として正規の、しかし脆弱なドライバ (もともとはアンチウイルスベンダーの Avast が公開していた) を使用したと報告しています。
2022 年 8 月に Palo Alto Networks (PAN) は、戦術が変化していることを報告しています。具体的には、PAN は「Tropical Scorpius (別名「UNC2596」、別名「Cuba の攻撃者」)による戦術の変化は、期限切れの正規 NVIDIA 証明書を利用することと、セキュリティ製品を標的とした独自のドライバを使用して終了すること」と記しています。BURNTCIGAR は現在、脆弱な Avast ドライバの代わりに、流出し失効した NVIDIA 証明書で署名された ApcHelper.sys ドライバをインストールするようになっていました。
SophosLabs は、ソフォスが分析したファイルに含まれるものと一致するドライバコードを過去に遡って探し、中国に拠点を置く企業に属するコード署名証明書で署名された少なくとも 3 種類のドライバも発見しました (7 月から 9 月の間に初めて確認されました)。このうち 1 種類については、署名機関が署名に使用した証明書を失効させています。
他の 2 つの証明書は取り消されていませんが、この証明書は、ソフォスが「PUA (不要と思われるアプリケーション)」と呼んでいるソフトウェアメーカーに所属しています。PUA は、正規のソフトウェアとマルウェアの間にある曖昧な存在です。ソフォス製品は、このメーカーの証明書で署名されたものを PUA として検出し、その実行やインストールを阻止します。過去 90 日間に VirusTotal にアップロードされたこのメーカーのキーで署名された 41 のプログラムのうち、マルウェア対策製品によって検出されないプログラムは 1 つだけであり、38 のプログラムは 10 以上のセキュリティ企業によってマルウェアまたは PUA ソフトウェアとして分類されています。
BURNTCIGAR の背後にいる攻撃者は、再び戦術を変更し、盗まれた証明書を使用してアンチウィルスキラードライバに署名する戦略から、発行元が不審な有効な証明書、そして適切に評価されている正規の証明書を使用する戦略へと移行しています。
検出の流れ
SHA-256 hash | VT へのアップロード日時 | 署名者 |
9b1b15a3aacb0e786a608726c3abfc94968915cedcbd239ddf903c4a54bfcf0c | 2022-07-27 21:05:11 | Zhuhai liancheng Technology Co., Ltd. |
42b22faa489b5de936db33f12184f6233198bdf851a18264d31210207827ba25 | 2022-08-09 14:07:45 | Windows Hardware Compatibility Publisher |
6839fcae985774427c65fe38e773aa96ec451a412caa5354ad9e2b9b54ffe6c1 | 2022-08-21 15:30:50 | Windows Hardware Compatibility Publisher |
7f4555a940ce1156c9bcea9a2a0b801f9a5e44ec9400b61b14a7b1a6404ffdf6 | 2022-08-22 15:38:20 | Windows Hardware Compatibility Publisher |
d7c81b0f3c14844f6424e8bdd31a128e773cb96cccef6d05cbff473f0ccb9f9c | 2022-09-20 02:36:50 | NVIDIA Corporation |
5f6fec8f7890d032461b127332759c88a1b7360aa10c6bd38482572f59d2ba8b | 2022-09-24 06:42:44 | Beijing JoinHope Image Technology Ltd. |
0440ef40c46fdd2b5d86e7feef8577a8591de862cfd7928cdbcc8f47b8fa3ffc | 2022-09-30 16:50:19 | Zhuhai liancheng Technology Co., Ltd. |
274340f7185a0cc047d82ecfb2cce5bd18764ee558b5227894565c2f9fe9f6ab | 2022-10-21 02:45:30 | Windows Hardware Compatibility Publisher |
0d10c4b2f56364b475b60bd2933273c8b1ed2176353e59e65f968c61e93b7d99 | 2022-10-21 02:47:56 | Windows Hardware Compatibility Publisher |
c8f9e1ad7b8cce62fba349a00bc168c849d42cfb2ca5b2c6cc4b51d054e0c497 | 2022-10-21 20:45:56 | Windows Hardware Compatibility Publisher |
8e035beb02a411f8a9e92d4cf184ad34f52bbd0a81a50c222cdd4706e4e45104 | 2022-10-27 01:19:05 | Windows Hardware Compatibility Publisher |
表: VirusTotal にアップロードされ日付順に並べられたドライバのリストとそのコード署名者
ソフォスが特定した 2 つのドライバは、中国の企業である Zhuhai Liancheng Technology Co, Ltd. のデジタル証明書で署名されていました。この鍵で署名された 1 つのドライバは、これらの中で最も早い 2022 年 7 月27 日に使用されました。Zhuhai Liancheng Technology (ZLT) 証明書は特徴的であり、ソフォスはこの証明書で署名されたファイルを PUA として検出しています。
8 月には、3 つの WHCP 署名付きの検体が、数週間おきに VirusTotal にアップロードされました。
翌月の 9 月 20 日には、流出し失効した NVIDIA 証明書で署名されたドライバが使用され、さらに 4 日後には Beijing JoinHope Image Technology, Ltd. (別名 JHI) の証明書で署名されたものが使用されました。JHI 署名のドライバが使用された 6 日後、誰かが VirusTotal にドライバの別のビルドをアップロードし、再び ZLT によって署名されました。ソフォスのテレメトリによると、この同じドライバは、最初にアップロードされてからほぼ 1 カ月後の 2022 年 10 月21 日に行われた攻撃で使用されていました。
10 月には 4 種類の異なるドライバがアップロードされ、いずれも WHCP 証明書で署名されていました。
脅威ハンティングによって見つかったすべてのドライバの亜種は、ソフォスのインシデントで見つかったドライバと同じシンボリックリンク名 KApcHelperLink1を使用しています。またドライバは、コード署名の有効期限の範囲など、他の特徴も共通しています。興味深いことに、WHCP 証明書で署名されたすべてのドライバは、VMProtect パッカーでパックされていました。
パッカーが悪意のあるドライバコードを隠している可能性
VMProtect は商用のランタイムパッカーで、多数の難読化技術によってリバースエンジニアリングからソフトウェアを保護します。商用ソフトウェアにパッカーを使用することは合法ですが、マルウェアの実行ファイルでは、解析を複雑にするためにパッカー (商用で合法なパッカーとマルウェア専用に作成されたパッカーの両方) を使用するのが一般的です。ドライバではパッカーはあまり使用されません。
ドライバの署名
ローダーとドライバの静的および動的解析の組み合わせにより、複数の技術的なアーティファクトを抽出し、ドライバを解凍した亜種の可能性と、BURNTCIGAR の類似バージョンの探索を可能にしました。
ソフォスは、解析システムにドライバをインストールし、ドライバがデバイス \device\KApcHelper1 へのシンボリックリンク (「KApcHelperLink1」という名前) を作成することを確認しました。
このシンボリックリンクの名前は、PAN の Unit42 が調査したドライバモジュールの名前 ApcHelper.sys に非常に近いものです。これらの用語から検索を行った結果、合計 11 のドライバが見つかり、4 つの異なる署名キーで署名されていることが判明しました。Microsoft 署名のドライバのこれまでに分かっている最も古い既知の検体は、8 月 9 日に VirusTotal にアップロードされました。
BURNTCIGAR ローダーの分析
このスクリーンショットでは、VirusTotal で見つかった BURNTCIGAR ローダーの亜種である allx7_64.exe のコードフローを分析していますが、ローダーは同じ IOCTL コード (および同じシンボリックリンク名) を使用しています。
VirusTotal で見つかった BURNTCIGAR の亜種の類似したコード構造
Zhuhai Liancheng Technology Co. Ltd. によって署名された後のドライバから取られた、逆コンパイルされたドライバコードのこのスクリーンショットでは、ルーチンがデバイス \\device\\KApcHelper1 の作成とシンボリックリンク名 \\dosdevices\\KApcHelperLink1 にそれをシンボリックリンクしており、我々が調査した事件の BURNTCIGAR 亜種がドライバとの通信に使ったのと同じシンボリックリンク名となっています。
インシデントで使用されたドライバと同じシンボリックリンク名とデバイス名を使用したドライバ亜種
点と点を結ぶ
今回のインシデントのドライバと、PAN および Mandiant の報告書で言及された以前の検体、さらに VirusTotal の Retrohunt で見つかった他の検体との間に、いくつかの重要な類似点があることがわかりました。
- ドライバの命名規則やインストールされるシンボリックリンクの名前が、同じかまたは類似していました。PAN のレポートでは、ドライバは ApcHelper.sys と呼ばれています。ソフォスのインシデントで使用されたドライバは、KApcHelper.sys と呼ばれています。これまでのところ、テレメトリレビューで誤検知の可能性は見つかっていません。
- ソフォスのインシデントと PAN 社のレポートにあるインシデントは、どちらも Cuba ランサムウェアに関連しており、信頼度は高いです。
- すべての検体が同一の PE ファイルのメタデータを持っているわけではありませんが、ソフォスが分析したインシデントの Microsoft 署名のドライバ(SHA256: 8e035beb02a411f8a9e92d4cf184ad34f52bbd0a81a50c222cdd4706e4e45104) は、Zhuhai Liancheng Technology Co, Ltd. (ZLT) が署名したドライバと Beijing JHI ドライバと同一の PE Header タイムスタンプ (2022:06:02 10:09:08+00:00) を共有してることがわかりました。
ソフォスが調査したインシデントでは、Cuba ランサムウェアに関連する攻撃者は BURNTCIGAR ローダーユーティリティを使用して、Microsoft の証明書を使用して署名された悪意のあるドライバをインストールしました。それらの署名付きドライバに埋め込まれた署名データには、次のような共通の特徴がありました。
- WHCP 証明書の「Valid From」と「Valid To」のフィールド。
Valid From: 2022-06-07 18:08:06 Valid To: 2023-06-01 18:08:06
- 「Valid Usage」フィールド。
Valid Usage WHQL Crypto, 1.3.6.1.4.1.311.10.3.5.1, Code Signing
- ドライバの署名に使用された WHCP 証明書は、Microsoft Windows Third Party Component CA 2014 という機関によって発行され、「Valid To」と「Valid From」フィールドがありました。
Valid From 2014-10-15 20:31:27 Valid To 2029-10-15 20:41:27
ソフォスは、悪意のあるドライバを Troj/Agent-BJJB、Mal/Rootkit-VC、または Mal/Rootkit-VF として、悪意のあるローダーを Troj/AVKill-Q として検出します。この調査に関連するファイルの IoC (侵害の痕跡) は、Microsoft による保護を支援するために、公開する前に Microsoft と共有してから、SophosLabs Github に公開しています。
詳細については、Mandiant と SentinelOne の調査結果を参照してください。
謝辞
Sophos X-Ops は、Rapid Responders の Sergio Bestulic、Harinder Bhathal、Matthew Everts、Johnathan Fern、Jason Jenkins、Melissa Kelly、Elida Leite、Stephen McNally、Duke Thornley、Rajat Wason、Robert Weiland、Carlos Zena の各氏と、SophosLabs 研究者の Richard Cohen、Andreas Klopsch、Prashant Kumar、Andrew Ludgate、Nathan Mante、Rajesh Nataraj、Simon Porter、Felix Weyne、Michael Wood の各氏へ分析協力に対して謝意を表します。またソフォスは、コンピュータユーザーの保護に迅速に対応してくれた Microsoft にも謝意を表します。