SOC Prime Bias: 重大

16 Jun 2026 05:47 UTC

SHEET#CREEPを解析: マルウェアが新しいコンフィグ難読化で再登場

Author Photo
SOC Prime Team linkedin icon フォローする
SHEET#CREEPを解析: マルウェアが新しいコンフィグ難読化で再登場
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

概要

SHEETCREEPとして知られる活発な諜報作戦は、Google Sheets APIをコマンド・アンド・コントロールのために使用するC#リモートアクセス型トロイの木馬に依存しています。攻撃者は、外交をテーマにしたISOフィッシングルアーを経由してマルウェアを配信し、その後RATは持続性を確立し、インプロセスのPowerShellランスペースを介してコマンドを実行します。最近のサンプルでは、オペレーターが設定データに対するXORベースの難読化を導入することにより、マルウェアを強化したことが示されています。

調査

Securonixの脅威調査チームは、RATバイナリから埋め込まれたGoogle Cloudサービスアカウントの資格情報を抽出することでこのキャンペーンを発見しました。ライブのコマンド・アンド・コントロールスプレッドシートに認証した後、研究者は91のアクティブな犠牲者タブを特定し、その中にはサンドボックスや研究環境、またパキスタンに所在する高確度の犠牲者が含まれていました。彼らの分析では、マルウェアの設定保護が更新された難読化手法を通じて進化したことも示されました。

緩和策

組織は、特にLNKショートカットファイルを含むISOファイルを開かないよう、未承認の添付ファイルを開くことを避けるべきです。防御側は、 %LOCALAPPDATA%MicrosoftVault ディレクトリ内の不審な実行ファイルを監視し、ミスリードや予期しないエントリについてスケジュールされたタスクを確認するべきです。SysmonやAMSIなどのツールを通じた強力なエンドポイントの可視性は、マルウェアに関連したインプロセスのPowerShellアクティビティを検出するのにも役立ちます。

対応

非ブラウザプロセスからのGoogle APIサービスへの異常なHTTPSトラフィックが観測された場合、影響を受けたシステムは直ちに隔離されるべきです。セキュリティチームは、 WindowsVaultSyncServiceのような未承認の項目のためにスケジュールされたタスクを点検するべきです。また、 %LOCALAPPDATA%MicrosoftVault についてのフォレンジックレビューを実施し、侵入に関連した隠しバイナリやシステム属性のバイナリを特定するべきです。

graph TB %% クラス定義セクション classDef initial_access fill:#f96,stroke:#333,stroke-width:2px classDef execution fill:#3498db,stroke:#333,stroke-width:2px classDef persistence fill:#2ecc71,stroke:#333,stroke-width:2px classDef evasion fill:#9b59b6,stroke:#333,stroke-width:2px classDef command_control fill:#e74c3c,stroke:#333,stroke-width:2px classDef malware fill:#ecf0f1,stroke:#333,stroke-width:2px %% 初期アクセスノード node_iso[“<b>ファイル</b>: UAE-India_Strategic_Partnership_Week.iso<br/><b>アクション</b>: ISOのマウント<br/><b>コンテキスト</b>: ソーシャルエンジニアリングに利用された外交テーマ”] class node_iso initial_access node_lnk[“<b>ファイル</b>: 悪意のあるLNKショートカット<br/><b>技術</b>: T1027.012 – 難読化されたファイルまたは情報: LNKアイコン偽装<br/><b>説明</b>: ユーザーを欺くためPDFアイコンに偽装したLNKファイル”] class node_lnk initial_access %% 実行およびドロッパーノード node_user_exec[“<b>アクション</b>: T1204.002 – ユーザー実行: 悪意のあるファイル<br/><b>説明</b>: 被害者が悪意のあるLNKファイルを操作”] class node_user_exec execution node_dropper[“<b>マルウェア</b>: C# Dropper<br/><b>ファイル</b>: Document_11052026-03578240540350-93.exe<br/><b>機能</b>: 偽装PDFを抽出し、RATペイロードを配置”] class node_dropper execution %% 永続化および回避ノード node_rat[“<b>マルウェア</b>: SHEETCREEP RAT<br/><b>プロセス</b>: vaultsvc.exe<br/><b>場所</b>: %LOCALAPPDATA%\\Microsoft\\Vault\\vaultsvc.exe”] class node_rat malware node_attr_evasion[“<b>アクション</b>: T1027.008 – 難読化されたファイルまたは情報: ペイロード除去<br/><b>説明</b>: RATファイル属性をHiddenおよびSystemに設定”] class node_attr_evasion evasion node_persistence[“<b>アクション</b>: T1137 – Officeアプリケーション起動<br/><b>方法</b>: COM APIによるスケジュールタスク<br/><b>タスク名</b>: WindowsVaultSyncService”] class node_persistence persistence node_melt[“<b>アクション</b>: T1070.004 – 痕跡削除: ファイル削除<br/><b>説明</b>: meltルーチンによりドロッパーを削除し、正規PDFへ置換”] class node_melt evasion %% C2および高度な回避ノード node_c2_api[“<b>技術</b>: T1102.002 – Webサービス: 双方向通信<br/><b>チャネル</b>: Google Sheets API<br/><b>認証</b>: GCPサービスアカウントおよびRSA-2048キー”] class node_c2_api command_control node_xor_cfg[“<b>技術</b>: T1573.002 – 暗号化チャネル<br/><b>説明</b>: Spreadsheet ID用設定をキー ‘discrete’ によるXOR暗号化”] class node_xor_cfg command_control node_powershell_evasion[“<b>技術</b>: T1036.011 – 偽装: プロセス引数の上書き<br/><b>説明</b>: EDR回避のためプロセス内PowerShell runspaceでコマンド実行”] class node_powershell_evasion evasion %% 接続フロー node_iso –>|含む| node_lnk node_lnk –>|起動する| node_user_exec node_user_exec –>|実行する| node_dropper node_dropper –>|配置する| node_rat node_dropper –>|属性を適用| node_attr_evasion node_dropper –>|永続化を確立| node_persistence node_dropper –>|実行する| node_melt node_rat –>|通信する| node_c2_api node_rat –>|使用する| node_xor_cfg node_rat –>|コマンド実行する| node_powershell_evasion

攻撃フロー

シミュレーション実行

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

理由: このセクションでは、敵の技術の正確な実行を詳細に説明し、検出ルールをトリガーするよう設計されています。コマンドおよび説明は、特定されたTTPを直接反映し、検出ロジックによって期待される正確なテレメトリを生成することを目的としています。抽象的または無関係な例は誤診につながります。

  • 攻撃ナラティブとコマンド: 敵は、SHEETCREEP技術を使って持続性を確立し、リモートアクセス型トロイの木馬(RAT)を実行しようとしています。まず、マルウェアLNKファイルを通じて初期実行をシミュレーションし、 cmd.exe を呼び出し特定の不審な実行可能ファイルを開始します。次に、 WindowsVaultSyncService という名前のスケジュールされたタスクを作成して持続性を確立し、システム更新に溶け込むようにします。最後に、ペイロード vaultsvc.exeC:UsersAppDataLocalMicrosoftVault ディレクトリに配置し、最終的な検出ロジックをトリガーするために実行します。

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

    # SHEETCREEPシミュレーションスクリプト
    # 注意: スケジュールされたタスクを作成するには管理者権限でこのスクリプトを実行する必要があります。
    
    $targetDir = "$env:LOCALAPPDATAMicrosoftVault"
    $payloadName = "vaultsvc.exe"
    $payloadPath = "$targetDir$payloadName"
    $taskName = "WindowsVaultSyncService"
    $taskDesc = "Windows Edge Core Update Task Machine Discord Update"
    
    Write-Host "[+] SHEETCREEPシミュレーションを開始..." -ForegroundColor Cyan
    
    # 1. 選択1のシミュレーション: CMDコマンドパターン
    Write-Host "[+] 選択1のシミュレーション: CMDコマンドパターン..." -ForegroundColor Yellow
    Start-Process cmd.exe -ArgumentList '/c start "" "Document_11052026-03578240540350-93.exe"' -WindowStyle Hidden
    
    # 2. 選択2のシミュレーション: スケジュールされたタスクの作成
    Write-Host "[+] 選択2のシミュレーション: スケジュールされたタスクの作成..." -ForegroundColor Yellow
    $action = New-ScheduledTaskAction -Execute "cmd.exe" -Argument "/c echo Persistence Established"
    $trigger = New-ScheduledTaskTrigger -AtLogOn
    Register-ScheduledTask -Action $action -Trigger $trigger -TaskName $taskName -Description $taskDesc -Force
    
    # 3. 選択3のシミュレーション: ペイロードの配置と実行
    Write-Host "[+] 選択3のシミュレーション: ペイロードの配置と実行..." -ForegroundColor Yellow
    if (!(Test-Path $targetDir)) {
        New-Item -Path $targetDir -ItemType Directory -Force | Out-Null
    }
    
    # RATを模倣するダミーバイナリファイルを作成
    New-Item -Path $payloadPath -ItemType File -Force | Out-Null
    
    # ダミーペイロードを実行
    Start-Process -FilePath $payloadPath -WindowStyle Hidden -ErrorAction SilentlyContinue
    
    Write-Host "[+] シミュレーションコマンドが送信されました。SIEMでアラートを確認してください。" -ForegroundColor Green
  • クリーンアップコマンド:

    # SHEETCREEPシミュレーションのクリーンアップ
    $targetDir = "$env:LOCALAPPDATAMicrosoftVault"
    $payloadPath = "$targetDirvaultsvc.exe"
    $taskName = "WindowsVaultSyncService"
    
    Write-Host "[+] シミュレーションのアーティファクトをクリーンアップ中..." -ForegroundColor Cyan
    
    # スケジュールされたタスクを削除
    Unregister-ScheduledTask -TaskName $taskName -Confirm:$false -ErrorAction SilentlyContinue
    
    # ペイロードとディレクトリを削除
    if (Test-Path $payloadPath) { Remove-Item $payloadPath -Force }
    if (Test-Path $targetDir) { Remove-Item $targetDir -Recurse -Force }
    
    Write-Host "[+] クリーンアップ完了。" -ForegroundColor Green