続 : 熱帯の海賊から届く贈り物 –贈り主は誰?攻撃者グループを推定する-

This post is also available in: English

概要

前回の記事では、 Tropic Trooper(別称: Pirate Panda, KeyBoy )による攻撃事例の一つに着目し、スピアフィッシングメールを契機にマルウェアに感染するまでのフローと、攻撃に使われたマルウェアの動きを解説しました。我々はその後も継続して同様のアクタによる攻撃を観測しています。 今回は、マルウェアの解析を通じてどのように本攻撃キャンペーンの背後にあるTropic Trooper の存在を導き出したのか、特にそのアトリビューションの方法について解説した記事となります。

Tropic Trooperとは

前回の記事では分析した標的型攻撃がTropic Trooperと呼ばれる攻撃者グループに帰属すると記載しました。 このグループは、主にアジア太平洋地域でサイバー攻撃を行うことで知られるサイバースパイ集団の名前です。彼らは主に政府、医療、交通、ハイテク産業を標的にしており、2011年から今に至るまで活動を続けています。 以下に参考文献を記載します。

参考


我々はこのTropic Trooperによると推定される攻撃が、2023年の5月から今まで東アジアの企業を標的としていることを確認しています。特に、半導体やレアメタル関連の業界が狙われていると推定しています。 分析の結果、今回発見したマルウェアであるEntryShellが、過去に使われたマルウェアKeyBoyとの間に非常に多くの点で共通していることを確認しました。

アトリビューションの必要性

標的型攻撃で使われるマルウェアは特定の攻撃者グループが独占していることがあるため、攻撃に使用されたマルウェアから、攻撃が特定のグループによるものであると関連付けることがあります。これらの関連付けや推定の行為をアトリビューションといいます。

標的型攻撃の中で使われたマルウェアから攻撃者グループを推定できると、過去にあった同じグループによる攻撃の分析レポートなどを参考にして、対応や対策が立てやすくなります。 例えば、攻撃者像を把握することで侵害発生時に被害拡大を防止したり、予め防止・検知の策を講じておいたりするなど、具体的な対策の解像度が高まります。また、活動に関する最新の情報を得ることで、よりプロアクティブな対策も可能になります。

攻撃の全体像と利用されたマルウェア

前回の分析では、Installer(感染)とLoader(読み込み)の二つの機能を持ち、Cobalt Strike Beaconを読み込むマルウェアを取り上げました。 このマルウェア以外にもこのマルウェアに関連する200を超えるサンプルとそれに関わるファイル群をVirustotal.comをはじめとする有償のインテリジェンスサービスや公開情報を駆使することで収集し、分析を重ねています。 その結果、Loaderによって別のマルウェアの読み込みや新しいマルウェアが使用されていることが判明しました。これより、その感染の流れを確認します。

図1. 利用されたマルウェアと攻撃の全体像

まず、攻撃者が「侵入」を試みるステップ(1st Stage)では、メールやSMSを介してマルウェアに感染させ、そのマルウェアはInstaller(感染)とLoader(読み込み)の二つの機能を持っていました。 このマルウェアは初期感染を担い、ペイロードとしてCobalt Strike BeaconやEntryShellといったファイルレスマルウェアをメモリ上に展開します。そのマルウェアにXiangoop Loaderと名付けましたが、このXiangoop Loaderの Familyには、二つの形式があることが確認できました。1st Stageおよび初期感染で使われるマルウェアはXiangoop Loader with Installerになります。

初期感染に成功した場合、「攻略」を試みるステップ(2nd Stage)に進みます。2nd Stageでは 遠隔操作によってその端末の情報をより深く調査したり、その端末から横移動をして別の端末やサーバを攻撃したりします。また、1st Stageと同じようにXiangoop Loaderを動作させ、Cobalt Strike BeaconやEntryShellを読み込みます。2nd Stageで使用されるXiangoop Loader にはInstaller機能がなく、Xiangoop Simple Loaderと分類しています。 また、2nd StageではCrowDoorと呼ぶ異なる性質のマルウェアが、既存のSparrowDoor Loaderから読み込まれていることも判明しました。

1st Stage用マルウェア 2nd Stage用マルウェア
メールに添付、初期感染で使われるマルウェア 侵入後に利用されるマルウェア
Xiangoop Loader with Installer
InstallerとLoader機能を持つ
Publicフォルダに自身をコピーし動作
Cobalt Strike Beacon やEntryShellが二次検体として使われる
Xiangoop Simple Loader
Loader機能のみを持つ
攻撃者によって任意の場所に設置される
Cobalt Strike BeaconやEntryShellが二次検体として使われる
SparrowDoor Loader + CrowDoor
単一で遠隔操作の機能を持つ

過去の検体との類似性

各マルウェアの詳細な分析については、VB2023の講演資料を参照ください。
Virus Bulletin :: Unveiling activities of Tropic Trooper 2023: deep analysis of Xiangoop Loader and EntryShell payload
今回はこれらのマルウェアの分析によって判明した過去の検体との類似性について以下2点に分けて確認していきます。

  • EntryShellとKeyBoyの相似
  • 新たなマルウェア CrowDoorとFamousSparrowとの関連性

EntryShellとKeyBoyの相似

我々は、この一連の攻撃の中で使われているEntryShellというマルウェアに着目しました。 EntryShellは、Xiangoop Loader Familyによって読み込まれるマルウェアです。今回発見したEntryShellは前回の記事で紹介したCobalt Strike Beaconと同様 DLL Side Loadingを使用してXiangoop Loaderによってメモリ上に復号、展開されます。

図2. EntryShellの感染フロー例

まずはEntryShell 内に埋め込まれている文字列を分析してみます。 いくつかエラーメッセージを示すような特徴的な文字列が目に留まります。これらの文字列を元に検索してみると、Github上に公開されている2016年に作成されたKeyBoyを検知する為のYaraルールが見つかりました。
rules/malware/APT_KeyBoy.yar at master · Yara-Rules/rules · GitHub

図3. 特徴的なエラーメッセージを示す文字列とKeyBoyを検知するためのYaraルールとの比較

Yaraとはー

Yaraはマルウェア研究者によるマルウェアサンプルの識別・分類支援を目的として開発されたツール。Yaraは大量のファイルを高速にスキャンしながら、ルールに記述した特徴を持つファイルだけを選定する機能を持っているため、マルウェアに限定せず汎用的に使用することが可能。
Yaraルールは、テキストやバイナリのパターンおよびその組み合わせロジックなどを柔軟に記述できる。
GitHub - VirusTotal/yara: The pattern matching swiss knife

さらにEntryShell 内に埋め込まれている文字列の解析を進めると、HEXコードをAscii文字表現した文字列が定義されていることがわかります。これら文字列がマルウェアのプログラム内のどこで使われているのか、参照元を追跡してみます。 そうすると、文字列からバイナリデータへ変換したのち、AES ECBモードにて復号されていることがわかります。AESの鍵”afkngaikfaf”(実際にはpaddingが必要)は検体内の別の場所にハードコードされていました。

図4. EntryShell 内に埋め込まれた暗号化文字列の復号

復号した文字列を確認してみると、またしても過去のKeyBoyを検知するYaraルールで定義されている文字列と一致することがわかります。暗号化されている文字列は主にEntryShellのバックドアコマンドIDやバックドアの機能の中で使用される文字列であることがわかりました。

図5. 復号したEntryShellの文字列と KeyBoyを検知するためのYaraルールとの比較

攻撃者はこのYaraルールの存在を認知しており、セキュリティ製品による検知を回避するために、EntryShell内で使用しているYaraルールで検知されそうな特徴的な文字列を暗号化していると考えられます。

分析によりEntryShellはKeyBoyというマルウェアと類似点が非常に多いことが確認できました。それだけでなく、 KeyBoyと比較してEntryShellでは通信部分、マルウェアコンフィグの構造、バックドアについて機能更新や追加がされていることも確認しています。 このことから、EntryShellはKeyBoyをバージョンアップさせたマルウェアであると判断しました。

KeyBoyはTropic Trooperと呼ばれる攻撃者グループが扱ったという調査報告がありますが、他のアクタに利用されたという報告はありません。そのため、KeyBoyはTropic Trooper固有のマルウェアと言ってもよいでしょう。

新たなマルウェア CrowDoorとFamousSparrowとの関連性

このキャンペーンに関する分析をする中でCrowDoorと新たに名付けたRATマルウェアが確認されました。このCrowDoorもファイルレスマルウェアで、複数のLoaderを経由して読み込まれていました。しかし、最終的にCrowDoorを読み込むLoaderは、FamousSparrowという攻撃グループが使うSparrowDoor Loaderであることが確認できました。

FamousSparrowとは

FamousSparrowは、ESET社よって2021年に報告された標的型攻撃者グループで、SparrowDoorという特徴的なマルウェアセットを利用しているという報告があります。
FamousSparrow: A suspicious hotel guest

新たなマルウェアCrowDoor

CrowDoorの感染フロー例を以下に示します。

図6. CrowDoorの感染フロー例

図6より、右から2つ目のLoader Shellcodeを解析すると、過去に作成されたSparrowDoor Loaderを検知するためのYaraルールとパターンマッチすることが確認できました。 さらに過去の検体と比較すると、このShellcodeはSparrowDoor Loaderと全く同じものを使っていることがわかりました。

図7. CrowDoor感染フロー内のLoader Shellcode文字列とSparrowDoor LoaderのShellcodeを検知

上記のLoader Shellcodeによってメモリ上に展開されたCrowDoorのPEファイルでは、冒頭に0が羅列しており、マジックナンバー"PE"が欠落しています。これはESETのブログで書かれているSparrowDoorと非常に似ていることがわかります。

図8. メモリ上に展開されたSparrowDoorとCrowDoorのPEにおける共通点の例

また、CrowDoorとSparrowDoorの検体間でコマンドの共通性が見出されています。

図9. SparrowDoorとCrowDoorの検体における共通点の例

分析した攻撃キャンペーンより、CrowDoorはXiangoop Loader Familyを使った後に攻撃者が設置したことが確認できています。このことからXiangoop Loader Familyを使うTropic Trooperと、SparrowDoor Loaderを使うFamousSparrowというグループには何らかの関連があると我々は考えています。

まとめ

以下より、Tropic TrooperとFamousSparrowは同一、もしくは、非常に緊切な関係にある攻撃グループであると推定されます。

  • Xiangoop Loader Familyというマルウェアが呼び込む検体の特徴から、Xiangoop Loader FamilyはTropic Trooperと呼ばれるグループに帰属する可能性が高い
  • Xiangoop Loader Familyが使われた攻撃でSparrowDoor Loaderが利用されたことが確認できた。この検体は、FamousSparrowというグループが利用することが報告されている

謝辞

本件の分析は、株式会社マクニカのセキュリティ研究センターと共同で行いました。同社の協力に感謝します。

IoCs

file name malware type MD5 SHA1 SHA256
McVsoCfg.dll Xiangoop Loader bb01bc33b0475fb2624d906760ebe290 808f3cb47960e1b08c8b22dad780528d7fec966d ACF4422360CA41BB1318A46B2386C5E5458666E951FAF19DCF48F0AB3ABD5900
NTUSER.EXE legitimate exe c214cc5b78616b44918ce62c8a2aa773 aa0018ef4bc398cf3e7c6b2dd9109c173d12b368 563d732c54221fcdd5625bfceaefbe10937c6c62823b4a6ceca5f7ed6c81d890
setting.dat BLOB EntryShell cccc4cf8267815cf7ae1f924ef2d9b83 0031ddf8a700a43641ad988fb867d2c399dd6bba da2963b338ab5324c7e20710d6a14d4bb802d04177f671ddc29573046382cdfd
datast.dll Loader of SparrowDoor Loader a213873eb55dc092ddf3adbeb242bd44 3650899c669986e5f4363fdbd6cf5b78a6fcd484 23dea3a74e3ff6a367754d02466db4c86ffda47efe09529d3aad52b0d5694b30
datastate.dll SparrowDoor Loader 8a900f742d0e3cd3898f37dbc3d6e054 6ddadecd10ef562fa4845794f5cba250606a366c 658e9b9947b01eaa3be7845bfc672e4c94c1b8dd037201bc53e93b63ec1d7207
sqlite3.dll legitimate dll 2a589d796e2c4b8a47a8388471880cbb 721080c5e76aee6f0376ad122343181c1e0da61a 7d02140c3ff14cd5a0d9bc20f92e5b28a83798a6e64892cc1fbd29f1e3958446
WinStore BLOB CrowDoor 90afb6d2dfd161ce7752226b8a52e609 e6da2bc32444d84bb1adb80ce01aa3340e5f203c 4f0cf8835d28188662aaca71ce35480e0b37a4fc1b7966fdb38905623ddcf2ad
WinStore.exe legitimate exe 5e352887630542e60eeb844a1c7ac034 b736fdda75a489e3cb8f0c1ae73adee07309ddb9 a47bf32ee0fd6b3c090f957f1fffa37b7619d1a55b3c73b2a5aa92712903e60c