SOC Prime Bias: Critical

08 Jun 2026 19:33 UTC

GammaSteel: ガマレドンの進化するマルウェアチェーンの内側

Author Photo
SOC Prime Team linkedin icon フォローする
GammaSteel: ガマレドンの進化するマルウェアチェーンの内側
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

概要

このレポートは、GammaSteel という新しい Gamaredon(UAC-0010)の侵入チェーンを説明しています。これはファイルレスのPowerShellスティーラーを中心に構築されています。マルウェアは71の暗号化された関数を HKCUPrinters レジストリキーに保存し、Windows DPAPI で保護します。ローカルドライブ、USBメディア、および編集中のファイルからドキュメントを収集し、MD5で重複を排除した後、正当なS3互換サービスの Tebi.ioへと流出させ、バックアップとしてハードコードされたロシアのドメインを使用します。さらに、インフラストラクチャ全体がTelegram、Telegra.ph、Write.as、Rentry.co、Mastodonなどの公共プラットフォームにホストされたデッドドロップリゾルバーや動的DNSサービスに依存しています。このキャンペーンは引き続き、ウクライナ政府および重要インフラ環境を標的にしています。

調査

Sekoia.ioは70以上のアーティファクトを分析し、完全なPowerShellドロッパーを再構築し、レジストリベースの持続性、ミューテックス、隠れたスケジュールされたPowerShellの実行、および多層のデータ流出手法を特定しました。研究者たちはデッドドロップリゾルバーのインフラストラクチャをマッピングし、115 のIPアドレス、4つのドメイン、およびいくつかのS3資格情報セットをカタログ化し、Mastodon経由で実行される自動アップデートを観察しました。また、レジストリに保存されたDPAPIで暗号化されたペイロードの使用など、2020年のInvisiMole活動との類似点も指摘しました。

緩和策

組織は、 HKCUPrintersへの通常ではない書き込みや、隠れたPowerShellプロセスの作成、および Globalassembly307 ミューテックスの使用を監視するべきです。S3エンドポイント s3.tebi.io やフォールバックインフラストラクチャに対して justsstop.ru and 165.22.170.129 などの送信トラフィックをブロックするべきです。また、防御者は、特定のiPhoneスタイルのユーザーエージェント文字列やPowerShellスクリプトを呼び出すレジストリランエントリの検出も展開するべきです。

対応策

GammaSteelの活動が検出された場合、影響を受けたホストを隔離し、 HKCUPrinters レジストリハイブを収集してDPAPI保護されたペイロードを抽出し、可能であれば被害者のマスターキーを使用して解読してください。関連するアーティファクトを探し、特定されたコマンドアンドコントロールのURLとドメインをブロックし、侵害された可能性のある認証情報をリセットし、追加の悪意のあるモジュールを特定するための完全なフォレンジックレビュを実施してください。

"graph TB %% Class definitions classDef technique fill:#e6f7ff classDef process fill:#ffebcc classDef action fill:#c2f0c2 classDef tool fill:#dddddd classDef storage fill:#ffe6e6 classDef network fill:#d9d9ff classDef data fill:#f0e68c %% Nodes u2013 techniques tech_T1027_009["<b>技術</b> – <b>T1027.009 埋め込まれたペイロード</b><br/>他のファイル内にペイロードを難読化する"] class tech_T1027_009 technique tech_T1027_007["<b>技術</b> – <b>T1027.007 動的API解決</b><br/>静的解析を避けるために実行時にAPIを解決する"] class tech_T1027_007 technique tech_T1027_002["<b>技術</b> – <b>T1027.002 ソフトウェアパッキング</b><br/>その本当の性質を隠すために悪意のあるコードをパッケージ化する"] class tech_T1027_002 technique tech_T1027_013["<b>技術</b> – <b>T1027.013 暗号化/エンコードされたファイル</b><br/>保存前にDPAPIを使用してデータを暗号化する"] class tech_T1027_013 technique tech_T1547_001["<b>技術</b> – <b>T1547.001 レジストリ実行キー/スタートアップフォルダー</b><br/>持続性を達成するために実行キーを追加する"] class tech_T1547_001 technique tech_T1037_005["<b>技術</b> – <b>T1037.005 スタートアップアイテム</b><br/>持続性のためにスタートアップアイテムを使用する"] class tech_T1037_005 technique tech_T1680["<b>技術</b> – <b>T1680 ローカルストレージの検出</b><br/>ローカルドライブとユーザープロファイルを発見する"] class tech_T1680 technique tech_T1135["<b>技術</b> – <b>T1135 ネットワーク共有の検出</b><br/>共有ネットワークの場所を見つける"] class tech_T1135 technique tech_T1006["<b>技術</b> – <b>T1006 ダイレクトボリュームアクセス</b><br/>リムーバブルメディアに直接アクセスする"] class tech_T1006 technique tech_T1025["<b>技術</b> – <b>T1025 リムーバブルメディアからのデータ</b><br/>USBデバイスからデータを収集する"] class tech_T1025 technique tech_T1564_005["<b>技術</b> – <b>T1564.005 隠しファイルシステム</b><br/>隠された場所にファイルを保存する"] class tech_T1564_005 technique tech_T1005["<b>技術</b> – <b>T1005 ローカルシステムからのデータ</b><br/>ローカルコンピューターからファイルを収集する"] class tech_T1005 technique tech_T1537["<b>技術</b> – <b>T1537 クラウドアカウントへのデータ転送</b><br/>盗まれたデータをクラウドストレージにアップロードする"] class tech_T1537 technique tech_T1538["<b>技術</b> – <b>T1538 クラウドサービスダッシュボード</b><br/>データ流出のためにクラウドサービスのインターフェースを使用する"] class tech_T1538 technique tech_T1102_001["<b>技術</b> – <b>T1102.001 ウェブサービス: デッドドロップリゾルバー</b><br/>公共のウェブサービスからコマンドと設定を取得する"] class tech_T1102_001 technique tech_T1620["<b>技術</b> – <b>T1620 リフレクティブコードローディング</b><br/>実行時に受信したコードを読み込み実行する"] class tech_T1620 technique %% Nodes u2013 actions and components malware_dropper["<b>マルウェア</b> – <b>名前</b>: 初期ドロッパー<br/><b>説明</b>: 難読化されたPowerShellスクリプトを実行する"] class malware_dropper process process_powershell["<b>プロセス</b> – <b>名前</b>: PowerShell<br/><b>役割</b>: エンコードされたスクリプトを実行する"] class process_powershell process storage_dpapi["<b>ストレージ</b> – <b>場所</b>: HKCUPrinters<br/><b>内容</b>: DPAPIで暗号化された71の関数"] class storage_dpapi storage persistence_runkey["<b>アクション</b> – <b>持続性</b>: レジストリ実行キー<br/><b>キー</b>: HKCUSoftwareMicrosoftWindowsCurrentVersionRun"] class persistence_runkey action process_hidden_ps["<b>プロセス</b> – <b>名前</b>: 隠しPowerShell<br/><b>目的</b>: レジストリから指令を読み取る"] class process_hidden_ps process orchestrator["<b>アクション</b> – <b>指揮者</b>: リソースを一覧化し収集を指揮する"] class orchestrator action enumeration["<b>アクション</b> – <b>列挙</b>: ドライブ、プロファイル、ネットワーク共有"] class enumeration action collection["<b>アクション</b> – <b>収集</b>: ローカルおよびネットワークの場所からファイルを収集する"] class collection action monitor_usb["<b>アクション</b> – <b>USB監視</b>: リムーバブルメディアのWMIイベント購読"] class monitor_usb action staging_folder["<b>ストレージ</b> – <b>隠しフォルダー</b>: コピーされたファイルのボックスエリア"] class staging_folder storage fs_watcher["<b>プロセス</b> – <b>名前</b>: FileSystemWatcher<br/><b>機能</b>: ノン-USB ドライブの変更を監視する"] class fs_watcher process deduplication["<b>アクション</b> – <b>重複排除</b>: 流出前に重複ファイルを削除する"] class deduplication action upload_s3["<b>アクション</b> – <b>アップロード</b>: S3互換バケット (tebi.io) にデータを送信する"] class upload_s3 network fallback_post["<b>アクション</b> – <b>フォールバック流出</b>: iPhone UAを真似たC2ドメインへのPOST"] class fallback_post network dead_drop["<b>アクション</b> – <b>デッドドロップリゾルバー</b>: Telegram、Telegra.ph、Write.as、Rentry.co、Mastodon からコンフィグを取得する"] class dead_drop action vbscript_backdoor["<b>アクション</b> – <b>二次バックドア</b>: HTTP応答から任意のVBScriptを実行する"] class vbscript_backdoor action %% Connections u2013 flow malware_dropper –>|uses| tech_T1027_009 malware_dropper –>|uses| tech_T1027_007 malware_dropper –>|uses| tech_T1027_002 malware_dropper –>|stores encrypted data| tech_T1027_013 malware_dropper –>|launches| process_powershell process_powershell –>|writes encrypted functions to| storage_dpapi storage_dpapi –>|enables| persistence_runkey persistence_runkey –>|creates| tech_T1547_001 persistence_runkey –>|creates| tech_T1037_005 persistence_runkey –>|starts| process_hidden_ps process_hidden_ps –>|loads orchestrator from registry| orchestrator orchestrator –>|performs| enumeration enumeration –>|covers| tech_T1680 enumeration –>|covers| tech_T1135 orchestrator –>|collects data using| collection collection –>|uses| tech_T1005 collection –>|includes removable media via| tech_T1025 collection –>|includes direct volume access via| tech_T1006 collection –>|triggers| monitor_usb monitor_usb –>|copies files to| staging_folder staging_folder –>|is hidden by| tech_T1564_005 staging_folder –>|monitored by| fs_watcher fs_watcher –>|detects changes and triggers| deduplication deduplication –>|uploads to cloud via| upload_s3 upload_s3 –>|relies on| tech_T1537 upload_s3 –>|fallback to| fallback_post fallback_post –>|relies on| tech_T1538 orchestrator –>|gets updates from| dead_drop dead_drop –>|uses| tech_T1102_001 dead_drop –>|delivers| vbscript_backdoor vbscript_backdoor –>|leverages| tech_T1620 %% Styling assignments class malware_dropper,process_powershell,process_hidden_ps,fs_watcher,orchestrator,monitor_usb,vbscript_backdoor builtin class storage_dpapi,staging_folder builtin class persistence_runkey,enumeration,collection,deduplication,upload_s3,fallback_post,dead_drop action class tech_T1027_009,tech_T1027_007,tech_T1027_002,tech_T1027_013,tech_T1547_001,tech_T1037_005,tech_T1680,tech_T1135,tech_T1006,tech_T1025,tech_T1564_005,tech_T1005,tech_T1537,tech_T1538,tech_T1102_001,tech_T1620 technique "

攻撃フロー

シミュレーション実行

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

根拠: このセクションは、検出ルールをトリガーするために設計された敵対者技術(TTP)の正確な実行を詳細に説明します。コマンドとストーリーは特定されたTTPに直接反映し、検出ロジックによって期待される正確なテレメトリを生成することを目的としています。

  • 攻撃のストーリーとコマンド:
    加害者は、低権限ユーザーアカウントを侵害し、ファイルシステムに触れることなく暗号化されたPowerShellペイロードをステージングしたいと考えています。それで彼らは次のログオン時に実行されるBase64 エンコードされたペイロードを Run キーに書き込みます。ルールの単一の除外を回避するために、意図的に下のサブキーを使用し HKCUPrinters これは、プリンターステージングパターンを模倣するガマレドンのサンプルで観察された除外値です。 not the excluded value, mimicking the “printer‑staging” pattern observed in Gamaredon samples.

  • リグレッションテストスクリプト:

    # --------------------------------------------------------------
    # Gamaredon PowerShell Registry ステージングのシミュレーション (TC-20260608-A1B2C)
    # --------------------------------------------------------------
    
    # 1. Base64 エンコードされた無害の PowerShell コマンドを定義する(例:ファイルを書き込む)
    $payload = 'Write-Host "Gamaredon simulation executed"' 
    $b64 = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($payload))
    
    # 2. 実行キーを通してペイロードを永続化する(持続性)
    $runKey = 'HKCU:SOFTWAREMicrosoftWindowsCurrentVersionRun'
    New-ItemProperty -Path $runKey -Name 'GamaredonStager' -Value "powershell -enc $b64" -PropertyType String -Force
    
    # 3.「プリンター」キーに同じペイロードをステージングする(ファイルレスステージング)
    $printerKey = 'HKCU:PrintersYxwHku2chu0bznt3kkyAD'  # 注記: 除外を避けるための異なるサフィックス
    New-Item -Path $printerKey -Force | Out-Null
    Set-ItemProperty -Path $printerKey -Name 'EncryptedPS' -Value $b64 -Force
    
    Write-Host "シミュレーションが完了しました – レジストリエントリが作成されました。"
  • クリーンアップコマンド:

    # 実行キーエントリを削除する
    Remove-ItemProperty -Path 'HKCU:SOFTWAREMicrosoftWindowsCurrentVersionRun' -Name 'GamaredonStager' -ErrorAction SilentlyContinue
    
    # プリンターステージングキーを削除する
    Remove-Item -Path 'HKCU:PrintersYxwHku2chu0bznt3kkyAD' -Recurse -Force -ErrorAction SilentlyContinue
    
    Write-Host "クリーンアップ完了 – レジストリアーティファクトが削除されました。"