「GitHub-io」トラップ:BoryptGrabがSEOルアーとSSHトンネルを使ってあなたのPCをハイジャックする方法

新興のマルウェア株がゲーム強化ツールと違法にクラッキングされた一般的なアプリケーションの偽造バージョンの外観の下で増殖しており、GitHubの数百の偽造リポジトリにわたって配布されています。一見すると、戦術は単純に見えます。被害者には、FPS高速化ツール、Counter-Strike 2のスキンマニピュレーター、または「プロフェッショナル」版Voicemodなど、魅力的な名前が付いたZIPアーカイブが提示されます。しかし実際には、実行チェーンは非常に複雑です。偽造ダウンロードポータルの背後には、C/C++、VBScript、.NETで作成されたローダー、Vidarマルウェアの変異株、離散的なGolangコンポーネント、およびリバースSSHトンネルを構築するように設計されたPythonベースのバックドアを含む多層的な配信アーキテクチャが潜んでいます。これにより、支配されたシステムをリモートで支配されるノードに変えます。

調査者はこの新興の情報窃盗ツールを「BoryptGrab」と命名しました。その基本的なレパートリーは情報窃盗ツールの分類学を象徴していますが、驚くべき幅で実行されています。Webブラウザ、デスクトップ暗号資産ウォレット、ブラウザ拡張機能、Telegram、およびDiscordからテレメトリーを盗み出し、スクリーンショットをキャプチャし、システム全体の知能を収集し、事前に決定された拡張子に基づいてトラフィックの多いディレクトリからファイルを体系的に流出させます。特定のバリエーションは、TunnesshClientバックドアを取り込む能力をさらに備えています。このコンポーネントは単なるデータ盗難を超越しています。リバースSSHトンネルを構築し、トラフィック転送プロトコルを確立し、その演算子の指令を実行する準備ができています。

このキャンペーンの初期の痕跡は2025年にまでさかのぼります。発掘された最も古いZIPアーカイブは2025年後期のタイムスタンプが付いており、最も古く特定されたGitHubアカウント内の初期のコミットは2025年4月に実現しました。これらのアーカイブの命名法は厳密な内部ロジックに従います。一般的なソフトウェアのタイトル、ゲーム用語、バージョン反復、および「download」、「tool」、「premium」、「github-io」などのキーワードを常に組み込んでいます。目立つ例には、Voicemod Pro、Wondershareを装う偽造アーカイブ、およびValorant、Call of Duty、Rainbow Six Siege、Arena Breakoutの強化ツール、および「git deployer app」などのより曖昧なルアーが含まれます。別の層は、その命名法内に明示的に「github-io」文字列を特徴とするZIPファイルで構成されており、キルチェーンの後続段階を指す明らかなインジケーターです。

配布シーケンスは偽造GitHubリポジトリを通じて開始されます。このキャンペーンの設計者は検索エンジン最適化(SEO)に対する深い執着を示しました。多くのリポジトリのREADMEファイルはSEOキーワードで密集しており、これらの不正なページを検索エンジンの階層内で上げるように戦略的に設計されています。ある顕著な例では、Voicemod Proダウンロードポータルを装うリポジトリはGoogle検索インデックス内で正規の結果のほぼ直下に現れました。これだけで感染を保証するのに十分です。無料のユーティリティを探しているユーザーは見覚えのある名前を見つけて、公式ドメインから悪意のあるGitHubページに無意識のうちに転向させられます。

その後、操作はGitHubの固有インフラストラクチャとして巧妙に偽装します。有毒なREADMEはgithub.io/.github/に構造的に類似したハイパーリンクを含んでおり、その基礎となるコードは標準的な.githubディレクトリに偽装した離散的なリポジトリ内に隔離されています。仲介HTMLページ内で、調査者はロシア語で表現された注釈を発掘しました。基礎となるロジックは初歩的ですが、悪党にとって深く有利です。ページはソースコードから厳密にハードコードされたハイパーリンクを抽出し、Base64エンコードされたURLを取得し、宛先アドレスを復号化し、次のノードへのリダイレクトを統合します。最終的な仲介サイトは偽造GitHubダウンロードインターフェースを細心に描画し、悪意のあるペイロードで満たされたZIPアーカイブを動的に生成します。

このキャンペーンは単一の線形軌跡に限定されていません。設計者は複数の配信ベクトルを操ります。特定のリポジトリでは、調査者は削除されたscripts.js成果物を発見し、これまで中間URLをフェッチしてリダイレクトを実行していました。代替反復では、JavaScriptは単にアドレスを取得するだけではなく、むしろ暗号化されたハイパーリンクを取り込み、Advanced Encryption Standard(AES)を使用してそれを復号化し、その後ユーザーを前に推し進めます。より現代的なバリエーションはシンプルなダウンロードシーケンスを完璧に模倣するように設計されたPythonスクリプトを統合しています。これらのページの一部は追跡テレメトリーを演算子に秘密裏に送信しています。言い換えると、GitHubは単なる一時的なショーフロントとして利用されているのではなく、むしろルアー、リダイレクト、および偽造ローダーの全体的で複雑なエコシステムとして利用されています。

感染の主要なベクトルはDLLサイドロードに固定されています。ZIPアーカイブは無意識のうちに侵害されたlibcurl.dllをサイドロードする実行ファイルを含んでいます。この戦術のエレガンスは、表面的には良性の実行ファイルを提示する能力にあり、一方悪意のあるロジックは完全にアプリケーションと同時にロードされるDLLに転置されています。破壊されたライブラリは独自のリソースセクションからペイロードを抽出し、その後XORとAESの組み合わせを使用してCipher Block Chaining(CBC)モードで動作するランチャーペイロードを復号化します。この復号化の後、新たに復号化されたモジュールからエクスポートされたEntryWrapper関数を呼び出します。

このランチャーはダウンロード座標をXOR難読化で細心に難読化し、その後コマンドアンドコントロール中枢からBoryptGrabペイロードを直接取得します。いくつかのバリエーションでは、ローダーは-bパラメーターを窃盗ツールに渡し、ビルド命名法を規定します。特定された値にはShrek、Sonic、Leon、CryptoByte、Yaropolk、Yarostnick、および無数の他の指定が含まれます。これらのビルド名は内部運用タグとして機能し、キャンペーンバリエーション、トラフィック出所、または特定のターゲットグループを区別するために使用される可能性があります。代替エンドポイント経由で、同じランチャーは補助EXE成果物を取得することができます。調査者は、これらのファイルのサブセットがVidar窃盗ツールの高度に難読化されたバリエーションを構成していることを確認しました。さらに別の軌跡はPyInstallerでコンパイルされたTunnesshClientコンポーネントにつながり、別の経路はGolangローダーのHeaconLoadで終わります。

このアーキテクチャ内で、TunnesshClientはScheduled Tasksの統合を通じてその永続性を確保します。ランチャーは%TEMP%ディレクトリ内にXML成果物を生成し、それらをブループリントとして使用して、ダウンロードされたPyInstallerバックドアを呼び出すタスクを登録します。このソフィスティケートされたメカニズムはシステム再起動後の耐久性を保証し、悪党が侵害されたホストに対する支配を手動で再確立する退屈な必要性から解放されます。

二次的で非常に顕著な経路はVBScriptローダーの周りに構築されています。特定のZIPバリエーションでは、DLLサイドロード機構は無意味な変数が満載のVBScriptに置き換えられ、フォレンジック分析を完全に混乱させるように設計されています。重要な文字列は整数配列として細心に隠蔽されており、端的な名前の関数は忠実にこれらの配列を読み取り可能なテキストに変換します。スクリプトは特権昇格を統合するロジックを含んでおり、最終的にBase64エンコードされたPowerShellペイロードを展開します。復号化後、PowerShellスクリプトは外部ノードからバイナリ成果物を取得して実行します。特定の標本では、VBScriptはさらに明示的にMicrosoft Defenderに除外を注入し、C:\ドライブが完全にアンチウイルススキャンから免除されることを確認しています。情報窃盗ツールにとって、このマニューバーは深く説明的です。演算子の命令は単なるデータ盗難ではなく、防衛による傍受から完全に遮られた絶対的な障害のない成果物抽出を確保することです。

VBScriptを通じてダウンロードされた成果物は常に別のC/C++ランチャーコンポーネントとして現れます。それは/api/{BUILD_NAME}に構造的に類似したパスを通じて悪党のAPIと通信し、最終的にBoryptGrabを取得します。特定の実行チェーンでは、窃盗ツール自体がダウンロードTunnesshClientのタスク担当者であり、ランチャーの役割を横取りします。そのようなコンポーネント相互交換可能性は検出方法論を指数関数的に複雑にします。あるビルドではバックドアが初期段階で出現する可能性がありますが、別のビルドではデータ流出の勝利の結論に従ってのみ現れます。

補助的な枝が豊富に存在します。あるバリエーションは隠蔽されたBase64エンコードされたVBScriptローダーを含むC/C++実行ファイルを活用し、その後別の座標からバイナリを取得します。その他のランチャー反復は/api/app/api/app.zip/api/payload、および/api/client2などのエンドポイントと相互作用します。特定のZIPアーカイブはHeaconLoadを直接配信し、中間段階を完全にバイパスします。その結果、キャンペーンは操作の厳密で線形なシーケンスのようには見えず、むしろ高度に相互交換可能なコンポーネントから鍛造されたモジュール構造のようです。

HeaconLoadはGoで開発され、配信の後続段階を統制しています。Windows Registry内のRunキーを通じてその永続性を固定し、同時にScheduled Taskを通じて統制しています。この根付きの後、演算子のサーバーの/healthcheckエンドポイントへのHTTP POSTリクエストの送信を開始します。各ビーコン送信は重要なシステムテレメトリーと厳密にハードコードされたビルドタグを運搬します。発見されたタグにはleon、shrek、sonic、yaropolk、yarostnick、yasno、kylka、およびvoblyaが含まれます。サーバーはbundle_availableおよびbundle_hashフィールドで応答します。前者のフラグはアーカイブがダウンロード準備ができているかどうかを規定し、後者は暗号化チェックサムを提供します。バンドルが利用可能な場合、HeaconLoadはZIPペイロードを取得し、その内容を抽出し、発見された最初の実行ファイルを実行します。このコンポーネントのログ内で、調査者は再びロシア語で表現されたメッセージを観察しました。

別の配信分岐はVidarのカスタム反復で終わります。/api/custom_exe?build={BUILD_NAME}を通じて取得されたバイナリは、このファミリーに固有の特徴的なネットワーク署名を細心に保存しています。information.txtなどのファイルをHTTP POSTを介してサーバーに送信しながら、複数の難読化層を展開します。文字列は暗号化によってXORを通じて隠蔽され、コードは不透明な述語と余分なブロックで散らばっています。運用ロジックのために構築されたのではなく、明示的にリバースエンジニアリング作業を厳しく妨害するために設計されています。さらに、このバリアントは動的にAPIを解決し、コード注入またはAsynchronous Procedure Call(APC)注入を実行する能力を持ち、そのコードを他のプロセスの聖域内に埋め込んだり、その呼び出しをスレッドの非同期手順マニフェスト内にキューイングしたりします。

BoryptGrabそのものはC/C++で鍛造されています。--output-path(または-o)パラメーターを備えており、収集された知識が隔離される予定のディレクトリを明示的に規定しています。これらのビルドの一部はまた--build-name(または-b)パラメーターをサポートしています。この指定された値は最終的にUserInformation.txt成果物内に存在するBUILD NAMEフィールド内に記述されます。引数が省略された場合、標本のサブセットはデフォルトで標準的なモニカー「No_name」になります。代替バリアントでは、ビルド命名法は不変にバイナリに直接ハードコードされていますが、特定の標本は完全にBUILD NAMEを最終レポート内に記述することを控えています。年代順のタグは、Data、Leon、Yasno、CryptoByte のようなニュートラルな指定からスペクトラムを広げ、深くぶっきらぼうな内部名まで起動します。これは継続中の開発サイクルがやや初歩的ながら確かに熱心であることをさらに強調する現実です。

主要な操作を開始する前に、BoryptGrabは仮想化環境内に絡み取られているかどうかを厳密に確認します。これを達成するため、標本はRegistry キーを積極的に調査し、仮想化アーキテクチャに密接に関連するファイルを細心に探します。さらに、窃盗ツールはアクティブなプロセスのロスターを既知の命名法の事前コンパイルされたレッジャーと相互参照し、解析情報機器の存在を明示的に探します。この監査に続いて、それは昇格された権限を確保することを努めます。このフォーミダブルな反VM および反分析戦術の合成はサンドボックス環境内での爆発の確率を軽減し、行動分析を厳しく難読化させるために重要です。

演算子が手動でターゲットディレクトリの指定を怠った場合、窃盗ツールは自律的に収集された成果物を収容するためのカスタムフォルダを生成します。このディレクトリの命名法は現在のタイムスタンプ、ホストのパブリックIPアドレス、および対応する国コードの合成です。その後、窃盗ツールはその容赦ない、体系的な収穫を開始します。

Webブラウザとの相互作用は特に詳しく検討する価値があります。BoryptGrabはBrave、CentBrowser、Chromium、Google Chrome、Microsoft Edge、Mozilla Firefox、Opera、Vivaldi、およびYandex Browserからテレメトリーを積極的に抽出します。Chromiumベースのブラウザを支配するため、それはChromeのApp-Bound Encryptionを迂回するための洗練されたテクニックを展開します。これは特定のアプリケーションとシステムコンテキストにクッキーやアーカイブされたパスワードなどの機密秘密を不変に結びつけるためにのみ設計されたセキュリティパラダイムです。悪党はApp-Bound Encryptionの回避と復号化に明示的に専用の公開GitHubリポジトリから派生した方法論をシームレスに統合しました。BoryptGrab内に隠蔽されたのはPAYLOAD_DLLという暗号化リソースです。その復号化に続いて、それはオープンソースProof-of-Concept(PoC)プロジェクトに著しく同等のロジックを明らかにし、FirefoxおよびYandex Browserからのデータ抽出用にカスタマイズされた関数によって著しく拡張されています。

このブラウザテレメトリーの操作を容易にするため、窃盗ツールは同時に%TEMP%ディレクトリにヘルパーコンポーネントx32_chromium.exeをダウンロードします。この補助的なユーティリティはブラウザ成果物の抽出または復号化に関連する高度に特定の操作を実行するために厳密に必須です。

Webブラウザの領域を超えて、BoryptGrabは暗号資産ウォレットを積極的にターゲットにします。ターゲットマトリックスは広大です。Armory Wallet、Atomic、AtomicDEX、Binance、Bitcoin Core、BitPay、Blockstream Green、Chia Wallet、Coinomi、Copay、Daedalus Mainnet、Dash Core、Dogecoin、Electron Cash、Electrum、ElectrumLTC、Ethereum、Exodus、GreenAddress、Guarda、Jaxx Desktop、Komodo Wallet、Ledger Live、Ledger Wallet、Litecoin Core、MEW Desktop、MyEtherWallet、NOW Wallet、Raven Core、StakeCube、Trezor Suite、Wasabi Wallet、および無数の他の。窃盗ツールはそれぞれのディレクトリを容赦なく探し、その内容を略奪し、その操作を細心に記録します。これは暗号資産の略奪が建築者にとっての最重要目的であったことを明白に示すログです。

補助的な機能である「File Grabber」は、トラフィックの多いディレクトリから特定の拡張子を持つファイルの体系的な収穫に権限を与えます。基礎となるコードは特に顕著な正字法の誤り、「Filegraber」を含んでおり、これは間接的にやや杜撰な内部開発倫理を示唆しています。それにもかかわらず、その関数自体は深く実用的です。演算子はパスワード、トークン、ウォレットのみを収穫するのではなく、後続のアクセスを確保したり勒索を容易にしたりするために不可欠であることが証明される貴重なドキュメント、スプレッドシート、設定ファイル、バックアップ、および補助データを収穫します。

略奪はそこでは終わりません。BoryptGrabはTelegram成果物を流出させ、ブラウザパスワードを盗む能力を持ち、より初期の反復では、Discordトークンを収穫します。その操作の終了時に、盗まれた全体のトラブは圧縮されてアーカイブに圧縮され、秘密裏に悪党のサーバーに送信されます。

この全体的な構成内で最も深く危険なモジュールはTunnesshClientであり、Pythonで著作権所有され、PyInstallerによってきちんとパッケージ化されています。その最重要の指令は盗難ではなく、リモートコマンドアンドコントロール導管の建築を鍛造することです。このコンポーネントは初めに/api/get_challengeおよび/api/get_credentialsエンドポイント経由で演算子のサーバーと通信します。サーバーが暗号化チャレンジを発行します。クライアントは必須のSHA256ハッシュを計算し、暗号化された反論を受信し、その後重要なSSH認証情報を含むJSONペイロードを復号化します。その後、ソフトウェアはシステムテレメトリーを/api/get_portに送信し、転送の指定されたポート番号を取得し、SSHトンネルを確立します。

リバースSSHトンネルはアクセスの正統な例を基本的に破壊します。演算子が被害者のマシンへの直接接続を開始する代わりに、支配されたシステムは自律的にSSH接続を確立します。外側へ悪党のサーバーに向かい、演算子がその後進入する可能性があるある導管を引き裂きます。この方法論はNetwork Address Translation(NAT)アーキテクチャ、プロキシ、および無数のネットワークフィルタリングシステムを迂回するために非常に有利です。被害者のマシンから発信されたアウトバウンド接続は、多くの場合、インバウンド要請よりも著しく疑わしく見えることは頻繁にあります。

トンネルの成功した確立に続いて、TunnesshClientは数値操作コードで規定されたコマンドのレパートリーを実行する権限を与えられます。特定のコードはSOCKS5プロキシパラダイムを活性化させます。別のコードはシェルコマンドを爆破します。一方、離散的なコードはファイルの列挙、被害者のファイルのBase64エンコード送信、ホストへの任意ファイルの記述、カスタムファイル検索、およびZIPアーカイブに圧縮されたディレクトリ全体の送信を容易にし、同様にBase64でエンコードされています。つまり、演算子は単なる通信導管ではなく、ほぼ完全に機能した、侵害されたシステムの深い相互的な操作を行うための小型ツールキットを確保します。

TunnesshClientの二次的な反復も存在し、異なるパラダイムの下で動作します。被害者のマシン上に直接ローカルSSHサーバーを構築し、その後HTTP POSTリクエスト経由で演算子に必須ログインおよびパスワードを送信します。その後、ローカルSSHサービスへのトラフィックを直接転送することができます。この特定の標本はより切り詰めたコマンドセットをサポートし、その機能を単なるプロキシおよびローカルSSH転送に効果的に低減します。それにもかかわらず、悪党にとって、これはそれらの足がかりを固定し、さらなる手動横移動を容易にするのに十分すぎるほどです。

この実行チェーン全体を通じて、調査者は繰り返しロシア語を指す明確な言語的マーカーを観察しました。HTMLに埋め込まれた注釈、バイナリ内に保存されたログ、エラー診断、および離散的インフラストラクチャの事柄。この証拠の流合体は演算子の出所を確実に保証しませんが、演算子が確かにロシア語を話す開発環境から来ているか、またはキャンペーンへのロシア語を話す個人の積極的な参加を注意深く仮定するための説得力のある基礎を提供します。

BoryptGrabがもたらす最重要の脅威は、単一のエキゾチックなテクニックからではなく、複数の高度に有効な戦術のマスターフルな統合から生じます。建築者はGitHubを店舗およびSEOルアーの両方として武装させ、github.io経由でダウンロード軌跡を破壊し、動的に悪意のあるZIPアーカイブを生成し、VBScript、.NET、C/C++、およびGoコンポーネント間をシームレスに切り替え、高度なブラウザ防衛迂回を統合し、暗号化されたリソース内で重要なロジックを隔離し、有利と思われる場合、リバースSSHトンネルで武装したバックドアをデプロイします。無意識のユーザーにとって、この大惨事は「無料ツール」をダウンロードしたいという平凡な欲求によって開始されます。攻撃者にとって、その唯一のクリックはパスワード、暗号資産ポートフォリオ、および機密ドキュメントの全体的な盗難で結論付けられ、システムに対する永続的で秘密裏なリモート支配の確立で結論付けられます。

翻訳元: https://meterpreter.org/the-github-io-trap-how-boryptgrab-uses-seo-lures-and-ssh-tunnels-to-hijack-your-pc/

ソース: meterpreter.org