标题 简介 类型 公开时间
关联规则 关联知识 关联工具 关联文档 关联抓包
参考1(官网)
参考2
参考3
详情
[SAFE-ID: JIWO-2024-1198]   作者: ecawen 发表于: [2017-12-22]

本文共 [532] 位读者顶过

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有载荷,目标是这两个平台。[出自:jiwo.org]
2
图1 HTTP请求针对STRUTS

 

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

Linux 被利用后

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

下载和执行方法

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

 

3

 

4

 

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

 

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

“larva”spearhead Deliveries

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

 

5
图3 测试机器是否感染

 

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

 

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

 

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

 

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

Little Snitch 和未知类别

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

 

8
图6 Little Snitch 防火墙检查

 

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

 

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

 

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

 

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

Windows 被利用后

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

 

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

加密货币矿机的DLL注入

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

 

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

在内网传播、繁殖

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

矿机

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

 

16
图15 Mule 恶意矿机的值

Leveraging Off-the-Shelf Tools

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

 

17

DotNetNuke Exploitation (CVE-2017-9822)

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

 

18
图17 HTTP请求,指向 DNN

 

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

 

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

结论

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

 

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

评论

暂无
发表评论
 返回顶部 
热度(532)
 关注微信