


概要
EtherRATマルウェアを分析している過程で、msiファイル形式で配布されたEtherRATマルウェアを発見した。
EtherRATマルウェアが使用したスマートコントラクトを分析した結果、関連するスマートコントラクトのアドレスを追加で確保した。
スマートコントラクトのトランザクション履歴を通じて、C&Cサーバーのアドレスを追加で確保した。
C&Cサーバーとスマートコントラクトにおいて、Tsundere Botnetとの関連性が確認された。
1. 概要
EtherRATマルウェアは、sysdigのブログを通じて初めて報告されたJavaScriptベースのマルウェアである。当該マルウェアはReact2Shellの脆弱性(CVE-2025-55182)を介してLinux環境を対象に拡散された。
EtherRATマルウェアを分析していたところ、EtherRATマルウェアのC&Cサーバーと通信する多数のmsiファイルを確保し、分析の結果、Windows環境を対象に配布されたEtherRATマルウェアが存在することを確認した。特に一部のファイルは、特定のゲームのMODインストールファイルに偽装して圧縮ファイルに含まれた形態であることが確認された。
本稿は、ゲームのMODインストールファイルに偽装したEtherRATマルウェアに関する分析内容と、EtherRATマルウェアが使用するスマートコントラクトの分析結果を扱う。
2. 攻撃分析

caption - 攻撃概要図
2.1. 99 Nights Script.zip
圧縮ファイルには、「99 Nights Script Installer.msi」ファイルと、GTAオンラインのチートモード「Ultimate Menu」を動作させるためのファイルが含まれています。

caption - 圧縮ファイルのプレビュー
「99 Nights Script」は人気ゲームRobloxのオープンソースModの名前であり、攻撃者はEtherRATマルウェアを該当するModのインストールファイルに偽装し、ユーザーにマルウェアを実行させようと誘導しました。
2.2. 99 Nights Script Installer.msi
msiファイルを実行すると、3つのファイルが「%LOCALAPPDATA%\msitemp」パスに作成されます。作成されるファイルの情報は、以下の表をご参照ください。
caption - 作成ファイル一覧
ファイルの作成後、msiのCustomAction機能により、syBKJQiN.cmdファイルが実行されます。

caption - msiファイルのCustomActionテーブル
2.3. syBKJQiN.cmd
バッチファイルが実行されると、まずWindows用のnodejsを「%LOCALAPPDATA%\6gahPD」パスにダウンロードします。その後、先ほど作成された「Dt2fWrOyPtRxL28.js」および「IEgrjQr6OI6C3pf」の2つのファイルを「%LOCALAPPDATA%\6gahPD」パスにコピーします。コピーが完了すると、ダウンロードしたnodejsを使用して「Dt2fWrOyPtRxL28.js」を実行します。

caption - syBKJQiN.cmdのコード
2.4. Dt2fWrOyPtRxL28.js
「Dt2fWrOyPtRxL28.js」ファイルは、obfuscator.ioによって難読化されています。また、解析を妨害する目的で、以下の2つの保護手法が適用されています。
コンソール出力の無効化: すべてのコンソール出力を遮断し、ログの確認を困難にします。
フォーマット検知: コードがフォーマット(整形)されている場合、ダミーコードが実行されてエラーが発生します。
ダミーコードが実行されない場合にのみ復号ルーチンが動作し、「IEgrjQr6OI6C3pf」ファイルをAES-256-CBCで復号して、現在の実行パスに「f6gK5600n6.js」ファイルとして保存します。

caption - AES-256-CBC復号ルーチン
その後、「f6gK5600n6.js」ファイルを実行します。正常に実行されると、「f6gK5600n6.js」ファイルを実行するJavaScriptコードを現在の実行パスに「areAx6ey.js」ファイルとして保存し、自動実行レジストリパスにそのファイルを実行するキーを追加して永続性を確保します。
2.5. f6gK5600n6.js
復号されたJavaScriptファイルはEtherRATマルウェアであり、EtherRAT Decryptorと同様の難読化および保護手法が適用されています。EtherRATマルウェアは%APPDATA%パスに「svchost.log」ファイルを作成し、そのファイルにログを記録します。

caption - ログ記述ルーチン
例示されるログは以下の通りです。
C&Cサーバーアドレスの設定
EtherRATマルウェアは、C&Cサーバーのアドレスをハードコーディングせず、イーサリアムのスマートコントラクトを介して動的に取得します。このプロセスの過程で、eth_callメソッドを使用してハードコードされたコントラクトアドレスにクエリを送信します。この際、送信されるデータは、関数シグネチャである0x7d434425とコントラクト作成者のウォレットアドレスで構成されます。

caption - コントラクトクエリ送信ルーチン
また、EtherRATマルウェアは単一のRPCエンドポイントにリクエストを送信するのではなく、計9つのイーサリアムRPCエンドポイントに同時にリクエストを送信します。その後、受信した応答の中で最も多く受信されたURLをC&Cサーバーとして使用します。
https://eth.llamarpc.com
https://mainnet.gateway.tenderly.co
https://rpc.flashbots.net/fast
https://rpc.mevblocker.io
https://eth-mainnet.public.blastapi.io
https://ethereum-rpc.publicnode.com
https://rpc.payload.de
https://eth.drpc.org
https://eth.merkle.io
設定ファイルパスの作成
EtherRATマルウェアは、設定ファイルを保存するパスを生成する際に、感染システムの固有情報を活用します。まず、コンピュータ名とユーザー名を連結した文字列に対するMD5ハッシュを生成し、ハッシュの最初の1バイトの値を5で割った余りを計算して、フォルダ名として使用する文字列を選択します。余りの値に応じて一致する文字列は以下の通りです。
0: Microsoft
1: Windows
2: Programs
3: Package
4: Google
続いて、2番目の1バイトの値を5で割った余りを計算し、サブフォルダ名として使用する文字列を選択します。余りの値に応じて一致する文字列は以下の通りです。
0: Services
1: Components
2: Assemblies
3: Extensions
4: Modules
「%LOCALAPPDATA%\[フォルダ名]」のパスがすでに存在する場合、「%LOCALAPPDATA%\[フォルダ名]\[サブフォルダ名]\[ハッシュの最初の4バイト]」を設定ファイルパスとして使用します。「%LOCALAPPDATA%\[フォルダ名]」のパスが存在しない場合は、「%LOCALAPPDATA%\[ハッシュの最初の8バイト]」を設定ファイルパスとして使用します。
最後に、フォルダパスのハッシュのうちの6バイトを設定ファイル名として使用します。

caption - 設定ファイルパス作成ルーチン
生成された設定ファイルの内容は、Base64でエンコードされたJSON形式で保存されます。インデックスごとの設定ファイルの内容は以下の通りです。
0: 固有ID
1: reobfエンドポイントへの接続可否
3: reobfエンドポイントへの接続時間
5: ログファイルの書き込み可否
ID生成
EtherRATマルウェアは、感染したシステムを識別するために固有IDを使用します。まず、特定のファイルを探索し、以前に発行されたIDがあるかどうかを確認します。最初に探索するファイルは設定ファイルで、設定ファイルにIDが保存されている場合は、設定ファイルからIDを読み取って使用します。この際、IDは設定ファイルのインデックス0に保存されています。
もし設定ファイルにIDが保存されていない場合は、2番目に「.node_bot_id」ファイルを探索します。「.node_bot_id」ファイルが存在する場合、そのファイルの内容をIDとして使用します。

caption - .node_bot_idファイル探索ルーチン
「.node_bot_id」ファイルが存在しない場合は、3番目にファイル名が「.」で始まり、文字数が11文字のファイルを探索します。条件を満たすファイルが見つかった場合、そのファイルの内容をIDとして使用します。しかし、すべての探索に失敗した場合は、cryptoモジュールのrandomUUID関数によりランダムなIDを生成し、設定ファイルに書き込みます。

caption - ファイル探索およびID生成ルーチン
C&Cサーバーとの初期通信
最初にC&Cサーバーと通信する際、設定ファイルのインデックス1に値が存在し、かつインデックス3に値が存在しないかどうかを確認します。この条件を満たす場合、設定ファイルが保存されているフォルダから、インデックス1の値と同じ名前のファイルを、「[C&Cサーバーアドレス]/api/reobf/[ID]」のエンドポイントに送信します。

caption - ファイル送信ルーチン
その後、設定ファイルのインデックス3の値を現在時刻に変更し、C&Cサーバーに送信したファイルデータをC&Cサーバーの応答で上書きして実行します。

caption - ファイルデータの変更および実行ルーチン
C&Cサーバー通信
初期通信の後、C&Cサーバーとの通信の前に偽装を目的として、拡張子リスト(png, jpg, gif, css, ico, webp)と変数名リスト(id, token, key, b, q, s, v)からそれぞれ1つずつランダムに選択し、通信時に「[C&Cサーバーアドレス]/api/[ランダム16進数]/[ID]/[ランダム16進数].[拡張子]?[変数名]=5a15c932-4675-4a53-920d-3f3a7aa2e835」に向けてPOSTリクエストを送信します。

caption - C&Cサーバー通信ルーチン
C&Cサーバーから応答を受信できない場合は、約3秒後に再度リクエストを送信します。応答を受信すると、その応答内容をJavaScriptコードとして実行します。

caption - 応答実行ルーチン
解析時点ではC&Cサーバーそのものはアクティブでしたが、何の応答も返ってこなかったため、追加の解析は行えませんでした。
3. Linux、Windows版EtherRATの違い
本稿で分析したmsiファイル以外に確保したmsiファイルの一覧は以下の通りである。
caption - 確保したmsiファイル
3.1. イーサリアムスマートコントラクトの使用有無
React2Shell脆弱性を介して配布されたLinux版EtherRATマルウェアと、本稿で分析したEtherRATは、イーサリアムスマートコントラクトにeth_callメソッドを介してC&Cサーバーのアドレスを要求する。しかし、残りのWindows版EtherRATマルウェアは、ハードコードされたC&Cサーバーアドレスを使用していることが確認された。

caption - 0x0に設定されたコントラクトアドレス
残りのWindows版EtherRATマルウェアはすべて、コントラクトアドレスとデータに使用されるウォレットアドレスが0x0000000000000000000000000000000000000000に設定されている。また、コントラクトからC&Cサーバーのアドレスを取得する関数は呼び出されない。ハードコードされたC&Cサーバーのアドレスは「hxxp://91.215.85[.]42:3000」である。
3.2. 永続性の確保
Linux版EtherRATマルウェアは、計5つの方式をすべて使用して永続性を確保する。永続性を確保する方式は以下の通りである。
systemdユーザサービスの作成
XDG autostart項目の追加
Cronタブの追加
.bashrcファイルへのマルウェア実行スクリプトの追加
.profileファイルへのマルウェア実行スクリプトの追加
これとは異なり、Windows版EtherRATマルウェアはEtherRAT自体では永続性の確保を行わない。EtherRATマルウェアを復号するスクリプト(EtherRAT Decryptor)で永続性を確保するように設計されており、自動実行レジストリパスにキーを登録する方式を使用する。

caption - Windows版EtherRAT Decryptorの永続性確保ルーチン
3.3. マルウェア機能の追加
本稿で分析したEtherRATを含め、build値が5a15c932-4675-4a53-920d-3f3a7aa2e835であるEtherRATマルウェアにはログ機能が追加された。しかし、React2Shell脆弱性を介して配布されたEtherRATや、残りのWindows版EtherRATを含め、build値がc6d83cb1-a4de-443d-bd78-da925acc5f8dであるEtherRATマルウェアにはログ機能が存在しなかった。

caption - ログ機能が存在しないEtherRAT (build値 c6d83cb1-a4de-443d-bd78-da925acc5f8d)

caption - ログ機能が追加されたEtherRAT (build値 5a15c932-4675-4a53-920d-3f3a7aa2e835)
ログ機能だけでなく、イーサリアムスマートコントラクトのアドレスとウォレットアドレスも変更された。新しく確認されたコントラクトアドレスは0x429929d8fe40D2deCf618C4A87721AC2a820bA78で、従来のEtherRATマルウェアで使用されていた0x22f96D61cF118efaBC7C5bF3384734FaD2f6eaD4コントラクトの最後のトランザクションが発生した後に生成されたことが確認された。
これにより、攻撃者がマルウェアを継続的に管理およびアップデートしており、build値をバージョン識別子として使用している事実を確認することができた。
4. スマートコントラクト分析
4.1. 追加のコントラクトおよびウォレットアドレスの確保
現在までにEtherRATマルウェアで確認されているスマートコントラクトアドレスは、0x22f96d61cf118efabc7c5bf3384734fad2f6ead4と0x429929d8fe40d2decf618c4a87721ac2a820ba78の計2個であり、両方のコントラクトのバイトコードは同一である。
これを基に、etherscan.ioのSimilar Contracts Search機能を利用して追加分析を進行した結果、同一のバイトコードを持つ10個のコントラクトアドレスをさらに確保することができた。

caption - EtherRATコントラクトと同一のバイトコードを持つコントラクト一覧
確保された10個のコントラクトは、それぞれ異なるウォレットから作成されたものであることが確認された。これにより、攻撃者がインフラ構築に使用した10個のウォレットアドレスも追加で確保することができた。
4.2. コントラクトおよびウォレットの分析
確保したコントラクトのうち、最初に作成されたコントラクトは0x6ef160dAC69c68461879c0C3486164aF07533d17で、作成日は11月 29日である。これは攻撃者がLinux版EtherRATマルウェアの配布に使用したCVE-2025-55182 (React2Shell) 脆弱性が公開される前の時点である。これにより、攻撃者が脆弱性情報の公開前からEtherRATマルウェアを使用した攻撃を準備していたことがわかる。

caption - 0x2EB2Ec6026B63158042d27e8004957EC71783287 ウォレットの全トランザクション一覧
攻撃者がコントラクト作成に使用したすべてのウォレットを分析した結果、トランザクション手数料のための資金の入出金、コントラクトの作成、およびC&Cサーバー情報の保存のためのトランザクション以外には、いかなるトランザクションも発生していなかった。
そこで、トランザクション作成のための資金源を逆追跡していたところ、最後のトランザクション発生から66日が経過した時点で、攻撃者の3つのウォレットに資金を入金した特定のウォレットアドレス(0x69de85F382B7855c55df3092aE36BBf75eF1f6CD)を確保することができた。

caption - 攻撃者のウォレットに資金を調達しているウォレットのトランザクション
確保したウォレットアドレスに関連する攻撃は確認できなかったが、HashDitでフィッシングとして報告された記録が存在した。

caption - フィッシングとして報告されたウォレットアドレス
4.3. トランザクション履歴の分析
ブロックチェーンのトランザクションは一度作成されると削除されないため、現在までにEtherRATのC&Cサーバーとして使用されたすべてのURLを確認することができた。

caption - トランザクション履歴に残っているC&CサーバーのURL
実際にEtherRATマルウェアで使用されたコントラクトから収集したC&CサーバーのIP/ドメインは計5個であり、以下の表の通りである。
caption - コントラクト収集C&Cサーバー一覧
この他にも、追加で確保したコントラクト履歴から収集されたC&CサーバーのIP/ドメインは以下の表の通りである。
caption - 追加コントラクト収集C&Cサーバー一覧
5. Tsundere Botnetとの関連性
EtherRATマルウェアを分析している過程で、インフラおよびスマートコントラクトにおけるTsundere Botnetとの関連性を確認した。Tsundere Botnetは、Kasperskyブログの記事で初めて命名されたマルウェアであり、イーサリアムのスマートコントラクトからC&Cサーバーのアドレスを取得して使用するボットネットである。一部のTsundere Botnetのコードにロシア語で書かれたコメントが存在したり、ロシア語の文字列が存在したりすることから、制作者はロシアと関連があることが知られている。

caption - Tsundere Botnetのロシア語で書かれたコメント
5.1. インフラの関連性
EtherRATマルウェアのC&Cサーバーアドレス(91.215.85[.]42)を調査していたところ、該当のIPでTsundere Botnetの制御パネルがホストされていることを発見した。
![91.215[.]85.42에서 발견된 Tsundere Botnet 제어 패널 Tsundere Reborn](https://framerusercontent.com/images/2HIQ7f34IUp49aH3Sc9qflPrAM.png)
caption - 91.215.85[.]42で発見されたTsundere Botnet制御パネル「Tsundere Reborn」
発見されたパネルのタイトルは「Tsundere Reborn」である。Tsundere Rebornは、Kasperskyのブログで報告された初期のTsundere Botnetの制御パネル「Tsundere Netto」と同様に、誰でもアカウントを登録してログインすることでボットネット制御パネルにアクセスできるオープンな構造になっている。

caption - Tsundere Rebornのログインページ
ログイン後にアクセス可能な制御パネルの主な機能は以下の通りである。
caption - 制御パネルの主な機能
Tsundere Rebornは、従来のKasperskyレポートに言及されているバージョンと比較して、大幅に機能が拡張されている。Workerアカウント管理機能や脆弱性スキャナー機能が新たに追加され、Builds機能にも変化が見られる。従来はMSIとPowerShellの2つの方式のみをサポートしていたが、今回のバージョンではLinuxが新しいビルドオプションとして追加された。これは、攻撃者がWindowsだけでなく、Linux環境へも攻撃対象を広げたことを意味する。一方で、かつて存在していたMarketページのように、一部の機能は削除されていることが確認された。
さらに、該当サーバーではTsundere Botnetのパネルだけでなく、123 StealerのC&Cパネルも同時に動作していることを発見した。これは、Kasperskyのブログで報告された「Tsundere Botnetと123 Stealerがインフラを共有している」という既存の情報と一致する。

caption - 123 Stealer C&Cパネル
5.2. スマートコントラクトの関連性
Tsundere BotnetとEtherRATで使用されているスマートコントラクトを比較分析した結果、2つのコントラクトのバイトコードは異なるものの、どちらのマルウェアも同一のメソッドIDを持つ関数を使用していることが確認された。
メソッドIDは、関数シグネチャをkeccak256でハッシュ化した値の最初の4バイトを意味し、共通して使用されている関数とメソッドIDは以下の通りである。
getString(address) : 0x7d434425
setString(strings) : 0x7fcaf666
分析の結果、2つのコントラクトの該当する関数は、IDだけでなく実際に実行する動作も同一であった。

caption - EtherRATコントラクトのsetString関数
それにもかかわらずバイトコードに差異が生じている理由は、EtherRATのスマートコントラクトはgetStringとsetString関数のみが定義された最小限の構成であるのに対し、Tsundere BotnetのスマートコントラクトにはtotalSupply、allowance、transferなど、ERC-20標準に準拠するための関数が追加で定義されており、全体のコード構成が異なっているためであることが確認された。
6. おわりに
本稿では、ゲームの Mod インストールファイルに偽装して拡散している「EtherRAT」マルウェアについて分析した。最終的に実行される EtherRAT マルウェアは、イーサリアムのスマートコントラクトから C&C サーバのアドレスを動的に取得し、C&C サーバから追加のマルウェアをダウンロードして実行する。
EtherRAT マルウェアは、最初に発見されてから1ヶ月も経っていないが、Linux や Windows など様々なオペレーティングシステムを対象に拡散されており、機能のアップデートを行うなど、急速に進化している様子を見せている。また、計12個のスマートコントラクトを作成・管理し、攻撃インフラを継続的に拡大している状況が確認された。
このように、攻撃者はセキュリティ検知を回避するためにブロックチェーンネットワークを悪用し、様々なプラットフォームをまたいで攻撃手法を継続的に発展させている。このような攻撃を予防するため、ユーザーは出所の不明なファイルのダウンロードや実行を避けるべきであり、セキュリティ担当者は関連する侵害指標(IoC)を継続的に監視する一方、異常なブロックチェーンネットワークトラフィックに対する観察と対応が必要である。
7. 付録
付録 A. MITRE ATT&CK
caption - MITRE ATT&CK
付録 B. IOCs
sha256
4508a26a0a42966606cd59c558284e28e9e06b4db89fe0f8b50fd9599f4f73f1 - EtherRAT msi file
9383c992abecdab53cc798940d296c0f8a5c0efe5ee8161d7c71a2dd23e374e2 - EtherRAT decryptor
b8d9ef87b3a7a2cf2509317296baf127100a14838d03e1c158b0d5f17ec5b41b - EtherRAT msi file
e38362aca79b16d588174e64a33cc688504c845d882624243fde90abd578bd7d - gfdsgsdfhfsd_ghsfdgsfdgsdfg.sh
e76867e7ec438165e2d629a0bfe2ae53f5320831cc1f8115b2a4f869f5240950 - EtherRAT msi file
81c3d0efb9da0dd0cd7b06e1692053fdf5561b916cb2502ccc4c31f997c352f8 - EtherRAT msi file
606dd4d7b4f7755136f53ed442a1eebd1c36a671eaf91c494a1627788b64e819 - 99 Nights Script.zip
98da27f6667782ac7e4b629cd8bc09b193635a109f8e521ea8e2fb7ce15c2ea1 - Executor-master-v3.1.zip
926ee406adc542dc21a971d4112d958f91413222fd97d2ee0422ac0568a80aa9 - EtherRAT powershell script
1f715a97657a547e9eb55878bb0b946c3a2d43b6d467ca60e816853d4d727828 - Tsundere Botnet powershell script
2de16fea5af78d5f1fdb8039efd7fb319d8e233cea8b4c20ea1f13ad380aea1d - Tsundere Botnet msi file
Contract Address
0x22f96D61cF118efaBC7C5bF3384734FaD2f6eaD4
0x195ab0A6391E2c499321F67Ba36ED8f4bDc9F5f4
0x21F9a727E9668A3fC30393a344D8a3A98F4F3b8d
0x277852e1C349b03c79E348018a8391bD21C412E8
0x40A7d723F5Df6c88464bC95DBf7D96573fBc4f85
0x429929d8fe40D2deCf618C4A87721AC2a820bA78
0x47A397D9d459B05433f0d579e7842442b348eC38
0x6ef160dAC69c68461879c0C3486164aF07533d17
0x8a7c8497991dEa66910E70979a5961aEE347ff50
0x8B08cE78a284F26eEDfE2b9B52823F8c6ab3dC4A
0x97851AE6B1e2970C030Dd7d8F70d9832AcfB30fd
0xF1f3Ac96E49F6a71D031444E59268c27B3511914
Wallet Address
0x69A91686482dE1dF123b91106CbdA763da034d4A
0xE941A9b283006F5163EE6B01c1f23AA5951c4C8D
0x233F7Ac7F307D2c781be66DA432CB865Efa804e0
0x6c0bdC011F31715C4FF537aa9c6a8A141F8a6119
0x14afdDD627Fb0e039365554f8bbDB881eCb1C708
0x434A2001adD7e414dA33612C4a8AEe745EA22968
0x4F1dD066b832AF641b5F08537a5b0fC0b329D5EC
0x2EB2Ec6026B63158042d27e8004957EC71783287
0xeA4337aa83496F0b91CDCdD8bf2734DF9eEF1774
0x6d4C034439F78cc19b4FEBdeC2c285D9B7D47e73
0xF1933D62F03F56579E8362402316CBF450d30116
0xF3947eeB5DB984E9498DA449c13305ed27428Bc0
0x69de85F382B7855c55df3092aE36BBf75eF1f6CD
URLs
hxxps://api-gateway-prod[.]com
hxxps://gateway001kir[.]com
hxxp://91.221.190[.]12
hxxp://localhost:3000
hxxps://jariosos[.]com
hxxps://api-gateway-softupdate[.]io
hxxp://91.215.85[.]42:3000
hxxp://173.249.8[.]102/
hxxps://grabify.link/SEFKGU
hxxps://grabify.link/SEFKGU?dry87932wydes/fdsgdsfdsjfkl

人気の記事






