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によって別のマルウェアの読み込みや新しいマルウェアが使用されていることが判明しました。これより、その感染の流れを確認します。
まず、攻撃者が「侵入」を試みるステップ(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によってメモリ上に復号、展開されます。
まずはEntryShell 内に埋め込まれている文字列を分析してみます。
いくつかエラーメッセージを示すような特徴的な文字列が目に留まります。これらの文字列を元に検索してみると、Github上に公開されている2016年に作成されたKeyBoyを検知する為のYaraルールが見つかりました。
rules/malware/APT_KeyBoy.yar at master · Yara-Rules/rules · GitHub
Yaraとはー
Yaraはマルウェア研究者によるマルウェアサンプルの識別・分類支援を目的として開発されたツール。Yaraは大量のファイルを高速にスキャンしながら、ルールに記述した特徴を持つファイルだけを選定する機能を持っているため、マルウェアに限定せず汎用的に使用することが可能。
Yaraルールは、テキストやバイナリのパターンおよびその組み合わせロジックなどを柔軟に記述できる。
GitHub - VirusTotal/yara: The pattern matching swiss knife
さらにEntryShell 内に埋め込まれている文字列の解析を進めると、HEXコードをAscii文字表現した文字列が定義されていることがわかります。これら文字列がマルウェアのプログラム内のどこで使われているのか、参照元を追跡してみます。
そうすると、文字列からバイナリデータへ変換したのち、AES ECBモードにて復号されていることがわかります。AESの鍵”afkngaikfaf”(実際にはpaddingが必要)は検体内の別の場所にハードコードされていました。
復号した文字列を確認してみると、またしても過去のKeyBoyを検知するYaraルールで定義されている文字列と一致することがわかります。暗号化されている文字列は主にEntryShellのバックドアコマンドIDやバックドアの機能の中で使用される文字列であることがわかりました。
攻撃者はこの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より、右から2つ目のLoader Shellcodeを解析すると、過去に作成されたSparrowDoor Loaderを検知するためのYaraルールとパターンマッチすることが確認できました。
さらに過去の検体と比較すると、このShellcodeはSparrowDoor Loaderと全く同じものを使っていることがわかりました。
上記のLoader Shellcodeによってメモリ上に展開されたCrowDoorのPEファイルでは、冒頭に0が羅列しており、マジックナンバー"PE"が欠落しています。これはESETのブログで書かれているSparrowDoorと非常に似ていることがわかります。
また、CrowDoorとSparrowDoorの検体間でコマンドの共通性が見出されています。
分析した攻撃キャンペーンより、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 |