SHADOW-WATER-063のBanana RATの内部: ビルドサーバーから銀行詐欺まで
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
Banana RATは、SHADOW-WATER-063という財政的動機を持つ脅威アクターが使用するバンキングトロイの木馬で、ブラジルの銀行を標的にして資格情報を盗み、詐欺的な取引を行います。このマルウェアは悪意あるバッチファイルを通じて配布され、多層のPowerShell難読化、メモリ内実行、AES-256暗号化を利用して検出を回避します。隠されたスケジュールされたタスクを通じて持続性を維持し、HTTPとTLSを介してコマンド&コントロールサーバーと通信します。このキャンペーンには、ブラジルの即時決済エコシステムを狙ったPix QRコードの傍受機能も含まれています。
調査
Trend Micro MDRアナリストは、サーバーサイドのツールおよびクライアントサイドのペイロードの両方を入手し、FastAPIベースの多形クライプターからPowerShellステージャーおよび最終的なメモリ内C#コンパイルステージまでの完全な攻撃チェーンを再構築しました。彼らの分析により、攻撃者のインフラストラクチャ、難読化ワークフロー、およびスクリーンストリーミング、入力操作、QRコード改ざんを含む一連の機能が明らかになりました。この作戦は、より広範なTetradeバンキングトロイの木馬エコシステムに関連付けられていますが、研究者たちはいくつかのアーキテクチャーの違いを指摘しました。
緩和策
防御者は、ネットワークエッジでマルウェア配信エンドポイントへの初期のHTTP GETリクエストをブロックし、特定の隠されたスケジュールされたタスクの行動を監視し、PowerShellおよび csc.exe の実行に対する厳格なコントロールを施行すべきです。エンドポイントの防御策は、ファイルレスPowerShellアクティビティ、メモリ内DLLのロード、Microsoft Diagnosis ETWなどの欺瞞的なパスでのファイル作成も検出する必要があります。 ProgramDataMicrosoftDiagnosisETW。ユーザーの意識向上トレーニングは、悪意のあるバッチファイルやWhatsAppなどのチャネルを通じて配布されるフィッシングリンクについてもアドレスするべきです。
対応
Banana RATの活動が検出された場合、影響を受けたエンドポイントを即座に隔離し、悪意のあるPowerShellプロセスを終了し、隠されたスケジュールされたタスクを削除し、公開および偽装ディレクトリからドロップされたファイルを削除します。調査員は、PowerShellのコマンドライン全文を収集し、C#コンパイルアーティファクトを保持し、コマンドアンドコントロールドメインに接続されたネットワークトラフィックを確認するべきです。暴露された資格情報はリセットされるべきで、金融チームには詐欺的な銀行活動の兆候を警戒するように警告されます。
"graph TB %% Class definitions classDef technique fill:#99ccff %% Node definitions step_A["<b>技術</b> – <b>T1204.001 ユーザー実行</b>: WhatsAppまたはメール経由で配布された悪意のあるリンクにより、バッチファイルをダウンロードします。"] class step_A technique step_B["<b>技術</b> – <b>T1027.014 難読化されたファイル</b>: バッチファイルは難読化されたPowerShellコードを実行します。"] class step_B technique step_C["<b>技術</b> – <b>T1027.016 雑音コード挿入</b>: 9つのカスタム難読化レイヤー、変数名の変更、XOR、AES。"] class step_C technique step_D["<b>技術</b> – <b>T1036.008 偽装</b>: Microsoft ETWパスを模倣して、パブリックドキュメントにmsedge.txtをドロップします。"] class step_D technique step_E["<b>技術</b> – <b>T1564.005 アーティファクトの隠蔽</b>: 正当なファイルと混ぜるためProgramData Microsoft Diagnosis ETWに悪意のあるファイルを書き込みます。"] class step_E technique step_F["<b>技術</b> – <b>T1620 リフレクティブコードローディング</b>: csc.exeを使用して、メモリ内でC# DLLをコンパイルします。"] class step_F technique step_G["<b>技術</b> – <b>T1134.001 トークン偽装</b>: SYSTEMトークンを複製し、対話型セッションでPowerShellを発生させます。"] class step_G technique step_H["<b>技術</b> – <b>T1134.002 トークンでプロセスを作成</b>: 複製されたトークンでプロセスを生成します。"] class step_H technique step_I["<b>技術</b> – <b>T1571 非標準ポート</b>: カスタムAES-256-CBCプロトコルを使用したHTTPSポート443によるC2通信。"] class step_I technique step_J["<b>技術</b> – <b>T1048.002 代替プロトコルによる流出</b>: 非対称に暗号化された非C2プロトコルを使用した暗号化データの流出。"] class step_J technique step_K["<b>技術</b> – <b>T1140 合成とデコードの解除</b>: PowerShellは、メモリ内のAESでラップされたペイロードを復号します。"] class step_K technique step_L["<b>技術</b> – <b>T1659 コンテンツ注入</b>: PowerShellはNet.WebClientまたはStart-BitsTransferを使用して、攻撃者のWebサーバーからペイロードを取得します。"] class step_L technique step_M["<b>技術</b> – <b>T1566 フィッシング</b>: WhatsApp/メール経由で配布された悪意のあるリンクにより、バッチファイルをダウンロードします。"] class step_M technique %% Connections step_A –>|leads_to| step_B step_B –>|leads_to| step_C step_C –>|leads_to| step_D step_D –>|leads_to| step_E step_E –>|leads_to| step_F step_F –>|leads_to| step_G step_G –>|leads_to| step_H step_H –>|leads_to| step_I step_I –>|leads_to| step_J step_J –>|leads_to| step_K step_K –>|leads_to| step_L step_L –>|leads_to| step_M "
攻撃フロー
検出
疑わしいスケジュールされたタスク(監査を通じて)
表示
Powershellからの疑わしい.NETメソッド呼び出し(powershellを通じて)
表示
隠れたPowerShellコマンドラインを通じた実行の可能性(cmdlineを通じて)
表示
疑わしいPowershell文字列(powershellを通じて)
表示
Powershellからの疑わしいWindows API関数呼び出し(powershellを通じて)
表示
公開ユーザープロファイルの疑わしいファイル(file_eventを通じて)
表示
公開ユーザープロファイルの疑わしいファイル(file_eventを通じて)
表示
検索するIOC(HashSha256): SHADOW-WATER-063内部のBanana RAT: ビルドサーバーからバンキング詐欺まで
表示
検索するIOC(SourceIP): SHADOW-WATER-063内のBanana RAT: ビルドサーバーからバンキング詐欺まで
表示
検索するIOC(DestinationIP): SHADOW-WATER-063内のBanana RAT: ビルドサーバーからバンキング詐欺まで
表示
SHADOW-WATER-063のC2通信の検出 [Windowsネットワーク接続]
表示
Banana RATの初期アクセスと実行の検出 [Windows Powershell]
表示
シミュレーションの実行
前提条件: テレメトリーとベースラインの事前チェックがクリアしている必要があります。
論理: このセクションは、検出ルールをトリガーするために設計された敵の技術(C2通信)の正確な実行を詳述します。コマンドとナラティブはTTPsを直接反映し、検出ロジックによって期待される正確なテレメトリーを生成することを目的としています。
-
攻撃の経緯とコマンド:
脅威アクターは被害者のエンドポイントにBanana RATを展開しました。持続性を維持し、コマンドを受信するために、RATはハードコードされたC2インフラストラクチャへ外向きの通信を開始します:- HTTPビーコン (IP 24.199.90.58:80): 生のTCPソケットを開き、最小限のHTTP GETリクエストを送信します。
- HTTPSビーコン (IP 162.141.111.227:443): C2サーバーに
Invoke-WebRequestをTLSで使用します。 - ドメインベースのビーコン: DNS検索を実行します
c.windowsk-cdn.com、これはC2がクエリボリュームを監視します。
これら三つのアクションは、Sigmaルールで少なくとも1つの選択に命中する可能性を最大化するために連続して実行されます。
-
回帰テストのスクリプト:
# ------------------------------------------------- # Banana RAT C2 Communication Simulation (TC-20260522-A1B2C) # ------------------------------------------------- # 1. HTTPビーコンを24.199.90.58:80に送信 try { $httpClient = New-Object System.Net.Sockets.TcpClient("24.199.90.58",80) $stream = $httpClient.GetStream() $writer = New-Object System.IO.StreamWriter($stream) $writer.WriteLine("GET / HTTP/1.1") $writer.WriteLine("Host: 24.199.90.58") $writer.WriteLine("Connection: Close") $writer.WriteLine() $writer.Flush() $reader = New-Object System.IO.StreamReader($stream) $response = $reader.ReadToEnd() $writer.Dispose() $reader.Dispose() $httpClient.Close() } catch { Write-Error "HTTPビーコン失敗: $_" } # 2. HTTPSビーコンを162.141.111.227:443に送信 try { Invoke-WebRequest -Uri "https://162.141.111.227" -UseBasicParsing -TimeoutSec 10 } catch { Write-Error "HTTPSビーコン失敗: $_" } # 3. 悪意のあるドメインのDNSクエリ try { Resolve-DnsName -Name "c.windowsk-cdn.com" -Type A -ErrorAction Stop } catch { Write-Error "DNSクエリ失敗: $_" } # シミュレーション終了 -
クリーンアップコマンド:
# ------------------------------------------------- # クリーンアップ - 残っているソケットまたは一時ファイルを削除 # ------------------------------------------------- # シミュレーションで永続的なアーティファクトは作成されません。 # 残っているネットワーク接続がないことを確認: Get-NetTCPConnection -RemotePort 80,443 ` | Where-Object {$_.RemoteAddress -in @("24.199.90.58","162.141.111.227")} ` | ForEach-Object { Stop-Process -Id $_.OwningProcess -Force } # DNSキャッシュをクリアして、後続のテストへの影響を避けます Clear-DnsClientCache