ラザルスを追う: 感染性インタビュー 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の認証情報を取り消し、関連するサービスアカウントのシークレットを更新します。影響を受けたユーザーを特定するためにアカウントとアクセスのインベントリを作成し、認証情報をリセットしてアクティブなセッション/トークンを無効にします。内部関係者に通知し、暗号通貨盗難やウォレットの妥協の証拠がある場合は法執行機関と協力します。
“graph TB %% クラス定義 classDef technique fill:#cce5ff classDef artifact fill:#e2f7d6 %% ステップ1 – サービスを介したフィッシング tech_phishing[“<b>技術</b> – <b>T1566.003 フィッシング: サービス経由のスピアフィッシング</b><br/><b>説明</b>: 攻撃者がUpworkでフリーランサーを装い、偽の求人面接を掲載して悪意のあるコードリポジトリを配信。”] class tech_phishing technique artifact_upwork[“<b>アーティファクト</b> – <b>名前</b>: 偽のUpwork求人掲載<br/><b>目的</b>: 被害者を悪意のあるリポジトリをダウンロードするよう誘導。”] class artifact_upwork artifact tech_phishing u002du002d>|配信| artifact_upwork %% ステップ2 – サプライチェーンの妥協 tech_supplychain[“<b>技術</b> – <b>T1195.001 サプライチェーンの妥協: ソフトウェア依存関係と開発ツールの妥協</b><br/><b>説明</b>: リポジトリにマルウェアVSCode <code>tasks.json</code>およびJavaScriptコードが注入。”] class tech_supplychain technique artifact_tasksjson[“<b>アーティファクト</b> – <b>名前</b>: VSCode <code>tasks.json</code><br/><b>内容</b>: JavaScript関数コンストラクタと<code>getCookie()</code>を呼び出す悪意のあるタスク定義。”] class artifact_tasksjson artifact artifact_upwork u002du002d>|含む| artifact_tasksjson artifact_tasksjson u002du002d>|有効化| tech_supplychain %% ステップ3 – ユーザー実行 tech_userexec[“<b>技術</b> – <b>T1204.002 ユーザー実行: 悪意のあるファイル</b><br/><b>説明</b>: 被害者がVSCodeでプロジェクトフォルダを開き、悪意のあるタスクが自動実行。”] class tech_userexec technique artifact_tasksjson u002du002d>|トリガー| tech_userexec %% ステップ4 – JavaScript実行 tech_jsexec[“<b>技術</b> – <b>T1059.007 コマンドとスクリプトインタプリタ: JavaScript</b><br/><b>説明</b>: VSCodeタスクと関数コンストラクタを介してJavaScriptが実行され、追加のペイロードがダウンロード。”] class tech_jsexec technique tech_userexec u002du002d>|導く| tech_jsexec %% ステップ5 – Pythonバックドア tech_python[“<b>技術</b> – <b>T1059.006 コマンドとスクリプトインタプリタ: Python</b><br/><b>説明</b>: 非常に難読化されたPythonバックドア (<code>bro_*.js</code>) が被害者ホストでダウンロードされ、実行される。”] class tech_python technique artifact_python_backdoor[“<b>アーティファクト</b> – <b>名前</b>: 難読化されたPythonバックドア (<code>bro_*.js</code>)<br/><b>特徴</b>: 多層化されたエンコーディングとデコード。”] class artifact_python_backdoor artifact tech_jsexec u002du002d>|ダウンロード| artifact_python_backdoor artifact_python_backdoor u002du002d>|実行| tech_python %% ステップ6 – スタートアップ持続性 tech_startup[“<b>技術</b> – <b>T1037.005 ブートまたはログオン初期化スクリプト: スタートアップアイテム</b><br/><b>説明</b>: スタートアップフォルダに<code>Windows Update Script.pyw</code>を配置して持続性を保つ。”] class tech_startup technique artifact_startup_script[“<b>アーティファクト</b> – <b>名前</b>: <code>Windows Update Script.pyw</code><br/><b>場所</b>: スタートアップフォルダ”] class artifact_startup_script artifact tech_python u002du002d>|作成| artifact_startup_script artifact_startup_script u002du002d>|有効化| tech_startup %% ステップ7 – スケジュールタスク tech_schedtask[“<b>技術</b> – <b>T1053 スケジュールタスク/ジョブ</b><br/><b>説明</b>: ログオン時に実行されるようにスケジュールされた”ランタイムブローカー”タスクを作成。”] class tech_schedtask technique artifact_schedtask[“<b>アーティファクト</b> – <b>名前</b>: スケジュールタスク”ランタイムブローカー”<br/><b>トリガー</b>: ユーザーログオン時”] class artifact_schedtask artifact tech_startup u002du002d>|追加| artifact_schedtask artifact_schedtask u002du002d>|実行| tech_schedtask %% ステップ8 – ブラウザからの資格情報取得 tech_credbrowser[“<b>技術</b> – <b>T1555.003 パスワードストアからの資格情報: Webブラウザからの資格情報</b><br/><b>説明</b>: マルウェアがブラウザのプロファイルデータと保存された資格情報を収集。”] class tech_credbrowser technique artifact_browser_data[“<b>アーティファクト</b> – <b>データ</b>: 抽出されたブラウザのパスワードとクッキー”] class artifact_browser_data artifact tech_schedtask u002du002d>|収集| tech_credbrowser tech_credbrowser u002du002d>|保存| artifact_browser_data %% ステップ9 – ウェブセッションのクッキー奪取 tech_stealcookie[“<b>技術</b> – <b>T1539 ウェブセッションのクッキー奪取</b><br/><b>説明</b>: <code>getCookie()</code> 関数が被害者のブラウザからセッションクッキーを取得。”] class tech_stealcookie technique artifact_getcookie[“<b>アーティファクト</b> – <b>データ</b>: ブラウザから取得されたセッションクッキー”] class artifact_getcookie artifact tech_credbrowser u002du002d>|有効化| tech_stealcookie tech_stealcookie u002du002d>|生成| artifact_getcookie %% ステップ10 – 代替認証材料の使用 tech_altauth[“<b>技術</b> – <b>T1550.004 代替認証材料の使用: ウェブセッションクッキー</b><br/><b>説明</b>: 抽出されたクッキーが後に認証されたウェブセッションをハイジャックするために使用された。”] class tech_altauth technique artifact_getcookie u002du002d>|使用| tech_altauth %% ステップ11 – 偽装 tech_masquerade[“<b>技術</b> – <b>T1036.003 正規のユーティリティの名前変更による偽装</b><br/><b>説明</b>: マルウェアのバイナリが”ランタイムブローカー.exe”や”msedge.exe”に名前変更される。”] class tech_masquerade technique artifact_renamed_bins[“<b>アーティファクト</b> – <b>ファイル</b>: <code>ランタイムブローカー.exe</code>, <code>msedge.exe</code> (悪意のある)”] class artifact_renamed_bins artifact tech_altauth u002du002d>|配送| artifact_renamed_bins artifact_renamed_bins u002du002d>|使用| tech_masquerade %% ステップ12 – 防御の妨害 tech_impairdefense[“<b>技術</b> – <b>T1562 防御の妨害</b><br/><b>説明</b>: PowerShellを介してWindows Defenderの除外を追加し、検知を回避。”] class tech_impairdefense technique artifact_defender_exclusion[“<b>アーティファクト</b> – <b>コマンド</b>: Defender除外パスを追加するPowerShellスクリプト”] class artifact_defender_exclusion artifact tech_masquerade u002du002d>|実行| artifact_defender_exclusion artifact_defender_exclusion u002du002d>|有効化| tech_impairdefense %% ステップ13 – 難読化されたファイル tech_obfuscation[“<b>技術</b> – <b>T1027 難読化されたファイルまたは情報</b><br/><b>説明</b>: ペイロードは64のネストされた難読化層 (Base85, XOR, zlib, 逆Base64) を採用。”] class tech_obfuscation technique tech_impairdefense u002du002d>|保護| tech_obfuscation %% ステップ14 – アーティファクトの隠蔽 tech_hideartifacts[“<b>技術</b> – <b>T1564.012 アーティファクトの隠蔽: ファイル/パスの除外</b><br/><b>説明</b>: Defenderの除外と隠しファイルを使用して悪意のあるアーティファクトを隠蔽。”] class tech_hideartifacts technique tech_obfuscation u002du002d>|促進| tech_hideartifacts %% ステップ15 – デッドドロップリゾルバ tech_dead_drop[“<b>技術</b> – <b>T1102.001 ウェブサービス: デッドドロップリゾルバ</b><br/><b>説明</b>: マルウェアは約1,000のデッドドロップPastebinアカウントからコマンドを取得。”] class tech_dead_drop technique artifact_pastebin[“<b>アーティファクト</b> – <b>サービス</b>: Pastebinデッドドロップリゾルバアカウント”] class artifact_pastebin artifact tech_hideartifacts u002du002d>|取得| artifact_pastebin artifact_pastebin u002du002d>|コマンド提供| tech_dead_drop %% ステップ16 – FTPによるデータの流出 tech_exfilftp[“<b>技術</b> – <b>T1048.003 代替プロトコルによるデータの流出: 暗号化されていない非C2プロトコル</b><br/><b>説明</b>: 収集したデータはポート21上のFTPを介して流出。”] class tech_exfilftp technique artifact_ftp[“<b>アーティファクト</b> – <b>プロトコル</b>: データ転送に使用されたFTP(ポート21)”] class artifact_ftp artifact tech_dead_drop u002du002d>|データ送信| tech_exfilftp tech_exfilftp u002du002d>|使用| artifact_ftp %% ステップ17 – リソースのハイジャック (Moneroマイニング) tech_resourcehijack[“<b>技術</b> – <b>T1496.001 リソースのハイジャック: 計算資源のハイジャック</b><br/><b>説明</b>: XMRig Moneroマイナーが感染したホストで利益を上げるために”msedge.exe”として偽装されてデプロイされる。”] class tech_resourcehijack technique artifact_xmrig[“<b>アーティファクト</b> – <b>ファイル</b>: <code>msedge.exe</code>として名前が変更されたXMRigマイナーバイナリ”] class artifact_xmrig artifact tech_exfilftp u002du002d>|リソース提供| tech_resourcehijack tech_resourcehijack u002du002d>|実行| artifact_xmrig %% ステップ18 – ブラウザ情報収集 tech_browserdisc[“<b>技術</b> – <b>T1217 ブラウザ情報収集</b><br/><b>説明</b>: 攻撃者がブラウザ情報を列挙して追加の資格情報とセッションデータを見つけます。”] class tech_browserdisc technique artifact_browser_info[“<b>アーティファクト</b> – <b>データ</b>: ブラウザのバージョン、プロファイルパス、インストールされた拡張機能”] class artifact_browser_info artifact tech_resourcehijack u002du002d>|収集| tech_browserdisc tech_browserdisc u002du002d>|収集| artifact_browser_info “
攻撃フロー
検出
第三者サービス/ツール(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