インサイド・ザ・ラビット・ホール: BunnyLoader 3.0 詳解

A pictorial representation of BunnyLoader malware. An open laptop against a dark background is flanked by exclamation points. On the laptop screen are overlapping windows with a bug icon representing the malware.

This post is also available in: English (英語)

概要

本稿は、新しくリリースされた BunnyLoader 3.0 と、これまで観測された BunnyLoader のインフラとその機能の概要を中心に取り上げます。BunnyLoader は活発に開発の続くマルウェアで、情報やクレデンシャル、暗号通貨を盗む機能を備えているほか、被害者に追加のマルウェアを配布することもあります。

サイバー犯罪者らは、熾烈を極める犯罪市場でほかのサイバー犯罪者らやセキュリティ ツール、リサーチャーらと肩を並べてやっていくために、定期的なマルウェアの更新や再作成に迫られています。2023 年 9 月に最初に発見されて以来、「サービスとしてのマルウェア (MaaS)」である BunnyLoader は頻繁に機能を更新しています。この更新には以下の内容が含まれています。

  • バグの修正
  • 追加のウイルス対策回避と保護
  • スティーラー部分の複数のデータ復旧機能
    • 追加のブラウザー パス
    • キーロガー機能

2023 年 10 月、Unit 42 の脅威リサーチャーは、さらなるアクティビティを発見しました。そこからは、脅威アクターによる BunnyLoader の変更と再作成の継続が明らかになりました。攻撃者はマルウェアの配布と実行のために頻繁に戦術を変更していましたが、これはさらなる難読化と検出回避を意図していたとみられます。

11 月のさまざまなキャンペーンのなかで、当該の期間中に収集されたサンプルには、 PureCrypter、UPX、Themida を使ってパックされたバイナリーが含まれていました。12 月には、BunnyLoader のペイロードは新手の .NET インジェクターを使う PureCrypter 感染へのフォローアップ ペイロードとして配布されていました。攻撃者は、マルウェアのファイル名を変更して正規のビデオ ゲームやそのほかのアプリケーションを模倣していました。

インフラ、パッカー、暗号化、漏出方法などの戦術・技術・手順 (TTP) の頻繁な変更は、攻撃者の検出回避を助けています。さらに、サイバーセキュリティ リサーチャーによる脅威アクターのアクティビティ検出・分析能力を損なうことにもなります。

2024 年 2 月 11 日、BunnyLoader の背後にいる脅威アクターは BunnyLoader 3.0 のリリースを発表し、同マルウェアが「完全に再設計され、90% の改善がなされた」とうそぶきました。

脅威アクターは、BunnyLoader ペイロードに対する次の機能改善を謳っています。

  • 「パフォーマンス向上のために完全に書き直された」ペイロード/モジュール
  • 縮小されたペイロード サイズ
  • 高度なキーロガー機能

本稿は、脅威アクターによるマルウェアの継続的開発とその進化する TTP を明らかにすることにより、読者の皆さんが同脅威を検出 (できれば防御) できるようにすることを目指しています。

パロアルトネットワークスのお客さまは、Cortex XDRXSIAMPrisma Cloud によって BunnyLoader からより適切に保護されています。また弊社のお客様は、Advanced WildFireDNS SecurityAdvanced URL Filtering などのクラウド配信型セキュリティサービスを有効にした次世代ファイアウォール (NGFW) により、本稿で取り上げた脅威からの保護を受けています。

侵害の懸念があり弊社にインシデントレスポンスに関するご相談をなさりたい場合は、こちらの問い合わせフォームからご連絡いただくか、infojapan@paloaltonetworks.com まで電子メールにてお問い合わせください (ご相談は弊社製品のお客様には限定されません)。

関連する Unit 42 のトピック MaaS, Cybercrime

目次

BunnyLoader の誕生
観測されたインフラ: 初期のものから現在のものまで
サンプル分析: BunnyLoader 3.0 の機能詳細
コマンド & コントロールのアップデート
BunnyLoader バイナリーのモジュール化
結論
保護と緩和策
IoC
追加リソース
付録

BunnyLoader の誕生

BunnyLoader の開発サイクルは迅速でした。バージョン 1.0 の初認は 2023 年 9 月初めで、これは C/C++ で書かれた MaaS ボットネット兼ローダー マルウェアとしてダークウェブ上で宣伝されており、以下のようなさまざまな機能が備わっていました。

  • ファイルレス ロード
  • クレデンシャルの窃取
  • 暗号通貨の窃取
  • クリップボードの窃取

このマルウェアの背後にいる攻撃者は、「Player」または「Player_Bunny」として知られています。 BunnyLoader がどのマルウェアを配信するかは購入者が決定します。このマルウェアの作成者は、ロシアのシステムに対するマルウェアの使用を禁止しています。

ロシア領内またはその周辺に居住するマルウェア作成者は、通常、ロシアをターゲットとするマルウェアの使用を禁止しています。攻撃者は、ロシアの法執行機関のレーダーから逃れるためにこうした制限を設ける場合があります。

2023 年 9 月 4 日には脅威アクター「Player」はさまざまなフォーラムで BunnyLoader バージョン 1.0 の永年アクセスを当初は 250 ドルで提供していました。この広告の例を以下の図 1 に示します。

画像 1 は、BunnyLoader を宣伝するダークウェブ上のフォーラム投稿のスクリーンショットです。この投稿は、2023 年 9 月 4 日月曜日にメンバー PLAYER によって行われました。投稿のタイトルは次のようなものです: New BunnyLoader, v1.0 Botnet! C/C++ fileless loader and stealer + much more!何に使うのかを紹介してさまざまな機能について説明しています。クライアント向けの機能もリストしてあります。これは、breach という名前のユーザーによって投稿されています。投稿は 2023 年 9 月 4 日月曜日に行われました。
図 1. BunnyLoader 1.0 を宣伝するダークウェブの投稿。出典: @DailyDarkWeb による X (旧 Twitter) への投稿

2023 年 9 月末までに BunnyLoader は急ピッチで作り直されました。BunnyLoader の広告によると、新機能には次のようなものがあります。

  • コマンド & コントロール (C2) パネルのバグ修正
  • ウイルス対策の回避
  • 情報窃取に使われる複数のデータ復旧方法
  • 追加されたブラウザー パス
  • キーロガー機能
  • 解析対策

マルウェア ローダーのエコシステムは常にめまぐるしく移り変わっています。前月の 2023 年 8 月には、法執行機関が合同で行ったテイクダウン作戦により、勢力を誇ったマルウェア ファミリー Qakbot が大打撃を受けました。

この出来事は、ほかの MaaS ローダー オペレーターが市場に乗り出す機会を与えるものだった可能性があります。こうした状況があったことから、BunnyLoader 作者の積極的な作り直しや更新は、市場の関心を集めて採用を増やすためだったのかもしれません。9 月末までに、作者は BunnyLoader 2.0 をリリースし、野生で見られるようになりました。

10 月には、この作者はマルウェアの「プライベート」バージョンを 350 ドルで提供していました。オリジナル バージョンとは異なり、作成者はこのプライベート バージョンを難読化し、ウイルス対策保護を回避するために定期的に更新しました。セキュリティ リサーチャーが 9 月下旬にこのマルウェアを発見したことが、攻撃者がこれらのアップデートを行う動機になったと考えられます。

脅威アクターは、2024 年 2 月 11 日に Telegram チャネルで最新バージョンの BunnyLoader 3.0 を宣伝しました。

観測されたインフラ: 初期のものから現在のものまで

セキュリティ リサーチャーが 9 月に BunnyLoader 1.0 を初めて発見したとき、C2 サーバーには 37.139.129[.]145 が使われていました (図 2)。

画像 2 は X への投稿のスクリーンショットです。ハッシュタグ Malware と BunnyLoader。Bunny のログインリンク。142 ボット。BTC ウォレット。BunnyLoader ログイン ページのスクリーンショット。ロゴ、ユーザー名、パスワード フィールド。
図 2. セキュリティ リサーチャー 0xperator による X (旧 Twitter) の投稿。出典: X の @0xperator (旧 Twitter)

既知の BunnyLoader 最初期のサンプルでは、クライアントは http://[url]/Bunny/[PHP endpoint]という標準化されたディレクトリー構造を使って C2 サーバーと通信していました (図 3)。このパターンは、BunnyLoader 3.0 のリリースに至るまでのすべてのサンプルを通じて一貫しています。

画像 3 は、BunnyLoader C2 サーバーの一部として観測された多くの URL のリストです。
図 3. 観測された URL。37.139.129[.]145 にある C2 サーバー上のディレクトリー構造を反映している
BunnyLoader 2.0 は Add.php で終わる URL を使って最初に C2 サーバーに BunnyLoader クライアントを登録します。登録前にマルウェアはデバイスを列挙します。集めた情報は、個別のターゲットを識別するフィンガープリントとして使います。

C2 との通信を確立した BunnyLoader は、TaskHandler.php で終わる URL を使ってリクエストを繰り返し送信します。これらのリクエストからの応答が、BunnyLoader が実行するさらなる悪意のあるタスクを初期化します。

マルウェアの作者は、これらのタスクを次のような個別の関数にコード化していました。

  • キーロギング
  • クリップボードの窃取
  • さらなるマルウェアのダウンロード
  • リモート コマンド実行
  • 暗号通貨ウォレットの窃取
  • アプリケーション クレデンシャルの窃取

10 月中に私たちは 185.241.208[.]83 にホストされている新たな C2 インフラを観測しました。同月、私たちは Shovel Knight.zip という名前のついた目立つ ZIP アーカイブ経由で配布された BunnyLoader サンプルも確認しています。さらに分析したところ Shovel Knight.zip の内容が明らかになりましたが、これには BunnyLoader 2.0 のステージャーである Windows 実行可能ファイルが含まれていました。

Shovel Knight は、開発がクラウドファンディングで行われた有名なビデオ ゲームです。その後、主要なビデオゲーム プラットフォームからリリースされました。攻撃者が正規のソフトウェアの名前を使っているのは、ユーザーをだまして悪意のあるファイルを開いて実行させるためであることは間違いありません。

11 月中に私たちは、以下の場所でホストされている C2 サーバーを使用した後続のキャンペーンを特定しました。

  • 195.10.205[.]23
  • 172.105.124[.]34

2023 年 11 月に収集したサンプルでは、Themida を使って BunnyLoader 用の Windows 実行可能ファイルをパックしていました。Themida のほか、2023 年 11 月には BunnyLoader を配信するように設計された PureCrypter サンプルのクラスターを観測しました。これらの手法は、BunnyLoader のオペレーターがマルウェアを保護するために追加の対策を講じ始めたことを示しています。

12 月中には次の場所で新たな C2 サーバーが観測されました。

  • 134.122.197[.]80
  • 91.92.254[.]31

その月の感染チェーンは、それまでの月よりもはるかに複雑なものでした。私たちはさらなる TTP の変化を観測しました。そのなかでは、感染チェーンがこれまでには見られなかったドロッパーから始まって PureCrypter に至り、2 つのブランチに分かれていきます (図 4)。

画像 4 は、2023 年 12 月の BunnyLoader の感染チェーンです。NUIANS.exe を含む Delphi リソース ドロッパー。インメモリー ローダーNUIANS.exe。ステージングされた PureCrypter ローダー。ブランチ 1: IP アドレス。Purelogs ローダー。Purelogs スティーラー。ブランチ 2: IP アドレス。.NETインジェクター。EXE は BunnyLoader を EXE にインジェクトします。BunnyLoader は Meduza Stealer をダウンロードしてロードします。Meduza Stealer。
図 4. 12 月の感染チェーンの概要

PureCrypter 感染の 1 つめのブランチは、引き続き追加の Pure マルウェアを展開します。そのさいは、PureLogs ローダーをドロップしてから、PureLogs Stealer を配布します。2 つめのブランチでは、PureCrypter が .NET インジェクターを利用して、notepet.exe ファイルを装った BunnyLoader を配信します。Notepet は、ペットの飼い主のためのペットの健康トラッカー アプリケーションです。

また、BunnyLoader がファイル名 notep.exe にアプリのスペルミスを使っていることも観測されました。脅威アクターはこのファイルを使って Meduza Stealer マルウェアを配布していました。

12 月のアクティビティに続き、マルウェアの作者は、2024 年 2 月 11 日に BunnyLoader 3.0 をリリースするという別の大規模な作り直しを宣伝しました (図 5)。シニア脅威インテリジェンス リサーチャーの @RussianPanda9xx が X (旧 Twitter) でこの発表を最初に公に共有しました (図 6)。

画像 5 は、Telegram で宣伝されている BunnyLoader のスクリーンショットです。2月11日。BunnyLoader のビデオ。動画は BunnyLoader のログイン ページのものです。ダウンロード ボタン。105.5 MB。BunnyLoader (ADE) 3.0 Update. Webpanel/CnC. Completely redesigned and enhanced by 90%.
図 5. Telegram 上の BunnyLoader 3.0 の広告
画像 6 は、@RussianPanda による X (旧 Twitter) への投稿のスクリーンショットです。BunnyLoader は 3.0 での大規模な更新を発表しました。Maybe something to hunt for. 手で口元を覆って笑っている絵文字アイコン。彼女は投稿内で 2 人の異なる人物にタグを付けています。マルウェアに対するアップグレード リストを含む BunnyLoader アップデートのスクリーンショット。
図 6. 脅威インテリジェンス リサーチャー @RussianPanda による X (旧 Twitter) の投稿

BunnyLoader の最新バージョンであるバージョン 3.0 は、C2 サーバー上でバージョン 2.0 とは異なるディレクトリー構造を使います。このディレクトリー構造は http://[C2]/[path]/[PHP API] という形式になっています。この情報については「機能詳細」のセクションで解説します。

BunnyLoader 3.0 では、脅威アクターはドロッパーに BunnyLoader マルウェアを埋め込み、そのドロッパーを CMD ファイル経由で配布することで、実際の悪性ペイロードを配布します。攻撃者によって標的マシンに配布された BunnyLoader は、91.92.247[.]212 にある C2 サーバーに接続して応答します。その後は脅威アクターからのさらなる指示を待ちます。

サンプル分析: BunnyLoader 3.0 の機能詳細

2024 年 2 月 14 日、セキュリティ リサーチャーの Germán Fernández 氏は、@ViriBack 氏が発見した悪意のある .cmd スクリプトの中から、知られているなかでは最初の BunnyLoader 3.0 サンプルを特定しました。

この脅威を追跡している Unit 42 のリサーチャーは、.cmd スクリプトから抽出された更新された BunnyLoader ファイルを分析しました。私たちは前バージョンからの大きな変更点を複数特定しました。そのなかには C2 通信プロトコルの更新や、バイナリーのモジュール化などが含まれていました。

BunnyLoader の多くの側面は変わっておらず、ほかでも詳しい文書化がなされているので、本稿では新機能に絞って分析します。以下のセクションは包括的な分析ではなく、新バージョンの主たる機能に的を絞っています。

コマンド & コントロールのアップデート

C2 通信の基本 URI 構造は前のバージョンから変わっておらず、http://[C2]/[path]/[PHP API] という形式のままです。前述の BunnyLoader サンプルは、hxxp://ads[.]hostloads[.]xyz/BAGUvIxJu32I0/gate.php にある C2 サーバーと通信するように構成されています。BunnyLoader の以前のバージョンでは URL パスに文字列 Bunny が使われていましたが、BunnyLoader 3.0 ではオペレーターがパス名を指定できるようになりました。

バージョン 3.0 のリリース前は、BunnyLoader サーバーは複数の PHP API エンドポイントを使ってクライアントからの通信を受信していました (図 3 参照)。Unit 42 が観測した BunnyLoader 3.0 のサンプルはすべて、1 つのエンドポイント、gate.php を使っています。

以前のバージョンのように HTTP パラメーターを平文で送信せず、BunnyLoader 3.0 は RC4 暗号化を使ってこれらの値を難読化します。BunnyLoader が実行されるたびにランダムな 32 文字のキーが生成され、これが全 HTTP クエリー パラメーター値の RC4 による暗号化に使われます。暗号化された値はその後文字コードに変換され、URL エンコードされます (図 7)。ここではクライアントが C2 サーバーへの最初の接続を行っています。

画像 7 は多数のコード行からなるスクリーンショットです。GET、User-Agent,、Host、Cache-Control が赤で強調表示されています。残りの情報は青で強調表示されています。
図 7. BunnyLoader による C2 サーバーへの最初の接続時の HTTP ヘッダーの例

C2 サーバーがクライアントのリクエストを区別できるよう、各クライアントの機能は、特定の User-Agent と固有の URI パラメーター形式を使います。以下の表 1 は、考えられるすべての C2 通信ルーチンの概要を示したもので、使用目的とパラメーターを含めてあります。

HTTP クエリー パラメーターの名前と値は右端の列にリストされており、括弧内の表記は使用法を示しています。ID 列は Unit 42 が参照用に作成したものです。

ID 目的 User Agent HTTP/S URI パラメーター
1 C2 サーバーへの最初の接続を確立します。 Windows Defender ipaddress
hostname
version (BunnyLoader のバージョン)
system (オペレーティング システム)
privileges (Local または Admin)
arch (CPU アーキテクチャ)
antivirus
disk_id (ボット ID)
key (BL オペレーターキー)
enc_key (RC4 キー)
2 50 秒ごとにハートビートを C2 に送信します。 Avast heart (BL オペレーター キー)
hostname
system (オペレーティング システム)
arch (CPU アーキテクチャ)
heart_enc_key (RC4 キー)
3 2 秒ごとにリクエストを送信します。予期される応答は、Windows コマンド ライン経由で実行されるコマンドです。 ESET SECURITY hostname
system
arch
cecho (BL オペレーター キー)
enc_cecho (RC4 キー)
4 前行のコマンド実行後の C2 への応答です。 McAffe val (BL オペレーター キー)
hostname
system
arch
value (コマンドの出力)
va_enc_key (RC4 キー)
5 2 秒ごとにリクエストを送信します。予期される応答は、クライアントによってパースされる、特定の形式をもつコマンドです。 AVG BID (ボット ID)
bid_enc_key (RC4 キー)
6 前行のコマンド実行後の C2 への応答です。 Google Chrome CID (コマンド ID)
bid (ボット ID)
enc_key (RC4 キー)
7 2 秒ごとにリクエストを送信します。予期される応答は、クライアントによってパースされる、特定の形式をもつコマンドです。サービス拒否 (DoS) モジュールのダウンロードに使われます。 Avast DBID (ボット ID)
DBID_enc_key (RC4 キー)
8 前行のコマンド実行後の C2 への応答です。 Google Chrome DCID (コマンド ID)
DBID (ボット ID)
d_enc_key (RC4 キー)

表 1. BunnyLoader C2 の機能と対応する通信

C2 アドレス、C2 パス、BunnyLoader のバージョン、オペレーター ID はすべてバイナリー内にハードコードされています。この関数は、下の図 8 に示すように、RC4 キーも生成します。

画像 8 は、IDA pro の多くのコード行のスクリーンショットです。
図 8. BunnyLoader のクライアント構成用関数を IDA Pro で確認したところ

BunnyLoader バイナリーのモジュール化

BunnyLoader 3.0 の 2 番目の大きな変更は、単一のファイルから、ダウンロード可能なモジュールとして利用できる機能を備えた小さなベース クライアントへと移行したことです。クライアント コードの大部分は前バージョン同様ですが、BunnyLoader のカスタム スティーラー、クリッパー、キーロガー、新しい DoS 機能は個別のバイナリーに分離されました。BunnyLoader のオペレーターは、これらのモジュールを展開するか、BunnyLoader の組み込みコマンドを使って選択したマルウェアをロードするかを選べます。

ターゲット コンピューター上で実行されている場合、BunnyLoader は 2 秒ごとに C2 にチェックインし (表 1 の 5 行目を参照)、特定形式をもつコマンドを待ちます。これらの命令は、ターゲット コンピューター上で追加のマルウェアのダウンロードや実行を容易にするもので、次の形式をもっています。

Task_NameTask_Arg の値がコマンドから抽出されて対応する関数に渡され、これが新しいペイロードをダウンロードして実行する方法をクライアントに指示します。これらのコマンド経由で実行される HTTP ダウンロード リクエストはすべて、User-Agent に ESET NOD32 (ダウンロードはディスクに保存される) またはcurl/1.0 (ファイルレス インジェクション) のいずれかを使い、ダウンロードされたファイルをすべて被害者の %localappdata%\Temp フォルダーに保存します。

クライアントは、表 1 の 6 行目に示す形式を使って、コマンドから抽出されたコマンド ID (CID) 値を含む応答を C2 に送り返します。

以下の表 2 は、C2 がクライアントに送信しうる実行可能タスクをすべてまとめたものです。

タスク名 概要
Download & Inject (Executable) [FileLess] Task_Arg が指定する .exe をダウンロードしてそれを (完全にインメモリーで) notepad.exe にインジェクトする
Download & Inject (DLL) [RTI] Task_Arg が指定する .dll %localappdata%/Temp フォルダーにダウンロードしてそれを calc.exe にインジェクトする
Download & Execute (Executable) Task_Arg が指定する .exe %localappdata%/Temp フォルダーにダウンロードしてそれを CreateProcessA を使って実行する
Download & Execute (DLL) Task_Arg が指定する .dll %localappdata%/Temp フォルダーにダウンロードしてそれを rundll32 を使って実行する
Download & Execute (Batch) Task_Arg が指定する .bat または .cmd スクリプトを %localappdata%/Temp フォルダーにダウンロードしてそれを CreateProcessA を使って実行する
Download & Execute (PowerShell) Task_Arg が指定する .ps1%localappdata%/Temp フォルダーにダウンロードしてそれを powershell -ExecutionPolicy Bypass -File を使って実行する
Download & Execute (VBS) Task_Arg が指定する .vbs%localappdata%/Temp フォルダーにダウンロードしてそれを cscript.exe を使って実行する
Run Stealer バイナリー内にハードコードされたパスから BunnyLoader スティーラー モジュールをダウンロードしてそれを notepad.exe にインジェクトする
Run Keylogger バイナリー内にハードコードされたパスから BunnyLoader キーロガー モジュールをダウンロードして (完全にインメモリーで) notepad.exe にインジェクトする
(以下のいずれか) Bitcoin、Bitcoin Cash、Monero、Ethereum、Litecoin、Dogecoin、 ZCash、Tether、XRP バイナリー内にハードコードされたパスから BunnyLoader クリッパー モジュールをダウンロードして (完全にインメモリーで) notepad.exe にインジェクトする

表 2. BunnyLoader のコマンド

新たな DoS モジュールのダウンロードは別スレッドで処理されますが、これは 2 秒ごとに C2 にチェックインし (表 1 の 7 行目を参照)、特定の形式をもつコマンドを待ち受けます。適切なコマンドを受信すると、クライアントは DoS モジュールをダウンロードして notepad.exe にインジェクトします。

私たちは BunnyLoader 3.0 モジュールのダウンロードには以下の表 3 に示す URL 構造が使われていることを確認しました。複数のサンプルすべてでファイル名と URL 形式は一定でした。

モジュールの URL 目的
http://[C2]/[path]/Modules/eSentire.exe スティーラー モジュール
http://[C2]/[path]/Modules/zScaler.exe DoS モジュール
http://[C2]/[path]/Modules/any_run.exe クリッパー モジュール
http://[C2]/[path]/Modules/NextronSystems.exe キーロガー モジュール

表 3. BunnyLoader 3.0 モジュールの URL

次のセクションは BunnyLoader 3.0 の各モジュールの主な機能を取り上げます。


キーロガー モジュール

BunnyLoader 3.0 のキーロガーはすべてのキーストロークを記録して %localappdata%\Temp フォルダー内のログ ファイルに保存します。またこのキーロガーは、被害者が機微なアプリケーションやサービスに対して認証を行うタイミングを特定しようとします。そのさい、このキーロガーは GetForegroundWindowGetWindowTextA API を使って被害者が標的となるアプリケーションやサービスと対話しているタイミングを識別します。以下の表 4 に示すように、それぞれのキーストロークは個別のハードコードされたファイルに記録されます。

ウィンドウのタイトルまたはアプリケーション名 ログの場所 (ハードコードされている)
CredentialUIBroker.exe

mstsc.exe

%localappdata%\Temp\ADE_RDP.txt
Log in to your PayPal %localappdata%\Temp\ADE_PAYPAL.txt
Nord Account %localappdata%\Temp\ADE_NORD.txt
Sign in - chase.com %localappdata%\Temp\ADE_CHASE.txt
Bank of America - Banking, Credit Cards, Loans %localappdata%\Temp\ADE_BOA.txt
Sign On to View Your Personal Accounts | Wells Fargo %localappdata%\Temp\ADE_WF.txt
Citi.com %localappdata%\Temp\ADE_CITI.txt
ほかのすべてのキーストローク %localappdata%\Temp\ADE_KEY.txt

表 4. BunnyLoader キーロガーのログ ファイルの場所

スティーラー モジュール

BunnyLoader 3.0 スティーラー モジュールは自律的に動作します。これはベース クライアントと同じ http://[C2]/[path]/[PHP API] という形式を使って、認証情報を盗み、C2 サーバーに直接データを漏出させます。

すべての情報窃取機能は、収集されたデータを %localappdata%\Temp\ADE_LOGS フォルダーに保存します。このスティーラーは、キーロガー モジュールからのログをアップロードする役割も担っていて、これらのログを検索し、同じフォルダーにコピーします。

すべてのデータが収集されると、スティーラーは PowerShell を使って ADE_LOGS フォルダーを .zip ファイルに圧縮します。.zip を漏出させる前に、スティーラーは User-Agent として Windows Defender を指定し、窃取データの概要を記載した GET リクエストを C2 に送信します。

HTTP GET リクエストのクエリー パラメーターの概要を以下の表 5 に示します。

HTTP クエリー パラメーター

theft_id ボット ID
ipaddress ターゲットの IP アドレス
system オペレーティング システム
chromium 捕捉されたブラウザーの数
messages 捕捉されたメッセージング サービスの数
wallets 捕捉された暗号通貨ウォレットの数
keystrokes 見つかったキーストローク ログ ファイルの数
games 捕捉されたゲーム プラットフォームの数
vpns 捕捉された VPN サービスの数
files 捕捉されたターゲット ファイルの数 (対象となるファイル拡張子については付録を参照)
extensions 捕捉された Chrome 拡張機能の数
type ZIP のハードコードされた値
size ZIP ファイルのサイズ
link http://[C2]/[path]/Logs/ADE_LOGS_[hostname].zip という形式の文字列
key_code オペレーター ID
enc_key RC4 キー

表 5. BunnyLoader スティーラー モジュールの C2 への最初のリクエストのパラメーター

C2 が適切に応答すると、スティーラー モジュールは .zip ファイルをアップロードします。そのさいは、User-Agent として Uploader を使い、カスタムの Content-Type HTTP ヘッダーを指定します (図 9)。アップロードが完了すると、スティーラーは収集したデータと .zip ファイルを削除します。

画像 9 は、BunnyLoader が漏出させた HTTP トラフィックのスクリーンショットです。コードの多くの行が青と赤で強調表示されています。
図 9. BunnyLoader のスティーラー モジュールによるデータ漏出時の HTTP トラフィック

スティーラー モジュールの標的の全リストは、付録に記載してあります。

クリッパー モジュール

BunnyLoader 3.0 のクリッパー モジュールは、表 1 の行 5 と行 6 で指定された通信ルーチンを使い、C2 に定期的にチェックインします。C2 は、暗号通貨ウォレット名と脅威アクターの管理下にある対応ウォレット アドレスをターゲットに対して送信することによってクリッパーをアクティブにします。

クリッパーは正規表現パターンを使い、ターゲットのクリップボードに目的のウォレットアドレスと一致する内容が含まれているかどうかを識別します。一致するものが見つかった場合は、被害者のアドレスをマルウェア オペレーターのアドレスに置き換えます。以下の表 6 は、対象となるウォレットと、それらを識別するために使われる正規表現の文を示しています。

ウォレット 正規表現
Bitcoin_Legacy ^(bc1|[13])[a-zA-HJ-NP-Z0-9]{25,39}$
Bitcoin_Bech32 ^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$
erc-20 ^T[1-9A-HJ-NP-Za-km-z]{33}$
trc-20 ^0x[0-9a-fA-F]{40}$
Bitcoin Cash ^((bitcoincash:)?(q|p)[a-z0-9]{41})
Monero ^4([0-9]|[A-B])(.){93}
Litecoin ^[LM3][a-km-zA-HJ-NP-Z1-9]{26,33}$
Dogecoin ^[DB][1-9A-HJ-NP-Za-km-z]{26,34}$
ZCash ^t1[a-zA-Z0-9]{33}$
xrp_address r[1-9A-HJ-KM-NP-Za-km-z]{25,34}

表 6 BunnyLoader 3.0 クリッパー モジュールのターゲットとなるウォレットとそれに対応する正規表現のパターン

DoS (サービス拒否) モジュール

BunnyLoader 3.0 の DoS モジュールは、表 1 の行 7 と行 8 で指定された通信ルーチンを使って C2 からのコマンドを待ち受けます。C2 は DoS モジュールに対し、指定された URL への GET または POST による HTTP フラッド攻撃を実行するよう指示することができます。

攻撃の実行にあたり、DoS モジュールは新しいスレッドを生成して無限ループに入り、ターゲット サーバーに対して以下の User-Agent を使って繰り返し GET または POSTED リクエストを送信します。

Mozilla/5.0 (compatible; U; ABrowse 0.6; Syllable) AppleWebKit/420+ (KHTML, like Gecko)

結論

MaaS 情勢のあくなき変化につれ、BunnyLoader も進化し続けています。これは、検出を回避するために攻撃者がいくどもツールの作り直しに迫られている状況を反映しているといえるでしょう。本稿で明らかになった戦術進化や動的性質を、読者の皆さんの防御体制や資産保護の強化へとつなげていただければ幸いです。

保護と緩和策

パロアルトネットワークスのお客様は、以下の製品を通じて、上記の脅威からさらに強力に保護されています。

  • Advanced WildFire:
    • Advanced WildFire は、本稿で参照されているサンプルを悪意のあるものとして認識し、ブロックします。
  • Cortex XDR:
    • Cortex XDR は、本稿で参照されているサンプルを悪意のあるものとして認識し、ブロックします。
  • 次世代ファイアウォール (NGFW):
  • Prisma Cloud:
    • Compute WildFire 統合により、Prisma Cloud の Runtime Compute Defender エージェントは、仮想マシン、サーバーレス、コンテナーなど、クラウド リソース内にある既知の悪意のあるマルウェアを検出、警告、防止できます。
    • Web アプリケーションと API セキュリティ (WAAS) モジュールは、Prisma Cloud Defender エージェントベースのアプリケーションで、Prisma Cloud が悪意のある API およびクラウド Web アプリケーションの HTTP リクエストを検出、警告、防止できるようにします。WAAS モジュールをクラウドベースの Web アプリケーションおよび API エンドポイントに導入することにより、BunnyLoader 3.0 が使う初期侵害イベントを検出・防止できます。

侵害の懸念があり弊社にインシデントレスポンスに関するご相談をなさりたい場合は、こちらのフォームからご連絡いただくか、infojapan@paloaltonetworks.comまでメールにてご連絡いただくか、下記の電話番号までお問い合わせください(ご相談は弊社製品のお客様には限定されません)。

  • 北米フリーダイヤル: 866.486.4842 (866.4.UNIT42)
  • EMEA: +31.20.299.3130
  • APAC: +65.6983.8730
  • 日本: (+81) 50-1790-0200

パロアルトネットワークスは、これらの調査結果を Cyber Threat Alliance (CTA: サイバー脅威アライアンス) のメンバーと共有しました。CTA のメンバーはこのインテリジェンスを使って、お客様に保護を迅速に提供し、悪意のあるサイバー攻撃者を体系的に阻害できます。詳細は Cyber Threat Alliance にてご確認ください。

IoC (侵害指標)

BunnyLoader 用のファイル:

SHA256 説明 初認
3a64f44275b6ff41912654ae1a4af1d9c629f94b8062be441902aeff2d38af3e UPX 圧縮された EXE 2023 年 9 月 9 日
0f425950ceaed6578b2ad22b7baea7d5fe4fd550a97af501bca87d9eb551b825 UPX 圧縮された EXE 2023 年 9 月 9 日
82a3c2fd57ceab60f2944b6fea352c2aab62b79fb34e3ddc804ae2dbc2464eef Themida でパックされた EXE 2023 年 11 月 11 日
2ab21d859f1c3c21a69216c176499c79591da63e1907b0d155f45bb9c6aed4eb PureCrypter EXE 2023 年 11 月 18 日
c006f2f58784671504a1f2e7df8da495759227e64f58657f23efee4f9eb58216 PureCrypter EXE 2023 年 11 月 18 日
52b7cdf5402f77f11ffebc2988fc8cdcd727f51a2f87ce3b88a41fd0fb06a124 PureCrypter EXE 2023 年 11 月 18 日
5f09411395c8803f2a735b71822ad15aa454f47e96fd10acc98da4862524813a PureCrypter EXE 2023 年 11 月 18 日
cc2acf344677e4742b22725ff310492919499e357a95b609e80eaddc2b155b4b PureCrypter EXE 2023 年 11 月 18 日
ebc17dbf5970acb38c35e08560ae7b38c7394f503f227575cd56ba1a4c87c8a4 PureCrypter EXE 2023 年 11 月 18 日
2d39bedba2a6fb48bf56633cc6943edc6fbc86aa15a06c03776f9971a9d2c550 PureCrypter EXE 2023 年 11 月 18 日
2e9d6fb42990126155b8e781f4ba941d54bcc346bcf85b30e3348dde75fbeca1 PureCrypter EXE 2023 年 11 月 18 日
74c56662da67972bf4554ff9b23afc5bdab477ba8d4929e1d7dbc608bdc96994 PureCrypter EXE 2023 年 11 月 18 日
fffdf51cdb54f707db617b29e2178bb54b67f527c866289887a7ada4d26b7563 PureCrypter EXE 2023 年 11 月 18 日
62f041b12b8b4e0debd6e7e4556b4c6ae7066fa17e67900dcbc991dbd6a8443f PureCrypter EXE 2023 年 12 月 16 日
1a5ad9ae7b0dcdc2edb7e93556f2c59c84f113879df380d95835fb8ea3914ed8 (BunnyLoader 3.0 Dropper) .cmd スクリプト 2024 年 2 月 14 日
c80a63350ec791a16d84b759da72e043891b739a04c7c1709af83da00f7fdc3a (BunnyLoader 3.0) 上記 .cmd スクリプトからの EXE ペイロード 2024 年 2 月 14 日

BunnyLoader ネットワーク インジケーター:

ボットID C2 IPアドレス 確認
BotID=880873019 37.139.129[.]145 2023年9月28日
BotID=3565265299 37.139.129[.]145 2023年9月28日
BotID=272148461 37.139.129[.]145 2023年9月28日
BotID=2475708340 37.139.129[.]145 2023年9月28日
BotID=2341255921 37.139.129[.]145 2023年9月28日
BotID=3763204704 185.241.208[.]83 2023年10月
BotID=337525325 185.241.208[.]83 2023年10月
BotID=2098524523 185.241.208[.]83 2023年10月
BotID=774055690 185.241.208[.]83 2023年10月
BotID=3408378377 195.10.205[.]23 2023年11月
BotID=2219025839 195.10.205[.]23 2023年11月
172.105.124[.]34 2023年11月
185.241.208[.]104 2023年11月
BotID=4040267350 134.122.197[.]80 2023年12月
BotID=1662989558 134.122.197[.]80 2023年12月
BotID=3860674539 134.122.197[.]80 2023年12月

YARAルール

追加リソース

付録

以下の付録には、BunnyLoader 3.0 と関連のあるスティーラー モジュールについての追加情報を記載します。

スティーラー モジュール: ターゲットの列挙ログ形式

スティーラー モジュール: ターゲットとなるブラウザー

  • \7Star\7Star\User Data\
  • \CentBrowser\User Data\
  • \Chedot\User Data\
  • \Vivaldi\User Data\
  • \Kometa\User Data\
  • \Elements Browser\User Data\
  • \Epic Privacy Browser\User Data
  • \uCozMedia\Uran\User Data\
  • \Fenrir Inc\Sleipnir5\setting\modules\ChromiumViewer\
  • \CatalinaGroup\Citrio\User Data\
  • \Coowon\Coowon\User Data\
  • \liebao\User Data\
  • \QIP Surf\User Data\
  • \Orbitum\User Data\
  • \Comodo\Dragon\User Data\
  • \Amigo\User\User Data\
  • \Torch\User Data\
  • \Yandex\YandexBrowser\User Data\
  • \Comodo\User Data\
  • \360Browser\Browser\User Data\
  • \Maxthon3\User Data\
  • \K-Melon\User Data\
  • \Google\Chrome\User Data\\Sputnik\Sputnik\User Data\
  • \Nichrome\User Data\
  • \CocCoc\Browser\User Data\
  • \Uran\User Data\
  • \Chromodo\User Data\
  • \Mail.Ru\Atom\User Data\
  • \Microsoft\Edge\User Data\
  • \BraveSoftware\Brave-Browser\User Data\

スティーラー モジュール: ターゲットとなる暗号通貨ウォレット

  • Armory
  • Bytecoint
  • Jaxx
  • Exodus
  • Ethereum
  • Atomic
  • Coinomi
  • ZCash
  • Guarda

スティーラー モジュール: ターゲットとなるファイル拡張子とファイル システムの場所

  • .txt
  • .csv
  • .log
  • .json
  • .xml
  • .html
  • .md
  • .yaml
  • .bat
  • .ps1
  • .doc
  • .docx
  • .odt
  • .pp
  • .pptx
  • .rtf
  • .css
  • .vbs
  • .php
  • .c
  • .cpp
  • .cs
  • .PNG
  • .png
  • .jpeg
  • .jpg
  • .db
  • .sql
  • .rdp
  • .yar
  • .yara
  • (現在のユーザー ディレクトリー)
  • Documents
  • Downloads
  • Music
  • Pictures
  • Videos

スティーラー モジュール: ターゲットとなる VPN、ゲーム、メッセージング プラットフォーム

  • ProtonVPN
  • OpenVPN
  • Tox
  • Signal
  • Element
  • ICQ
  • Skype
  • Discord
  • Minecraft
  • Ubisoft Game Launcher
  • Uplay

スティーラーモジュール: ターゲットとなるウォレット

拡張機能 ID 説明
fhbohimaelbohpjbbldcngcnapndodjp \Chrome Binance
fihkakfobkmkjojpchpfgcmhfjnmnfpi \Chrome Bitapp
aeachknmefphepccionboohckonoeemg \Chrome Coin98
blnieiiffboillknjnepogjhkgnoapac \Chrome Equal
nanjmdknhkinifnkgdcggcfnhdaammmj \Chrome Guild
flpiciilemghbmfalicajoolhkkenfel \Chrome Iconex
afbcbjpbpfadlkmhmclhkeeodmamcflc \Chrome Math
fcckkdbjnoikooededlapcalpionmalo \Chrome Mobox
bfnaelmomeimhlpmgjnjophhpkkoljpa \Chrome Phantom
ibnejdfjmmkpcnlpebklmnkoeoihofec \Chrome Tron
bocpokimicclpaiekenaeelehdjllofo \Chrome XinPay
nphplpgoakhhjchkkhmiggakijnkhfnd \Chrome Ton
nkbihfbeogaeaoehlefnkodbefgpgknn \Chrome Metamask
fhmfendgdocmcbmfikdcogofphimnkno \Chrome Sollet
pocmplpaccanhmnllbbkpgfliimjljgo \Chrome Slope
mfhbebgoclkghebffdldpobeajmbecfk \Chrome Starcoin
cmndjbecilbocjfkibfbifhngkdmjgog \Chrome Swash
cjmkndjhnagcfbpiemnkdpomccnjblmj \Chrome Finnie
dmkamcknogkgcdfhhbddcghachkejeap \Chrome Keplr
pnlfjmlcjdjgkddecgincndfgegkecke \Chrome Cocobit
fhilaheimglignddkjgofkcbgekhenbh \Chrome Oxygen
jbdaocneiiinmjbjlgalhcelgbejmnid \Chrome Nifty
kpfopkelmapcoipemfendmdcghnegimn \Chrome Liquality
klfhbdnlcfcaccoakhceodhldjojboga \Edge Auvitas
dfeccadlilpndjjohbjdblepmjeahlmm \Edge Math
ejbalbakoplchlghecdalmeeeajnimhm \Edge Metamask
oooiblbdpdlecigodndinbpfopomaegl \Edge MTV
aanjhgiamnacdfnlfnmgehjikagdbafd \Edge Rabet
bblmcdckkhkhfhhpfcchlpalebmonecp \Edge Ronin
akoiaibnepcedcplijmiamnaigbepmcb \Edge Yoroi
fbekallmnjoeggkefjkbebpineneilec \Edge Zilpay
ajkhoeiiokighlmdnlakpjfoobnjinie \Edge Terra Station
dmdimapfghaakeibppbfeokhgoikeoci \Edge Jaxx

スティーラー モジュール: クレジット カード

  • BCGLobal
  • Carte Blanche
  • Diners Club
  • Discover
  • Insta Payment
  • Korean Local
  • Laser
  • Maestro
  • Mastercard
  • Switch
  • Union Pay
  • Visa Master

スティーラーモジュール: そのほかのターゲット

  • \AppData\Local\ngrok\ngrok.yml
  • \AppData\Local\ngrok

2024-03-18 11:30 JST 英語版更新日 2024-03-15 15:15 PDT の内容を反映し、概要セクションの「Nanocore」を「PureCrypter」に変更 

2024-04-05 08:40 JST 英語版更新日 2024-04-04 09:04 PDT の YARA ルールの調整を反映