ルーター経由で拡散する新型Rustボットネットを発見

文●フォーティネットジャパン 編集●ASCII

提供: フォーティネットジャパン

  • この記事をはてなブックマークに追加
  • 本文印刷

本記事はフォーティネットジャパンが提供する「FORTINETブログ」に掲載された「新型のRustボットネット「RustoBot」がルーター経由で拡散」を再編集したものです。

米国時間2025年4月21日に掲載されたフォーティネットブログの抄訳です。

影響を受けるプラットフォーム:TOTOLINK N600R V4.3.0cu.7570_B20200620TOTOLINK A830R V5.9c.4729_B20191112、A3100R V4.1.2cu.5050_B20200504、A950RG V4.1.2cu.5161_B20200903、A800R V4.1.2cu.5137_B20200730、A3000RU V5.9c.5185_B20201128、A810R V4.1.2cu.5182_B20201026、DrayTek Vigor2960およびVigor300B 1.5.1.4.
影響を受けるユーザー    :あらゆる組織
影響            :リモートの攻撃者による脆弱なシステムの乗っ取り
深刻度           :高

 FortiGuard Labsは先日、TOTOLINKデバイスを介して拡散する新しいボットネットを発見しました。TOTOLINKデバイスを狙ったこれまでのマルウェアと異なり、今回の亜種は2010年にMozillaが公開したプログラミング言語、Rustで記述されています。Rustベースの実装であることから、我々はこのマルウェアを「RustoBot」と名付けました。

インシデント

 FortiGuard Labsは2025年1月と2月に、TOTOLINKの脆弱性を突いた攻撃に関連するアラートが急増していることを確認しました。

図1:IPSテレメトリ

 多くの場合、TOTOLINKの脆弱性はcstecgi.cgiファイルに起因しています。同ファイルはユーザー入力、構成変更、認証、管理コマンドを処理するCGIスクリプトです。これらのスクリプトでは度々欠陥が確認されており、特に注目されるのは、リモートでの悪用が可能なコマンドインジェクションの脆弱性です。setUpgradeFW(CVE-2022-26210)やpingCheck(CVE-2022-26187)など、攻撃者はスクリプト内のさまざまな関数を利用してリモートコードを実行できます。

図2:TOTOLINKデバイスのコマンドインジェクション脆弱性のペイロード

 hxxp://66[.]63[.]187[.]69/mpslのペイロードを分析したところ、DrayTekデバイスに影響する別の脆弱性CVE-2024-12987が特定され、攻撃者によって同じ時期に悪用されていたことがわかりました。CVE-2024-12987は、cgi-bin/mainfunction.cgi/apmcfguploadインタフェースに存在するOSコマンドインジェクションの脆弱性です。

図3:DrayTekコマンドインジェクション脆弱性のペイロード

 これらのエクスプロイトは日本、台湾、ベトナム、メキシコの4ヵ国で発生しました。すべてのインシデントがテクノロジー業界を標的にしていました。

図4:影響を受けた国

マルウェア分析

 このセクションでは、「RustoBot」のx86アーキテクチャ版を中心に分析を進めていきます。

ダウンローダー

 攻撃者は、4種類のダウンローダースクリプトを使って「RustoBot」を配信し、wgettftpの2種類のコマンドでこのマルウェアを取得しインストールします。
 

図5:ダウンローダーのシェルスクリプト「t」

図6:ダウンローダーのシェルスクリプト「tftp.sh」

図7:ダウンローダーのシェルスクリプト「w.sh」

図8:ダウンローダーのシェルスクリプト「wget.sh」

 上記のダウンローダースクリプトによると、「RustoBot」はarm5arm6arm7mipsmpslの5種類のアーキテクチャを標的にしています。しかしながら、同じサーバーではx86アーキテクチャ版もホストされていることが確認されています。観測されたインシデントペイロードの大半は、図2に示したように、特にmpslアーキテクチャを使用するTOTOLINKデバイスを標的としています。

RustoBot

 このマルウェアは、Rustで書かれた平文の文字列から識別することができます。
 

図9:Rustライブラリの文字列

 「start」関数の第2層を分析すると、エントリポイントがわかります。

図10:RustoBotのエントリポイント

 「RustoBot」は、グローバルオフセットテーブル(GOT)からシステムAPI関数のオフセットを取得し、それらを呼び出して特定の動作を実行します。

図11:GOTからAPIのオフセットを取得

 「RustoBot」はXOR暗号化アルゴリズムによってコンフィグレーションをエンコードし、多数の計算を使用して難読化を行います。

図12:デコーダーキーのオフセットを計算するための定数を設定

 まず、後続の手順に対応する定数をレジスターに設定します。次に、「xor」、「shr」、「rol」などの命令を使用して、デコーダーキーのオフセットを取得します。

図13:デコーダーキーのオフセットを算出

図14:デコーダーキー

 最後に、先のオフセットから取得したキーを使用して、ハードコードされた暗号をXORでデコードします。

図15:暗号のXORデコード

図16:XORでエンコードされたコンフィグレーション

 構成値がデコードされると、その値が後続の関数の引数として使用されます。関数はデコードされたコンフィグレーションで定義されています。「RustoBot」には、主として2つの悪意ある動作があります。一つはC2サーバーのドメインの解決、もう一つはDDoS攻撃の実行です。

図17:被害者ホストのパブリックIPアドレスを取得する初期パケット

 まず、IPアドレスのデータ(被害者ホストのパブリックIPアドレス)を取得するために、最初のパケットを送信します。IPアドレスは攻撃者のサーバーから返されます。「RustoBot」はDNS-over-HTTPS(DoH)を使用して、不正なトラフィックを正常なHTTPSリクエストに紛れ込ませ、大量の正当なWebトラフィックの中に隠します。取得したIPアドレスは、ヘッダーフィールド「S」の値として使用されます。この「S」は「Source」を意味すると推察されます。

図18:C2ドメインの解決

 次に、dvrhelper[.]anondns[.]nettechsupport[.]anondns[.]netrustbot[.]anondns[.]netmiraisucks[.]anondns[.]netの4つのドメインを解決しようとします。これらのドメインはすべて同じIPアドレス5[.]255[.]125[.]150Ite:zx;jr>に解決されます。

図19:C2サーバーから受信したDDoS攻撃トリガーコマンド

図20:C2サーバーから受信したDDoS攻撃トリガーコマンド(16進ダンプで表示)

 続いて、5[.]255[.]125[.]150との接続を確立し、DDoS攻撃のトリガーコマンドとして機能する一連のパラメータを受信します。

0x03は攻撃手法を示しています。この場合、0x03はUDP DDoSに該当します。
4546611591744345328は被害者ホストのIPアドレス(10進数形式)です。
889680は被害者のポート番号です。
30は攻撃期間(秒単位)を指定しています。
1400はパケットデータの長さ(バイト単位)を定義しています。

図21:UDPフラッド攻撃をトリガー

 DDoS攻撃は、Raw IPTCPUDPの3種類のプロトコルを使って開始できます。

図22:DDoS攻撃用のRaw IPパケットからソケットを作成

結論

 IoTデバイスやネットワークデバイスの多くは、エンドポイントとしての防御が不十分です。そのため、デバイスを悪用して不正プログラムを配信しようとする攻撃者にとって、格好の標的となります。エンドポイントの監視や認証を強化すれば、エクスプロイトのリスクを大幅に低減し、マルウェア攻撃を弱体化することができます。

フォーティネットのソリューション

 FortiGuardアンチウイルスは、このブログで解説したマルウェアを以下の不正プログラムとして検知しブロックします。

 BASH/Mirai.AEH!tr.dldr
 ELF/Mirai.CZX!tr
 ELF/Mirai.DCD!tr

 FortiGate、FortiMail、FortiClient、FortiEDRは、FortiGuardアンチウイルスサービスをサポートしています。これらの各ソリューションには、FortiGuardアンチウイルスエンジンが含まれています。したがって、最新の保護機能を備えたこれらの製品をお使いのお客様は、脅威から保護されています。

 FortiGuard Webフィルタリングサービスは、C2サーバーをブロックします。

 FortiGuard Labsは、次の脆弱性を悪用した攻撃に対応するIPSシグネチャを提供しています。

 CVE-2022-26186: TOTOLINK.Devices.cstecgi.Command.Injection
 CVE-2022-26187: TOTOLINK.Devices.cstecgi.Command.Injection
 CVE-2022-26188: TOTOLINK.Devices.cstecgi.Command.Injection
 CVE-2022-26189: TOTOLINK.Devices.cstecgi.Command.Injection
 CVE-2022-26210: TOTOLINK.Devices.cstecgi.Command.Injection
 CVE-2024-12987: DrayTek.Routers.apmcfgupload.Command.Injection

 フォーティネットでは、無償でご利用いただけるNSEトレーニングモジュール:Fortinet Certified Fundamentals(FCF)の受講もお勧めしています。このモジュールは、エンドユーザーがフィッシング攻撃を特定して自らを保護する方法を習得することを目的としています。

 FortiGuard IPレピュテーションおよびアンチボットネットセキュリティサービスは、フォーティネット分散ネットワークから不正な送信元のIPデータを集約し、攻撃を事前にブロックします。この分散ネットワークでは、脅威センサー、CERT、MITER、協力関係にある他社、その他のグローバルソースが連携し、悪意ある送信元に関する最新の脅威インテリジェンスを提供しています。

 組織がRustoBotやその他のサイバーセキュリティ攻撃を受けていると思われる場合は、フォーティネットのグローバルFortiGuardインシデントレスポンスチームまでご連絡ください。

IOC(Indicators of Compromise:侵害指標)

URL
hxxp://66[.]63[.]187[.]69/w.sh
hxxp://66[.]63[.]187[.]69/wget.sh
hxxp://66[.]63[.]187[.]69/t
hxxp://66[.]63[.]187[.]69/tftp.sh
hxxp://66[.]63[.]187[.]69/arm5
hxxp://66[.]63[.]187[.]69/arm6
hxxp://66[.]63[.]187[.]69/arm7
hxxp://66[.]63[.]187[.]69/mips
hxxp://66[.]63[.]187[.]69/mpsl
hxxp://66[.]63[.]187[.]69/x86

ホスト
dvrhelper[.]anondns[.]net
techsupport[.]anondns[.]net
rustbot[.]anondns[.]net
miraisucks[.]anondns[.]net
5[.]255[.]125[.]150

ファイル
ダウンローダー
76a487a46cfeb94eb5a6290ceffabb923c35befe71a1a3b7b7d67341a40bc454
75d031e8faaf3aa0e9cafd5ef0fd7de1a2a80aaa245a9e92bae6433a17f48385
fbdd5cba193a5e097cd12694efe14a15eb0fc059623f82da6c0bf99cbcfa22f8
0dde88e9e5a0670e19c3b3e864de1b6319aaf92989739602e55b494b09873fbe

<RustoBot>
15c9d7a63fa419305d7f2710b63f71cc38178973c0ccf6d437ce8b6feeca4ee1
427399864232c6c099f183704b23bff241c7e0de642e9eec66cc56890e8a6304
4f0ba25183ecb79a0721037a0ff9452fa8c19448f82943deca01b36555f2cc99
c0abb19b3a72bd2785e8b567e82300423da672a463eefdeda6dd60872ff0e072
dae8dae748be54ba0d5785ab27b1fdf42b7e66c48ab19177d4981bcc032cfb1c
9f098920613bd0390d6485936256a67ae310b633124cfbf503936904e69a81bf
e547306d6dee4b5b2b6ce3e989b9713a5c21ebe3fefa0f5c1a1ea37cec37e20f
b910e77ee686d7d6769fab8cb8f9b17a4609c4e164bb4ed80d9717d9ddad364f
44a526f20c592fd95b4f7d61974c6f87701e33776b68a5d0b44ccd2fa3f48c5d
efb0153047b08aa1876e1e4e97a082f6cb05af75479e1e9069b77d98473a11f4
9a9b5bdeb1f23736ceffba623c8950d627a791a0b40c4d44ae2f80e02a43955d
5dc90cbb0f69f283ccf52a2a79b3dfe94ee8b3474cf6474cfcbe9f66f245a55d
b68e2d852ad157fc01da34e11aa24a5ab30845b706d7827b8119a3e648ce2cf1
9e660ce74e1bdb0a75293758200b03efd5f807e7896665addb684e0ffb53afd2
ec9e77f1185f644462305184cf8afcf5d12c7eb524a2d3f4090a658a198c20ce
114b460012412411363c9a3ab0246e48a584ce86fc6c0b7855495ec531dd05a1
1697fd5230f7f09a7b43fee1a1693013ed98beeb7a182cd3f0393d93dd1b7576
 

■関連サイト