研究人员表示,一种新的自我复制恶意软件正肆虐全球各地的Linux设备,这种恶意软件并利用复杂步骤隐藏其内部加密货币挖掘恶意软件。这种蠕虫是Mirai的定制版本,而Mirai是一种僵尸网络恶意软件,可以感染基于Linux的服务器、路由器、网络摄像头及其他所谓的物联网设备。
Mirai于2016年曝光,当时它被用来实施创纪录的分布式拒绝服务(DDoS)攻击,导致了当年互联网的关键部分瘫痪。创建者很快发布了底层源代码,此举使得全球各地的众多威胁组织能够将Mirai纳入到各自的攻击活动中。一旦操控Linux设备,Mirai便将其用作感染其他高危设备的平台,这种设计使其成为蠕虫,意味着它会自我复制。
传统上,当一个受感染的设备扫描互联网寻找接受Telnet连接的其他设备时,Mirai及许多变种就会传播开来。然后,受感染的设备尝试通过猜测默认和常用的凭据对,以破解telnet密码。一旦成功,新感染的设备就会使用同一种技术攻击其他设备。Mirai主要用于发动DDoS攻击,垃圾流量巨大,这也给了僵尸网络一股巨大的力量。
网络安全和可靠性公司Akamai的研究人员透露,至少从去年1月开始,一个基于Mirai的网络(名为NoaBot)就盯上了Linux设备。NoaBot不是针对telnet弱密码,而是针对用于连接SSH连接的弱密码。另一个变化是,新的僵尸网络安装了加密货币挖掘软件,而不是执行DDoS,这使得攻击者可以使用受害者的计算资源、电力和带宽来生成数字货币。加密货币挖掘软件是XMRig的修改版本,而XMRig是一种被攻击者滥用的合法的开源软件。最近NoaBot还被用来传播p2pinfection,这是在去年7月披露的另一种蠕虫。
在过去的12个月里,Akamai一直在蜜罐中监视NoaBot,蜜罐模仿真实的Linux设备,以跟踪在外传播的各种攻击。到目前为止,攻击来自849个不同的IP地址,几乎所有这些IP地址都可能托管已经被感染的设备。下图表明了过去一年向蜜罐发送的攻击次数。
图 1. Noabot恶意软件在一段时间内的活动
最高级的功能是NoaBot安装XMRig变种的方式。通常,安装加密货币挖掘软件时,钱包里的资金会在通过命令行传递到受感染设备的配置设置中加以指定。长期以来,这种方法对攻击者构成了风险,因为它允许研究人员追踪钱包的托管位置以及流入钱包的资金数量。
NoaBot则使用一种新颖的技术来防止这种检测。僵尸网络不是通过命令行传递配置设置,而是存储采用加密或混淆等方式处理的设置,只有在XMRig加载到内存之后才对其进行解密。然后,僵尸网络替换通常保存命令行配置设置的内部变量,并将控制权传递给XMRig源代码。
Kupchik给出了一番更专业、更详细的描述:在XMRig开源代码中,挖掘软件可以通过两种方式之一接受配置——通过命令行或通过环境变量。在我们的示例中,攻击者选择不修改XMRig原始代码,而是在主函数之前添加部分。为了不需要命令行参数(这可能表明攻陷指标即IOC,从而警醒防御者),攻击者让挖掘软件在将控制权传递给XMRig代码之前,用更“有意义”的参数替换自己的命令行(严格上来说,替换argv)。僵尸网络运行挖掘软件时(最多)带一个参数,告诉它打印输出日志。然而在替换命令行之前,挖掘软件不得不构建其配置。首先,它复制以明文存储的基本参数:用三个随机字母识别挖掘软件的rig-id标志、threads标志以及池IP地域的占位符(见图2)。
很显然,由于配置是通过xmm寄存器加载的,IDA实际上错过了前两个加载的参数,即二进制文件名称和池IP地址占位符。
图2. 复制挖掘软件配置的NoaBot代码
接下来,挖掘软件解密池的域名。域名被存储并加密,存储在通过XOR操作解密的几个数据块中。虽然XMRig可以处理域名,但攻击者决定采取另外的步骤,实现自己的DNS解析函数。它们直接与谷歌的DNS服务器(8.8.8.8)通信,并解析其响应,将域名解析为IP地址。
配置的最后一部分也以类似的方式加密,它是挖掘软件连接到池的通行密钥。总而言之,挖掘软件的总配置看起来像这样:
-o--rig-id--threads–passespana*tea
注意到少了什么吗?是的,没有钱包地址。
攻击者选择运行他们自己的私有池而不是公共池,因而不需要指定钱包(他们的池,他们的规则!)。然而,在我们的样本中,挖掘软件的域名无法由谷歌的DNS进行解析,因此无法真正证明我们的理论或从池中收集更多数据,因为我们拥有的域名再也无法解析。
其他不同寻常的差异包括如下:
•NoaBot使用名为UClibc的代码库进行编译,而标准Mirai使用GCC库,这个替代库似乎改变了反病毒保护技术检测NoaBot的方式。反病毒引擎将其归类为SSH扫描程序或普通的木马,而不是检测出它是Mirai家族的成员。
•恶意软件被静态编译并删除任何符号,这使得逆向工程分析恶意软件的难度大大提高。
•字符串(即代码中包含的人类可读的单词)被混淆处理,而不是保存为明文。这番调整使逆向工程师更难执行一些操作,比如从二进制文件中提取细节,或使用IDA及其他反汇编工具。
•NoaBot二进制文件在/lib目录中随机生成的文件夹中运行,这种设计大大加大了搜索NoaBot感染的设备的难度。
•存储常用密码列表的标准Mirai字典已经被一个新字典所取代,这个新字典很庞大,以至于Akamai测试所有密码不切实际。这个变种还将Telnet扫描程序换成定制的SSH扫描程序。
•增加了大量的入侵后功能,包括安装新的SSH授权密钥,供攻击者用作后门,以便下载和执行另外的二进制文件或传播到新设备。
虽然NoaBot创建者的操作安全性很高,但他们在一些版本的代码中也因幼稚的字符串名称及其他不必要的添加而引人注目。有一次,他们添加了 Boy和IBDY创作的歌曲《Who’s Ready for Tomorrow》的歌词。
图3. NoaBot的早期版本嵌入了Rat Boy和IBDY创建的《Who’s Ready for Tomorrow》的歌词
849个不同的源IP相对均匀地分布在全球各地。研究人员表示,这种一致性对蠕虫来说很常见,这让每个新的受害者都是新的攻击者。目前不清楚有多少托管设备的IP地址盯上Akamai蜜罐,也不清楚是否有一些设备实际上由攻击者操控,企图为僵尸网络积蓄力量。
Akamai已经发布了一个庞大的攻陷指标库(https://github.com/akamai/akamai-security-research/tree/main),人们可以用来检查设备上是否存在NoaBot的迹象。它包括Akamai的Infection Monkey应用程序(https://www.akamai.com/infectionmonkey)的预配置实例,用于测试网络以查找攻陷迹象。还有一个CSV文件存储了所有攻陷指标和用于检测XMRig感染的YARA规则。
目前很难知道NoaBot是否仍然是一个受感染主机数量不到1000个的僵尸网络,或者Akamai蜜罐是否只发现了一小部分受影响的设备。考虑到检测NoaBot感染的难度,Akamai构建的攻陷指标库可能颇具价值。
参考及来源:https://arstechnica.com/security/2024/01/a-previously-unknown-worm-has-been-stealthily-targeting-linux-devices-for-a-year/