前一阵,我们对Apache Strust 2的CVE-2017-5638漏洞进行了预警,最近F5实验室的研究人员发现Apache Struts 2 漏洞被网络罪犯用于传递Cerber勒索软件。实际上在Strut2漏洞公开之时,怀有歹心的人就利用了S2-045(CVE-2017-5638)远程代码执行漏洞来传递勒索软件——在服务器上部署勒索软件从去年下半年开始就已经成为如今的一个趋势了。
概述
一般僵尸网络的作者常用的攻击方式,首先是扫描互联网上的web漏洞,以便恶意程序或者后门能够利用此类漏洞。服务器一般都有着较强的性能和高带宽,而且很多是不带反病毒解决方案的。
所以一旦某个0day漏洞曝光,网上就会有一堆攻击者开始搞扫描工作,其中一大部分都是恶意攻击者。前一阵我们还预警了Apache Struts 2的漏洞CVE-2017-5638,这个漏洞影响的是Jakarta Multipart Parser。F5实验室的研究人员随即发现网上已经有人开始利用这个漏洞搞破坏了,攻击不下10例。而其中某一个案例格外引人注目。
恶意软件简单分析
该攻击活动是在S2-045漏洞被披露几天之后发现的,即2017年3月6日开始的。3月10日,F5的研究人员就开始观察该攻击活动。其攻击传染媒介似乎对原有的公开PoC做了轻微的修改。
图1.S2-045的正常网络活动
如今所有人都直到,S2-045漏洞的触发是通过Content-Typer header值进行的——在这一例中,服务器如果的确存在该漏洞,攻击者就采用执行shell命令的方式来进行攻击。
在这波攻击的第一阶段中,研究人员发现攻击者将shell命令用于感染PowerBot恶意程序——这款恶意程序采用PERL编写,其主要功能就是DDoS攻击(PerBot或ShellBot)。
这些攻击者在扫描互联网是否存在Struts2漏洞后,随后的命令执行一般步骤是这样的:从远程服务器下载恶意程序,设置其为可执行(二进制文件),运行恶意程序,移除最初的感染文件。
一般来说,攻击payload采用目标设备已经安装的程序来下载恶意程序,比如wget和curl。在本次攻击行动中,攻击者也用上了wget,另外还用上了不怎么常用的fetch程序。而在wget的用法上,攻击者采用“wget -qO-”选项,这样一来会下载恶意程序,但并不会写入为磁盘上的文件。恶意内容会重定向到Perl解释器执行,减少了被检测到的可能性。
Bot部署到位后,被感染的服务器就会连接至IRC通道获取指令——如图2、图3所示。F5通过对IRC的追踪发现,到目前为止被感染的服务器已经超过2500个。
图2:IRC通道包含超过2500个bot
随便挑选其中一些感染主机名和IP地址,就能发现其中有产品服务器来自AWS。
图3:连接至IRC通道感染主机示例
从DDOS到加密虚拟币的挖掘
在接下来几天的观察中,F5的研究人员又发现了本次攻击活动的其它形式。只不过payload从Perl变成了Bash脚本,不过这里的payload只是用于部署2种不同恶意程序的开端罢了——这部分exploit仍然会下载并执行前文提到的Perl bot。
图4.下载并运行PERL bot
不过这一次下载的是个虚拟币挖矿程序”minerd”(和其他一些必须的文件)。攻击者对恶意进程及其设置进行了伪装,令其看起来和Apache服务器进程差不多,这样用户会比较难分辨。
图5.下载“minerd”及其配置文件
bot随后就开始挖矿了,挖掘所得的虚拟币会进入到多个加密币池中,如图6的配置文件所示。
图6.“minerd”配置文件
这些矿池似乎托管于法国的“crypto-pool.fr”域名下:
图7.矿机托管于法国在线的SAS网络
该恶意软件有趣的地方在于其自身的传播方式。它会在目标服务器上搜索服务器管理员连接的所有远程IP地址。它会搜索SSH“known_hosts”文件,该文件保留管理员连接的所有服务器的IP地址和特征。 同时它还会扫描Bash历史文件以获取SSH命令中使用的所有IP地址。一旦IP地址列表编译完成,脚本将尝试通过SSH与它们连接。如果配置的认证设置是使用密钥文件而不是用户名和密码,则恶意软件就会在远程计算机上成功完成自我部署。
图8.恶意软件传播到其他已知服务器
ShellShock连接
F5研究人员观察到,本次攻击行动的其中一个IP地址来自香港,如图9所示。先前这个IP地址就曾经用ShellShock(CVE-2014-6271)发动类似的攻击。
图9.攻击托管于香港港口的T&T网络
F5研究人员注意到,这次的恶意程序文件名和先前的攻击都是一样的,如图10和图11所示的”.mailer”和”a”。不过这次攻击所用的加密币挖矿池和账户变了,如图12所示。
图10.ShellShock 传递“.mail”的PERL bot
图11.ShellShock传递“a”的头部bash脚本
图12.矿机配置
扩展到服务器勒索软件
一般来说利用web漏洞传播Linux DDoS恶意程序是很常见的事,值得一提的是,针对服务器的勒索软件从去年开始似乎成为了一种新趋势。
这次的幕后攻击者实际上有好几个不同的攻击行为。这次,感染Windows设备的payload用上了著名的Cerber勒索程序。
这位攻击者惯用Jakarta Multipart parser exploit的方式。不过这次是以Shell命令执行Windows BITSAdmin和ftp命令行工具,下载运行文件”1.exe”,如图13所示。
图13.APACHE STRUTS漏洞传递Windows勒索软件
运行勒索程序之后,程序当然就会对文件进行加密,还会显示图14中的勒索信息。
图14.勒索信息
同市面上多数勒索软件一样,受害者会收到解锁文件的教程,如图所示。
图15.勒索支付指示
F5的研究人员分析了该恶意程序变体,发现增加了一个功能,即修改Windows防火墙规则,阻止反病毒软件与外界的通讯——也就是不让反病毒软件更新和提交报告。如图16所示:
图16.勒索软件阻碍Windows防火墙
为了找到目标设备上已安装的安全软件,恶意程序首先会运行WMI查询”AntiSpywareProduct”和”FirewallProduct”类。
图17.WMI查询获取安装安全产品列表
随后恶意程序就会将所有查询结果涉及的文件和文件夹加到防火墙规则中。
图18.添加防火墙规则
攻击者这么拿钱
这一波几个不同的攻击行动,其幕后攻击者都用同一个比特币ID。
图19.软件配置中的比特币账户
这个账户中有84比特币,大约相当于8.6万美元。而在Struts漏洞公开以后,该比特币账户又有2.2比特币的进出,大约是2300美元。
图20.恶意软件账户上的比特币交易
最后
现在的黑客牛叉的地方就在于,一旦有0day漏洞曝出,其现有攻击方式就能够以极快的速度得到进化。所以即便防御方不停地在修复漏洞,其攻击还是可以持续进行。
在感染了数千个新服务器的同时,Apache STRUTS中的新漏洞为黑客提供了更广阔的目标来扩展业务。用勒索软件感染服务器,比感染个人设备可能会得到更多的汇报,因为这些服务器通常由拥有多金的组织和相对更好的基础架构,这对于他们的业务可能至关重要,支付赎金的概率相对更高一些。