典型挖矿家族系列分析三 |Sysrv-hello挖矿蠕虫

1 引言
随着近几年区块链技术和加密货币等虚拟货币的兴起,挖矿木马的开源导致获取挖矿木马的门槛降低,除大量黑产组织持续运营挖矿木马之外,更有其他非运营挖矿木马的黑产组织将运营方向转为挖矿木马,导致挖矿木马的持续活跃。2021年9月3日,国家发展改革委等部门发布关于整治虚拟货币“挖矿”活动的通知[1],明确要求整治虚拟货币挖矿活动,打击挖矿活动已然势在必行。在发文后的这一年里挖矿整治活动效果显著,政企校等组织单位所遭遇的挖矿木马数量持续降低。依据有关数据,2022年加密货币价格多次下跌、市场价值整体呈现下降趋势,但传播挖矿木马对于攻击者而言仍有利可图,因此,在2022年中还是有很多小型挖矿木马家族兴起。例如Hezb、“1337”和Kthmimu等挖矿木马家族等。
安天CERT将近几年历史跟踪储备的典型流行挖矿木马家族组织梳理形成专题报告,在未来几个月依次发布,并持续追踪新的流行挖矿家族。专题报告将详细介绍挖矿木马家族历史演进、详细分析家族样本迭代版本、梳理历史攻击事件、提供感染后排查手段以及公布更多的IoCs,另外我们也会不断完善自身安全产品能力,采取有效技术方案对挖矿木马实施检测和清除,帮助政企校等组织单位有效防护和清除挖矿木马。
2 挖矿木马简介
2.1 什么是挖矿
“挖矿”是指通过执行工作量证明或其他类似的电脑算法来获取虚拟货币,“矿”代表的是虚拟货币,挖矿的工人通常称为“矿工”。而“挖矿木马”是一种集成化恶意代码,能够通过各种手段将挖矿程序植入受害者的计算机中,在用户不知情的情况下,利用受害者计算机的运算力进行挖矿,从而获取非法收益。这类非法入侵用户计算机的挖矿程序被称作挖矿木马。
挖矿方式有两种:一种是solo式(直接连入中心网络工作),产出收益均归自己所有;另一种是连入矿池,收益与矿池分成。由于连入矿池的技术难度较低并且收益相对稳定,所以挖矿木马通常会采用这种方式。挖矿类型也有两种:一种是被动型挖矿,在用户不知情的情况下被植入挖矿程序,获取的虚拟货币归植入挖矿程序的入侵者所有;另一种是主动型挖矿,人员主动利用计算资产运行挖矿程序,获取的虚拟货币归计算资产所有者或使用者所有。挖矿的本质是计算符合条件的hash值并返回,采用的方式为暴力破解式计算,主要特征表现为消耗主机资源,浪费用户电力资源。
2.2 为什么挖矿活动会日益猖獗?
将其与同样很流行的勒索活动进行对比可以发现,相对于勒索软件,挖矿活动收入更加稳定。在勒索事件中,一方面很难精确定位加密到有重要内容的主机,另一方面受害者交付赎金后又不能保证一定得到解锁服务,这就导致了勒索活动的规模和获得的赎金严重不成正比。
而在挖矿活动中,挖矿木马只要运行在计算机上就可以在矿池中获得shares(具体情况要根据矿池的分配模式)并转换成收益。挖矿的难度也比勒索活动要低,其大部分会使用开源的程序并注册一个钱包地址,挖矿过程中不需要投入其他精力便可坐享其成。
另外,虚拟货币的增值性和匿名性也是促使挖矿木马日益猖獗的原因之一。通过虚拟货币不仅可以逃避现实世界的金融追查手段而且还获得了具有增值潜力的货币,可谓一箭双雕,这也是挖矿木马更喜欢匿名货币(例:门罗币)的原因。
2.3 挖矿木马的危害
通常情况下,受害者会认为挖矿木马只是会让系统卡顿,并不会对自身造成太大的影响,但是挖矿木马除了会让系统卡顿之外,还会降低计算机设备性能和使用寿命,危害组织运营,浪费组织电力能源。不仅如此,现在的挖矿木马普遍会留置后门,导致受害者主机沦为攻击者的控制节点,以此组建僵尸网络,继而下发命令攻击其他计算机,因此,现阶段的挖矿木马已经不单单是执行挖矿这一简单操作,而是逐步开始利用入侵能力谋取更多非法利益。
3 Sysrv-hello挖矿蠕虫概述
Sysrv-hello是一个利用多种漏洞传播的Windows和Linux双平台挖矿蠕虫,主要目的在于传播挖矿蠕虫,继而实现挖矿获利。该挖矿蠕虫于2020年12月31日被首次披露,由于捕获的大量样本原始文件名以“sysrv”字符串为主,且样本内使用的函数或模块路径中均包含“hello”字符串,研究人员将其命名为Sysrv-hello[2]。Sysrv-hello挖矿蠕虫传播的文件主要有核心脚本、蠕虫母体及挖矿程序。其中核心脚本文件类型有Shell和PowerShell,主要承担下载并执行蠕虫,Linux脚本功能包括结束竞品、防御规避、持久化、横向传播等功能,PowerShell脚本更聚焦在防御规避和持久化上;蠕虫母体是由GO语言编写,利用各种漏洞进行核心脚本的传播,进而实现自身的间接传播;挖矿程序负责劫持目标主机计算资源以此实施挖矿,该程序主要通过蠕虫母体释放并执行,但存在一段时间由核心脚本负责下载和执行。
Sysrv-hello挖矿蠕虫的更新主要体现在核心脚本和蠕虫母体上,其中蠕虫母体的迭代以漏洞利用组件的数量最为明显,且存在尝试部分漏洞并淘汰的现象,截至目前其使用过的漏洞达20个以上,常用的在18个以上,而可明显观察的核心脚本的迭代就达13次以上。
Sysrv-hello挖矿蠕虫有别于其他挖矿木马,不注重在传播时维持对目标系统的访问,而是更注重通过新增漏洞利用组件提高传播能力,实现持续增长和维持高稳定的挖矿收益。
4 Sysrv-hello挖矿蠕虫介绍
Sysrv-hello挖矿蠕虫于2020年12月31日被首次披露,通过漏洞传播,无针对性目标,蠕虫样本更新频繁,是一个活跃在Windows和Linux的双平台挖矿蠕虫。根据其近两年的活动,可将其发展分为三个阶段:前期尝试传播、中期扩大传播和后期注重防御规避并维持传播力度。从三个阶段的样本分析看,其背后黑产组织并不重视维持对目标主机的访问权限,只在中期和后期的Redis漏洞利用中添加了在目标系统中植入SSH公钥的功能;其更加注重收益,尽可能扩展和维持传播能力,由于其后期矿池连接方式采用矿池代理,无法获取其全面的收益情况,但在2021年3月份期间平均每两天收益一个门罗币[3],按当时市价,即平均每天收益100美元。
表 4‑1 Sysrv-hello挖矿蠕虫基本信息

Sysrv-hello挖矿蠕虫的传播阶段依据其近两年的更新、样本功能、挖矿模式,可将其传播过程分为三个阶段,前期传播为主,此时应是攻击者的蠕虫传播尝试阶段;中期扩大传播力度,漏洞数量也有很大提升,具体感染范围也可通过3月份的收益进行推测;后期注重规避并维持传播能力,进一步提升漏洞数量,同时注重从矿池地址、漏洞模块名称、样本落地名称等方面的防御规避。

5 Sysrv-hello挖矿蠕虫对应的ATT&CK映射图谱
Sysrv-hello挖矿蠕虫对应的技术特点分布图:

具体ATT&CK技术行为描述表:
表 5‑1 事件对应的ATT&CK技术行为描述表

6 防护建议
针对非法挖矿,安天建议企业采取如下防护措施:
1. 安装终端防护:安装反病毒软件,针对不同平台建议安装安天智甲终端防御系统Windows/Linux版本;
2. 加强SSH口令强度:避免使用弱口令,建议使用16位或更长的密码,包括大小写字母、数字和符号在内的组合,同时避免多个服务器使用相同口令;
3. 及时更新补丁:建议开启自动更新功能安装系统补丁,服务器应及时更新系统补丁;
4. 及时更新第三方应用程序补丁:建议及时更新第三方应用程序,特别是与业务相关的,如Redis、WebLogic、JBOOS等应用程序补丁;
5. 开启日志:开启关键日志收集功能(安全日志、系统日志、错误日志、访问日志、传输日志和Cookie日志),为安全事件的追踪溯源提供基础;
6. 主机加固:对系统进行渗透测试及安全加固;
7. 部署入侵检测系统(IDS):部署流量监控类软件或设备,便于对恶意代码的发现与追踪溯源。安天探海威胁检测系统 (PTD)以网络流量为检测分析对象,能精准检测出已知海量恶意代码和网络攻击活动,有效发现网络可疑行为、资产和各类未知威胁;
安天服务:若遭受恶意软件攻击,建议及时隔离被攻击主机,并保护现场等待安全工程师对计算机进行排查;安天7*24小时服务热线:400-840-9234。
经验证,安天智甲终端防御系统(简称IEP)可实现对该挖矿木马的有效查杀。

7 样本分析
以下样本分析的对象是截至本报告发布时的最新样本,其中母体样本由于双平台,样本功能一致性原因,仅分析了Linux平台样本。与上一版本的区别在于改变C2地址和矿池代理地址。
7.1 ldr.ps1核心脚本分析
7.1.1 样本标签
表 7‑1 ldr.ps1样本标签

7.1.2 脚本初始化
脚本在开头定义C2地址、挖矿蠕虫落地后的随机字符串文件名及存储路径。

7.1.3 防御规避
通过netsh命令关闭所有防火墙配置文件启用状态,确保后期C2和矿池的正常连接。

7.1.4 结束自身和其他可疑进程
以挖矿蠕虫历史进程名和挖矿程序历史进程名结束自身在目标主机的相关进程,同时以端口号为依据结束目标主机上可疑矿池连接的进程。

7.1.5 投放挖矿蠕虫并建立持久化驻留
在无“kthreaddk”进程的情况下,下载并执行挖矿蠕虫,同时以该蠕虫为载体创建名为“BrowserUpdate”的计划任务和注册表自启动。

7.2 ldr.sh核心脚本分析
7.2.1 样本标签
表 7‑2 ldr.sh样本标签:

7.2.2 脚本初始化
默认设置各类shell解释器执行本脚、定义C2地址、蠕虫母体样本文件名随机化方式。

7.2.3 封装下载函数
封装下载函数,设置各种下载方式,确保蠕虫母体能够正常下载,并完成执行权限的赋权。

7.2.4 防御规避
关闭受害系统防火墙并开放所有网络访问。

卸载云主机安全组件和服务。

擦除相关日志数据。

7.2.5 结束竞品和自身进程
在结束竞品上,处置对象主要以可疑进程名、可疑计划任务为主。结束自身进程以“kthreaddk”为依据。

7.2.6 部署挖矿蠕虫
下载并执行Sysrv-hello挖矿蠕虫,执行后删除蠕虫载体及相关文件。

7.2.7 横向传播
通过受害主机上的私钥信息及历史SSH连接的IP地址,遍历验证私钥和其他主机是否匹配,尝试免密SSH连接远程主机,同时在远程主机上执行下载并执行核心脚本的命令。

7.3 蠕虫母体样本分析
7.3.1 样本标签
表 7‑3蠕虫母体样本标签

7.3.2 基础功能模块
通过封装base64编解码、端口探测、会话控制、字符串操作等功能,为后续模块提供便捷。

7.3.3 端口扫描模块
端口扫描模块集成了端口扫描初始化、TCP扫描、SYN扫描、TCP头、SYN发包等功能,为漏洞利用提供前期探测作用。

7.3.4 漏洞利用模块
漏洞利用模块封装了漏洞利用模块初始化、会话控制、各漏洞利用组件(19个)。

每个漏洞利用组件至少有三个函数,包括初始化、检查和执行,其他主要是辅助函数,如暴力破解、请求等。

较为特殊的是在Redis弱口令暴力破解模块中,在成功暴力破解后除了传播挖矿蠕虫,还会植入硬编码的SSH公钥。

样本中自定义的漏洞编码(Sysrv-hello挖矿蠕虫作者以此对抗安全研究人员分析)对应的漏洞编号和描述如下:
表 7‑4 蠕虫母体漏洞列表

7.3.5 挖矿投放模块
挖矿投放模块设置多个函数,实现挖矿程序初始化、挖矿进程管理、挖矿程序释放等功能,其中初始化过程会计算母体样本中的挖矿程序文件MD5值,进程管理上会结束老版本的挖矿进程。

矿池代理地址及端口为194.38.23.2:8080,上一版本的是194.145.227.21:5443。

8 Sysrv-hello挖矿蠕虫迭代
8.1 核心脚本的迭代更新
8.1.1 核心脚本简介
Sysry-hello是一个Windows和Linux双平台挖矿蠕虫,蠕虫母体主要通过核心脚本执行,因此存在两类脚本文件,即PowerShell脚本和shell脚本。从该挖矿蠕虫的系列活动特点分析,可将传播Sysrv-hello挖矿蠕虫过程可分为三个阶段,前期传播为主,中期扩大传播力度,后期注重规避并维持传播能力。
8.1.2 文件名变化
Sysrv-hello挖矿蠕虫的核心脚本和母体样本下载链接中的原始名称基本保持不变,核心脚本原始名称始终保持一致。Windows平台的为“ldr.ps1”,Linux平台的为“ldr.sh”,母体样本原始名称主要以sysrv和sysrvv为主。不过其母体文件落地目标系统的文件名却显示了该挖矿蠕虫不断迭代的特点,主要以sysrv、sysrv001-sysrv013、6-12位随机字符串为主,依次体现在核心脚本所写的母体样本植入目标系统的代码中。
表 8‑1 文件名变化:

8.1.3 核心脚本功能迭代
核心脚本功能迭代的变化充分反映Sysrv-hello挖矿蠕虫的发展阶段特点。
表 8‑2 核心脚本功能迭代:

8.1.4 C2地址变化
以下是核心脚本中涉及的母体样本落地文件名变化及对应C2地址, Sysrv-hello挖矿蠕虫使用的基础设施较为丰富,投放样本的活动也非常频繁。
表 8‑3 C2地址变化:

8.2 母体样本的迭代更新
8.2.1 母体样本简介
Sysrv-hello母体文件是由GO语言编写的Windows和Linux双平台挖矿蠕虫,投放的样本都会采用UPX加壳,期间使用的UPX版本不一致。母体文件具备端口扫描、暴力破解、漏洞利用等攻击和探测行为,成功后植入下载并执行核心脚本的命令,利用核心脚本下载并执行母体文件,实现自身传播;同时母体文件还具备安装挖矿程序的功能。
8.2.2 母体模块变化
模块功能变化反映了攻击者的意图,其中将前期的边界设备探测模块封装在中后期基础功能中,后期将模块中的hello字符串修改为shell,不排除是大量厂商对其活动披露后的一种简单规避。
表 8‑4 母体模块变化:

8.2.3 漏洞模块变化
表 8‑5 漏洞模块变化:

8.2.4 挖矿模块变化
表 8‑6 挖矿模块变化:

9 关联分析
9.1 “黑吃黑”现象
在捕获的样本中,发现一个可疑的核心脚本,功能及代码风格与Sysrv-hello挖矿蠕虫核心脚本不太一致,最为突出的是其具备在目标系统中写入SSH公钥的功能,同时下载挖矿蠕虫母体文件的URL拼接方式不同。

下载的母体文件功能和代码与Sysrv-hello挖矿蠕虫母体样本一致,但硬编码了一个钱包地址,从未在Sysrv-hello挖矿蠕虫迭代的母体样本中出现。

母体文件中也硬编码了母体文件下载连接中的IP地址。

通过关联涉及的IP地址、钱包地址、SSH公钥,均指向了Cleanfda挖矿木马。安天CERT推测此种现象可能是Cleanfda挖矿木马的攻击者捕获的Sysrv-hello挖矿蠕虫母体的某个版本(该版本存在7个漏洞利用组件),继而替换了其中的C2地址和钱包地址,存放自己的服务器中,并编写对应的核心脚本,实现传播能力的劫持。
9.2 具备永恒之蓝漏洞传播
在一个捕获到的后期样本中,发现具备永恒之蓝漏洞利用组件,具备释放相关利用组件,实现传播Sysrv-hello挖矿蠕虫功能。但该漏洞利用模块未能持续保留,应该是攻击者做的一种尝试,同时不排除在历史传播阶段出现其他漏洞利用模块,而在后期被淘汰了。

10 自查及处置
10.1 Windows平台
1. 检查系统进程列表,是否存在进程名包含这些“network”、“kthreadd”、“sysrv”字符串的进程,存在则结束该进程;
2. 检查系统进程列表,是否存在进程名包含类似“ylket8pfrj5”、“sgoj57n3”、“bp5ovz”的6-12随机字符串的进程,存在则结束该进程;
3. 检查系统自启动项,查看启动项的对应的载荷文件名是否包含类似“ylket8pfrj5”、“sgoj57n3”、“bp5ovz”的6-12随机字符串,存在则删除该自启动项;
4. 检查系统计划任务,查看是否存在名为“BrowserUpdate”的计划任务,载荷对应路径为临时目录,存在则删除。
10.2 Linux平台
1. 检查系统进程列表,是否存在进程名包含这些“network”、“kthreadd”、“sysrv”字符串的进程,存在则结束该进程;
2. 检查系统进程列表,是否存在进程名包含类似“5c46403e1d”、“ce368c626”、“ce368c626”的6-12随机字符串的进程,存在则结束该进程;
3. 查看计划任务中是否存在下载链接,且下载的文件名为“ldr.sh”,存在则删除对应计划任务。
11 IoCs

参考资料
[1] 国家发展改革委等部门关于整治虚拟货币“挖矿”活动的通知
http://www.gov.cn/zhengce/zhengceku/2021-09/25/content_5639225.htm
[2] Sysrv-hello 新型挖矿现身
https://developer.aliyun.com/article/780758?spm=a2c6h.14164896.0.0.7e0f3d89eoiqz7
[3] Sysrv Botnet Expands and Gains Persistence(Sysrv僵尸网络不断扩大并持续存在)
https://blogs.juniper.net/en-us/threat-research/sysrv-botnet-expands-and-gains-persistence
[4] 双平台挖矿僵尸网络Sysrv-hello加持新漏洞再度来袭
https://www.anquanke.com/post/id/271672