向Web服务器投递恶意挖矿软件的蠕虫

 

实际中,面向公共互联网提供服务的系统或服务器,都是处于边缘位置的。所以无论是物联网设备还是企业级服务器,只要能被外界访问到,那就会无时无刻被攻击。

最近,我们发现了一种攻击手法,多个公司Apache Tomcat Web服务器反复遭受感染。通常因为担心端点反病毒软件会降低服务器的性能或造成服务器不稳定,所以服务器管理员并没有安装相应的防御工具。显然,这种想法在现在看来很过时。

这种情况下,虽然服务器管理员确保已经将操作系统及Apache组件更新到最新版本,但每当处理完感染问题没多久,又出现了同样的问题。

幸运的是,服务器管理员提供了捕获到的包含攻击行为的网络数据包。这种攻击看起来很眼熟,因为在我们部署的蜜罐中,就曾见到这种自动化投递恶意挖矿软件的攻击行为。但是在这之前,还未见过在野攻击成功的案例,所以我们决定通过分析捕获的数据包来解释这次攻击是如何实施的。

 

猫(Tomcat)和老鼠

入侵成功的根本原因在于管理员在Tomcat管理页面中使用了弱口令。初始阶段的攻击是在Tomcat管理面板对登录凭证进行暴力破解,一旦攻击者成功以管理员身份登录,那一切都完了。

在得到正确的登录凭据后,攻击者会对服务器发起HTTP POST请求,如下图所示:

图1:攻击者通过HTTP POST上传新的的admin.jsp页面

在Tomcat管理页面允许管理员以扩展名为.war的文件形式将Web应用程序上传到服务器。此时攻击者上传了一个名为admin-manager.war的.war文件,该文件中包含了一个名为admin.jsp的恶意JSP文件。一旦该文件被外部攻击者调用,就会生成目标服务器配置信息文件。

admin.jsp文件如下所示:

图2:admin.jsp文件收集目标系统的配置信息,并可以执行命令

Admin.jsp有三个功能:收集系统配置信息,在Apache服务器上创建新文件,以及使用Web服务器帐户的权限在服务器上执行命令。

攻击者可以使用“ act ” 命令(猜测为“action”的简写),指定相应参数,然后加上一个或两个选项。
三个参数(SI,、SH、 UF)用途如下:
System Information (act=SI)
System Information函数将返回诸如OS、主机名、用户名等信息。

File Creation (act=UF)
当“upload file”被调用,攻击者所发送的Base64字符将写入到Apache服务器的一个文件中。

Command execution (act=SH)
取决于正在运行Tomcat服务器的操作系统,此“shell”命令将尝试使用/ bin / bash(* nix服务器)、Windows命令行或PowerShell执行命令。还支持对命令字符串进行Base64编码。

两个选项的说明如下:

String Parameter1 = request.getParameter ( “p1” )

  • 如果参数为SH代表内容进行Base64编码
  • 如果参数为UF代表为文件命名

String Parameter2 = request.getParameter ( “p2” )

  • 如果参数为SH代表True
  • 如果参数为UF代表将Base64转为blob

 

挖矿软件投递

例如,攻击者一开始会向服务器发起字段内容为act = SI的HTTP POST请求,服务器的响应如下图:

图3

从返回中可以看出这个Tomcat部署在64位Windows Server 2012计算机上,还返回了主机名称(为了隐私,我们打了马赛克),以及恶意.jsp文件的存放路径。至于标题中的“Hello,Peppa!(你好,佩奇)”,我们猜测攻击者可能是小猪佩奇的粉丝。

出于某种原因,攻击者执行两次此命令,相互相隔一秒。

接下来,攻击者发出了一个action= SH&p2 = True&p1 =(base64)的“SH”命令,如下所示:

图4

解码后如内容下:

图5

该脚本首先会尝试杀死WMIC.exe,RegSvr32.exe和PowerShell.exe进程,然后检查系统是否存在PowerShell 1.0的文件路径(%systemroot% System32 WindowsPowerShell v1.0 PowerShell.exe)。如果它在系统中找到该路径,将执行base64编码中的blob数据(上图中黄色高亮显示部分)。

如果脚本找不到PowerShell的路径,它将使用RegSvr32.exe从C2服务器下载并执行名为init.gif的文件。并使用脚本com对象(scrobj.dll)来执行init.gif的内容。

在PCAP中,可以看到攻击者执行命令后服务器的响应。如下图,攻击者发出命令时服务器未运行以上三个进程,所以这部分命令没有并执行成功。

图6

因为这部分命令并没有执行,所以我们解码了Base64中的blob数据(上图中黄色高亮显示部分),得到如下命令。

图7

这是捕获数据包中的另一个HTTP POST请求:

8

Blob数据内的blob数据

令人费解的是,该命令中包含了一个URL,攻击者似乎想要将文本信息上传到该地址。但是,该URL所指向的资源是托管在恶意IP地址上的另一段blob数据。并且只有请求主机的User-Agent为Mozilla / PS时,该IP才会返回信息。

可以看到返回的是一大堆经编码的数据。

图9

为了搞清楚这段数据的含义,我们祭出了CyberChef。CyberChef在解码像这样的任意编码的数据块时是一款非常优秀的工具。下面是用于解码这段数据的“配方”(是的,它们被称为配方)。

图10

首先它会解码base64数据,然后它对解码得到的blob数据的执行“Raw Inflate”功能。最终输出如下:

图11

Neutrino(中微子)是几乎没有质量的亚原子粒子,具有奇异的特性,它很少与周围环境发生相互作用。虽然这段Payload自称为Neutrino(这里不要与之前已经消失的Neutrino漏洞利用工具包搞混,二者并无关联),但却与其原子特性大相径庭,它会与受感染的系统进行大量交互。

 

Neutrino的功能

解码得到的这个脚本会对系统进行另外一些检测,然后根据Windows服务器的架构(32位或64位)下载相应的payload。它会将名为lsass.exe的文件下载到system32目录,是的,它使用了和系统安全组件 LSASS相同的名字,只是放在了不同位置。这样即使系统管理员在正在运行的进程列表中看到它,也不会太在意。

图12

Neutrino脚本还查看%system%中的HOSTS文件,以确定其中是否存有其他矿池地址的DNS记录,如果检测到,它会对其进行覆盖,写入八个不同的域名记录,然后连接这些矿池在目标服务器进行自己的门罗币挖矿活动。除此之外,域名ctosus.ru与恶意软件也有关联。

Neutrino脚本还会扫描主机系统上正在运行的应用程序列表,查看有常用的安全工具正在运行。如果发现正在运行这些程序,就会做相应记录。(例如,“ ZhuDongFangYu ”是中国防病毒软件360的一个组件。)

图13:Neutrino检索常用安全工具,例如调试器,反汇编程序或抓包工具

在5到10分钟的随机延迟后,脚本会尝试下载另一个名为_DL.ps1的 PowerShell脚本。

图14

它还会修改Windows注册表信息,这会导致系统向管理员发出的安全警告被隐藏。除此之外,它还尝试删除此前扫描时所记录的安全工具,或者尝试终止这些已运行的安全工具。

图15:Neutrino通过修改Windows注册表来禁用本地安全功能

最后,它会下载经过RC4加密的二进制payload。

图16

解密该二进制的密码为P@$$w0rd123456。此外,还创建了防火墙规则(命名为Windows Update)以允许另一个payload(WMI.ps1)接收攻击者传入的命令。

图17

 

管理员能做些什么

最有效的防御措施就是:任何情况下,任何人都不应该使Apache Tomcat服务器(或其他服务器)在公网可访问的情况下,在管理面板中使用弱口令或默认密码。

和其他一些与公网产生数据交互的软件一样,管理员应该确保服务器操作系统及所运行的软件为最新版本(避免漏洞利用)。不要把服务器当成PC去进行类似浏览网页等操作。还要养成良好的密码习惯,不要在数据库及服务器使用相同密码。

我们将文中所提到的这些恶意文件标记为Mal / VMProtBad-ATroj / Miner-QHMal / Basine-C

 

IOCs

域名/IP

134.175.33.71
xmr.usa-138.com
wk.ctosus.ru
down.ctosus.ru
blog.ctoscn.ru
down.9ni.top
down.sxly518.xyz
gowel.top
m4.rui2.net

URLs

hxxp://134.175.33.71/Update/PSN/_DL.ps1
hxxp://134.175.33.71/Update/test/x64.bin
hxxp://134.175.33.71/Update/test/x64_VMP.bin
hxxp://134.175.33.71/Update/test/x86.bin
hxxp://134.175.33.71/Update/test/x86_VMP.bin
hxxp://134.175.33.71/Update/test/_WMI.ps1

文件哈希

DL.php: 2F908ECDC20923D703F05DA6EEDE76EB14DCA296

相似文件哈希
虽然攻击中涉及的许多文件都没有从目标计算机中恢复,且托管payload的C2在我们开始调查时一直处于下线状态,但是我们在公共仓库中发现了以下此前描述类似的文件。

_DL.ps1: 408b7799c4902f4d7d0965a9a37b9ed0989ba39a
x86_VMP.bin: 689edc2abe3eafe5f65491780e8aaa1eb68921f1
x64_VMP.bin: ad1e25f4b87ed5837125cb84ead840e558a85bb6
(完)