本文翻译自:
https://blog.talosintelligence.com/2018/08/rocke-champion-of-monero-miners.html
思科Talos团队有很多关于加密货币挖矿恶意软件分析和企业如何进行防护的文章。本文分析中国的攻击单元Rocke的加密货币挖矿活动。
Rocke使用不同的工具集来传播和执行加密货币挖矿恶意软件,包括Git、HttpFileServers (HFS)、以及shell脚本、JavaScript后门、以及ELF、PE挖矿机在内的不同的payload。
2018年4月,研究人员发现Rocke使用中文和英文的Git库将恶意软件传播到含有Apache Struts漏洞的蜜罐系统中。恶意软件会从中文仓库站点gitee.com(用户名为c-999)下载许多文件到Struts2蜜罐中。随后,Gitee用户页变为c-888。同时,研究人员发现从gitlab.com仓库的c-18用户页也有同样的文件下载动作。
而且Gitee和GitLab的仓库是相同的,所有的仓库都有一个含有16个文件的名为ss的文件夹。这些文件包括ELF可执行文件、shell脚本、可执行动作的文本文件,文本文件可用执行的动作包括驻留、加密货币挖矿机执行等。
一旦威胁单元入侵一个系统,就会安装一个从3389[.]space下载和执行logo.jpg文件的定时任务来达到驻留的目的。logo.jpg文件实际上是一个shell脚本,会从威胁单元的Git仓库中下载挖矿可执行文件并保存为名为java的文件。而下载的文件与受害者系统架构有关。同样地,系统架构也决定了h32还是h64被用来调用java。
虽然研究人员最早发现其利用的是Apache Struts的漏洞,之后研究人员还发现该威胁单元利用了Oracle WebLogic服务器漏洞(CVE-2017-10271)和Adobe ColdFusion平台的关键Java反序列化漏洞(CVE-2017-3066)。
7月底,研究人员发现该组织又参与了另一起类似的活动。通过对这起新攻击活动的调查分析,研究人员发现了关于该威胁单元的更多情况。
研究人员发现一个Struts2蜜罐的wget请求的是位于118[.]24[.]150[.]172:10555的0720.bin文件。研究人员访问该IP发现这是一个开放HFS,保存的文件又0720.bin、3307.bin、a7、bashf、bashg、config.json、lowerv2.sh、pools.txt、r88.sh、rootv2.sh和TermsHost.exe。
HFS系统截图
研究人员2018年5月就发现该IP扫描过TCP 7001端口,这可能是在扫描Oracle WebLogic服务器,因为Oracle WebLogic服务器的默认端口就是7001。
0720.bin和3307.bin是同样大小(84.19KB)的相同ELF文件,VirusTotal检测该ELF文件是非恶意文件。Morpheus实验室发现了一个连接到相同IP地址的相似文件,如果C2中有该设备的密码验证指令,那么该文件就可用打开受害者设备上的shell。这两个样本和Morpheus Labs发现的那个样本的硬编码密码是相同的,而且偏移量也是相同的。
硬编码的密码
A7是一个shell脚本,可用杀掉与其他加密货币挖矿恶意软件和正常挖矿相关的进程。可用检测和卸载不同种类的国产反病毒软件,并从blog[.]sydwzl[.]cn(118[.]24[.]150[.]172)中下载和提取一个tar.gz文件。该脚本会从名为libprocesshider的GitHub上下载一个文件,并用ID preloader隐藏了一个名为x7的文件。在从攻击者位于118[.]24[.]150[.]172的HFS上下载a7之前,该脚本会从known_hosts中寻找IP地址并尝试通过SSH连接并执行。
a7源码
Config.json是开源门罗币挖矿机XMRig的挖矿配置文件。配置文件设定的挖矿池是xmr[.]pool[.]MinerGate[.]com:45700,钱包地址为[email protected]。这也是威胁单元Rocke命名的来源。Pools.txt是开源通用Stratum池挖矿机XMR-stak的配置文件,Stratum池挖矿机可以进行Monero、Aeon等多种加密货币挖矿。该配置文件中的挖矿池和钱包地址与Config.json相同。
Bashf是XMR-stak的变种,而bashg是XMRig的变种。
Lowerv2.sh和rootv2.sh是两个相同的shell脚本,会尝试下载和执行位于118[.]24[.]150[.]172的挖矿恶意软件组件bashf和bashg。如果shell脚本没有从118[.]24[.]150[.]172下载挖矿机,就会尝试从g2upl4pq6kufc4m[.]tk下载名为XbashY的文件。
R88.sh是一个shell脚本,会安装定时任务,并且尝试下载lowerv2.sh和rootv2.sh文件。
TermsHost.exe是一个PE32的门罗币挖矿机。根据使用的配置文件可以看出是Monero Silent Miner。该挖矿机的售价为14美元,广告中称该挖矿机可以加入到开始菜单的注册表中,只在空闲时进行挖矿,可以将挖矿机注册到Windows进程中来绕过防火墙。配置文件xmr.txt的内容与前面的一样,C2服务器地址为sydwzl[.]cn。该样本将代码注入到notepad.exe中,然后与MinerGate池进行通信。该样本还会在Windows开始菜单文件夹中创建一个UPX 打包的文件dDNLQrsBUE.ur。该文件看起来与渗透测试软件Cobalt Strike有一些相似之处,攻击者可以用来控制受感染的系统。
恶意软件使用的payload看似与Iron犯罪组织类似。而且Iron和Rocke恶意软件有很多相似之处,而且有系统的基础设施。因此,可以确认payload之间共享了一些代码基础,但仍不确定Rocke和Iron之间的具体关系。
通过Rocke的MinerGate Monero钱包地址[email protected],研究人员发现其C2注册的邮箱为[email protected]。而且Freebuf上的用户名rocke关联的邮箱就是[email protected]。
Rocke注册的网站地址大多位于江西省,一些网站是江西的商业公司,比如belesu[.]com,就是出售婴儿食物的。GitHub也显示Rocke来自江西,而且邮箱中的jx可能也代表江西省。
GitHub
研究人员还找到一个与Rocke相关的Github主页,主页显示隶属于江西师范大学。其中一个仓库文件夹里有与HFS系统相同的文件,包括shell脚本、钱包信息和挖矿机变种等。
研究人员通过Rocke的主页找到另一个保存了几乎相同内容但C2不同的仓库。但不能确定该主页是使用者以及使用方式。不同仓库中的文件说明Rocke对通过CryptoNote进行基于浏览器的JS挖矿比较感兴趣。Rocke好像是通过虚假Google Chrome高警消息、虚假APP、虚假Adobe Flash更新等方式诱使用户下载恶意payload。
仓库中有一个名为commands.js的JS文件,使用隐藏的Iframes来传播位于CloudFront的payload。通过UPX打包的payload的行为与TermsHost.exe释放的文件dDNLQrsBUE.url非常相似。
根据过去几个月的分析,Talos研究人员认为rocke会继续利用Git仓库在受害者设备上下载和执行非法加密货币挖矿。Rocke的工具集包括基于浏览器的挖矿机、很难检测的木马、Cobalt Strike恶意软件等等。除此之外,Rocke还将社会工程作为一个新的感染向量。同时,Rocke的活动说明非法加密货币挖矿活动并没有消亡。