マルウェア
標的型RATと同一のファイルレス活動を持つMac向けアドウェア「Bundlore」を解析
リモートアクセストロジャン(RAT)である「NukeSped」のサンプルの調査中、トレンドマイクロは、NukeSpedに散見されるものと同一のファイルレスルーチンを使用している「Bundlore」アドウェアのサンプルを複数検出しました。RATであるNukeSpedを拡散させているのは標的型の攻撃者であるLazarusとされています。Lazarusは2014年以降、活発に攻撃を展開しています。
リモートアクセストロジャン(RAT)である「NukeSped」のサンプルの調査中、トレンドマイクロは、NukeSpedに散見されるものと同一のファイルレスルーチンを使用している「Bundlore」アドウェアのサンプルを複数検出しました。
RATであるNukeSpedを拡散させているのは標的型の攻撃者であるLazarusとされています。Lazarusは2014年以降、活発に攻撃を展開しています。NukeSpedの亜種は複数確認されており、多くは32ビットシステム上で稼働するように設計されています。検出回避を狙う活動として、暗号化された文字列を使用しています。最近では、Lazarusによるサイバー諜報活動の一環として、NukeSpedをより複雑化した「ThreatNeedle」と呼ばれるRATも出現しています。次に、Bundloreは、正規アプリのダウンロードを偽装し、ターゲットのデバイスにアドウェアをインストールするマルウェアファミリーです。本サンプル中から検出した、暗号化されたMach-Oファイル(macOSでの実行可能形式ファイル)は、Bundloreアドウェアのステルス活動をメモリに内在する脅威、つまりファイルレス活動へとアップグレードしていました。また、BundloreはmacOS向けのアドウェアであり、昨年は当時の最新バージョンであるmacOS Catalinaでの攻撃が確認されていました。
■RAT「NukeSped」の解析からアドウェア「Bundlore」を特定
今回の調査の発端として、トレンドマイクロではLazarusとされる攻撃で使用されていたファイル「Ants2WhaleHelper」を解析し、NukeSpedであると判断しました。また、NukeSpedが組み込まれている別のファイル、「unioncryptoupdater」もVirusTotalで検出されています。両者にはGitHubに投稿されたコードをベースにしている痕跡が窺えるルーチンが組み込まれていました。しかし、興味深いことに、そのいずれもこのルーチンを使用した形跡が見当たりません。「Ants2WhaleHelper」を逆アセンブルツール「Interactive Disassembler Pro (IDA Pro)」で解析したところ、その主要なペイロードが「_mapBuffer」関数(図1)であることが判明しました。これは「_memory_exec」関数 (図2)の修正バージョンのようです。この関数はGitHubに投稿されたコードを基に作成されているように見えますが、「_memory_exec」関数を示すリファレンスは一切ありませんでした。
図1:「_mapBuffer」関数
図2:GitHubの投稿をコピーした「_memory_exec」関数
さらに、このペイロードには「_resolve_symbol」関数が組み込まれていますが、使用された形跡がなく、図3に示す通り、必要なさそうです。一般的に、NukeSpedはウェブサーバからペイロードを実行するため、内部でデータを特定する、余分な「_resolve_symbol」関数は必要ありません。図4の通り、この関数の実行コードをVirusTotalで検索した結果、201件のファイルが検出されました。結果については、NukeSpedのサンプルは僅か2件のみで、他はBundloreアドウェアのサンプルでした。
図3:NukeSpedの「_resolve_symbol」関数(左)、Bundloreアドウェア(右)
図4:実行コードの検索結果
同様に、VirusTotalのRetrohuntを用いて検索したところ、273件がヒットしました。そのほとんどがBundloreアドウェアファイルで、NukeSpedのファイルは僅か3件のみでした。しかし、検証の結果、3件のNukeSpedサンプルのうち1件は、過去に行った検索で入手したNukeSpedファイルの親ファイルであることが判明しました。検出されたBundloreアドウェアサンプルの中で、最も古いものは昨年の5月に遡ります。VirusTotalでの検索を通じて入手したBundloreアドウェアサンプルをさらに調査した結果、ファイルレスルーチンが使用されており、Bundloreアドウェアがメモリから直接ペイロードを実行できることが判明しました。
■Bundloreアドウェアのファイルレスルーチン
トレンドマイクロにてBundloreアドウェアのサンプルを調査した結果、これらのサンプルでは、NukeSpedのサンプル中で未使用の状態で内包されていた関数と同一の関数が使用されていることが判明しました。そしてIDA Proによる逆アセンブルの結果、図5の通り、ランダムに関数名が付与され、難読化されていることもわかりました。関数には一部に差異がありますが、メモリ内のファイル実行ルーチンは依然として、同一です(図6および図8)。
図5:難読化されている関数
図6:NukeSped検体(左)とBundlore検体(右)の逆アセンブル結果
Bundloreアドウェアサンプル中、1件の主要ルーチンは以下の通りです。(sha256:0a3a5854d1ae3f5712774a4eebd819f9e4e3946f36488b4e342f2dd32c8e5db2)
- 図7に示す通り、「__DATA.__data」セクションを復号し、埋め込まれているMach-Oファイルを起動します。復号にはXORキーが使用され、サイクルごとにインクリメントされます。例えば、0x2A, 0xDD, 0x00, 0x2A, 0x54, 0x7E, 0xA8, 0xD2, 0xFC, 0x00などの0xDDインクリメントです。
図7:「__DATA.__data」セクションの復号ルーチン
2. NSCreateObjectFileImageFromMemoryという関数を呼び出し、メモリ内のMach-Oファイルからアドウェアのイメージを作成します。その後、NSLinkModuleを呼び出して、悪意あるイメージをメインの実行可能なイメージライブラリとリンクさせます。図6に示す通り、Mach-Oファイルのフォーマットを実行可能なフォーマット(0x02)からバンドル(0x08)に変更後、NSCreateObjectFileImageFromMemoryを呼び出すことが可能となります。
3. 0x80000028の値をもつValue(LC_MAIN)コマンド用にメモリ内のMach-Oファイルのヘッダーストラクチャを解析します。このコマンドにはMach-Oファイルのエントリポイントのオフセットなどのデータが含まれています(図8)。その後、アドウェアはオフセットを取得して、エントリポイントへと移動します。
図8:NukeSped(左)およびBundlore(右)における不正コードのエントリポイント
■メモリ内で実行されるBundloreアドウェアのMach-Oファイル
復号キーおよびインクリメント値はBundloreアドウェアのサンプルごとに異なります。埋め込まれているファイルの理解をさらに深めるため、トレンドマイクロではPythonのスクリプトを作成し、埋め込まれていたMach-Oファイルを復号・抽出しました。その結果、図9に示すルーチンを備えている、復号後のMach-Oファイルを確認することができました。(sha256: a7b6639d9fcdb13ae5444818e1c35fba4ffed90d9f33849d3e6f9b3ba8443bea)
同ファイルはターゲットURL (13636337101185210173363631[.]cloudfront[.]net/?cc-00&)に接続しますが、サンプルごとにアドレスは異なります。Flash Playerを装っている、「Player.app」と呼ばれるアプリバンドルがダウンロードされ、「/tmp」ディレクトリに書き込まれます。書き込まれたアプリバンドル内で「chmod 777」コマンドが実行され、その後、不正アプリを立ち上げます。この不正アプリはこれらのルーチンを実行し、一方で、Bundloreアドウェアは虚偽のエラーメッセージを表示します(図10)。この処理が完了すると、スリープ関数を呼び出して、ループ処理を繰り返し、スリープモードに切り替わります。
macOS Big SurとmacOS Catalina双方で、Bundloreアドウェアの挙動に大きな違いは見つかりませんでした。しかし、System Integrity Protection (SIP)およびGatekeeper機能が有効となっているmacOSのデフォルト設定では、Bundloreアドウェアのサンプルはブロックされ、実行できないことをトレンドマイクロのリサーチャは突きとめました。この事象はmacOS CatalinaおよびmacOS Big Surいずれの環境においても確認されました。同様に、Bundloreアドウェアのサンプルも、最近リリースされたオペレーティングシステム、macOS Montereyのデフォルト設定では、ブロックされ、実行できませんでした。
図9:復号後Mach-Oファイルのメインルーチン
図10:Player.appに表示される虚偽のエラーメッセージ
今回の解析で明らかになったように、標的型のRATと金銭目的のサイバー犯罪であるアドウェアが同一の不正コードを持っていたことは、非常に興味深い事実と言えます。アドウェアのサイバー犯罪者が不正コードをコピーしたのか、標的型攻撃グループがアドウェアもコントロールしているのか、そこまでの断定に至る証拠は今回の解析では得られませんでしたが、アドウェアという一般的なサイバー犯罪においても標的型攻撃と同じレベルのファイルレス活動が行われていたということは、個人や組織が対策を考えていく上で重要な事実と言えます。
■トレンドマイクロの対策
引き続き攻撃者への警戒を緩めないことが、脅威に迅速に対応していく上で重要な点です。トレンドマイクロでは、この種の脅威からシステムを守るために、ユーザに対して、 Trend Micro Apex One™およびTrend Micro Protection Suitesなどの多層防御によるセキュリティ対策を推奨しています。また、 Trend Micro Vision One™️では、メール、エンドポイント、サーバ、クラウドなど、複数レイヤに及ぶ脅威の可視化や相関分析による検出、挙動監視などの機能を提供しています。Trend Micro Vision One™️により、脅威がシステムに実害をもたらす前に、重大なインシデントを通知することで、脅威に対して迅速な対応が可能となります。
Bundloreアドウェアの 攻撃手法:
ATT&CK Matrix for ENTERPRISE により分類したBundloreアドウェアの TTPは以下の通りです:
Initial Access | Execution | Privilege Escalation | Defense Evasion | Command and Control (C&C) |
Drive-by compromise | User execution | Process injection | Deobfuscate/Decode files or information | Web service |
Masquerading | ||||
Process injection |
侵入の痕跡(Indicators of Compromise, IoC):
今回の記事に関する侵入の痕跡は、こちらを参照してください。
参考記事:
「NukeSped Copies Fileless Code From Bundlore, Leaves It Unused」
By Luis Magisa, Ariel Neimond Lazaro
翻訳: 谷口 厚志(Core Technology Marketing, Trend Micro™ Research)