SOC Prime Bias: クリティカル

30 1月 2026 19:58

APT攻撃がインド政府をターゲットにSHEETCREEP、FIREPOWER、MAILCREEPを使用 | 第2部

Author Photo
Ruslan Mikhalov SOC Primeの脅威リサーチ責任者 linkedin icon フォローする
APT攻撃がインド政府をターゲットにSHEETCREEP、FIREPOWER、MAILCREEPを使用 | 第2部
shield icon

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を介したダウンロードまたはアップロード(コマンドライン経由)

SOC Primeチーム
2026年1月29日

Microsoft Graph APIドメインが異常なプロセスで解決されました(dns_query経由)

SOC Primeチーム
2026年1月29日

パブリックユーザープロファイル内の疑わしいファイル(file_event経由)

SOC Primeチーム
2026年1月29日

疑わしいGNU Wget実行試行(コマンドライン経由)

SOC Primeチーム
2026年1月29日

Powershellから疑わしい.NETメソッドを呼び出す(powershell経由)

SOC Primeチーム
2026年1月29日

パブリックユーザープロファイルからの疑わしい実行(process_creation経由)

SOC Primeチーム
2026年1月29日

サードパーティサービス/ツールを通じたデータの可能性のある浸透/流出/C2(dns経由)

SOC Primeチーム
2026年1月29日

アーカイブから抽出された疑わしいファイル(file_event経由)

SOC Primeチーム
2026年1月29日

IOC(SourceIP)を検出する:AAPT攻撃は、インド政府をターゲットにしてSHEETCREEP、FIREPOWER、MAILCREEPを使用 | パート2

SOC Prime AIルール
2026年1月29日

IOC(HashMd5)を検出する: AAPT攻撃は、インド政府をターゲットにしてSHEETCREEP、FIREPOWER、MAILCREEPを使用 | パート2

SOC Prime AIルール
2026年1月29日

IOC(DestinationIP)を検出する:AAPT攻撃は、インド政府をターゲットにしてSHEETCREEP、FIREPOWER、MAILCREEPを使用 | パート2

SOC Prime AIルール
2026年1月29日

IOC(HashSha1)を検出する:AAPT攻撃は、インド政府をターゲットにしてSHEETCREEP、FIREPOWER、MAILCREEPを使用 | パート2

SOC Prime AIルール
2026年1月29日

IOC(HashSha256)を検出する:AAPT攻撃は、インド政府をターゲットにしてSHEETCREEP、FIREPOWER、MAILCREEPを使用 | パート2

SOC Prime AIルール
2026年1月29日

SHEETCREEPおよびFIREPOWERバックドア展開用のPowerShellコマンドの検出 [Windows Powershell]

SOC Prime AIルール
2026年1月29日

SHEETCREEPおよびFIREPOWERバックドアC2通信の検出 [Windowsネットワーク接続]

SOC Prime AIルール
2026年1月29日

シミュレーション実行

前提条件: テレメトリー&ベースラインプリフライトチェックが合格している必要があります。

説明: このセクションでは、検出ルールをトリガーするよう設計された敵対者技術(TTP)の正確な実行を詳細に述べています。コマンドと説明は、特定されたTTPを直接反映し、検出ロジックによって期待されるテレメトリーの生成を目的としなければなりません。抽象的または関連のない例は誤診の原因となります。

  • 攻撃の説明とコマンド:

    1. 悪意のあるPNGをステージング:
      • 攻撃者はPNGファイルを作成します(details.png)、実際にはコンパイルされた.NETアセンブリのバイトストリームを含んでいますが、そのバイトが静的解析を回避するために逆になっています。
    2. アセンブリをロードするために隠しモードでPowerShellを起動:
      • 攻撃者はPowerShellを -WindowStyle Hidden -Command および一行のコマンドで逆になったバイトを読み込み、正しい順序に復元し、アセンブリを介して [System.Reflection.Assembly]::Load()をロードし、既知のエントリポイントを呼び出します(Task10.Program::MB()).
    3. LNKベースのfire-power展開の代替手段:
      • 作成された .lnk ショートカットは、 powershell.exe を実行します --headless -e (エンコードされたスクリプト) を使用して、リモートPowerShellバックドアをフェッチして実行します。

    これらのステップは、Sigmaルールが探している文字列と完全に一致し、警報が発火します。

  • 回帰テストスクリプト:

    # -------------------------------------------------
    # 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
    }