戻る
2026/11/11
ダウンロードしたセキュリティツールこそがマルウェア:偽の GitHub リポジトリが 2,000 台以上の Windows PC に感染
Doctor Web は、ビルドするとマルウェアが実行される偽のセキュリティツールを GitHub 上で発見しました。手口と、クローンしたコードをビルドする前の確認点を解説します。
ネットワークスキャナーの出力を整理する小さなヘルパーツールを GitHub で見つけたとします。README も Visual Studio のプロジェクトもビルド手順もそろっています。クローンしてビルドを押します。何もおかしな点はないように見えますが、コンパイラが動き始める頃には、隠されたコマンドがすでにワークステーション上で実行されています。
これは Doctor Web が 2026 年 11 月 5 日に報告した罠です。同社の研究者は、スキャンの自動化、セキュリティテスト、ログ分析のツールを装った GitHub リポジトリを発見し、調査時点で 2,000 台を超える Windows PC が感染していたと数えています。本記事では、この罠の仕組み、経験豊富なエンジニアでもだまされる理由、そしてクローンしたばかりのコードをビルドする前に確認すべきことを説明します。
要点
- これらのリポジトリはセキュリティツールを装っており、悪意のあるコマンドはビルド時またはスクリプトの起動時に実行され、別のプログラムを起動する必要はありません。
- 悪意のあるコードは Visual Studio のプロジェクトファイル、
.suoファイル、そして Python や Go のソース内の長い空白の後ろに隠されています。 - 最終的なペイロードは、2 つの AsyncRAT バックドア、暗号資産ウォレットのアドレスを書き換えるクリップボードハイジャッカー、そしてブラウザーのデータ、VPN や FTP の設定、Discord トークンを盗むインフォスティーラーです。
- ビルドする前にビルドファイルを読み、未知のコードは認証情報を一切持たない使い捨ての仮想マシンでビルドしてください。
- すでにこれらのプロジェクトをビルドしてしまった場合は、そのワークステーションが侵害されたものとして扱い、保存されていたすべての認証情報をクリーンな端末から変更してください。
Doctor Web が発見したこと
Doctor Web のレポートによると、最初の感染リポジトリは約 2 年前に現れました。当時は暗号資産ウォレットの利用者を狙い、ブロックチェーンゲーム、ゲーム用ボット、チートとして公開されていました。攻撃者は現在、標的を情報セキュリティの専門家に切り替えています。偽リポジトリの 1 つには、Fscan ネットワークスキャナーの出力を解析・整理・整形するスクリプトが含まれていました。
これはソフトウェアの脆弱性ではなく、パッチを当てるべき CVE もありません。サプライチェーンとソーシャルエンジニアリングを組み合わせたキャンペーンです。攻撃者は便利そうなプロジェクトを公開し、誰かがビルドするのを待ちます。この調査をまとめた BleepingComputer の記事は、空白を使った手口を、古いながら今でも効果のある手法だと述べています。
罠の仕組み
Doctor Web は、悪意のあるコードを 3 種類のファイルで発見しました。いずれも、レビュー担当者が普段最初に開くファイルではありません。
| 隠し場所 | 何が起きるか | 見落としやすい理由 |
|---|---|---|
.csproj プロジェクトファイル | PreBuildEvent がプロジェクトのコンパイル前にコマンドを実行する | レビュー担当者はソースコードを読み、プロジェクトファイルは読まない |
.suo ファイル | ファイルに PowerShell コマンドが含まれている | Visual Studio が通常は隠しフォルダーに保存するバイナリの設定ファイルである |
| Python と Go のソースファイル | 悪意のあるコードが大量の空白文字の後ろに置かれている | 右へ大きくスクロールするか折り返し表示をオンにしない限り、その行は空に見える |
その後の流れは共通です。PowerShell スクリプト(レポートでは例として C:\Users\Public\Pictures\t.ps1 と L.ps1 が挙げられています)が、攻撃者のサーバー、または YouTube、Telegram、Google Docs、GitCode、Pastebin などの正規サービスに暗号化された文字列を要求します。復号されたその文字列はアーカイブのダウンロードリンクで、アーカイブは C:\ProgramData\Windows.Microsoft.Photos に展開されます。
その中には Microsoft.exe という名前の Electron ベースのローダーがあり、Doctor Web はこれを Trojan.Loader.3261 として検出しています。このローダーは Telegram ボット経由でシステム情報を送信し、権限の昇格を試み、Windows Defender、ユーザーアカウント制御、通知、システムの復元、ボリュームシャドウコピーを無効にします。また、ESET、McAfee、Malwarebytes の製品を削除しようとし、hosts ファイルを書き換えてウイルス対策ベンダーのドメインをブロックします。
発見を避けるため、ローダーは既定のモードで explorer.exe を自分の親プロセスであるかのように見せかけ、VerifiedAndReputablePolicyState レジストリ値を変更して Smart App Control をすり抜け、ntdll.dll の元のコードを復元してセキュリティ製品が仕掛けたフックを取り除き、システムコールを直接呼び出し、イベントトレースとスクリプトスキャンに使われる Windows の関数にパッチを当てます。その後、RegAsm.exe などの正規の Windows プロセスにペイロードを注入します。
続いて 3 種類のペイロードが実行されます。
- 2 つの AsyncRAT バックドア。ファイルは同一ですが使用するネットワークポートが異なり、Doctor Web は 2 人の操作者が同じ端末を同時に操作できるようにするためかもしれないと述べています。
- クリッパー。クリップボード内の暗号資産ウォレットのアドレスを置き換え、スクリーンショット、アクティブなウィンドウのタイトル、ユーザーのログイン名、IP アドレスを Telegram ボットに送信します。
- インフォスティーラー(JS.Stealer.191)。サンドボックスや仮想マシンかどうかを確認したうえで、ブラウザーのデータ、FileZilla、MobaXterm、Total Commander の接続ファイル、VPN の設定、メッセンジャーのファイル、ゲームアカウントのデータ、Discord トークンを収集し、Telegram ボット経由で送信します。
Doctor Web は、Windows サービスをインストールし、ローダーが削除されると再ダウンロードする未完成のコンポーネントも発見しました。攻撃者がこのツール群の開発を続けていることがうかがえます。
専門家がだまされる理由
このキャンペーンは、通常は良い習慣とされる行動を逆手に取っています。
- ダウンロードしたものを実行するより、ソースからビルドするほうが安全に感じられます。多くのエンジニアは未知のバイナリは実行しませんが、コードを読めるという理由でプロジェクトのコンパイルにはためらいがありません。今回、読んだコードはクリーンで、コマンドはビルド構成の中にあります。
- 「このプログラムを実行する」という瞬間がありません。コマンドは通常のビルドの一部として始まるため、未知のプログラムを起動する前のいつもの一呼吸が訪れません。
- GitHub は信頼されている場所です。整った README とインストール手順を持つリポジトリは、何千もの誠実なプロジェクトと見分けがつきません。Doctor Web によると、攻撃者は Visual Studio のインストール方法やリポジトリのクローン方法の手順まで用意していました。
- エンジニアのワークステーションには鍵がそろっています。保存されたブラウザーのセッション、VPN プロファイル、サーバー接続ファイルはまさにインフォスティーラーが収集するもので、本番システムや顧客環境への入り口になることがよくあります。
ビルドする前に確認すること
以下の確認は数分で済み、Windows、Linux、macOS のいずれでも、クローンしたばかりのどのプロジェクトにも使えます。IDE でプロジェクトを開く前に、リポジトリのフォルダーで実行してください。
# 1. Build hooks and command execution in project files
grep -rniE 'PreBuildEvent|PostBuildEvent|<Exec |powershell|cmd\.exe' \
--include='*.csproj' --include='*.vbproj' --include='*.vcxproj' \
--include='*.props' --include='*.targets' .
# 2. Visual Studio user-option files that should not be in a repository
find . -name '*.suo'
# 3. Files with very long runs of spaces or tabs on one line
grep -rlE '[[:space:]]{200,}' .
Unix 系のシェルがない Windows では、空白のチェックを PowerShell で同じように行えます。
Get-ChildItem -Recurse -File |
Select-String -Pattern '\s{200,}' -List |
Select-Object -ExpandProperty Path
検出されたからといってマルウェアの証拠になるわけではありません。誠実なプロジェクトの多くもビルドイベントを使っており、ミニファイされたファイルには長い行が含まれます。何かが実行される前にそのファイルを開き、コマンドの内容を読むべきだというサインです。
- まずビルドファイルを読みます。プロジェクトファイル、
Makefile、setup.py、パッケージのインストールスクリプト、CI ファイルはいずれもコマンドを実行できます。ソースと同じくらい注意深く読んでください。 - リポジトリに含まれている
.suoファイルと.vsフォルダーを削除します。これらはユーザーごとの設定で、プロジェクトのビルドには必要ありません。 - 見慣れないコードをレビューするときは、エディターで折り返し表示または空白の可視化をオンにします。
- リポジトリの履歴を確認します。新しいアカウント、大きなコミットが 1 つだけ、実際の Issue やコントリビューターが少ない、有名なプロジェクトと機能が重複している、といった点はいずれも注意を強める理由です。スターやフォークの数は偽装できるため、それだけではほとんど何も証明しません。
- 未知のコードは使い捨ての環境でビルドします。保存されたパスワード、VPN プロファイル、SSH 鍵のない使い捨ての仮想マシンやコンテナを使い、使用後は削除してください。
ヒント:ツールを試すためのクリーンな仮想マシンのスナップショットを 1 つ用意しておきましょう。そこでクローン、ビルド、テストを行い、終わったらスナップショットに戻します。役に立つツールだと分かったら、日常のワークステーションに持ち込む前にきちんとレビューしてください。
すでにビルドしてしまった場合
Doctor Web は、ファイルハッシュ、ドメイン、アドレス、リポジトリ名の例を侵害指標(IoC)リストで公開しています。レポートに記載されている兆候には次のものがあります。
C:\ProgramData\Windows.Microsoft.Photosフォルダー、またはMicrosoft.exeという名前のプログラムがある。C:\Users\Public\Picturesにt.ps1またはL.ps1がある。- 自分で追加していない、
regasm.exeやdwm.exeに対する Windows Defender の除外設定がある。 hostsファイルにウイルス対策ベンダーのドメインがある、またはシステムの復元とシャドウコピーが無効になっている。- セキュリティソフトウェアが消えている、または更新が止まっている。
これらのいずれかが見つかった場合、またはリストにあるプロジェクトをビルドしたことが分かっている場合は、そのマシン上のすべての情報が読み取られたものとして行動してください。
- ワークステーションをネットワークから切り離し、セキュリティチームに連絡します。
- 別のクリーンな端末から、ブラウザーに保存されたパスワードを変更し、有効なセッションからサインアウトして、盗まれたセッション Cookie を無効にします。
- VPN プロファイルと、FTP クライアントやターミナルクライアントに保存されたパスワードや鍵を置き換え、それらで到達できたサーバーを確認します。
- Discord などのメッセンジャーのセッションをリセットし、暗号資産はクリーンな端末で作成したウォレットに移します。
- OS はクリーンアップではなく再インストールします。ローダーはセキュリティ機能と復旧機能を無効にし、2 つのバックドアを仕込むため、クリーンアップしたシステムは信頼しにくいからです。
ヒント:プロジェクトをビルドした日以降に、影響を受けたアカウントからのサインインがないか、サーバーと VPN のログを確認してください。盗まれた接続ファイルは、感染したワークステーションではなく攻撃者のシステムから使われます。
LOGIQ がお手伝いできること
LOGIQ は、エンタープライズ Linux や OpenJDK から、それらを取り巻くビルドおよびデプロイのパイプラインまで、組織がオープンソースソフトウェアを安全に運用できるよう支援しています。チームが外部のコードを環境に取り込む方法について第三者の目で確認したい場合や、ビルドシステムを重要な認証情報から切り離すための支援が必要な場合は、お気軽にご相談ください。
Global
Korea
China
Taiwan
Vietnam
Thailand
Indonesia
Portugal
Spain
France
Germany
Egypt
Russia