ブロックチェーンの「空の送金」から接続先IPを解読、新たなサーバー隠蔽手法「NullReceiver」を用いるトロイの木馬化されたnpmパッケージが発見される
要点
-
北朝鮮との関連が疑われる、ブロックチェーンを悪用した新たな指令(C2)サーバー隠蔽手法「NullReceiver」が確認された。
-
この手法は、正規のライブラリを装って悪意あるコードを仕込んだ2つのnpmパッケージ「bianira-ui」および「fluid-type-ui」に組み込まれていた。
-
従来の技術とは異なり、スマートコントラクトを使用せず、送金先アドレスのデータそのものに接続先のIPアドレスを隠すことで検出を困難にしている。
-
該当するパッケージはすでにnpmから削除されているが、削除されるまでに合計で約700回ダウンロードされていた。
-
ブロックチェーンを悪用して悪意ある指令サーバーの接続先情報を隠蔽する、新たなサイバー攻撃手法が確認された。セキュリティ研究グループのOpenSourceMalwareが公開した調査結果によると、この手法は「NullReceiver(ヌルレシーバー)」と名付けられ、北朝鮮のハッキンググループとの関連が指摘されている。この手法は、JavaScriptの外部ライブラリを管理するエコシステムであるnpmに公開された2つのパッケージに組み込まれていたことが明らかになった。
発見されたパッケージとダウンロード数
今回の攻撃手法が確認されたのは、「bianira-ui」および「fluid-type-ui」という2つのトロイの木馬化されたパッケージである。トロイの木馬化とは、正規のソフトウェアを装って内部に悪意あるコードを仕込む手法を指す。
これらのパッケージは、2026年7月28日に公開されてからすでに削除されているが、それまでの間に数百回ダウンロードされていた。具体的には、npmユーザー「npmuser1101」によってアップロードされた「bianira-ui」が109回、別のユーザー「npmuser3002」による「fluid-type-ui」が587回ダウンロードされていたという。
進化するブロックチェーンの悪用技術
ブロックチェーン上に対策側から検出されにくい形で接続先情報を隠す技術は、2023年10月にGuardio Labsによって「EtherHiding(イーサハイディング)」として初めて報告された。EtherHidingは、パブリックブロックチェーン上のスマートコントラクト(ブロックチェーン上で自動的に実行されるプログラム)に悪意あるコードを書き込んでおく手法である。この手法は、Google Threat Intelligence Group(GTIG)により、北朝鮮のハッキンググループがLinkedInを介して標的にマルウェアを送り込む「Contagious Interview」と呼ばれるキャンペーンなどで使用されていることが確認されていた。
今回確認されたNullReceiverは、このEtherHidingをさらに改良した技術であると位置づけられている。
NullReceiverの仕組みと利点
従来のEtherHidingでは、スマートコントラクトの呼び出しや、トランザクションの「calldata(ブロックチェーンの取引時に渡される入力データ領域)」にC2サーバー(乗っ取ったコンピュータを外部から制御する指令サーバー)のIPアドレスやスクリプトを隠していた。そのため、攻撃側はあらかじめ固定された公開用の宛先アドレスを用意する必要があり、セキュリティ対策側がそのアドレスを監視して追跡することが可能だった。また、データをブロックチェーンに書き込むための「ガス代(取引にかかる手数料)」も発生していた。
一方、NullReceiverではスマートコントラクトもcalldataも使用しない。攻撃者が用意したウォレット(暗号資産の口座)から、送金金額も送信データもゼロの「空の送金」を実行し、その「宛先アドレス(受信者アドレス)」のデータそのものにC2サーバーのIPアドレスを埋め込む。
セキュリティ研究者のポール・マッカーティ(Paul McCarty)氏は、「マルウェアは攻撃者のウォレットを検索し、最新の送信トランザクションの宛先アドレスを読み取って、そのアドレスのバイトから直接C2 IPをデコードする。スマートコントラクトやペイロードフィールドは一切使用しない」と説明している。
これにより、実体のない架空のアドレスが宛先となるため、監視対象となる固定の宛先が存在せず、追跡や帰属の特定が非常に困難になる。また、スマートコントラクトを使用しないため、取引手数料(ガス代)を安く抑えられるという特徴もある。
具体的な動作の流れと解読のプロセス
NullReceiverが組み込まれたパッケージは、被害者のコンピュータ上で以下の手順を実行してC2サーバーに接続する。
- パッケージ内に直接記述された攻撃者のウォレットアドレス「0xa322e5f3d311d3080e6f0121063e9adc2490ef1a」を検索する。
- そのウォレットから送信された最新のトランザクションを特定する。
- そのトランザクションの宛先アドレス(To)を読み取る。
- 宛先アドレスの最初の4バイトを16進数表現から数値に変換して、接続先のIPアドレスをデコードする。
- 抽出したIPアドレス「166.88.134.62」に接続する。
実際のウォレット取引履歴を調査した結果、送信先アドレスはすべて「0xa658863ea658863e68656c6c6f6970626f742121」に指定されていた。このアドレスの先頭4バイト「a658863e」は、IPアドレスの「166.88.134.62」に変換される。残りのデータ「68656c6c6f6970626f742121」は、文字コード(ASCIIコード)を変換すると「helloipbot!!」という文字列になる。
このウォレットでは、パッケージが公開される前日の2026年7月27日から、これまでに合計68回のトランザクションが記録されている。