もっと詳しく

トレンドマイクロでは2020年以降に日本国内の組織を対象としたAPT・標的型攻撃を複数観測し、その攻撃者グループを「Earth Tengshe」と命名しました。この一連の攻撃は、日本を狙う標的型攻撃「A41APT」キャンペーンとして報告されている攻撃活動の一部とみられ、「SigLoader(DESLoader)」や「SodaMaster(DelfsCake)」、「P8RAT(GreetCake)」などのマルウェアが悪用されることで知られています。トレンドマイクロが2021年4月以降に確認した当該キャンペーンの攻撃では、SigLoaderから最終的に実行されるペイロードとして、以前の報告時点からバージョンアップされたSodaMasterや、新たに確認された「Jackpot」というマルウェアが用いられたことを確認しています。Earth Tengsheは現在も日本を含めた地域において、活発に攻撃を行っていると考えられます。

図1:「A41APT」キャンペーンと攻撃者グループ「APT10」および「Earth Tengshe」の関連図

■関連グループ「APT10」

トレンドマイクロでは、A41APTキャンペーンやその関連の攻撃を行っている攻撃者グループをEarth Tengsheとして定義していますが、後述するようにEarth Tengsheは攻撃者グループ「APT10」(別名:menuPass、Stone Panda、POTASSIUM、Red Apollo、CVNX、ChessMaster)の関連グループであると判断しています。ここでは前提としてAPT10について解説します。
APT10は中国が関与しているとされる攻撃者グループです。過去には世界中のマネージドサービスプロバイダ(MSP)への侵害を起点とした攻撃キャンペーンを行ったことにより、広く知られています。日本国内では、特に2016年頃から2018年末までの期間において、RedLeaves、ChChesANELCobalt StrikeQuasarRAT、FYAntiなどのマルウェアを用いて、政府、防衛、航空、通信、金融、資源、経済関連組織、学術機関などの幅広い業種・組織へ非常に多数の攻撃を行っていました。
またAPT10に関連する動きとして、2018年12月、米司法省はAPT10およびその侵害活動に関連するとして2人の中国人を訴追し、各国もAPT10に関する注意喚起や警告を発表しました。これ以降、2020年末のA41APTキャンペーンに関する報告まで、日本国内では目立ったAPT10による攻撃活動は報告されていませんでした。

■「Earth Tengshe」の攻撃対象

トレンドマイクロでは当該キャンペーンについて、特に2021年4月以降、複数の日本国内組織もしくはその関連組織などに対してSigLoaderやSodaMaster、またJackpotを用いた攻撃が行われている形跡を確認しています。対象組織の所在地域は日本、台湾、タイ、アメリカ、また対象業種は判明している範囲で、エレクトロニクス、エネルギー、自動車、防衛などに関連する組織です。
近年Earth Tengshe以外のAPT・標的型攻撃においても、本来の目標と考えられる日本国内の組織拠点を直接の標的とせず、最初の侵害対象として海外拠点や現地法人、また関連組織を狙うITサプライチェーンへの攻撃が目立っています。Earth Tengsheによる攻撃も、同様の手口を用いているとみられます。トレンドマイクロが過去に確認したインシデントの事例などからも、海外拠点、また海外におけるビジネスパートナーなどを含む関連組織は、一般に日本国内拠点よりもガバナンスが効きづらく、十分なセキュリティ施策や迅速なインシデント対応が難しい傾向があります。攻撃者はそのような防御側の弱い部分を狙い、攻撃を行っているとみられます。

■マルウェア「SigLoader」の実行チェーンの概要

Earth Tengsheによる当該キャンペーンでは、すべてのケースにおいて、最終的なペイロード(EXEもしくはDLL)をメモリ上でファイルレスに実行するためのローダとして「SigLoader」が使用されていました。当該キャンペーンで観測したSigLoaderの実行チェーンは、「A41APT」として2020年に報告された攻撃キャンペーンと大きな変わりはなく、次のような複雑で多層的なレイヤーで構成されています。

図2:SigLoaderの実行チェーン例
図2:SigLoaderの実行チェーン例

最初のレイヤーとなるSigLoader(dbus-1-3.dll)は、正規のアプリケーション(EAPMethods.exe)を悪用したDLL Side-Loadingによって読み込まれます。SigLoaderは、ハードコードされたDLLファイル名(vac.dll)を同階層のディレクトリから検索し読み込みます。DLLファイル名はSigLoaderごとに異なります。読み込まれるDLLは、Microsoftによる有効なデジタル署名がついていますが、これはMS13-098/CVE-2013-3900(※11)で指摘されている「Authenticode署名の検証中にPEファイルダイジェストを適切に検証しない」問題を悪用して改ざんされています。SigLoaderは、CVE-2013-3900の問題を悪用して正規デジタル署名の末尾に追記された暗号化データを読み込み、ハードコードされた復号手順で復号してメモリ上で実行します。

復号されたデータは、ローダとして機能するシェルコード(Layer2)と、セクションが不規則な順序で並べ替えられたDLL(Layer3)で構成されています。Layer2のシェルコードが実行されると、Layer3のDLLを正しい順序に並べ替えてメモリ上で実行します。Layer3のDLLは、Layer1のSigLoaderと同様の機能をもち、ハードコードされたDLLファイル名(ExecModelClient.dll)を検索し、読み込みます。このDLLファイルも同様にCVE-2013-3900を悪用しており、Layer1と同じ手順でシェルコード(Layer4)が復号されて実行されます。

最終的にメモリ上で実行されるペイロードは、DLLもしくはEXEファイルです。以降では、これらのペイロードについて詳しく見ていきます。

ペイロードの技術的分析

2021年を通して観測したSigLoaderのペイロードとしては、既知の「P8RAT(別名: GreetCake)」や「FYAnti」、「SodaMaster」、「Meterpreter」が観測されたほか、バージョンアップされた「SodaMaster」や「Jackpot WebShell」という未公開のマルウェアなどが新たに観測されました。

SodaMaster(2021-04-16)

「SodaMaster(別名DelfsCake)」は、SigLoaderのペイロードの1つとして知られる(※1,2,3)TCPベースのバックドアです。今回新たに発見されたSodaMasterは、エクスポートテーブルに含まれるタイムスタンプから2021年4月16日に作成されたと思われ、大幅にバックドアコマンドが追加されていました。

図3:SodaMasterのエクスポートテーブルに含まれる情報例
図3:SodaMasterのエクスポートテーブルに含まれる情報例
コンパイルタイムやDLLのオリジナル名が残存している

2020年に観測されたSodaMasterに実装されていたコマンドは、以下のように​​「d」、「f」、「l」、「s」の4つのみでした。

図4:2020年に観測されたSodaMasterに実装されていたコマンド
図4:2020年に観測されたSodaMasterに実装されていたコマンド

しかし最近観測されたSodaMasterのバックドアコマンドは、一部は未実装ですが、アルファベットの「c」から「x」までサポートされていました。またコマンドの分岐処理は、switch文を使わずにループ処理でコマンドハンドラを検索する変則的な手法が用いられていました。

図5:大幅に追加されたバックドアコマンド群
図5:大幅に追加されたバックドアコマンド群

各コマンドとそれに対応するアクションの一覧は次の通りです。

command action Compilation time of SodaMaster
2019-01-07 2019-06-10 2021-04-16 (Datetime in Export Table)
c

Outlookの認証情報の窃取とC&Cサーバへの送信。このコードはHacking Teamのリークされたソースコードを利用していると思われる。

https://github.com/hackedteam/core-win32/blob/master/HM_PWDAgent/outlook.cpp

N/A N/A Enabled
d DLLをダウンロードし、新規スレッドでLoadLibraryWを使用しDLLを読み込み・実行 Enabled Enabled Enabled
e N/A N/A Not Implemented
f C&C通信に使用するRC4鍵をC&Cサーバに送信完了したことを示すフラグを設置 Not Implemented Enabled Enabled
g シェルコードをダウンロードし、新規スレッドで実行。後述の「s」コマンドとの違いは、ユーティリティ関数テーブルが渡されない。 N/A N/A Enabled
h 新規スレッドを作成し、指定したホスト/ポートに対してRaw IPパケットの送信 N/A N/A Enabled
i 新規スレッドを作成し、指定したホスト/ポートに対して0x20000バイトの0xCCで埋められたパケットを送信 N/A N/A Enabled
j N/A N/A Not Implemented
k N/A N/A Not Implemented
l C&C通信の間隔の設定 Not Implemented Enabled Enabled
m CreateCompatibleBitmap APIを使用してスクリーンショットをBMP形式で取得し、送信 N/A N/A Enabled
n N/A N/A Not Implemented
o N/A N/A Not Implemented
p N/A N/A Not Implemented
q キーロガー用のスレッドを新規作成。ただし、このバージョンではロギングされた内容を外部送信する機能はなし。 N/A N/A Enabled
r キーロガーの停止 N/A N/A Enabled
s シェルコードをダウンロードし、新規スレッドで実行。この際、親スレッドで使用されていたC&C通信用の関数など複数のユーティリティ関数のテーブルがシェルコードの引数に渡される。 Enabled Enabled Enabled
t N/A N/A Not Implemented
u N/A N/A Not Implemented
v N/A N/A Not Implemented
w 指定したテキストをメッセージボックスで表示 N/A N/A Enabled
x N/A N/A Not Implemented
WebShell「Jackpot」

SigLoaderの新たなペイロードとして観測された「Jackpot」は、C/C++で記述されたWebShellです。コンパイルタイムは2021年1月1日となっており、2021年に作成された可能性がありますが、Earth Tengsheによる一連の攻撃の中で、コンパイルタイムが改ざんされたファイルも複数見つかっていることから、十分に信頼できるアーティファクトとは言えないという点に注意してください。

図6:Jackpotのコンパイルタイム情報
図6:Jackpotのコンパイルタイム情報

Jackpotは、他の多くのバックドアのようにクライアントとして動作するのではなく、HTTP APIを使用してWebサーバとして動作し、攻撃者からコマンドを受け付けます。そのため、Jackpotは外部からアクセス可能な公開システムに感染することを想定しており、公開システム侵害後の攻撃の足掛かりとなるマルウェアであると考えられます。このようなAPIを使用したWebShellの実装は、攻撃者グループ「Tropic Trooper」によるWebShellOwlProxyなど、中国が関与しているとされる攻撃者グループによって多用されることで知られています。トレンドマイクロで観測した複数のJackpotは、被害環境のドメイン名を含むURLがハードコードされており、攻撃者が被害組織を明確にターゲットとしていることがうかがえます。

図7:HTTP APIを使用してWebサーバとして起動する「Jackpot」のコード例
図7:HTTP APIを使用してWebサーバとして起動する「Jackpot」のコード例
「Jackpot」のCommunication Protocol

トレンドマイクロで観測したJackpotは、ハードコードされたURLへのPOSTリクエストのみを処理します。それ以外のメソッドによるリクエストに対しては、正規の応答に見せかけたレスポンスを返します。攻撃者クライアントは、後述する独自のメッセージパケットをカスタムBase64とRC4で暗号化して送信します。この際、次のようなパスワードによる認証プロセスを経ることで、バックドア機能が有効化され、以降のバックドア処理が可能になる仕組みになっていました。これは、不特定多数がアクセス可能な公開システムにJackpotを感染させることを想定し、意図しないリクエストを処理しないための予防策と考えられます。

図8:Jackpotがバックドア機能を有効化するためのシーケンス例
図8:Jackpotがバックドア機能を有効化するためのシーケンス例

Jackpotが受け取るデータのフォーマットについて詳しく見ていきます。HTTPボディに含まれるデータは、次の2つのステップで復号されます。

  1. ハードコードされた改変Base64テーブルを用いたカスタムBase64によってデコード
  2. デコードしたデータの先頭16バイトを鍵として、後続するデータをRC4で復号

例として、初回認証時のHTTPリクエストと、含まれるメッセージのフォーマットを以下に示します。

図9:「Jackpot」の初回認証時のHTTPリクエストと、含まれるメッセージデータの例
図9:「Jackpot」の初回認証時のHTTPリクエストと、含まれるメッセージデータの例

メッセージには、バックドア処理に必要な「コマンドID(後述するように内部ではPacktypeと呼ばれる)」や、コマンドの実行に必要な引数やデータを指す「ペイロード」が含まれています。また、メッセージには、処理時には無視されるデータが含まれることから、このデータは「ジャンクデータ」と考えられます。このジャンクデータは、おそらくランダムなデータと考えられ、メッセージを暗号化した際に規則的なパターンが現れないようにするための工夫だと推測されます。メッセージの最後には、メッセージの完全性を担保するための2バイトのチェックサムが含まれ、メッセージの処理中に検証されます。このチェックサムはカスタムCRC-16アルゴリズムにより算出されていました。

JackpotはコマンドIDに基づく処理を実施した後、同様のフォーマットでメッセージを構築し、同様にカスタムBase64とRC4で暗号化してレスポンスを返します。以下に認証成功時のレスポンスの例を示します。

図10:「Jackpot」の初回認証成功時のHTTPレスポンスと、含まれるメッセージデータの例
図10:「Jackpot」の初回認証成功時のHTTPレスポンスと、含まれるメッセージデータの例

認証成功時には、「jackpot//<CODE_PAGE>」のように、感染システムのコードページが含まれたメッセージが返ります。このように、Jackpotは後述するバックドア処理のレスポンスなどに「jackpot(=大成功)」という文字列を含めて応答するという特徴を持っています。

「Jackpot」のBackdoor Commands

メッセージの復号・検証が完了するとバックドア処理に進みます。Jackpotにおけるバックドアコマンドに対するアクションは、前述のメッセージ含まれる「コマンドID」と「ペイロード」の組み合わせで決定されます。コマンドIDは内部的には「Packtype」と呼ばれ、現在観測しているJackpotでは0~10の値をサポートしています。各コマンドIDには、(そのコマンドが引数を必要とする場合)サブコマンドが割り当てられています。サブコマンドは、メッセージのペイロード部に文字列として格納されてJackpotに渡されます。サブコマンドへの引数は、ほとんどの場合で「;;;」という文字列をデリミタとして、サブコマンドの直後に連結されて渡されます。

図13:calc.exeを実行する際のリクエスト例
図13:calc.exeを実行する際のリクエスト例

各コマンドIDとペイロードの組み合わせとそれらに対応するアクションの一覧は次の通りです。

id sub-command (デリミタを含む) action
0 パスワードによる認証の実施
1 CloseSession 現在のセッションの終了
2 GetSystemInfo

実行環境の以下情報の収集・送信

  • コンピュータ名
  • ユーザ名
  • 実行ユーザの権限情報(System/Admin/User)
  • プロセスID
  • OSアーキテクチャ
  • 実行ファイルパス
  • OSのバージョン
  • コードページとデフォルト言語ID
  • 現在時刻(ローカルタイム)
  • ネットワークアダプター情報(アダプター名/IP)
3 リバースシェルセッションの開始(cmd.exeの起動)
4 リバースシェルセッションの終了(cmd.exeの終了)
5 cmd.exe経由での任意コマンドの実行
6 DRIVE ドライブ情報の列挙
指定したディレクトリ配下のアイテム列挙
7 EXECUTE;;; 指定したファイルの実行
DELETE;;; 指定したファイルの削除
8

UPLOAD;;; ファイルハンドルのオープン
CloseFile ファイルハンドルのクローズ
ChangeFileTime ファイルのタイムスタンプを変更
ファイルのアップロード
9 DOWNLOAD;;; ファイルハンドルのオープン
CloseFile ファイルハンドルのクローズ
ファイルのダウンロード
10 シェルコードの取得
STARTSHELLCODE;;; シェルコード用バッファの初期化
CHECKSHELLCODE;;; シェルコードの検証
RunShellcode!@# CallWindowProcAを用いてシェルコードの実行
STOPSHELLCODE;;; シェルコード用バッファの削除(=停止)
■A41APTキャンペーンに関連する攻撃者グループの帰属に関する考察

トレンドマイクロでは2018年において、前述のCobalt StrikeやFYAnti、またQuasarRATを用いたAPT10による攻撃を観測しています。また、2018年当時に確認された各検体の特徴と2020年以降に確認された各検体間における特徴が一致することを確認しています。特に最終的なペイロードを実行するまでの過程で動作するローダであるFYAntiや、メモリ内へ展開・実行される.NET製のローダは独特の特徴を持っています。これらマルウェアにおける技術的特徴の一致、また正規ファイルから実行が開始されDLL Side-Loadingにより暗号化されたペイロードを実行する手法、また攻撃対象といった一連のTTPsが近しいことから、トレンドマイクロではAPT10とA41APTキャンペーンを実施している攻撃者グループには一定の関連があると判断します。
一方、A41APTキャンペーンでは2018年当時にはAPT10が用いることが把握されていなかったSigLoaderやSodaMaster、また今回初めて確認されたJackpotといったマルウェアが用いられている点、初期侵入経路としてスピアフィッシングメール以外に、SSL-VPN製品が用いられている点など、過去のAPT10関連の事例とは異なるTTPsが確認されています。そのため、トレンドマイクロではA41APTキャンペーンを実施している攻撃者グループについて、新たに「Earth Tengshe」という名称を採用しています。

■おわりに

APT10に関連する攻撃者グループ「Earth Tengshe」は、2018年以前に用いられた一部のマルウェアと新たなマルウェアの両方を用いた攻撃を、少なくとも2020年以降、継続的に実施しています。現在把握されている範囲では、主な攻撃対象は特に日本に関連する組織です。攻撃手法は2018年以前とは異なり、初期侵入経路にSSL-VPN製品を悪用する点や、SigLoaderやSodaMaster、Jackpotといった複数のマルウェアを用いる点が特徴的です。また、攻撃対象については、攻撃の発覚や対処を遅らせるため、意図的に標的組織の海外に存在する拠点・関連組織を最初の侵害対象としています。
2021年末時点で既に関連の攻撃は一定期間継続しており、また攻撃対象も日本国内の組織を中心として一定の広がりがあることを確認しています。以上のようにA41APTキャンペーンおよびEarth Tengsheによる攻撃は今後も継続する可能性があるとみられるため、注視・警戒が必要です。

■IoC

外部公開されているIoC情報はこちらを参照ください。なお、当記事で言及したバージョンアップしたSodaMasterとJackpotの検体は公開されていないため、こちらのIoCには含まれておりません

調査/執筆:原 弘明(APT Infra)、サイバーセキュリティ・イノベーション研究所 スレット・インテリジェンス・センター

The post 「Earth Tengshe」によるマルウェア「SigLoader」を用いた攻撃キャンペーンで観測された新たなペイロード first appeared on トレンドマイクロ セキュリティブログ.