キヤノンMJ/サイバーセキュリティ情報局

APTグループ「Mustang Panda」が使用する最新バックドア「MQsTTang」とはなにか

  • この記事をはてなブックマークに追加
  • 本文印刷

本記事はキヤノンマーケティングジャパンが提供する「サイバーセキュリティ情報局」に掲載された「APTグループMustang Pandaが、QtとMQTTを利用する「MQsTTang」バックドアとは?」を再編集したものです。

 ESET社の研究者は、APTグループ「Mustang Panda」が使用していると考えられる新しい独自のバックドア「MQsTTang」を分析しました。このバックドアは、2023年1月初旬から現在も続いているキャンペーンで利用されています。このグループが使用している多くのマルウェアとは異なり、MQsTTangは既存のマルウェア系統や公開されているプロジェクトをベースにしていないと考えられます。

 Mustang Pandaは、カスタマイズされたKorplugの亜種(別名:PlugX)やペイロードをロードする精巧な仕組みを確立していることが知られています。MQsTTangは、従来の戦術とは異なり、攻撃のステージが1回のみであり、難読化の手法が一切使用されていません。

標的となった国や組織

 ESET社は、テレメトリーデータ(監視データ)からブルガリアとオーストラリアの組織が標的となっていることを確認しました。また、このキャンペーンが台湾の政府機関を標的にしていることを示す情報もあります。しかし、使用されているおとりファイルの名前から、欧州やアジアの政治団体や政府機関も標的となっている可能性があります。これは、Mustang Pandaが最近実行した他のキャンペーンの標的とも一致しています。Proofpointのセキュリティリサーチャーがレポートを公開しているように、Mustang Pandaは少なくとも2020年からヨーロッパの政府機関を標的にしており、ロシアのウクライナ侵攻以来、欧州での活動をさらに活発化させています。図1は、このキャンペーンの標的となっている可能性がある国を示しています。

図1:MQsTTangの攻撃を受けている国、攻撃を受けている可能性がある国

攻撃の帰属

 ESET社は、この攻撃の痕跡(以下のセクションを参照)を特定しており、この新たなバックドアとキャンペーンがMustang Pandaによって実施されている可能性が極めて高いと考えています。

 ESET社は、ユーザーYanNaingOo0072022の2つのGitHubリポジトリに、MQsTTangの検体が含まれるアーカイブを発見しました。同じユーザーの別のGitHubリポジトリは、Avastが2022年12月のブログで説明している過去のMustang Pandaキャンペーンで使用されています。

 今回のキャンペーンで使用されたサーバーのひとつは、一般にアクセス可能な匿名のFTPサーバーを実行していました。これはツールやペイロードをステージングするために使用されていると考えられます。このサーバーの/pub/godディレクトリには、過去のMustang Pandaキャンペーンで使用されていた複数のKorplugローダー、アーカイブ、およびツールがあります。これは、前述のAvastのブログでも説明されているステージングサーバーが使用していたディレクトリと同じです。このサーバーには/pub/gdディレクトリも存在しています。これも過去のキャンペーンで使用されていたパスです。

 このキャンペーンで使用されたインフラの一部は、過去のMustang Pandaサーバーのネットワークフィンガープリントとも一致します。

技術的な分析

 MQsTTangは、被害者のマシンで任意のコマンドを実行し、その出力を取得するための最低限の機能を実装するバックドアです。しかし、C&Cとの通信にMQTTプロトコルを使用していることが大きな特徴であり、注意が必要です。MQTTプロトコルは通常、IoTデバイスとコントローラーとの通信に使用されますが、過去に検出されているマルウェア系統ではほぼ使用されたことがありません。過去にMQTTが使用された例のひとつが、Chrysaorです。これは、Androidユーザーを標的としており、Pegasusとも呼ばれています。攻撃者から見たMQTTの利点のひとつは、攻撃インフラをブローカーの背後に隠ぺいできることであり、感染したマシンがC&Cサーバーと直接通信することはありません。図2に示すように、この機能はオープンソースのQMQTTライブラリーを使用しています。このライブラリーはQtフレームワークを利用しており、このフレームワークの大部分がマルウェアで静的にリンクされています。マルウェアの開発にQtフレームワークが使用されるのは非常に珍しいことです。QTフレームワークを使用する過去の例には、APTグループのLazarusが使用しているMagicRATがあります。

図2:QMQTTライブラリーのクラスを表示するRTTI

 MQsTTangは、単一の実行ファイルのみが含まれるRARアーカイブとして配信されます。これらの実行ファイルには通常、外交やパスポートに関連する以下のような名前が付けられています。

・CVs Amb Officer PASSPORT Ministry Of Foreign Affairs.exe
・Documents members of delegation diplomatic from Germany.Exe
・PDF_Passport and CVs of diplomatic members from Tokyo of JAPAN.eXE
・Note No.18-NG-23 from Embassy of Japan.exe

 これらのアーカイブは、関連性のないドメイン名のウェブサーバーでホストされています。この事実とファイル名から、このマルウェアはスピアフィッシングによって拡散されていると考えられます。

 現在までESET社は、いくつかの検体しか確認できていません。これらの検体の内容は酷似しており、一部の定数やハードコードされた文字列が異なっているだけです。最新のバージョンにおける唯一の大きな変更は、分析を妨害するためのいくつかの技術が追加されたことです。これらの手法の1つは、Windows API関数のCreateToolhelp32Snapshotを使用して、実行中のプロセスを繰り返し処理し、以下の既知のデバッガーや監視ツールを探します。

・cheatengine-x86_64.exe
・ollydbg.exe
・ida.exe
・ida64.exe
・radare2.exe
・x64dbg.exe
・procmon.exe
・procmon64.exe
・procexp.exe
・processhacker.exe
・pestudio.exe
・systracerx32.exe
・fiddler.exe
・tcpview.exe

 なお、このマルウェアは32bitの実行ファイルですが、x64dbgの存在のみを確認し、もう一方の32bitのx32dbgの存在は確認しません。

 2つ目の手法は、Windows APIであるFindWindowWを使用して、既知の分析ツールが使用する以下のWindowクラスとタイトルを検索します。

・procmon_window_class
・OLLYDBG
・WinDbgFrameClass
・OllyDbg - [CPU]
・Immunity Debugger - [CPU]

 マルウェアを直接実行すると、コマンドラインの引数として1を使用して、自身のコピーを起動します。これを新しいプロセスで繰り返し、実行のたびに引数を1ずつ増やしていきます。この引数がある値になったとき、特定のタスクが実行される仕組みになっています。なお、特定のタスクが実行される正確な値は検体によって異なります。以下に示す値は、SHA-1 02D95E0C369B08248BFFAAC8607BBA119D83B95Bの検体に対応しています。しかし、実行されるタスクとその実行順序は同じです。

 図3に、マルウェアの初回実行時に実行されるタスクとその動作の概要を示します。

図3:サブプロセスや実行されたタスクを示すグラフ

 表1に、タスクのリストと、それぞれのタスクが実行される値を示します。これらのタスクと値について以下で詳しく説明します。

タスク番号 引数値 タスクの説明
1 5 C&Cとの通信を開始します
2 9 コピーを作成して実行します
3 32 常駐化のためのコピーを作成します
4 119 常駐します
5 148 再帰的な実行を停止します
表1:このバックドアで実行されるタスク


 上記で説明した手法で分析ツールやデバッガーが検出された場合、タスク1の動作を変更し、タスク2、3、4が完全にスキップされます。

タスク1: C&Cとの通信

 MQsTTangはMQTTプロトコルを介してC&Cサーバーと通信します。観測されたすべての検体は、ブローカーとして3.228.54.173を使用しています。このサーバーは、QMQTTライブラリーを保守しているEMQXが運営するパブリックブローカーです。これは、ネットワークトラフィックを正規のように見せかけ、Mustang Pandaのインフラを隠ぺいする方法かもしれません。また、このパブリックブローカーを使用することで、レジリエンスが強化される側面があります。多くの正規ユーザーがいるため、サービスが停止する可能性は低く、現在利用されているC&Cサーバーが禁止またはテイクダウンされても、Mustang Pandaは新しいサーバーを立ち上げ、MQsTTangの運用を中断することなく同じMQTTトピックを使用できます。

 しかし、今回のキャンペーンは、Mustang Pandaが独自のブローカーを確立するために時間とリソースを投資すべきか決定するためのテストである可能性もあります。この仮説は、ESET社が確認している検体数が少ないことと、MQsTTangが非常に簡易であることに基づきます。

 図4に示すように、マルウェアとC&Cサーバーは、2つのMQTTトピックを使用して通信を行います。最初のトピックであるiot/server2は、クライアントからサーバーへの通信に使用されます。2つ目のトピックは、サーバーからクライアントへの通信に使用されます。このトピックは、iot/v2/の形式になっており、は、UUIDの最後の8バイトを16進数の形式で取得して生成されます。解析ツールが検出される場合、server2とv2はそれぞれserver0とv0に置換されます。これは、マルウェアの実行を早期に完全に中止して、防御側に検出されないようにすることを目的としているためでしょう。

図4:バックドアとC&Cサーバー間の通信を簡略化したグラフ

 サーバーとクライアントとの通信はすべて同じ符号化方式を使用します。MQTTメッセージのペイロードは、msgという単一の属性を持つJSONオブジェクトです。この属性値を生成するために、実際のコンテンツは、最初にbase64でエンコードされ、次にハードコードされた文字列nasaとXORされて、再びbase64でエンコードされます。これらのペイロードの詳細な形式については、以下のセクションで説明します。

 ブローカーに初めて接続すると、このマルウェアは固有のトピックをサブスクライブします。その後、30秒ごとにクライアントはサーバーのトピックにKeepAliveメッセージをパブリッシュします。このメッセージのコンテンツは、以下の形式のJSONオブジェクトです。

 サーバーはコマンドを実行するときに、クライアントの固有トピックにメッセージをパブリッシュします。このメッセージの平文の内容は、単に実行されるコマンドになっています。図5に示すように、クライアントは受信したコマンドをQtフレームワークのQProcess::startCommandを使って実行します。

 QProcess::readAllStandardOutputを使用して取得した出力は、以下の形式のJSONオブジェクトで送信されます。

図5: QProcessクラスを使用して受信したコマンドを実行する

 標準出力のコンテンツのみが送信されるため、サーバーはエラーや警告を受け取ることはありません。サーバー側から見れば、何らかのリダイレクトが行われない限り、コマンドが失敗した場合でも、何も出力しないコマンドと区別することができません。

タスク2と3:マルウェアのコピー

 2つ目と3つ目のタスクは、非常に似ています。これらは、マルウェアの実行ファイルをハードコードされたパス(c:\users\public\vdump.exeとc:\users\public\vcall.exe)にコピーします。使用されるファイル名は検体によって異なりますが、必ずC:\users\publicに保存されます。

 2番目のタスクでは、次に、コマンドライン引数97を指定して、新しく作成したコピーを実行します。

タスク4: 常駐化

 4番目のタスクによってバックドアが標的のマシンに常駐します。HKCU\Software\Microsoft\Windows\CurrentVersion\Runレジストリキーにあるc:\users\public\vcall.exeに、新しい値qvlcが設定されます。これにより、マシンを起動するときにマルウェアが実行されるようになります。

 マシンの起動時に、MQsTTangがc:\users\public\vcall.exeとして実行されるときには、C&Cとの通信タスクのみが実行されます。

結論

 この記事で紹介したMustang Pandaのキャンペーンは、この記事を執筆している時点でも継続しています。この攻撃の標的となっている組織などの全容は明らかになっていませんが、おとりファイルの名前は、これまでにMustang Pandaが他のキャンペーンで標的としてきた欧州の政治団体と一致しています。

 この新しいMQsTTangバックドアは、このグループが使用している他のマルウェア系統で見られるオプション機能は一切使用しておらず、リモートシェルだけを利用します。これはMustang Pandaが、MQsTTangに新しいテクノロジーを取り入れることを模索していることを示しています。このバックドアがMustang Pandaの攻撃ツールとして今後繰り返し使用されるようになるかどうかはまだ分かりませんが、同グループがマルウェアを開発および展開するサイクルの速さを示す一例と言えるでしょう。  

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

ファイル

SHA-1 ファイル名 検出 説明
A1C660D31518C8AFAA6973714DE30F3D576B68FC CVs Amb.rar Win32/Agent.AFBI MQsTTangバックドアを配信するために使用されるRARアーカイブ
430C2EF474C7710345B410F49DF853BDEAFBDD78 CVs Amb Officer PASSPORT Ministry Of Foreign Affairs.exe Win32/Agent.AFBI MQsTTangバックドア
F1A8BF83A410B99EF0E7FDF7BA02B543B9F0E66C Documents.rar Win32/Agent.AFBI MQsTTangバックドアを配信するために使用されるRARアーカイブ
02D95E0C369B08248BFFAAC8607BBA119D83B95B
 
PDF_Passport and CVs of diplomatic members from Tokyo of JAPAN.eXE Win32/Agent.AFBI MQsTTangバックドア
0EA5D10399524C189A197A847B8108AA8070F1B1 Documents members of delegation diplomatic from Germany.Exe Win32/Agent.AFBI MQsTTangバックドア
982CCAF1CB84F6E44E9296C7A1DDE2CE6A09D7BB Documents.rar Win32/Agent.AFBI MQsTTangバックドアを配信するために使用されるRARアーカイブ
740C8492DDA786E2231A46BFC422A2720DB0279A 23 from Embassy of Japan.exe Win32/Agent.AFBI MQsTTangバックドア
AB01E099872A094DC779890171A11764DE8B4360 BoomerangLib.dll Win32/Korplug.TH Mustang Pandaの既知のKorplugローダー
61A2D34625706F17221C1110D36A435438BC0665 breakpad.dll Win32/Korplug.UB Mustang Pandaの既知のKorplugローダー
30277F3284BCEEF0ADC5E9D45B66897FA8828BFD coreclr.dll Win32/Agent.ADMW Mustang Pandaの既知のKorplugローダー
BEE0B741142A9C392E05E0443AAE1FA41EF512D6 HPCustPartUI.dll Win32/Korplug.UB Mustang Pandaの既知のKorplugローダー
F6F3343F64536BF98DE7E287A7419352BF94EB93 HPCustPartUI.dll Win32/Korplug.UB Mustang Pandaの既知のKorplugローダー
F848C4F3B9D7F3FE1DB3847370F8EEFAA9BF60F1 libcef.dll Win32/Korplug.TX Mustang Pandaの既知のKorplugローダー

ネットワーク

IP ドメイン ホスティングプロバイダー 最初に確認された日付 詳細
3.228.54.173 broker.emqx.io Amazon.com, Inc. 2020-03-26 正規のパブリックMQTTブローカー
80.85.156[.]151 N/A Chelyabinsk-Signal LLC 2023-01-05 MQsTTangを配信するサーバー
80.85.157[.]3 N/A Chelyabinsk-Signal LLC 2023-01-16 MQsTTangを配信するサーバー
185.144.31[.]86 N/A Abuse-C Role 2023-01-22 MQsTTangを配信するサーバー

Githubリポジトリ

・https: //raw.githubusercontent[.]com/YanNaingOo0072022/14/main/Documents.rar
・https: //raw.githubusercontent[.]com/YanNaingOo0072022/ee/main/CVs Amb.rar

MITRE ATT&CKの技術

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

手法 ID 名前 説明
リソース開発 T1583.003 インフラストラクチャーの取得:仮想プライベートサーバー このキャンペーンで使用されているサーバーは、共有ホスティングを利用しています
T1583.004 インフラストラクチャーの取得:サーバー キャンペーンで使用されているサーバーには、Mustang Pandaが専用で使用しているサーバーも存在する可能性があります
T1587.001 能力の開発:マルウェア MQsTTangは独自のバックドアであり、Mustang Pandaによって開発された可能性が高いです
T1588.002 機能の取得:ツール ステージングサーバーでは、psexec、ps、curl、plinkなどの複数の正規のオープンソースツールが見つかっています
T1608.001 ステージングサーバーの能力:マルウェアのアップロード MQsTTangはWebサーバーにアップロードされて配信されています
T1608.002 ステージングサーバーの能力:アップロードツール 複数のツールがFTPサーバーにアップロードされています
初期アクセス T1566.002 フィッシング:スピアフィッシングリンク MQsTTangは、スピアフィッシングによって配信されます。これは、攻撃者が管理するウェブサーバーにある悪意のあるファイルにリンクしています
実行 T1106 ネイティブAPI MQsTTangは、QtフレームワークのQProcessクラスを使用して、コマンドを実行します
T1204.002 ユーザーによる実行:悪意のあるファイル MQsTTangは、悪意のあるファイルのダウンロードと実行をユーザーに依存します
常駐化 T1547.001 ブートまたはログオン自動起動:Runレジストリキーやスタートアップフォルダの悪用 MQsTTangはレジストリのRunキーを作成して常駐化します
防衛機能の回避 T1036.004 なりすまし:タスクまたはサービスのなりすまし 多くのサンプルで、レジストリキーはqvlcという名前で作成されています。これは、VLCが使用する正規の実行ファイル名と一致します
T1036.005 なりすまし:正規のモジュールの名前や場所を模倣する コピーを作成するときに、MQsTTangは正規のプログラムのファイル名を使用します
T1480  実行ガードレール MQsTTangは、実行元のパスをチェックして、実行するタスクを決定します
T1622 デバッガーの回避 MQsTTangは実行中のデバッガーを検出し、デバッガーが存在することが判明すると、動作を変更します
C&C(コマンド&コントロール) T1071 アプリケーションレイヤープロトコル MQsTTangは、MQTTプロトコルを使用してC&Cサーバーと通信します
T1102.002 ウェブサービス:双方向通信  MQsTTangは正規のパブリックMQTTブローカーを使用します
T1132.001 データのエンコーディング:標準エンコーディング マルウェアとサーバー間のメッセージの内容はbase64でエンコードされます
T1573.001 暗号化されたチャンネル:対称暗号方式 マルウェアとサーバー間のメッセージのコンテンツは、XORキーが繰り返し使用されて暗号化されます
情報の外部への送信 T1041 C&Cチャネルからの送信 実行されたコマンドの出力は、同じプロトコルを使用してサーバーに送信されます

[参照元]QtとMQTTを利用するAPTグループ「Mustang Panda」の最新バックドア「MQsTTang」を解説
https://www.eset.com/jp/blog/welivesecurity/mqsttang-mustang-panda/?utm_sour
ce=malware_info&utm_medium=referral&utm_campaign=mqsttang