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 XDR、XSIAM、Prisma Cloud によって BunnyLoader からより適切に保護されています。また弊社のお客様は、Advanced WildFire、DNS Security、Advanced URL Filtering などのクラウド配信型セキュリティサービスを有効にした次世代ファイアウォール (NGFW) により、本稿で取り上げた脅威からの保護を受けています。
侵害の懸念があり弊社にインシデントレスポンスに関するご相談をなさりたい場合は、こちらの問い合わせフォームからご連絡いただくか、infojapan@paloaltonetworks.com まで電子メールにてお問い合わせください (ご相談は弊社製品のお客様には限定されません)。
関連する Unit 42 のトピック | MaaS, Cybercrime |
BunnyLoader の誕生
BunnyLoader の開発サイクルは迅速でした。バージョン 1.0 の初認は 2023 年 9 月初めで、これは C/C++ で書かれた MaaS ボットネット兼ローダー マルウェアとしてダークウェブ上で宣伝されており、以下のようなさまざまな機能が備わっていました。
- ファイルレス ロード
- クレデンシャルの窃取
- 暗号通貨の窃取
- クリップボードの窃取
このマルウェアの背後にいる攻撃者は、「Player」または「Player_Bunny」として知られています。 BunnyLoader がどのマルウェアを配信するかは購入者が決定します。このマルウェアの作成者は、ロシアのシステムに対するマルウェアの使用を禁止しています。
ロシア領内またはその周辺に居住するマルウェア作成者は、通常、ロシアをターゲットとするマルウェアの使用を禁止しています。攻撃者は、ロシアの法執行機関のレーダーから逃れるためにこうした制限を設ける場合があります。
2023 年 9 月 4 日には脅威アクター「Player」はさまざまなフォーラムで BunnyLoader バージョン 1.0 の永年アクセスを当初は 250 ドルで提供していました。この広告の例を以下の図 1 に示します。
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)。
既知の BunnyLoader 最初期のサンプルでは、クライアントは http://[url]/Bunny/[PHP endpoint]という標準化されたディレクトリー構造を使って C2 サーバーと通信していました (図 3)。このパターンは、BunnyLoader 3.0 のリリースに至るまでのすべてのサンプルを通じて一貫しています。
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)。
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)。
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 サーバーへの最初の接続を行っています。
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 キーも生成します。
BunnyLoader バイナリーのモジュール化
BunnyLoader 3.0 の 2 番目の大きな変更は、単一のファイルから、ダウンロード可能なモジュールとして利用できる機能を備えた小さなベース クライアントへと移行したことです。クライアント コードの大部分は前バージョン同様ですが、BunnyLoader のカスタム スティーラー、クリッパー、キーロガー、新しい DoS 機能は個別のバイナリーに分離されました。BunnyLoader のオペレーターは、これらのモジュールを展開するか、BunnyLoader の組み込みコマンドを使って選択したマルウェアをロードするかを選べます。
ターゲット コンピューター上で実行されている場合、BunnyLoader は 2 秒ごとに C2 にチェックインし (表 1 の 5 行目を参照)、特定形式をもつコマンドを待ちます。これらの命令は、ターゲット コンピューター上で追加のマルウェアのダウンロードや実行を容易にするもので、次の形式をもっています。
1 |
ID --> [value]; Task_Name --> [value]; Task_Args --> [value]; DLL --> [value] |
Task_Name と Task_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 フォルダー内のログ ファイルに保存します。またこのキーロガーは、被害者が機微なアプリケーションやサービスに対して認証を行うタイミングを特定しようとします。そのさい、このキーロガーは GetForegroundWindow と GetWindowTextA 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 ファイルを削除します。
スティーラー モジュールの標的の全リストは、付録に記載してあります。
クリッパー モジュール
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):
- Advanced URL Filtering と DNS Security は、関連する悪意のある URL と IP アドレスを悪意のあるものとしてブロックします。
- 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ルール
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
rule u42_crime_win_bunnyloader_3 { meta: author = "Unit 42 Threat Intelligence" date = "2024-02-28" description = "Detects Bunnyloader 3.0, a loader with additional capabilities including keylogger, stealer, clipper, and DoS modules." hash1 = "c80a63350ec791a16d84b759da72e043891b739a04c7c1709af83da00f7fdc3a" malware_family = "bunnyloader" strings: $x1 = "Windows Defender" fullword ascii $x2 = "ONLINE" fullword ascii $x3 = "Blacklisted" fullword ascii $x4 = "ESET NOD32" fullword ascii $x5 = "McAffee" fullword ascii $x6 = "SecurityCenter2 path AntiVirusProduct get displayName" fullword ascii $cc1 = "&va_enc_key=" fullword ascii $cc2 = "&value=" fullword ascii $cc3 = "&arch=" fullword ascii $cc4 = "&system=" fullword ascii $cc5 = "&hostname" fullword ascii $cc6 = "&DBID_enc_key=" fullword ascii $cc7 = "/gate.php?DBID=" fullword ascii $cc8 = "/gate.php?DCID=" fullword ascii $cc9 = "(ID|Layer|Windows_Argument)" ascii condition: all of them } |
追加リソース
- BunnyLoader, the Newest Malware as a Service – Zscaler, ThreatLabz
- #Malware #BunnyLoader V2.0 C2 Panel – @0xperator による X (旧 Twitter) への投稿
付録
以下の付録には、BunnyLoader 3.0 と関連のあるスティーラー モジュールについての追加情報を記載します。
スティーラー モジュール: ターゲットの列挙ログ形式
1 2 3 4 5 6 7 8 9 10 11 12 13 |
------------------>BunnyLoader (A.D.E) 3.0<-------------------- A. Architecture --> B. Graphics Processing Unit (GPU) --> C. Central Processing Unit (CPU) → D. Hostname --> E. Disk ID --> F. System --> G. AntiVirus --> H. Country --> I. Public IP --> J. RAM --> K. UserName --> L. Log Date --> |
スティーラー モジュール: ターゲットとなるブラウザー
- \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 ルールの調整を反映