【元記事をASCII.jpで読む】

 ESET社は、中国とつながりのあるAPTグループEvasive Pandaがさまざまなクラウドサービスからデータを窃取するために使用しているツールセットを発見し分析しました。その詳細について解説します。

 このブログでは、2022年から2023年にかけて、Evasive Pandaが台湾の政府機関と宗教団体を侵害した後に使用していたツールセットであるCloudScoutを、ESET社が技術的に分析した結果をお伝えします。CloudScoutツールセットは、窃取したWebセッションCookieを悪用し、さまざまなクラウドサービスからデータを取得できます。CloudScoutはプラグインを通じて、Evasive Pandaの代表的なマルウェアフレームワークであるMgBotとシームレスに動作します。

本ブログの要点:
・CloudScoutツールセットは、2022年から2023年にかけて台湾の宗教団体と政府機関のネットワークで検出されました
・CloudScoutは、MgBotのプラグインによって提供される窃取されたCookieを利用し、さまざまなクラウドサービスに保存されているデータにアクセスし、データを外部に送信します
・ESET社は、Google Drive、Gmail、Outlookからデータを窃取することを目的とする3つのCloudScoutモジュールを分析しました。少なくともそのほかに7つのモジュールが存在していると考えられます
・Outlookメールのメッセージを窃取するためにCloudScoutのWebリクエストのハードコードされているフィールドは、攻撃で使用された検体が台湾のユーザーを標的として巧妙に作成されていることを示しています
・各CloudScoutモジュールはC#でプログラムされており、C++でプログラムされたMgBotプラグインによって展開されています。

Evasive Pandaのプロフィール

 Evasive Pandaは、少なくとも2012年から活動を開始している中国とつながりのあるAPTグループであり、BRONZE HIGHLANDDaggerfly、またはStormBambooとも呼ばれています。Evasive Pandaの目的は、チベットの独立運動、台湾や香港の宗教・学術機関、中国の民主化運動の支持者など、中国共産党政府の利益に反する国や組織に対してサイバースパイ活動を行うことです。ESET社は、Evasive Pandaがベトナムミャンマー、韓国などの国々に対してもサイバースパイ活動を行っていることも観察しています。
 
Evasive Pandaは、これまで新しい多くの攻撃手法を編み出しています。ESET社は、Evasive Pandaのオペレーターがサプライチェーン攻撃や水飲み場攻撃、DNSハイジャックなど、高度なTTP(戦術、技術、手順)を利用していることを確認しています。さらに、Microsoft Office、Confluence、Webサーバーアプリケーションに影響を与える最新の脆弱性(CVE)を悪用しています。このグループはまた、強力なマルウェア開発の能力を有しており、Windows、macOS、Androidに対応する多くのマルチプラットフォームバックドアを開発しており、その高度な能力を誇示しています。Windowsを攻撃するために最も使用されているのがMgBotツールです。MgBotは、2012年から利用されており、ESET社のブログで詳述しているように、メインのインプラントと現在までに特定されている8つのプラグインから構成される独自のマルウェアフレームワークです。また、最近ではNightdoorも開発されています。Nightdoorは、別のESET社のブログで説明しているように、C&Cとの通信にパブリッククラウドサービスを利用する、多機能なバックドアです。

概要

 2023年の初めにESET社は、台湾の政府機関において、Evasive Pandaが3つの未知の.NETモジュール(ESET社はそれぞれCGD、CGM、COLと命名)を展開していることを検出しました。これらのモジュールは、認証されたWebセッション乗っ取り、Google DriveGmail、およびOutlookなどのパブリッククラウドサービスにアクセスするように設計されています。WebブラウザーデータベースからCookieを窃取し、特定のWebリクエストにおいて窃取したCookieを使用してクラウドサービスにアクセスする手法が取り入れられています。窃取された認証情報は、二要素認証2FA)やIPアドレスの追跡などのセキュリティ機能によってブロックされる可能性がありますが、攻撃者がWebセッションクッキーを窃取して利用する場合、これらのセキュリティ機能を回避し、クラウドに保存されているデータを被害者のマシンから直接取得できます。2023年、GoogleはGitHubでデバイスバウンドセッション認証情報(Device Bound Session Credentials:DBSC)プロジェクトをリリースし、2024年にはChrome 127のアップデートでアプリケーションバウンド暗号化(App-Bound Encryption)機能をリリースしました。これらはCloudScoutのようなCookieを窃取するマルウェアへの防御策であり、このツールセットを無力化できる可能性があります。

 3つのモジュールのコードを詳細に分析したところ、開発者からCloudScoutというコードネームが付けられている、開発フレームワークの基盤が明らかになりました。このブログでは、C#でプログラムされたこのモジュラーフレームワークの詳細な分析結果をお伝えします。ESET社が知る限り、CloudScoutのツールセットはこれまで検出や文書化されていません。

標的となった国や組織

 ESET社のテレメトリ(監視データ)によると、CloudScoutは台湾を標的とする2つのインシデントで観測されました。

・2022年5月、台湾の宗教団体のネットワークがMgBotとNightdoorによって侵害されました。このインシデントでは、MgBotが使用され、CloudScoutモジュールを展開するプラグインインストールされました
・2023年2月、CloudScoutモジュールとNightdoorインプラントが台湾政府に関連する機関と考えられる場所で検出されました

 さらに、いくつかのハードコードされたHTTPリクエストに、タイムゾーンとしてTaipei Standard Time、言語パックとしてzh-CNが含まれていました(図1を参照)。両方ともに、これらの検体が台湾のユーザーを標的に作成されたことを示しています。

技術的な分析

 CloudScoutは.NETで開発されたマルウェアフレームワークで、さまざまなクラウドサービスを標的とする複数のモジュールで構成されています。CloudScoutという名前は、入手したモジュールのPDBパスから付けられています。

・E:\project\git_new\MProjects\Code\CLOUDSCOUT\GoogleDriver\CGD\obj\Debug\CGD.pdb
・E:\project\git_new\MProjects\Code\CloudScout\Gmail\CGM\obj\Debug\CGM.pdb
・E:\project\git_new\MProjects\Code\CloudScout\Outlook\COL\obj\Debug\COL.pdb

 また、フレームワークのほかの7つのモジュールに関する記載も見つかっています(「CommonUtilities:CloudScoutの中核」セクションを参照)。このブログの執筆時点では、ESET社はこれらのモジュールが侵害されたマシンに展開されているのを確認しておらず、攻撃者がこれらのモジュールを標的に応じて展開している可能性があります。すべてのCloudScoutモジュールを以下に示します。

・CGD
・CGM
・COL
・CTW
・CFB
GMQ
・MEXC
・CEXC
・CZI
・CNE

 Google Driveを標的にするモジュールはCGD、Gmailを標的にするモジュールはCGM、Outlookを標的にするモジュールはCOLと呼ばれているように、命名に規則性があるため、CTWとCFBはそれぞれX(旧Twitter)とFacebookを標的にしている可能性があります。しかし、そのほかモジュールの目的は明らかになっていません。

開発時期

 図2に示すように、CloudScoutモジュールの.NETマニフェストのAssemblyCopyrightフィールドの値がCopyright © 2020となっており、CloudScoutツールセットが2020年頃に開発された可能性があります。.NETマニフェストには正しい情報が記載されていない可能性もありますが、ESET社が検出したすべての検体でこの値は同じになっています。さらに、CGDとCGMのAssemblyVersionには異なるバージョンが記載されており、これらのバージョンは、コードベースに追加された変更を反映しています。

 また、ESET社は、埋め込まれている内部のカスタムライブラリーパッケージCommonUtilitiesのバージョンが異なっていることも発見しました。表1に、CommonUtilitiesの異なるバージョンが含まれているCGD、CGM、COLの異なるバージョンを示します。

 .NETマニフェストが正確であるならば、2020年だけでEvasive Pandaの3つの新しいツールセットが観測されていることになります。ほかの2つのバージョンは、初めて登場したNightdoorとMgBotの新しいUDPの亜種UDT亜種の後継)です。

古いモジュールへの新しい機能の追加

 3つのモジュールで共有されている共通のRC4暗号化キーから、過去に遡って調査したところ、CGMはGmck.dllというMgBotプラグインによってデプロイされ、C++でプログラムされていることがわかりました。このプラグインは、2022年に先に説明した台湾の宗教団体にある2台のマシンがEvasive Pandaによって侵害されたインシデントで検出されました。このインシデント(図3に図示)では、MgBotはCGMモジュールインストールし、被害者のGmailアカウントにアクセスしてメールや個人情報をダウンロードしました。

 Gmck.dll(このブログではGmckと呼びます)は、.NETモジュールのCGMをバイナリに入れて配信します。CGMを実行するために、Gmckは最初にハードコードされたパスにあるディスクにモジュールドロップし、ICRMetaHostとICRRuntimeHostを使って共通言語ランタイム(CLR)を開始します。最後に、図4に示すように、CGMのエントリポイント関数(ModuleStart)を参照して、ExecuteInDefaultAppDomainを呼び出します。

 ESET社のテレメトリによると、CGDとCOLモジュールも同じステージングフォルダーに書き込まれています(表2を参照)。

 ステージングフォルダーNVIDlAは、単純なホモグラフを使用して意図的にスペルを変更しています。Dの後の文字は小文字のlですが、そのほかの文字はすべて大文字です。強調表示しているサブフォルダーは、MgBotプラグインにちなんで命名されていると考えられます。残念ながら、olckとdankdhプラグインは入手できていません。

 CGMモジュールが正常に展開された後に、Gmckプラグインは設定ファイルとしてCGMにブラウザーCookieを提供する必要があります。Gmckは、表3に示すWebブラウザーデータベースファイルからこれらのCookieを抽出します。Chrome 127およびEdge 128でアプリケーションバウンド暗号化(App-Bound Encryption)がリリースされたことで、GmckはChromeおよびEdgeからCookiesデータベースファイルを復号できなくなりました。

 この設定ファイルには、.dat拡張子が付けられ、CGMが認識できるように、0dda5a8d-e4c2-477d-85df-fcb611a62ffeキーを使用してRC4で暗号化されている必要があります。このRC4キーは3つすべてのCloudScoutモジュールで設定ファイルの復号に使用されており、MgBotプラグインも暗号化にこのキーを使用する必要があります。

 図5に、GmckとCGMの関係をまとめます。

設定の取得

 図5に示す設定ファイルcm_cke_ <yyyyymmdd> _<hhmmss>.datは、MgBotプラグインがWebブラウザーデータベースからCookieを抽出した後に、このプラグインによって提供されます。CloudScoutモジュールは、作業ディレクトリを継続的に監視し、.dat拡張子があるファイルを検索して新しい設定を取得します。.datファイルが見つかると、CloudScoutモジュールはそのファイルを処理するために新しいスレッドを毎回生成します。つまり、同時に複数の設定ファイルを処理することが可能です。新しく生成されたスレッドは、設定の解析からすべてのターゲットデータのダウンロードまで、すべてのデータ収集サイクルの処理を行います。このサイクルが終了すると、同じサイクルを誤って繰り返さないように、設定ファイルはディスクから削除されます。

 設定ファイルはJSON形式になっています。この設定ファイルには、tokenとconfigの2つの主要なデータ構造が含まれます。token構造には、ドメイン名別に整理されたCookieが含まれます。configには、収集したデータをダウンロードし、外部に送信するためにステージングするための設定と、プログラムを実行し続けるか、データ収集サイクルの後に終了するかを決定する設定(dealoneフィールド)が含まれます。設定ファイルの例を図6に示します。

CommonUtilities:CloudScoutの中核

 CommonUtilitiesパッケージは、CloudScoutの中核であり、図7に示すように、モジュールを実行するために必要なすべての低レベルのライブラリーを提供します。このパッケージはCloudScoutモジュールのリソースセクションに格納され、ModuleStart関数を実行するときに最初にロードされます。

 図8に示すように、CommonUtilitiesの.NETマニフェストには、すべてのクライアントモジュールが記載されています。

 同様のオープンソースライブラリーがオンラインで豊富に利用可能であるにもかかわらず、CommonUtilitiesには独自のライブラリーが多く実装されています。オープンソースのライブラリーと比較すると、開発者はこのような独自のライブラリーを柔軟に利用することができ、インプラントの内部的な動作を容易に制御できるようになります。また、独自のライブラリーは予測不能な挙動を示すことがあるため、ESET社はこれらの動作を理解するためにコードを詳細に分析しなければなりませんでした。これらの独自ライブラリーの例として、HTTPAccessとManagedCookieがあります。

 HTTPAccessは、CloudScoutモジュールのすべてのHTTP通信を処理するために必要な関数を提供します。図9に示すように、HTTPヘッダーを修正する機能があります。

 このコードスニペットで強調表示しているManagedCookieクラスのインスタンスであるthis.mngCkオブジェクトは、巧妙に作成したHTTPヘッダーにCookieを統合するために使用されています。名前が示しているように、ManagedCookieはCloudScoutと標的のクラウドサービス間のWebリクエストのCookieを管理する関数を提供します。このクラスが特殊であるのは、多くのCookieデフォルトの.NETのCookieオブジェクトに変換できるCookieパーサーの包括的なリストとなっていることです。図10には、Cookieの属性と値のペアの各組み合わせを一致させるために作成されたさまざまな正規表現を示します。

CloudScoutの構造

 すべてのCloudScoutモジュールは、図11に示すように、アーキテクチャーが共通しています。モジュールのコア機能はCloud名前空間にあり、各モジュールでほぼ同一になっています。実装が異なっているのは、認証とデータの取得に関する機能のみです。この理由は、各モジュールが、標的とするクラウドサービスに応じて、特定のWebリクエストを生成し、特定のWeb応答を解析する必要があるためです。

 CloudScoutの合理的な設計とCloud名前空間の重要なロジックを図12に示します。

認証

 一般的にWebプラットフォームはCookieの詳細について詳しく文書化していません。認証クッキーは有効期限が短い傾向にあり、ユーザーがWebブラウザーを介してプラットフォームとやりとりするときに頻繁に更新されます。しかし、セッションが有効である限り、表4に記載されているCookieはCloudScoutによって悪用され、クラウドサービスから重要なデータにアクセスされダウンロードされる恐れがあります。

 X-OWA-CANARYは、クロスサイトリクエストフォージェリ攻撃を防ぐためにMicrosoft Outlook Web Access(OWA)が使用するセキュリティCookieです。このCookieは、ユーザーを認証するために各セッションが開始される時に割り当てられます。図13に示すように、CloudScoutのCOLモジュールは、RPSSecAuthとClientId Cookieを使用して新しいセッションを確立し、再認証することで、X-OWA-CANARY Cookieを利用できないときに取得する仕組みを実装しています。

データの取得

 CloudScoutモジュールは、認証が完了すると、一般のユーザーがWebブラウザーを使用するのと同じ方法で、侵害したクラウドサービスのアカウントを参照します。各CloudScoutモジュールは、この操作を行うために、複雑なHTMLパーサーと、実行するWebリクエストセットをハードコードして装備しており、Web応答から重要なデータを識別して抽出します。

 例えば、CGMモジュールとCOLモジュールは、それぞれGmailとOutlookを標的としており、メールフォルダーのリストとメールメッセージを取得します。Gmail Webサーバーが提供するHTMLコンテンツからメールヘッダー、メール本文、添付ファイルを抽出するためにCGMが実行する手順を、図14に示します。

一方、CGDはGoogle Driveのユーザー情報、完全なディレクトリ階層、および拡張子が.doc、.docx、.xls、.xlsx、.ppt、.pptx、.pdf、.txtのファイルを取得します。ドキュメントのダウンロードURLを生成するCGDのコードスニペットを図15に示します。

 このモジュールは、ファイルまたはメールであっても、ダウンロードした各アイテムに独自のヘッダーを追加します。この独自のヘッダーには、マルウェアによって割り当てられるクライアントID、メールの件名、ファイル名、クラウドサービスのユーザー名などの項目のメタデータが含まれます(表5)。ヘッダーを追加しているのは、自動化システムによって窃取したデータを大規模に処理し、インデックスをすばやく作成して分析している可能性が高いと考えられます。

 ヘッダーが追加されると、各項目は設定ファイルに使われたのと同じRC4キーで暗号化され、<pseudorandom_GUID>.<custom_extension>というファイル名で保存されます。 <custom_extension>は窃取したデータのタイプを示します(表6を参照)。

 次に、すべての項目は<pseudorandom_GUID> .hxkz_zipという名前のZIPアーカイブに圧縮され、設定ファイルのdatapathフィールドで指定される外部に送信するためのディレクトリに保存されます。このアーカイブは後でMgBotかNightdoorのいずれかによって送信されます。最後のステップで、CloudScoutモジュールは、dealoneフラグをチェックして、終了するか、実行を継続して新しいデータ収集サイクルを開始する新しい設定ファイルを待機する前に、データ収集サイクルで生成された送信するファイル以外のすべてのアーティファクトを削除して、完全にクリーンアップします。

結論

 CloudScoutは、Evasive Pandaがクラウドサービスに保存されているデータを窃取するために使用している.NETのツールセットです。CloudScoutは、MgBotの拡張機能として実装され、Webブラウザーから認証セッションを乗っ取るためにパス・ザ・クッキーの手法を使用します。

 このブログでは、CloudScoutフレームワークの高度な設計について解説し、Evasive Pandaの高い技術力と、クラウドに保存されているドキュメント、ユーザープロファイル、メールがスパイ活動で重要な役割を果たしていることを説明しました。

IOCセキュリティ侵害の痕跡)

 IoCセキュリティ侵害の痕跡)の詳細なリストと検体は、ESETのGitHubリポジトリに掲載されています。

ファイル

ネットワーク

MITRE ATT&CKの技術

 この表は、MITRE ATT&CKフレームワークバージョン15を使用して作成されています。

Cookieを悪用する新型ツールを解析! 中国系APTが使う新たなマルウェアとは