NSA 攻击工具再遭利用,Windows、Linux服务器沦为挖矿工具

2017 年 12 月 21 日 黑白之道



F5研究员发现了一种新型Apache Struts 漏洞利用。这种恶意行动利用NSA EternalBlue 和 EternalSynergy两种漏洞,运行于多个平台,目标为内部网络。

 

研究人员将其命名为“Zealot”,因为其zip文件中包含有NSA所发布的python脚本。随着研究的深入,此文章会进一步更新,目前我们所知道的有:


  • 新型Apache Struts 目标为Windows和Linux系统

  • Zealot的攻击复杂,多平台,且及其模糊

  • Zealot利用的服务器均有以下两种漏洞

    • CVE-2017-5638:Apache Struts Jakarta Multipart Parser attack

    • CVE-2017-9822:DotNetNuke (DNN) content management system vulnerability

  • 此次攻击升级了EternalBlue 和 EternalSynergy 两种漏洞,以便后期进入内网。

  • 它有一个高度模糊的PowerShell Windows代理和一个为Linux/OS X准备的Python代理,这个代理看似基于EmpireProject 利用后框架。

  • Zealot 目前在挖门罗币,在网络犯罪中广受欢迎。



介绍



研究员第一次发现此Apache Struts活动时,这个恶意活动看似是自2017年3月首次发现后便广泛传播,被用来利用所有存在Jakarta Multipart Parser attack (CVE-2017-56381) 漏洞的服务器。Zealot 同时还利用了DNN  漏洞(CVE-2017-98222),这个漏洞于2017年7月被首次发现。

 

Zealot野心勃勃的利用这两个漏洞,将目标指向Windows 和 Linux 系统。如果这些请求分开发送,我们也可以把它看成发送同样载荷的两个不同的行动。

 

但是仔细看一下这些高度模糊的载荷,我们发现这远非一个简单的攻击,它更复杂,在更多平台攻击,可以横向位移,且对NSA的EternalBlue 和 EternalSynergy两种漏洞 做了升级。

 

虽然目前Zealot活动只是在挖门罗币,但是利用这些已经损坏的系统,他们可以为所欲为。



Apache Struts Jakarta Multipart Parser (CVE-2017-5638)



攻击始于网络扫描和两个HTTP请求。其中一个请求便是臭名昭著的 通过内容类型标头(Content-Type header)利用Apache Struts 漏洞。大多数Apache Struts  漏洞活动针对的目标要么是Windows或是Linux平台,而Zealot有载荷,目标是这两个平台。



图1 HTTP请求针对STRUTS

 

如果服务器很脆弱,那就会执行JAVA,损害底层操作系统。



Linux 被利用后


针对Linux平台,该恶意行动会在后台使用“nohup”指令,执行shell指令,即使shell被关闭,该进程依然会继续运行。该指令会下载并运行一个spearhead bash脚本。


下载和执行方法


Zealot会通过几种方法来捕捉该脚本。首先,它会通过TCP 插口链接一个远程服务器,将收到的数据重新导向shell。如果失败,Zealot将使用“curl”和“wget”工具下载并执行一个名为“larva”的文件,然后立刻删掉。

 

 

 

图2 Shell 指令 捕捉、执行larva bash 脚本

 

这些下载和执行技巧被用用于后来所有使用的恶意软件,作者将之归类为“tcp”和“http”下载单元。


“larva”spearhead Deliveries


下载的bash脚本会通过测试之前定义的mutex(互斥体,21915)是否存在,来检查该机器是否已被感染。如果存在,则终止,否及将绕一圈继续执行。

 


图3 测试机器是否感染

 

然后它会使用同样的下载和执行技巧,捕捉一个名为“mule”的文件,这是一个加密货币挖矿机的恶意软件。

 


图4 “larva” 脚本提交一个加密货币挖矿机“mule”

 

接下来,它会将一个内置的64进制模糊python代码 注入一个新的Python进程。

 


图5 内置64进制编码的 python代码


Little Snitch 和未知类别


可以看到,这个python代码会检查是否“Little Snitch” 进程是否在执行(“Little Snitch”是一个针对mac OS 的防火墙设定服务  )。如果在执行,那么python代码会停止。如果未执行,那么它会向C&C服务器发送请求,捕捉另一段python代码。

 


图6 Little Snitch 防火墙检查

 

该脚本与服务器交流的方式远比一般僵尸网络要复杂的多。发送请求给 C&C服务器后,会增加特定用户代理和Cookie headers。这样的话,任何试图通过个人浏览器或工具进入C&C 服务器的人都无法获得与恶意软件相同的响应。

 


图7 使用特定HTTP 头部值向C&C服务器发送请求

 

收到的内容被RC4 密码加密过,一般的网络检测设备只能看到内容,但是无法研究或者扫描。只有脚本有密钥。而此次我们收到的是另一段Python代码,可用RC4 密码解密,解密后立即执行。

 


图8 在HTTP响应中应用的 RC4解密路径



Windows 被利用后


如果检测到Windows,STRUTS 载荷会通过一种隐蔽的方法运行一个PowerShell interpreter,即64进制编码的代码。一旦被解码2次,就会出现混淆脚本。去混淆之后,就能发现一个URL,进入一个文件,而这个文件是从另一域名下载的。

 


图9 2层解码过后的混淆脚本



加密货币矿机的DLL注入


该下载的文件,是一个更加模糊的PowerShell 脚本“scv.ps1”,一旦去混淆,整个过程都明了了。

 

主要的部署程序将开始下载矿机恶意软件并执行。然后下载一个相同的恶意软件作为DLL,并使用Reflective DLL注入技巧,将恶意软件注入进更多的PowerShell 进程中。


在内网传播、繁殖


如果windows设备上未安装   python 2.7,它会下载一个python 安装包并执行。然后下载主要的python  模块(“probe.py”),将感染传入内网。该脚本使用“pyminifier”进行混淆,这是一个Python代码最小化,混淆和压缩的公共包。原脚本是一个64进制编码的脚本,压缩过20次。

 


图10 使用“pyminifier”混淆过的python 脚本

 

“probe.py” 脚本决定该平台是32位或64位的,还有底层操作系统。

 


从星际争霸游戏中取得部分变体名和值

 

如果你对该变体和相应的数值很熟悉的话,那你应该和攻击者一样,也是星际争霸的粉丝了。 Zealot, Raven, Observer, and Overlord都是该游戏中的典型人物。

 

随着漏洞利用在windows设备上的进行,它会下载 “zealot.zip” 和“raven64.exe”文件。 “zealot.zip” 包含有几个python脚本和函数库,攻击者的脚本全部都用 “pyminifier”工具混淆了。

 


图12“zealot.zip”文件夹的内容

 

“raven64.exe”会扫描内网的445端口,并触发 zealot.py,向win7和win8系统中注入3中不同的shellcode,以利用 EternalSynergy 和 EternalBlue两个漏洞。

 


图13 “zealot.py” 执行两个漏洞利用

 

注入的shellcode一旦成功执行,它会开始运行PowerShell,下载 相同的“scv.ps1” 代理。不同的是,这一次是不同的服务器。

 


图14 Windows 8 的shellcode包含编码过的Powershell代码

 

与EternalBlue漏洞利用使用外部文件作为他们的shellcode不同,EternalSynergy 漏洞利用有内置shellcode,且试图从另一个服务器下载并执行一个名为“minerd_n.ps2”的PowerShell脚本。



矿机



“mule” 恶意软件是一个专挖门罗币的恶意软件。门罗币因其高匿名性的特点,已成为网络犯罪的一个热门货币。向特定矿机地址所支付的金额高达约8,500美元,目前,尚不清楚此次行动可以赚多少钱。

 


图15 Mule 恶意矿机的值



Leveraging Off-the-Shelf Tools



Zealot攻击者使用了公共EmpireProject,这是一个PowerShell和Python 漏洞利用后期代理。

 



DotNetNuke Exploitation (CVE-2017-9822)



Zealot攻击者发送的另一个指令是利用DotNetNuke,一个基于ASP.NET的内容管理系统,通过一个易受攻击的DNNPersonalization cookie(CVE-2017-9822)发送一个序列化的对象。

 

图17 HTTP请求,指向 DNN

 

为了获得任意的代码执行,攻击者使用ASP.NET“ObjectDataProvider”小工具和“ObjectStateFormatter”格式化工具来嵌入另一个对象并调用一个shell。  “ObjectStateFormatter”提供了第二级混淆,因为嵌入对象是64进制编码。  被调用的shell将执行一个base64编码的PowerShell脚本,而这个脚本也是通过Apache Struts漏洞传递的。

 


图18:包含编码的PowerShell载荷的ASP.NET序列化对象



结论



Zealot似乎是第一个使用NSA漏洞在内部网络中传播的Struts活动。 还有其他类似NotPetya和WannaCry勒索软件的恶意软件,以及Adylkuzz  cryptominer通过直接扫描互联网来攻击中小企业,利用ShadowBrokers发布的NSA工具进行攻击。  然而,Zealot运动似乎正在打开新的攻击载体,通过网络应用程序漏洞自动在内部网络上传播恶意软件。

 

目前,如果您尚未使用CVE,请立即修补您的系统,并强烈考虑实施Web应用防火墙以实现自动化保护。






文章出处:看雪学院

你会喜欢


喜欢在星巴克上网?当心被黑客拉去“挖矿”

黑客的最新目标 用你的电脑作比特币挖矿机

云挖矿平台ScryptCC被黑,大量比特币被盗


登录查看更多
0

相关内容

java开发框架
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
 【SIGGRAPH 2020】人像阴影处理,Portrait Shadow Manipulation
专知会员服务
28+阅读 · 2020年5月19日
【综述】基于图的对抗式攻击和防御,附22页论文下载
专知会员服务
68+阅读 · 2020年3月5日
【新书】Java企业微服务,Enterprise Java Microservices,272页pdf
UML建模工具一览(20190909 更新)
UMLChina
12+阅读 · 2019年9月9日
漏洞预警丨Xstream远程代码执行漏洞
FreeBuf
4+阅读 · 2019年7月25日
Kali Linux 渗透测试:密码攻击
计算机与网络安全
16+阅读 · 2019年5月13日
“黑客”入门学习之“windows系统漏洞详解”
安全优佳
8+阅读 · 2019年4月17日
Linux挖矿病毒的清除与分析
FreeBuf
14+阅读 · 2019年4月15日
基于Web页面验证码机制漏洞的检测
FreeBuf
7+阅读 · 2019年3月15日
DiscuzX 3.4 Phar反序列化漏洞
黑客工具箱
8+阅读 · 2019年1月4日
如何用GitLab本地私有化部署代码库?
Python程序员
9+阅读 · 2018年12月29日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
Arxiv
6+阅读 · 2018年2月26日
Arxiv
10+阅读 · 2018年2月17日
Arxiv
4+阅读 · 2017年11月4日
VIP会员
相关资讯
UML建模工具一览(20190909 更新)
UMLChina
12+阅读 · 2019年9月9日
漏洞预警丨Xstream远程代码执行漏洞
FreeBuf
4+阅读 · 2019年7月25日
Kali Linux 渗透测试:密码攻击
计算机与网络安全
16+阅读 · 2019年5月13日
“黑客”入门学习之“windows系统漏洞详解”
安全优佳
8+阅读 · 2019年4月17日
Linux挖矿病毒的清除与分析
FreeBuf
14+阅读 · 2019年4月15日
基于Web页面验证码机制漏洞的检测
FreeBuf
7+阅读 · 2019年3月15日
DiscuzX 3.4 Phar反序列化漏洞
黑客工具箱
8+阅读 · 2019年1月4日
如何用GitLab本地私有化部署代码库?
Python程序员
9+阅读 · 2018年12月29日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
Top
微信扫码咨询专知VIP会员