SOC Prime Bias: クリティカル

30 Jan 2026 16:58 UTC

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

Author Photo
Ruslan Mikhalov Chief of Threat Research at 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アーティファクトを保存してレビューし、同じインジケータを示す追加のホストを環境全体で捜索します。

攻撃フロー

検出

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
    }