导语:Apache Struts 2的远程代码执行漏洞(CVE-2018-11776)才被公开,近日,F5的研究人员就发现了利用该漏洞进行加密货币挖矿的恶意软件CroniX。
Apache Struts 2的远程代码执行漏洞(CVE-2018-11776)才被公开,近日,F5的研究人员就发现了利用该漏洞进行加密货币挖矿的恶意软件CroniX。
· CVE-2018-11776 Apache Struts 2命名空间漏洞可以进行非认证的远程代码执行;
· 在门罗币挖矿活动中,注入点位于URL内;
· 攻击目标:Linux系统;
· 漏洞发现两周后的首次在野攻击;
· F5的研究人员之前发现过该威胁单元;
· 因为使用了cron和Xhide技术,所以将攻击活动命名为CroniX。
攻击分析
与Apache Struts 2的其他漏洞一样,攻击者利用CVE-2018-11776漏洞可以进行Object-Graph Navigation Language(OGNL)表达式注入。这次攻击的注入点是在URL中。
攻击者发送一个注入OGNL表达式的简单HTTP请求,在进行求值后会执行shell命令来下载和执行恶意文件。
图1: URL请求中解码的漏洞利用payload
服务器上位于 /win/checking-test.hta处的文件会保存一个调用Windows cmd来运行Powershell命令的VB脚本。这样看来,威胁单元的攻击目标是位于相同服务器的Windows操作系统。
图2: 服务器上的另一个文件,含有攻击Windows系统的脚本
优化恶意软件性能
下载的update.sh文件是一个bash脚本,会执行许多恶意软件实现的步骤。
攻击者会将内存中huge page的数量设置为128。这是第一个攻击者的目的为挖矿的线索,这一步的目的是为了改善挖矿活动的性能。
图3: 设定huge pages来改善CPU的挖矿能力
驻留
为了确保恶意软件的驻留,一共设定了三个cron任务。其中两个cron任务会每天下载和执行新的update.sh文件。有趣的是,文件的下载会用到明确的服务器IP地址或域名。在下载过程中,会使用特殊的linux用户代理来作为访问限制机制,而用用户代理的IP访问是禁止的。
另一个定时任务是开始位于~/.config/java/.conf/upd的文件。
图4: 设定恶意软件驻留的cron任务
为了达到驻留的目的,恶意软件还会下载一个名为anacrond的文件,该文件会被复制到/etc目录下并命名为cron.d,同时会保存到/etc/cron.d/anacron。文件中的命令与文件update.sh中有点像,他们会下载应用的bash脚本并重启挖矿进程。
图5: 用于驻留的acrond文件
杀掉竞争者进程
恶意软件会还尝试杀掉其他挖矿进程,并删除之前安装的加密货币挖矿机。这也是目前加密货币挖矿行动常用的方式。
图6: 杀掉竞争加密货币挖矿机的命令
对于一些挖矿机,攻击者会选择一种更加小心的方法,并检查进程名和进程的CPU利用率,然后杀掉使用CPU资源超过60%的进程。这可能是为了防止不小心杀掉与Linux合法程序相关的挖矿机的进程。
图7: 如果CPU利用率超过60%就杀掉sshd进程
释放可执行文件
一旦竞争对手被除掉,攻击者就会移除老版本的恶意软件文件并下载新版本的run和upd bash脚本。
图8: 下载额外的恶意文件
还会下载两个额外的二进制可执行文件xmrig和H,每个文件都有x86和x64版本。
图9: 下载的x86和x64版本的恶意可执行文件
Xmrig文件是一个含有嵌入配置的挖矿机,这并不是原始的XMRig挖矿机,而是XMRigCC的副本,用于CPU挖矿优化。
图10: XMRigCC菜单
H文件是一个用假的进程名的用于加载可执行文件的Xhide工具。
图11: H文件内容
Run脚本会执行XHide来启动xmrig加密货币挖矿,并将进程名变成java。相关的进程id会写入名为pid的文件,upd脚本会杀掉并重启进程。
图12:用预配置的XMRig挖矿机来运行XHide进程隐藏器的脚本文件
因为使用cron和xhide作为驻留的方法,所以将恶意软件攻击活动命名为CroniX。
挖矿活动
攻击者通信的XMR池为eu.minerpool.pw,DNS请求:
图14: DNS查询获取的挖矿池服务器的IP地址
获得挖矿池的域名后,攻击者就会进入挖矿池:
图15: 挖矿机尝试登入挖矿池
与其他攻击活动的关系
研究人员认为该攻击活动背后的威胁单元与利用CVE-2017-1000353漏洞攻击Jenkins服务器的漏洞类似,因为恶意软件的实现模型、系统的应用文件名,并使用了XHide-Process Faker。威胁单元还使用了中文git网站来保存恶意文件。
这次攻击者用了专门的web服务器来服务保存于美国的文件,使用的帕劳(帛琉)共和国域名(太平洋岛)是在俄罗斯注册机构注册的。
图16: reg.ru注册的Palau (.pw)域名
图17: 威胁单元使用美国的虚拟主机服务
总结
这是漏洞发现两周后的首次在野攻击,攻击者很快就将POC中的代码修改并应用于实践。相关企业必须尽快对受影响的系统打补丁,如果没有补丁,可以选择使用web应用防火墙进行自动保护。