Microsoft TeamsとGoogle Driveを介して配信されるNimbus RAT
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
脅威アクターは、Microsoft Teamsの音声フィッシングとQuick Assistを使用して、Nimbus RATとして知られるJavaベースのリモートアクセス型トロイの木馬を展開しました。このマルウェアは、コマンドアンドコントロールチャンネルとしてGoogle DriveとGoogle Sheetsを利用し、独自のOpenJDKランタイムを同梱しています。資格情報を盗むために、偽のWindowsセキュリティプロンプトまたはネイティブのCredUI APIを使用してユーザーシークレットをキャプチャします。
調査
eSentireの脅威対策ユニットは、メールフローログ、エンドポイントのテレメトリ、およびJavaマルウェアの静的分析を使用して、完全な侵入チェーンを再構築しました。このキャンペーンは、メール爆撃、Teamsベースのフィッシング通話、Quick Assistリモートサポート、Pastebinにホストされた指示シート、およびペイロードを配布するための侵害されたSharePointテナントを組み合わせました。
緩和策
推奨される防御策には、未知のテナントからの外部Teamsメッセージの無効化、必要ない場所でのQuick Assistのブロック、メール爆撃活動の急増に対する警告の設定、監視が含まれます javaw.exe 異常な場所からの実行、予期しないプロセスによって開始された疑わしいGoogle Drive API呼び出しの検出。
対応
Nimbus RATの活動が検出された場合、影響を受けたシステムを隔離し、関連するすべての javaw.exe プロセスを終了し、 C:ProgramDataInboxCorePro ディレクトリと関連するスタートアップショートカットを削除し、システム全体の再イメージを検討します。Google Workspaceの監査ログも確認し、不正なGoogle Driveアプリケーション権限の取得を特定します。
graph TB %% クラス定義 classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccccff classDef data fill:#e6e6e6 %% ノード – アクション action_phishing[“<b>アクション</b> – <b>T1566.003 フィッシング: サービス経由のスピアフィッシング</b><br/>メール爆撃によりサブスクリプション確認メッセージを送信し、後のMicrosoft Teamsによるビッシング通話の準備を行う”] class action_phishing action action_trusted_rel[“<b>アクション</b> – <b>T1199 信頼関係の悪用</b><br/>攻撃者は使い捨てのMicrosoft 365テナントを作成、または正規テナントを侵害し、信頼される外部Teamsメッセージを送信する”] class action_trusted_rel action action_user_exec_file[“<b>アクション</b> – <b>T1204.002 ユーザー実行: 悪意あるファイル</b><br/>被害者はPastebin経由で指示され、侵害されたSharePointからZIPをダウンロードし、javaw.exeでJARファイルを実行する”] class action_user_exec_file action action_user_exec_copy[“<b>アクション</b> – <b>T1204.004 ユーザー実行: コピー&ペースト悪用</b><br/>攻撃者はPastebin URLをTeamsチャットに貼り付け、ユーザーを悪意あるサイトへ誘導する”] class action_user_exec_copy action action_persistence[“<b>アクション</b> – <b>T1547.001 ブートまたはログオン時の自動実行</b><br/>.regファイルのインポートとスタートアップフォルダのショートカット作成によりJava RATの永続化を確立する”] class action_persistence action action_credential_harvest[“<b>アクション</b> – <b>T1056.002 入力情報の取得: GUI入力キャプチャ</b><br/>Nimbus RATは偽のJava Swing認証ダイアログとWindows CredUIプロンプトを表示し資格情報を窃取する”] class action_credential_harvest action action_c2[“<b>アクション</b> – <b>T1102.002 Webサービス: 双方向通信</b><br/>Google DriveをC2として使用し、サービスアカウントまたはOAuth2認証で暗号化ポーリングファイルを利用する”] class action_c2 action action_exfil[“<b>アクション</b> – <b>T1567.002 Webサービス経由のデータ流出</b><br/>スクリーンショットやファイルなどの収集データを同じGoogle Driveフォルダへアップロードする”] class action_exfil action action_network_disc[“<b>アクション</b> – <b>T1016 システムネットワーク構成の探索</b><br/>RATは ipconfig /all などのコマンドを実行しネットワーク情報を収集する”] class action_network_disc action %% ツール / マルウェア / プロセス tool_email_bomb[“<b>ツール</b> – 名称: メールボムスクリプト”] class tool_email_bomb tool tool_teams[“<b>ツール</b> – 名称: Microsoft Teams(ビッシング)”] class tool_teams tool tool_sharepoint[“<b>ツール</b> – 名称: 侵害されたSharePointサイト”] class tool_sharepoint tool malware_nimbus[“<b>マルウェア</b> – 名称: Nimbus RAT (Java)”] class malware_nimbus malware file_jar[“<b>ファイル</b> – 名称: InboxCorePro.jar(Javaペイロード)”] class file_jar data process_javaw[“<b>プロセス</b> – 名称: javaw.exe(JAR実行)”] class process_javaw process file_reg[“<b>ファイル</b> – 名称: レジストリインポート .reg”] class file_reg data file_startup[“<b>ファイル</b> – 名称: スタートアップフォルダのショートカット”] class file_startup data service_gdrive[“<b>サービス</b> – 名称: Google Drive(C2および流出)”] class service_gdrive data process_ipconfig[“<b>プロセス</b> – コマンド: ipconfig /all”] class process_ipconfig process %% 接続 action_phishing –>|使用| tool_email_bomb action_phishing –>|につながる| action_trusted_rel action_trusted_rel –>|使用| tool_teams action_trusted_rel –>|送信| action_user_exec_copy action_user_exec_copy –>|リンク提供| action_user_exec_file action_user_exec_file –>|ダウンロード元| tool_sharepoint action_user_exec_file –>|実行| file_jar file_jar –>|実行プロセス| process_javaw process_javaw –>|起動| malware_nimbus malware_nimbus –>|作成| action_persistence action_persistence –>|インポート| file_reg action_persistence –>|配置| file_startup malware_nimbus –>|取得| action_credential_harvest malware_nimbus –>|通信| service_gdrive service_gdrive –>|C2支援| action_c2 service_gdrive –>|流出支援| action_exfil malware_nimbus –>|実行| action_network_disc action_network_disc –>|コマンド実行| process_ipconfig
攻撃フロー
検出
疑わしい場所からのJavaアプリの実行(via process_creation)
ビュー
自動起動場所の疑わしいバイナリ/スクリプト(via file_event)
ビュー
既知の誤用されたプロセスによって解決された可能性のあるGoogleApisドメイン(via dns_query)
ビュー
可能なGoogleコマンドアンドコントロールユーティリティ活動(via proxy)
ビュー
検出するためのIOCs(HashSha256): Nimbus RAT: 脅威アクターがMicrosoft TeamsとGoogle Driveを悪用してJava RATをデプロイする方法
ビュー
Google APIsとPastebinの疑わしい使用の検出 [Proxy]
ビュー
javaw.exeおよび偵察コマンドによるNimbus RATの実行の検出 [Windows Process Creation]
ビュー
フィッシング攻撃におけるQuick Assistとregedit.exeの実行 [Microsoft Windows Security Event Log]
ビュー
シミュレーション実行
前提条件: テレメトリとベースラインの事前チェックが合格する必要があります。
理由: このセクションは、検出ルールをトリガーするために設計された敵対的技術(TTP)の正確な実行の詳細を示します。コマンドとナラティブは、特定されたTTPを直接反映する必要があり、検出ロジックによって期待される正確なテレメトリを生成することを目的としています。
-
攻撃のナラティブとコマンド:
脅威アクターはすでにNimbus RATバイナリでエンドポイントを侵害しています。隠れたC2チャネルを確立するために、RATは2つのアウトバウンドHTTP POSTリクエストを発行します:- Google Drive API呼び出し – 小さいJSONペイロードをにアップロードします
https://www.googleapis.com/drive/v3/files?uploadType=media, RATの“ペイロードダウンロード”動作を模擬します。 - Pastebinペースト – base-64エンコードされたコマンド文字列をに投稿します
https://pastebin.com/api/api_post.php、公共のAPIキーを使用して。
両方のリクエストは、PowerShellの
Invoke-WebRequestを通じて実行され、ファイアウォールログにドメインフィールド(googleapis.comandpastebin.com)が含まれるようにします。攻撃者は、通常の活動に溶け込むために、侵害されたユーザーのコンテキストで命令を実行します。 - Google Drive API呼び出し – 小さいJSONペイロードをにアップロードします
-
リグレッションテストスクリプト:
# -------------------------------------------------------------- # Nimbus RAT C2シミュレーション–ドメイン一致でSigmaルールをトリガー # -------------------------------------------------------------- # 1. Google Drive APIモックアップロード(認証なし–ドメインテレメトリにフォーカス) $googlePayload = @{ name = "dummy.txt"; mimeType = "text/plain" } | ConvertTo-Json $googleUri = "https://www.googleapis.com/drive/v3/files?uploadType=media" try { Invoke-WebRequest -Uri $googleUri -Method POST -Body $googlePayload ` -ContentType "application/json" -UseBasicParsing -ErrorAction Stop Write-Host "[+] Google Drive APIへのモックアップロードを送信しました" } catch { Write-Warning "Google Driveリクエストが失敗しました(サンドボックスで予期される):$_" } # 2. Pastebin公開API投稿(開発者キーが必要–プレースホルダーを使用) $pastebinKey = "YOUR_PUBLIC_API_KEY" # <-- 有効なキーで置換して実際のテストを行います $pastebinText = "echo 'C2からのシミュレートされたコマンド'" $pastebinUri = "https://pastebin.com/api/api_post.php" $pastebinBody = @{ api_dev_key = $pastebinKey api_option = "paste" api_paste_code = $pastebinText api_paste_private = "1" } try { Invoke-WebRequest -Uri $pastebinUri -Method POST -Body $pastebinBody ` -ContentType "application/x-www-form-urlencoded" -UseBasicParsing -ErrorAction Stop Write-Host "[+] Pastebinにモックコマンドを投稿しました" } catch { Write-Warning "Pastebinリクエストが失敗しました(サンドボックスで予期される):$_" } # -------------------------------------------------------------- # シミュレーションの終了 # -------------------------------------------------------------- -
クリーンアップコマンド:
# シミュレーション中に使用された一時ファイルや変数を削除します Remove-Variable -Name googlePayload, googleUri, pastebinKey, pastebinText, pastebinUri, pastebinBody -ErrorAction SilentlyContinue Write-Host "[*] クリーンアップ完了。"