Graphalgoマルウェア、悪意あるTerraformプロバイダーとGoモジュールを悪用してRATを展開

継続中のGraphalgoソフトウェアサプライチェーン攻撃キャンペーンに関連する脅威アクターが、npmおよびPyPIの枠を超えて活動範囲を拡大していることが分かりました。悪意あるTerraformプロバイダーとGoモジュールを使い、Go言語で書かれた標的型リモートアクセス型トロイの木馬(RAT)を配布しています。

今回の活動が重要なのは、Terraformプロバイダーを通じてマルウェアが配布された初の確認事例である点です。これにより、Infrastructure as Codeのワークフローが、このキャンペーンの攻撃対象領域に直接組み込まれることになりました。

研究者らは、トロイの木馬化された2つのTerraformプロバイダーgocommunity-io/dockerdkreuzwenker/docker、さらに悪意あるGoモジュールであるgocommunity.io/orderedbtreegogets.dev/btreexを特定しました。

kreuzwenker/dockerパッケージは、ダウンロード数5,600万件を誇る正規のkreuzwerker/dockerプロバイダーになりすましたものです。これは、DevOpsエコシステムにおける親近感とタイポスクワッティングを悪用しようとする、攻撃者の意図的な狙いを示しています。

Terraformのペイロードは、悪意ある実行起点をinternal/provider/resource_docker_container_funcs.go内に隠しています。

実行条件は厳格に制限されており、containerNamenetworkID変数を連結した文字列のSHA-256ハッシュが、ハードコードされた値と一致した場合にのみマルウェアが起動します。

この条件により、自動検査による広範な実行は防がれます。これは、このパッケージが日和見的な無差別侵害ではなく、特定の標的向けに作られたものであることを強く示唆しています。

条件が満たされると、プロバイダーは導出されたSHA-256値をAES鍵として使用し、埋め込まれたファイルパスを復号します。

続いて、examples/resources/docker_container/import-resource.sqlite3に偽装されたアーカイブを展開し、その内容を復号した上で、デタッチされたgo run .プロセスを通じてペイロードを起動します。

このZIPアーカイブのハッシュ値は5f892a5424e88a21a3eb3d7f82ebf04d8ac31cdb19ada25153be4165df977d0fです。

第2段階のペイロードは、オペレーティングシステム、アーキテクチャ、ホスト名、ユーザー名、ホームディレクトリ、ハードウェア情報、Node.jsの有無を収集するGo製RATです。

このRATは当初、被害端末のチェックイン情報を、攻撃者が管理するPortfolio Devsワークスペース内のfrontend-devsという名前のSlackチャンネルへ、Slack APIを介して送信します。

この設計では通信を個別に暗号化するため、感染した端末が他の被害者宛のコマンドを読み取ることはできません。

Slackのコマンドチャンネルは、最終的にPortfolio-testersという別のワークスペース内のqa-announcementsチャンネルを使用します。

これと並行して、このRATはArbitrum Sepoliaテストネット上のブロックチェーンデッドドロップの仕組みも利用し、0xAD02b5cDE693529d3bdA0266299501ad0193036Cにあるスマートコントラクトに問い合わせを行います。

Image

このインプラントは暗号化されたタスキングデータを読み取り、setCPubKeyメソッドを通じて自身の一時公開鍵を登録し、3秒ごとにブロックチェーンからの命令をポーリングします。Slackのポーリングは10秒ごとに行われます。

Graphalgoマルウェア

復号されたコマンドは、Node.jsを介した追加のGoまたはJavaScriptペイロードの実行、あるいは自己削除をインプラントに指示できます。

GBhackersと共有されたレポートの中でAikidoが述べたところによれば、このマルウェアはその後、一時的な公開鍵・秘密鍵ペアを生成し、攻撃者が管理する公開鍵を用いて被害者ごとの共有鍵を導出するとのことです。

Slack APIトラフィックとテストネットのブロックチェーンRPCトラフィックを組み合わせるこの手法により、従来型の攻撃者管理インフラへの依存を減らしつつ、耐障害性の高いコマンド&コントロールを実現しています。

同じマルウェアは、8月11日に公開されたgocommunity.io/orderedbtreeと、9月8日に公開されたgogets.dev/btreexにも確認されました。

前者ではGo製インプラントが平文のまま含まれていた一方、後者ではSHA-256ハッシュab01686d87565250fc4989faddb877d793667b07ec217a61cbd798f5695d62f5を持つSQLファイルに偽装したZIPアーカイブの中に隠されていました。

Terraformパッケージと同様、gogets.dev/btreexを起動するには、特定の整数値の価格を含むオブジェクトという、特別に細工された入力が必要でした。

攻撃者はまた、偽造したGitコミットを使い、モジュールの日付を2025年11月に遡らせて改ざんしていました。

Go Modulesはコミットのタイムスタンプに依存する仕組みであるため、この偽装された日付はGoプロキシやpkg.go.devにもそのまま反映され、パッケージがあたかも成熟しているかのような誤った印象を与えていました。

運営者は、自らのパッケージを裏付けるために、gocommunity[.]iogogets[.]devという、見せかけの偽Goパッケージエコシステムを2つ用意していました。

両ドメインとも、関連するGitHub組織が作成されてから1日以内に登録されており、外部の開発者向けに独自のインポートパス(vanity import path)を提供すると謳っていたものの、実際に外部開発者がパッケージを公開できる機能は備えていませんでした。

このインフラは、攻撃者が管理するモジュールに正当性を付与することだけを目的として構築されたものと見られます。

Image

ハードコードされた公開鍵302a300506032b656e032100bad013df6eec5d686f4cc8551e0a5c87a0135164bdd1dafb1c75141d1b526702により、このGoペイロードは少なくとも2026年4月から観測されているGraphalgo npmマルウェアと結び付けられます。

これまでの調査では、Graphalgoは暗号資産・開発者コミュニティを狙った偽のリクルーター勧誘、悪意ある依存関係、段階的に展開される暗号化ペイロード、トークンで保護されたRATインフラなどと関連付けられてきました。

今回のキャンペーンの最新の進化形は、暗号化されたnpmローダーに関する既存の調査結果とも一致しています。そこでも、正確な暗号学的トリガーとSlack/ブロックチェーンの二重通信を用いて、意図した標的にのみ起動を限定する手法が使われていました。

各組織は直ちにTerraformのロックファイル、内部モジュールプロキシ、Goモジュールキャッシュ、CI/CDのビルドログを対象に、特定されたパッケージ名の有無を監査すべきです。

セキュリティチームはまた、開発者の作業端末やビルドインフラから、業務上の必要性が認められないにもかかわらずapi.slack.com、公開ブロックチェーンRPCサービス、Arbitrum Sepoliaへの外部通信が発生していないかを調査すべきです。

今回の一連の活動は、ソフトウェアサプライチェーンの脅威が従来型の言語別レジストリの枠を超えて拡大していることを示しています。

Terraformプロバイダー、Goモジュール、GitHub組織、パッケージのvanityドメイン、Slackワークスペース、ブロックチェーンのテストネットが組み合わされ、価値の高い開発・DevOps標的を狙った、連携の取れた配布システムが構築されつつあります。

IOC(侵害指標)

カテゴリ 名称/ファイル バージョン SHA-256ハッシュ
Terraformプロバイダー gocommunity-io/dockerd 全バージョン
Terraformプロバイダー kreuzwenker/docker 全バージョン
Goモジュール gocommunity.io/orderedbtree 全バージョン
Goモジュール gogets.dev/btreex 全バージョン
ファイル import-resource.sqlite3 5f892a5424e88a21a3eb3d7f82ebf04d8ac31cdb19ada25153be4165df977d0f
ファイル btreex.sql ab01686d87565250fc4989faddb877d793667b07ec217a61cbd798f5695d62f5

注: IPアドレスおよびドメインは、誤って名前解決やハイパーリンク化されるのを防ぐため、意図的に無害化表記(例: [.])としています。再有効化(re-fang)は、MISP、VirusTotal、SIEMなど管理された脅威インテリジェンス基盤上でのみ行ってください。

SOCのアラート調査時間を1件あたり21分短縮。即座にIOCコンテキストを得て迅速に対応できる体制をSOCに: TI Lookupを貴社のSOCに統合する

翻訳元: https://gbhackers.com/graphalgo-malware/

本記事は gbhackers.com の記事を翻訳・要約したものです。