ラザルスを追う: 感染性インタビュー C2 インフラの内部
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
Red Asgardは、Upwork経由で宣伝された暗号通貨プロジェクトに関連するサプライチェーンの妥協を報告しました。Lazarusオペレーターがビルド/ワークフローに悪意のあるコードを埋め込んでいます。このチェーンはVSCodeのタスク自動実行を悪用しており、Node.jsのバックドアをFunctionコンストラクターを通じて実装し、cookie-gatedペイロード配信を用いてVercelにホストされたコマンドアンドコントロールインフラストラクチャから悪意のあるJavaScriptを取得しています。C2スタックは最初の段階としてVercelドメイン、第二段階として専用のWindowsサーバーに分割されています。これにより、XMRigマイニング機能を備えた非常に難読化されたPythonバックドアが提供されます。このキャンペーンはまた、Pastebinによるデッドドロップ、カスタムバイナリープロトコル、および解析と撤去を複雑化するための厳格な認証情報の区別を使用しています。
調査
研究者たちは、トークン認証されたエンドポイントを公開している三つのVercelドメインを列挙し、以下で動作する専用C2システム5つを特定しました Express.js on ポート1244も特定しました。また、アクティブキャンペーントークンを推測または列挙するために使用されるタイミングオラクル技術を文書化しました。最終的に、難読化された64層のペイロードのリバースエンジニアリングにより、スタートアップフォルダ配置やスケジュールされたタスク作成を介して持続するトロイの木馬化されたコンポーネントが明らかになりました。追加の発見として、ハードコードされたMongoDBの認証情報、約1,000のPastebinデッドドロップURL、および複数のポートでのカスタムZ238バイナリープロトコルリスナーが含まれています。 64-layer obfuscated payload ultimately revealed a trojanized component that persists via Startup folder placement and scheduled task creation. Additional findings included hard-coded MongoDB credentials, approximately 1,000 Pastebin dead-drop URLs, and custom Z238 binary protocol listeners on multiple ports.
緩和策
特定されたVercelドメインへのアウトバウンド通信をブロックし、ポート1244、1249、および22411–22412への発信を制限します。Startup場所でのWindows Update Script.pyw、スケジュールされたタスク「Runtime Broker」の作成、鉱夫の偽装に一致する疑わしいmsedge.exe実行を監視します。Function.constructorを呼び出すNode.jsプロセスと/keysエンドポイントへの異常なHTTP POSTアクティビティを検出します。VSCodeの自動実行タスクを無効にし、信頼できないリポジトリーでnpmインストールやビルド手順を実行する前にパッケージスクリプトを確認することで、曝露を減らします。
対応
指標が観察された場合、影響を受けたシステムを隔離し、疑わしいプロセスを終了し、法医学的レビューのためにメモリおよびディスクアーティファクトを保存します。公開されたMongoDBの認証情報を取り消し、関連するサービスアカウントのシークレットを更新します。影響を受けたユーザーを特定するためにアカウントとアクセスのインベントリを作成し、認証情報をリセットしてアクティブなセッション/トークンを無効にします。内部関係者に通知し、暗号通貨盗難やウォレットの妥協の証拠がある場合は法執行機関と協力します。
攻撃フロー
検出
第三者サービス/ツール(dns経由)でのデータの潜在的な流入/流出/C2
表示
Windows Defender の設定変更の疑わしい変更(powershell経由)
表示
自動起動場所の疑わしいバイナリ / スクリプト(file_event経由)
表示
Linuxホスト上で隠しファイルが作成されました(file_event経由)
表示
サードパーティサービス/ツールを介したデータの潜入/流出/コマンド&コントロールの可能性(プロキシ経由)
表示
IOCs(メール)を検出する:Lazarusのハンティング:伝染性インタビューC2インフラストラクチャの内部
表示
IOCs(DestinationIP)を検出する:Lazarusのハンティング:伝染性インタビューC2インフラストラクチャの内部
表示
IOCs(SourceIP)を検出する:Lazarusのハンティング:伝染性インタビューC2インフラストラクチャの内部
表示
IOCs(HashSha256)を検出する:Lazarusのハンティング:伝染性インタビューC2インフラストラクチャの内部
表示
Vercelドメインから悪意のあるJavaScriptを取得する怪しいgetCookie関数 [Windows File Event]
表示
バックエンドRCEのためにerrorHandler.jsで使われる怪しいFunction.constructor [Windows File Event]
表示
RuntimeBrokerおよびXMRigマイナーをmsedge.exeとして偽装した悪意のあるプロセス [Windows Process Creation]
表示
悪意のあるVSCode自動実行設定 [Windows File Event]
表示
シミュレーション実行
前提条件:テレメトリー&ベースライン事前確認がパスしていること。
攻撃の説明とコマンド
敵対者は正当な RuntimeBroker.exe バイナリを標準外の場所 (%TEMP%) にコピーして、信頼されたプロセスとして偽装し、既知のシステムパスに基づく検出を避けます。コピーしたバイナリを実行することで、プロセス作成イベントには想定されたイメージ名が含まれますが、「System32」含有チェックを通らないパスが含まれており、 selection_runtime.
回帰テストスクリプト
# -----------------------------------------------
# TC-20260114-A1B2C – 偽装シミュレーション
# -----------------------------------------------
# 1. パスを定義
$src = "$env:SystemRootSystem32RuntimeBroker.exe"
$dest = "$env:TEMPRuntimeBroker.exe"
# 2. 正当なバイナリを非システムのディレクトリにコピー
Copy-Item -Path $src -Destination $dest -Force
# 3. コピーしたバイナリを実行(Sigmaルールをトリガーするはずです)
Start-Process -FilePath $dest -WindowStyle Hidden
# 4. オプション: msedge偽装(マイナー)シナリオをシミュレーション
# (任意の無害な実行可能ファイルをコピーし、msedge.exeにリネームし、%LOCALAPPDATA%MicrosoftWindowsApplicationsに配置)
$minerSrc = "$env:SystemRootSystem32notepad.exe"
$minerDest = "$env:LOCALAPPDATAMicrosoftWindowsApplicationsmsedge.exe"
Copy-Item -Path $minerSrc -Destination $minerDest -Force
Start-Process -FilePath $minerDest -WindowStyle Hidden
# -----------------------------------------------
クリーンアップコマンド
# 悪意のあるコピーを削除
Remove-Item -Path "$env:TEMPRuntimeBroker.exe" -Force -ErrorAction SilentlyContinue
Remove-Item -Path "$env:LOCALAPPDATAMicrosoftWindowsApplicationsmsedge.exe" -Force -ErrorAction SilentlyContinue