Rocke挖矿软件新变种瞄准Jenkins漏洞

Rocke是一个专门从事加密货币挖掘的威胁组织,FortiGuard Labs在对Rocke持续追踪的过程中注意到,在过去的一个月里,其恶意软件又拓展了不少新功能,例如利用运行Jenkins(一种软件开发自动化服务器)的系统来增加感染机会,以及增加恶意软件的攻击阶段、在多个执行组件中添加冗余成分,既能使恶意软件变得更加动态灵活,还能帮助Rocke最大化牟利。

本文将对Rocke恶意软件的通用行为及新功能做介绍。天空彩

图1:基本执行流程

阶段一和阶段二

恶意软件的bash脚本组件托管在Pastebin中,其配置文件名称为“SYSTEMTEN”,与“Rocke”威胁组织先前使用的名称非常相似。值得注意的是,大多数情况下会有多个指向同一个脚本的链接。据我们推测,这个看似冗余的步骤用于保障操作连续性,以防由于某种原因某些链接被删除。脚本的链接似乎每隔几天就会发生变化,因此手动监控可能会非常繁琐。类似的冗余也可以在此恶意软件的其他部分中看到。中国菜刀

图2:承载Pastebin文件的账户名

简而言之,感染始于第一阶段的脚本执行,该脚本可以通过各种方式安装到系统中,包括手动入侵、横向移动、互联网漏洞扫描、强制登录和漏洞利用等。

第一阶段脚本的唯一目标就是通过wget或curl命令下载第二阶段脚本并执行。

图3:第一阶段脚本

第二阶段执行以下操作:

1.添加一个CRON作业,定期下载并执行第一阶段脚本。在本例中,* * * * *表示脚本将每分钟执行一次。

图4:为第一阶段添加CRON作业

2. 终止其他挖矿软件相关进程,最大限度地利用系统的处理能力。

图5:终止现有挖矿软件

3. 下载适用于系统架构(x32 / x64)的主要payload二进制文件。攻击者为每种系统分配了两个不同的下载链接,以防失效。值得注意的是,通常链接中有一个包含了时间戳,能揭示其上传或编译时间。

图6:下载主payload

在较老的版本中,下载链接都直接指向二进制payload,直到几天前,我们发现Rocke在实际执行payload之前增加了一个新的阶段——加载器阶段,链接指向嵌入base64编码的ELF二进制文件的大型python脚本,解压后再执行二进制payload。

图7:主payload的加载程序

4. 执行第一阶段脚本并访问SSH known_hosts文件来横向传播恶意软件,该文件包含受害者系统先前连接到的SSH主机,通过二次测试以检验公钥验证是否可行。

图8:通过SSH传播known_hosts

主Payload

主二进制文件充当恶意软件在系统中的操作的管理器。它确保组件定期更新、持久性和隐蔽性,最后执行加密货币挖矿机。

压缩

主payload用Go语言(GoLang)编写,一开始是用简单的UPX加壳,但今年3月起,Rocke将加壳的二进制文件部分名字更改为“LSD!”就能切换成“自定义的”UPX压缩文件。这是一个简单的技巧,但它可以非常有效地避免基于文件的检测,因为在大多数情况下,检测引擎只能解压正确头文件的UPX压缩文件。

图9:恶意软件切换到自定义UPX

持久性和隐身机制

此恶意软件使用多个持久性和隐藏机制来确保其在受感染系统中的挖掘操作。

首先,它添加了服务netdns以确保二进制payload——/ usr / sbin / kerberods在启动时执行。

图10:负责恶意软件服务的Init脚本

其次,它还添加了几个CRON作业,以定期下载和执行第一阶段脚本,使恶意软件组件能得到更新。在旧版本中,这些指向Pastebin的链接都是简单直接地硬编码到二进制文件中,然而,在最近的变体中,Pastebin的ID变得更加动态,另一个阶段也以一个新Pastebin链接的形式开启的,链接中包含了ID。但是,如果此链接无法访问,则仍可使用硬编码的ID来供恶意软件使用。

图11:添加了指向第一阶段脚本的CRON作业

恶意软件为了隐藏其挖矿操作,会为动态库预加载过程安装一个挂钩库(usr/local/lib/.so)。通过将库的路径添加到ld.preload.so来实现,库将加载到所有新进程中去。

库的文件名是通过从二进制文件中的硬编码字符串列表中随机选择来获得的,这与以前只使用一个硬编码文件名的变体不同。下面的图像只显示了它可以使用的几个文件名。

图12:部分文件名列表

简而言之,恶意软件的库组件挂钩函数,因此任何试图访问与恶意软件相关信息的应用程序都会显示一个虚假的结果。这些函数与文件列表、网络活动、进程和CPU使用信息相关。

图13:突出显示的是带有钩子函数的库

例如,如果应用程序试图列出恶意软件组件所在的目录,库将确保该恶意文件不会包含在结果中。为了实现这一点,恶意软件挂钩fopen API,同样的规则也适用于与之相关的其他构件,这种做法增加了受害者发现并删除恶意软件的难度。

图14:连到fopen的钩子函数

图15:隐藏库函数

至于隐藏实际CPU统计数据,如果应用程序试图读取/proc/stat文件,则调用force_proc_cpu函数来返回一个硬编码统计数据,显示CPU使用率为0%。

图16:返回伪proc/stat值的函数

图17:预加载恶意库之前和之后的工具

传播

此恶意软件的早期版本通过针对SSH(端口22)和Redis(端口6379)服务强制获取凭证的方法进行传播。它会扫描网络中的每个IP地址,并使用一长串硬编码的凭证列表来建立与这些服务的会话。

然而,大约一个月前,威胁参与者开始通过利用CVE-2018-1000861()和CVE-2019-1003000定位运行Jenkins的系统。

图18:通过CVE-2019-1003000传播

图19:通过CVE-2018-1000861传播

挖矿机

此版本中使用的是开源的XMRig CPU挖矿机,而在较早的版本中,则是在系统中植入一个单独的配置文件,其中包含所有信息,如钱包地址和使用的矿池。

图20:较旧版本的挖矿机的配置

在最新版本中,配置嵌入在二进制文件里。恶意软件使用代理服务器systemten.org:51640(最有可能运行xmrig-proxy服务)进行流量挖掘,其中配置了钱包地址和矿池。这意味着受感染的宿主矿工不知道这些参数的存在,从而有效地隐藏了进一步调查的细节。注意,端口可能会根据变体而变化。

图21:带有矿池代理的嵌入式挖矿机配置

结论

通过不断的监控,我们发现这次Rocke来势汹汹,经常在一天内多次更新,为其加密货币挖掘方案添加更多的功能。

通过使用挂钩库,将会使用户手动检测和删除系统中的感染变得更加复杂,从而给威胁组织更多的时间、产生更多的利润。我们还注意到,Rocke已经开始添加一些特性,通过针对系统漏洞来扩大其感染范围,考虑到他们最近的开发速度,Rocke很可能在不久的未来还会添加更多这样的特性。

解决方案

· Fortinet客户受以下解决方案的保护:

· 我们的IPS签名检测到Jenkins的漏洞为Jenkins.Script.Plugin.Authenticated.Remote.Command.Execution

· 可以使用应用程序控制签名Bitcoin.Cryptocurrency.Miner阻止到xmrig-proxy的流量

· 所有恶意样本都被检测为Linux / Agent.BQ!tr

· FortiGuard Web过滤服务能阻止了矿机的代理服务器

IOCs

Files

· fbbb28ed10c792b4a29748795cba26f78d28cf13d8b7b042d6de4f3ea1401399

· 3a6271a90d0f6cc8a2d31d45d931e8401f13f7377932ba07d871dc42f252b9ca

· 63c7f944bf8b9f4db9a8cf6d47a6d4026bba776478c1315c2888ecff603d73a1

· 1608899ff3bd9983df375fd836464500f160f6305fcc35cfb64abbe94643c962

· f6712249b3c27772daf815d459577c2c88a3aef6b66dfd0986ac9277a8bb35e1

· ea682b4aa3885657fe15f76cc3f97322547ca21f347069cd3c78b152a0155781

· 5eda73b869c22f92c78547995acbba5ff794ea24f5da72af2d653600411d6c97

· 3f8683fa08a5ae5964f4ee4962465b16c12075480e24a269d151ce1130c77d8c

· b383d0fdfa5036ccfa5d9c2b43cbfd814bce8778978873057b86678e5295fc61

URLs

systemten.org

· https://pastebin[.]com/raw/Xu86DLj0

· https://pastebin[.]com/raw/0DqEa3Gn

· https://pastebin[.]com/raw/Ei4z3RQ7

· hTTps://pastebin[.]com/raw/XiUrwYe9

· https://pastebin[.]com/raw/rPB8eDpu

· https://pastebin[.]com/raw/HWBVXK6H 

你可能感兴趣的:(Rocke挖矿软件新变种瞄准Jenkins漏洞)