APT攻撃がインド政府をターゲットにSHEETCREEP、FIREPOWER、MAILCREEPを使用 | 第2部
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
このレポートは、インド政府機関を侵害するために、3つの特注のバックドア—SHEETCREEP、FIREPOWER、およびMAILCREEP—を展開したSheet Attack作戦をカバーしています。これらのインプラントは、Google Sheets、Firebase Realtime Database、Microsoft Graph APIなど、指揮・制御のために合法的なクラウドプラットフォームを利用しており、通常のSaaSトラフィックに溶け込むのを助けています。また、開発者がコード生成を支援するために生成AIを使用していると一致するアーティファクトも指摘しています。このキャンペーンは、APT36のパキスタンを拠点とするサブグループに関連していると判断されています。
調査
ThreatLabzは、バックドアの動的および静的な分析を行い、持続性の方法、C2ワークフロー、データ抽出行動を文書化しました。また、サポートインフラストラクチャをマッピングし、地理的およびユーザーエージェントに基づくフィルタリングを観察し、AI支援のソース生成を示唆するコードレベルのインジケータをキャプチャしました。
緩和策
疑わしいPDF/LNK配信チェーンのために多層の検出を実施し、PowerShellやVBSの実行を開始するスケジュールされたタスクを監視します。通常C2として悪用されるクラウドサービス、Google Sheets、Firebase、Microsoft Graphの異常監視と厳格なアウトバウンド制御を適用します。既知のペイロードのハッシュベースのブロッキングを使用し、特定された悪意のあるドメインとIPアドレスをブロックします。
対応
検出された場合は、エンドポイントを隔離し、隠しcmd.exeおよびPowerShell活動を終了し、関連するスケジュールされたタスクを削除し、バックドアバイナリを削除します。Google SheetsベースのC2ログおよびFirebaseアーティファクトを保存してレビューし、同じインジケータを示す追加のホストを環境全体で捜索します。
graph TB %% Class definitions classDef action fill:#99ccff classDef process fill:#ffdd99 classDef file fill:#ffcccc classDef data fill:#e6e6ff classDef protocol fill:#d9ead3 classDef technique fill:#ffd966 %% Nodes – Initial Access action_phishing[“<b>アクション</b> – <b>T1204.001 ユーザー実行:悪意のあるリンク</b><br/>被害者がPDF内の悪意あるリンクをクリックする”] class action_phishing action file_phishing_pdf[“<b>ファイル</b> – <b>名前</b>:フィッシングPDF<br/><b>技術</b>:T1204.001”] class file_phishing_pdf file file_malicious_lnk[“<b>ファイル</b> – <b>名前</b>:悪意のあるLNK<br/><b>技術</b>:T1204.002 ユーザー実行:悪意のあるファイル”] class file_malicious_lnk file process_powershell[“<b>プロセス</b> – <b>名前</b>:PowerShell<br/><b>技術</b>:T1059.001 コマンドおよびスクリプトインタープリタ”] class process_powershell process file_dotnet_assembly[“<b>ファイル</b> – <b>名前</b>:PNGに偽装された.NETアセンブリ<br/><b>技術</b>:T1620 リフレクティブコードロード、T1036.008 ファイルタイプの偽装”] class file_dotnet_assembly file process_hidden_cmd[“<b>プロセス</b> – <b>名前</b>:非表示のcmd.exe<br/><b>技術</b>:T1059.003 コマンドシェル”] class process_hidden_cmd process %% Nodes – Persistence action_persistence[“<b>アクション</b> – 永続化の設定”] class action_persistence action task_scheduled[“<b>技術</b> – T1053 スケジュールタスク”] class task_scheduled technique script_gservices[“<b>ファイル</b> – <b>名前</b>:GServices.vbs<br/><b>目的</b>:繰り返し実行”] class script_gservices file %% Nodes – Command and Control action_c2[“<b>アクション</b> – コマンド&コントロール”] class action_c2 action data_google_sheets[“<b>データストア</b> – Google Sheets<br/><b>技術</b>:T1102.002 Webサービス:スプレッドシート”] class data_google_sheets data protocol_https[“<b>プロトコル</b> – HTTPS<br/><b>技術</b>:T1071.001 Webプロトコル”] class protocol_https protocol technique_dead_drop[“<b>技術</b> – T1102.001 デッドドロップリゾルバ”] class technique_dead_drop technique backup_firebase[“<b>データストア</b> – Firebase URL<br/><b>フォールバック</b>:C2チャネル”] class backup_firebase data backup_gcs[“<b>データストア</b> – Google Cloud Storage<br/><b>フォールバック</b>:C2チャネル”] class backup_gcs data encryption_tripledes[“<b>技術</b> – T1027 難読化/暗号化されたファイルまたは情報(TripleDES)”] class encryption_tripledes technique encryption_channel[“<b>技術</b> – T1573 暗号化チャネル”] class encryption_channel technique %% Nodes – Discovery action_discovery[“<b>アクション</b> – 情報収集”] class action_discovery action command_whoami[“<b>コマンド</b> – whoami<br/><b>技術</b>:T1033 システム所有者/ユーザー検出”] class command_whoami technique command_enum_domains[“<b>コマンド</b> – ドメインアカウントの列挙<br/><b>技術</b>:T1087.002 ドメインアカウント”] class command_enum_domains technique %% Nodes – Execution of Commands action_execution[“<b>アクション</b> – 受信したコマンドを実行”] class action_execution action %% Nodes – Cloud Account Creation cloud_account_creation[“<b>アクション</b> – Google Cloudアカウントの作成<br/><b>技術</b>:T1136.003 クラウドアカウント”] class cloud_account_creation action %% Nodes – Defense Evasion action_defense_evasion[“<b>アクション</b> – 防御回避”] class action_defense_evasion action technique_hidden_fs[“<b>技術</b> – T1564.005 隠しファイルおよびディレクトリ”] class technique_hidden_fs technique %% Connections – Flow action_phishing –>|配信| file_phishing_pdf file_phishing_pdf –>|リンクを含む| file_malicious_lnk file_malicious_lnk –>|実行| process_powershell process_powershell –>|リフレクションでロード| file_dotnet_assembly file_dotnet_assembly –>|生成| process_hidden_cmd process_hidden_cmd –>|有効化| action_persistence action_persistence –>|作成| task_scheduled action_persistence –>|実行| script_gservices action_persistence –>|通信| action_c2 action_c2 –>|使用| data_google_sheets data_google_sheets –>|経由| protocol_https action_c2 –>|使用| technique_dead_drop action_c2 –>|フォールバック| backup_firebase action_c2 –>|フォールバック| backup_gcs action_c2 –>|暗号化| encryption_tripledes action_c2 –>|確立| encryption_channel action_c2 –>|指示| action_discovery action_discovery –>|実行| command_whoami action_discovery –>|実行| command_enum_domains action_c2 –>|コマンド送信| action_execution action_execution –>|PowerShellで実行| process_powershell action_execution –>|非表示cmdで実行| process_hidden_cmd action_c2 –>|必要| cloud_account_creation cloud_account_creation –>|基盤提供| data_google_sheets cloud_account_creation –>|基盤提供| backup_firebase cloud_account_creation –>|基盤提供| backup_gcs action_execution –>|使用| action_defense_evasion action_defense_evasion –>|適用| technique_hidden_fs
攻撃フロー
検出
Powershellを介したダウンロードまたはアップロード(コマンドライン経由)
表示
Microsoft Graph APIドメインが異常なプロセスで解決されました(dns_query経由)
表示
パブリックユーザープロファイル内の疑わしいファイル(file_event経由)
表示
疑わしいGNU Wget実行試行(コマンドライン経由)
表示
Powershellから疑わしい.NETメソッドを呼び出す(powershell経由)
表示
パブリックユーザープロファイルからの疑わしい実行(process_creation経由)
表示
サードパーティサービス/ツールを通じたデータの可能性のある浸透/流出/C2(dns経由)
表示
アーカイブから抽出された疑わしいファイル(file_event経由)
表示
IOC(SourceIP)を検出する:AAPT攻撃は、インド政府をターゲットにしてSHEETCREEP、FIREPOWER、MAILCREEPを使用 | パート2
表示
IOC(HashMd5)を検出する: AAPT攻撃は、インド政府をターゲットにしてSHEETCREEP、FIREPOWER、MAILCREEPを使用 | パート2
表示
IOC(DestinationIP)を検出する:AAPT攻撃は、インド政府をターゲットにしてSHEETCREEP、FIREPOWER、MAILCREEPを使用 | パート2
表示
IOC(HashSha1)を検出する:AAPT攻撃は、インド政府をターゲットにしてSHEETCREEP、FIREPOWER、MAILCREEPを使用 | パート2
表示
IOC(HashSha256)を検出する:AAPT攻撃は、インド政府をターゲットにしてSHEETCREEP、FIREPOWER、MAILCREEPを使用 | パート2
表示
SHEETCREEPおよびFIREPOWERバックドア展開用のPowerShellコマンドの検出 [Windows Powershell]
表示
SHEETCREEPおよびFIREPOWERバックドアC2通信の検出 [Windowsネットワーク接続]
表示
シミュレーション実行
前提条件: テレメトリー&ベースラインプリフライトチェックが合格している必要があります。
説明: このセクションでは、検出ルールをトリガーするよう設計された敵対者技術(TTP)の正確な実行を詳細に述べています。コマンドと説明は、特定されたTTPを直接反映し、検出ロジックによって期待されるテレメトリーの生成を目的としなければなりません。抽象的または関連のない例は誤診の原因となります。
-
攻撃の説明とコマンド:
- 悪意のあるPNGをステージング:
- 攻撃者はPNGファイルを作成します(
details.png)、実際にはコンパイルされた.NETアセンブリのバイトストリームを含んでいますが、そのバイトが静的解析を回避するために逆になっています。
- 攻撃者はPNGファイルを作成します(
- アセンブリをロードするために隠しモードでPowerShellを起動:
- 攻撃者はPowerShellを
-WindowStyle Hidden -Commandおよび一行のコマンドで逆になったバイトを読み込み、正しい順序に復元し、アセンブリを介して[System.Reflection.Assembly]::Load()をロードし、既知のエントリポイントを呼び出します(Task10.Program::MB()).
- 攻撃者はPowerShellを
- LNKベースのfire-power展開の代替手段:
- 作成された
.lnkショートカットは、powershell.exeを実行します--headless -e(エンコードされたスクリプト) を使用して、リモートPowerShellバックドアをフェッチして実行します。
- 作成された
これらのステップは、Sigmaルールが探している文字列と完全に一致し、警報が発火します。
- 悪意のあるPNGをステージング:
-
回帰テストスクリプト:
# ------------------------------------------------- # SHEETCREEPのペイロードシミュレーション – 正確なコマンドラインを再現 # ------------------------------------------------- # 1. ダミーの.NETアセンブリを作成(シンプルなC#のハローワールド)してコンパイルします $source = @" using System; public class Task10 { public static void MB() { Console.WriteLine("Payload executed"); } } "@ $tempDir = "$env:TEMPsheetcreep" New-Item -ItemType Directory -Force -Path $tempDir | Out-Null $csFile = Join-Path $tempDir "Task10.cs" $dllFile = Join-Path $tempDir "Task10.dll" $source | Set-Content -Path $csFile -Encoding UTF8 # .NET Framework SDKがインストールされていると仮定して、cscを使用してコンパイルします $cscPath = "$env:WINDIRMicrosoft.NETFramework64v4.0.30319csc.exe" & $cscPath /target:library /out:$dllFile $csFile # 2. DLLバイトを読み取り、逆にして.pngファイルに書き込みます $bytes = [IO.File]::ReadAllBytes($dllFile) $revBytes = $bytes[($bytes.Length-1)..0] $pngPath = Join-Path $tempDir "details.png" [IO.File]::WriteAllBytes($pngPath, $revBytes) # 3. 正確な悪意のあるPowerShellコマンドラインを実行します(これによりルールが発火します) $maliciousCmd = '-WindowStyle Hidden -Command "$b=[IO.File]::ReadAllBytes(''details.png'');' + '([System.Reflection.Assembly]::Load([byte[]]($b[($b.Length-1)..0])).GetType("Task10.Program")::MB())"' Start-Process -FilePath "$env:SystemRootSystem32WindowsPowerShellv1.0powershell.exe" ` -ArgumentList $maliciousCmd ` -WindowStyle Hidden ` -NoNewWindow # 検証後のクリーンアップ(オプション) # Remove-Item -Recurse -Force $tempDir -
クリーンアップコマンド:
# テスト用に作成された一時ファイルとディレクトリを削除 $tempDir = "$env:TEMPsheetcreep" if (Test-Path $tempDir) { Remove-Item -Recurse -Force $tempDir }