調整されたマルウェア操作が、LuaJITベースのローダーであるSmartLoaderと、後続のStealC情報盗聴器を配布するために偽のGitHubリポジトリを悪用しており、少なくとも109個の悪意あるリポジトリが103個のアカウント全体にわたってアクティブです。
キャンペーンは、複製されたオープンソースコード、難読化されたLuaステージ、ブロックチェーンバックアップされたC2解決を組み合わせて、検出を回避し、インフラを敏捷に保ちます。
GitHubリリースに頼る代わりに、攻撃者はZIPアーカイブをリポジトリ深くに埋め込み、READMEを書き直してユーザーをその隠された保存先に向かわせました。
2026年4月12日現在、103個のGitHubアカウント全体にわたる少なくとも109個の悪意あるリポジトリがこのパターンに従っており、1回限りのコピーキャットではなく、スケーリングされた自動化エコシステムを示しています。
ZIPタイムスタンプ、PE コンパイル時刻、コミット履歴のタイムラインは、少なくとも7週間にわたるアクティビティを示しており、2026年4月初旬まで新しいリポジトリが作成されています。
この操作は、GitHubの正当なセキュリティプロジェクトのトロイの木馬化されたクローンの発見から始まり、攻撃者は完全なソースツリーをコピーしたが、配信パスを配線し直しました。
複数のアカウントが複数の悪意あるプロジェクトを並行してホストしており、貢献アクティビティは密集したバーストで現れ、集中化されたツールが誘いとリンクをバッチで更新できることを示唆しています。
インフラの再利用、一貫したステージングレイアウト、均一なSmartLoaderの動作は、単一のオペレータまたは厳密に調整されたクラスタを示しています。
ルアーとしての偽GitHubリポジトリ
攻撃者のルアーは、検索の可視性とトレンドのオープンソースツールに対するユーザーの信頼に依存しています。星が上昇している新しく人気のあるリポジトリは、新しいアカウントの下にクローンされ、ファイル名とコードを保持しているため、カジュアルな検査でも正当に見えます。

READMEは大幅に修正されています:詳細なインストール手順と技術的なメモは削除され、shields.ioスタイルの大きな「ダウンロード」バッジとカラーマークダウンボタンに置き換えられ、すべては同じ埋め込まれたZIPパスに解決されます。
リポジトリの説明とトピックも調整されており、時には関連のないSEO用語で、偽のコピーがGitHubの検索結果のオリジナルと並んでいるのを助けるためです。
埋め込まれたアーカイブは、通常のビルドアーティファクト(たとえば、ネストされた「プロジェクト名-バージョン.zip」)に似たパスの下に存在し、ツリーに溶け込むのに役立ちます。

このリアルなコード、積極的なダウンロード プロンプト、埋め込まれたZIPの組み合わせは、開発者とセキュリティ研究者の両方にとって効果的なソーシャルエンジニアリングファネルを作成します。
各悪意のあるZIPには、通常3つまたは4つのファイルが含まれます:1行のバッチランチャー、名前が変更されたLuaJIT 2.1.0-beta3 GUI実行可能ファイル、オプションのlua51.dll、および無害な.txtまたは.log名で保存された難読化されたLuaスクリプト。
バッチファイルは、Windowsの「start」コマンドとGUIサブシステムバイナリを使用してペイロード付きのインタプリタを呼び出すため、コンソールウィンドウは表示されません。バリエーション全体では、ファイル名は装飾的です(loader.exe、unit.exe、boot.exe、java.exe)が、実行モデルは安定しています。
Luaペイロードは、単一行のPrometheus難読化SmartLoaderスクリプトで、サイズは約300 KBで、算術マスク定数、エンコードされた文字列、ランダム化された識別子、分析を挫折させるVMスタイルディスパッチャーを備えています。
実行時に、SmartLoaderはLuaJITのFFIを使用してWindowsの構造とAPIを宣言し、コンソールウィンドウを隠し、アンチデバッグチェックを実行し、ホストをフィンガープリントし、GDI経由でスクリーンショットをキャプチャし、後続のタスクに備えます。
スクリプトはまた、PE解析構造とスレッド作成プリミティブを定義し、ディスクに触れずに追加のPEペイロードをメモリにロードすることができます。
ブロックチェーンバックアップされたC2とStealCの配信
C2エンドポイントをハードコーディングする代わりに、SmartLoaderはJSON-RPC eth_callを介してPolygonスマートコントラクトをpolygon.drpc.orgにクエリし、デッドドロップリゾルバーとして機能する固定コントラクトアドレスとセレクターを使用します。
このパターンは、意味のある長期開発アクティビティではなく、ステージングされたリポジトリ全体にわたるREADMEとリンクの更新の繰り返しを含む、オペレータの日常的なメンテナンスワークフローを反映している可能性があります。
コントラクトは現在のC2 URLを含むエンコードされた文字列を返します。ローダーはこれをデコードして、単一の/24ブロック内のベアIP HTTPエンドポイントに到達します。
バイナリではなくオンチェーンデータを変更することで、オペレータはステージングされたサンプルをすべて再構築することなくインフラストラクチャをローテーションできます。
サーバーが解決されると、SmartLoaderは/api/<victim_id>にmultipart/form-data POSTリクエストを送信し、ホストメタデータとスクリーンショットなどの収集されたアーティファクトを流出させます。
レスポンスには暗号化された「loader」指示と「tasks」リストが含まれており、マルウェアはこれをメモリで復号化して実行し、タスク完了はPOST /task/<victim_id>を介して報告され、通常はHTTP 204を返します。

並行して、SmartLoaderは攻撃者が制御するGitHubリポジトリに接続し、冗長なLuaステージとパックされたStealC PEに復号化する暗号化されたblobをホストしており、ローダーは組み込みのPEローダーを使用してこれを反射的に実行します。
永続性は、無害なソフトウェア(たとえば、オーディオマネージャーまたはOfficeコンポーネント)になりすまし、%LOCALAPPDATA%の下に保存されたバイナリとLuaステージをポイントする2つのスケジュールされたタスクを介して維持されます。
1つのタスクはLuaステージのキャッシュされたコピーを実行して、元のGitHubリポジトリのテイクダウンから生き残り、もう1つのタスクは各実行時にGitHubから新しい暗号化ステージを再ダウンロードしてローカルクリーンアップから回復します。
防御者は、いくつかの高シグナル動作を狩ることができます:ユーザーが書き込み可能なパスから.txtまたは.log引数で起動された署名されていないLuaJITバイナリ、%TEMP%または%LOCALAPPDATA%からの予期しないLuaランタイムまたはlua51.dllの読み込み、Polygonエンドポイントへの非ブラウザJSON-RPC呼び出し、SmartLoaderの特定のスマートコントラクトeth_callパターン。
予防制御には、GitHubソースのより厳格な検証、ユーザーディレクトリからの署名されていないインタプリタのブロック、GitHubの生のトラフィックの検査、非開発システムからのブロックチェーンRPCエンドポイントへのアクセスの制限が含まれます。
翻訳元: https://gbhackers.com/109-fake-github-repos/