SOC Prime Bias: High

21 Sep 2026 20:13 UTC

チェーンスクリプト:ブロックチェーンを通じたNode.js RATの追跡

Author Photo
SOC Prime Team linkedin icon フォローする
チェーンスクリプト:ブロックチェーンを通じたNode.js RATの追跡
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

概要

ChainScriptは、新たに発見されたNode.jsベースのリモートアクセス型トロイの木馬(RAT)で、コマンド&コントロール(C2)発見に分散型ブロックチェーンインフラを利用します。このマルウェアはEtherHiding技術を使用し、Polygonスマートコントラクトを問い合わせて、アクティブなWebSocketエンドポイントを動的に解決し、迅速にインフラを切り替えます。インタラクティブシェル、ファイル操作、暗号通貨ウォレットの偵察などの機能を持っています。

調査

BlackpointのAdversary Pursuit Group(APG)は、悪意のあるWindowsインストーラーパッケージを含むClickFix活動を調査する中でChainScriptを特定しました。アナリストは、複数のMicrosoftをテーマにしたディレクトリに配備されたマルウェアコンポーネントと、リゾルバーとして使用されるPolygonスマートコントラクトを観察しました。調査により、脅威アクターがリゾルバーコントラクトをマルウェアビルドとともに自動展開し、シームレスなC2トランジションを可能にしていることが示されました。

軽減策

組織は、Windowsの「実行」ダイアログを不要な場合には無効にし、ユーザーが書き込めるディレクトリからのMSIインストールを制限することで、ClickFixの実行パスを減らすべきです。セキュリティチームは、特に msiexec.exe によるプロセス生成 wscript.exe またはPowerShell関係の異常なプロセスを監視すべきです。ユーザーは手動コマンド実行の促しを認識できるように訓練されるべきです Win+R.

対応策

ChainScript活動が検出された場合、影響を受けたシステムは直ちに隔離し、インタラクティブシェルを通じた側方移動やデータ流出を防ぐべきです。対応者は、スケジュールタスクやレジストリのRunキーにおける二次的なペイロードと不正な永続性を徹底的に分析すべきです。特にブラウザ拡張機能やローカル暗号通貨ウォレットに関連付けられた資格情報が露出している場合、それらを刷新すべきです。

攻撃フロー

この部分はまだ更新中です。

検出

持続的可能性のあるポイント [ASEP – Software/NTUSER Hive](レジストリエベント経由)

SOC Prime チーム
2026年9月21日

隠されたPowerShellコマンドラインを介した実行の可能性(cmdline経由)

SOC Prime チーム
2026年9月21日

非一般的な場所から実行されるNodeJSバイナリ(cmdline経由)

SOC Prime チーム
2026年9月21日

疑わしいNodeJS子プロセス【Windows】(cmdline経由)

SOC Prime チーム
2026年9月21日

LOLBAS WScript / CScript(プロセス作成経由)

SOC Prime チーム
2026年9月21日

スケジュールタスク作成の可能性(powershell経由)

SOC Prime チーム
2026年9月21日

疑わしいスケジュールタスク(監査経由)

SOC Prime チーム
2026年9月21日

識別子(HashSha256)を検出:ChainScript:ブロックチェーンを通過するNode.js RATの追跡

SOC Prime AI ルール
2026年9月21日

ChainScriptブロックチェーンベースのC2インフラ発見を検出【Windowsネットワーク接続】

SOC Prime AI ルール
2026年9月21日

PowerShellを介したChainScript RATの実行検出【Windows PowerShell】

SOC Prime AI ルール
2026年9月21日

MsiexecとWscriptを介したChainScript Node.js RATの実行検出【Windowsプロセス創造】

SOC Prime AI ルール
2026年9月21日

シミュレーション実行

  • 攻撃の流れとコマンド: 攻撃者はChainScriptを模倣するよう設計されたNode.jsベースのペイロードを展開します。目的は、公開Ethereum RPCエンドポイントを問い合わせることでC2インフラを発見することです。スクリプトはWebSocket接続を開始し、JSON-RPC eth_call リクエストを送信します。重要なのは、リクエストがペイロード内の特定の関数セレクタ 0x4ab7874e を含んでいることです。このアクションは、マルウェアライフサイクルの「発見」フェーズをシミュレートすることを意図しており、C2アドレスがブロックチェーン上のスマートコントラクトから引き出されます。

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

    # WebSocketを介したChainScriptブロックチェーン発見を模倣するシミュレーションスクリプト
    # これは、特定のWebSocket JSON-RPCペイロードを送信可能なNode.js環境またはツールが必要です。
    # このシミュレーションでは、PowerShellスクリプトを使用して生のペイロードを送信します。
    
    $wsUri = "wss://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY" # プレースホルダRPCエンドポイントを使用
    $ws = New-Object System.Net.WebSockets.ClientWebSocket
    $ct = New-Object System.Threading.CancellationToken
    
    try {
        Write-Host "[+] WebSocket RPCに接続中..."
        $connectTask = $ws.ConnectAsync($wsUri, $ct)
        $connectTask.Wait()
        Write-Host "[+] 接続が確立されました。"
    
        # ChainScript関数セレクタを含む特定のペイロード
        $payload = '{
            "jsonrpc":"2.0",
            "method":"eth_call",
            "params":[{
                "to":"0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
                "data":"0x4ab7874e0000000000000000000000000000000000000000000000000000000000000000"
            }],
            "id":1
        }'
        $bytes = [System.Text.Encoding]::UTF8.GetBytes($payload)
        $segment = New-Object ArraySegment[Byte] -ArgumentList @(,$bytes)
    
        Write-Host "[+] ChainScriptの発見ペイロードを送信中(eth_call + 0x4ab7874e)..."
        $sendTask = $ws.SendAsync($segment, [System.Net.WebSockets.WebSocketMessageType]::Text, $true, $ct)
        $sendTask.Wait()
        Write-Host "[+] ペイロードが送信されました。"
    
    } catch {
        Write-Error "[-] シミュレーションが失敗しました: $($_.Exception.Message)"
    } finally {
        if ($ws.State -eq 'Open') {
            $ws.CloseAsync([System.Net.WebSockets.WebSocketCloseStatus]::NormalClosure, "閉じる", $ct).Wait()
        }
        $ws.Dispose()
        Write-Host "[+] クリーンアップ完了。"
    }
  • クリーンアップコマンド:

    # スクリプトによって永続的な変更は行われません。
    # 一時的なNode.jsプロセスやローカルリスナファイルを削除することを確認。
    Stop-Process -Name "node" -ErrorAction SilentlyContinue
    Remove-Item -Path "$env:TEMPchainscript_sim.tmp" -ErrorAction SilentlyContinue