Sysrv-hello携十八般武艺再度来袭

概述

近日,捕获到Sysrv-hello挖矿家族的最新变种,在本次更新中,该病毒家族的攻击模块达到了18个,新增了SSH爆破PostgreSQL RCE(CVE-2019-9193)Struts2 RCE(CVE-2017-5638)攻击模块,进一步扩大了影响范围和危害,并且目前监测到失陷主机数量正呈上升趋势。

Sysrv-hello家族最早出现于2020年12月份,至今其版本迭代已数十次,不断的新增攻击模块,是一个新型且十分活跃的家族。在最新的威胁情报分析中,发现了其最新版本,包括前置Payload去除了卸载云主机安全软件的模块以及新的自建钱包地址,并且其入侵手法基本覆盖到大多数政企单位常用的Web服务,危害严重,提醒相关运维人员及时更新补丁做好防护。

本次关键更新

1.前置Payload去除了之前新增的卸载云主机安全软件模块和a.py和BrowserUpdat.exe模块;(疑似版本回溯

2.删除部分老版本的漏洞利用模块,并新添SSH爆破、PostgreSQL RCE(CVE-2019-9193)和Struts2 RCE(CVE-2017-5638)攻击模块,目前该版本共有18种攻击模块,并且仍在不断迭代更有效的横向攻击模块;

3.更换矿机地址为自己的C2服务器,疑似使用自建矿池。

病毒攻击流程

image-20210828191100056

攻击活动

通过数据分析,发现该病毒近期扩散十分迅速,短期内有大量主机中招。如下图sysrv-hello病毒近期的感染量,可以看到病毒在7月2-7日进行了大规模入侵活动:

image-20210828191419855

病毒样本分析

Sysrv-hello攻击目标同时覆盖Windows和Linux操作系统,针对两平台除前置Payload不同外,其他模块基本一致。其中主体程序**sys可执行文件(横向传播模块)是由Golang编写的,因此具备跨平台性;矿机使用的是开源XMRig矿机。下面将分别介绍Windows和Linux的前置Payload以及主体程序sys**。

Windows版本

入侵Windows系统成功后,植入名为ldr.ps1的PowerShell脚本来执行恶意命令。ldr.ps1脚本主要功能为:

1.关闭防火墙并结束自身老版本病毒的进程;

2.通过监测其他挖矿家族常用端口来清除竞品挖矿程序;

3.从C2:http[:]//194.145.227.21/sys.exe下载并执行主体程序sys.exe,并通过创建计划任务和写注册表来实现本地持久化。

ldr.ps1

Linux版本

入侵Linux系统成功后,植入名为ldr.sh的Shell脚本来执行恶意命令。ldr.sh脚本功能大致与Windows下的ldr.ps1大同小异,但功能更为完善。如:

1.关闭防火墙并结束自身老版本病毒的进程;

2.通过监测其他挖矿家族常用端口来清除竞品挖矿程序;

3.从C2:http[:]//194.145.227.21/sys.x86_64下载并执行主体程序。

ldr.sh

除此之外ldr.sh,还会读取/、/root和/home目录下的SSH私钥及配置文件,并结合获取到的SSH密钥进行爆破。当爆破成功后,便在新的受害主机上下载并运行ldr.sh脚本,代码如图:

ldr_sh2

主体sys程序(横向传播模块)

由于主体sys程序是由Golang编写的,因此不同平台前置Payload下载的sys.exeh和sys.x86_64其代码和功能差距不大,因此本文将以Windows版本进行介绍。

通过脚本还原Go语言的函数和字符串之后,能定位出作者的编译路径和作者的用户名为**K**:

go_version

创建端口互斥

根据受害主机名生成随机端口,并将该随机端口作为互斥体,当检测到该端口已处于监听状态便退出程序,来确保唯一进程执行。

mutex

横向传播

本次捕获到的Sysrv-hello一共包含18个横向攻击模块,根据随机生成的IP进行端口扫描,判断目标开放的服务,来确认使用的攻击方式。18种横向攻击方式如下表:

端口 漏洞
9999 XXL-JOB executor 未授权访问漏洞
8888 Jupyter未授权访问漏洞
80 Laravel Debug mode RCE(CVE_2021_3129)
80/8080 Tomcat 弱口令爆破
80/8080 Jenkins RCE(CVE-2018-1000861)
8081 Nexus Repository Manager 3 RCE(CVE-2019-7238)
7001 WebLogic RCE CVE-2020-14882
6379 Redis弱口令爆破
9001 Supervisord远程命令执行漏洞(CVE-2017-11610)
80 JBoss反序列化漏洞(CVE-2017-12149)
80 ThinkPHP5 RCE
5432 PostgreSQL RCE(CVE-2019-9193)
8090 Confluence RCE(CVE-2019-3396)
22 SSH 爆破
80 Struts2-s2-045 RCE (CVE-2017-5638)
80 phpunit RCE(CVE-2017-9841)
8088 Hadoop YARN REST API未授权漏洞利用
80 Wordpress-XMLRPC暴力破解

注:其中标红的为本次版本新增的横向攻击模块。

新增横向攻击模块:

新增PostgreSQL RCE(CVE-2019-9193)漏洞利用模块,如图:

PostgreSQL

新增struts2-s2-045 RCE(CVE-2017-5638)漏洞利用模块,如图:

struts2

新增SSH爆破,如图:

SSH

历史漏洞利用模块:

XL-JOB executor 未授权访问漏洞利用模块,如图:

xl_job

Jupyter未授权访问漏洞利用模块,如图:

jupyter

Laravel Debug mode RCE(CVE_2021_3129)漏洞利用模块,如图:

Laravel

Tomcat 弱口令爆破模块,如图:

Tomcat

Jenkins RCE CVE-2018-1000861漏洞利用模块,如图:

jenkins

Nexus Repository Manager 3 RCE(CVE-2019-7238)漏洞利用模块,如图:

Nexus

WebLogic RCE (CVE-2020-14882)漏洞利用模块,如图:

weblogic

Redis未授权写漏洞利用模块,如图:

Redis

Supervisord远程命令执行漏洞(CVE-2017-11610)利用模块,如图:

Supervisord

JBoss反序列化漏洞(CVE-2017-12149)利用模块,如图:

JBoss

ThinkPHP5 RCE漏洞利用模块,如图:

ThinkPHP5

Confluence RCE(CVE-2019-3396)漏洞利用模块,如图:

Confluence

Payload:

payload

Phpunit RCE(CVE-2017-9841)漏洞利用模块,如图:

Phpunit

Hadoop YARN REST API未授权漏洞利用,如图:

Hadoop

WordPress暴力破解,如图:

WordPress

XMRig挖矿

最后,样本会创建守护线程(go routine)来守护矿机进程和文件,先将XMRig挖矿程序释放到临时目录下,并重命名为kthreaddi,然后释放配置文件,当挖矿进程运行起来,便会将配置文件删除。

Miner

矿池地址为:194.145.227.21:5443,矿池与C2地址一致,并且本地配置和抓包都没有看到钱包地址,因此推测此版本使用的是病毒作者自建的矿池,详细配置如图:

config

抓取的XMRig登陆信息的流量包,如图:

pcap

防护加固建议

清理建议

在日常运维中,系统管理员可注意以下内容:
1.检查有无占用CPU资源接近甚至超过100%的进程,如有找到进程对应文件,确认是否属于挖矿木马,Kill 挖矿木马进程并删除文件;kill 掉包含下载恶意shell脚本代码执行的进程;

2.检查/var/spool/cron/root、/var/spool/cron/crontabs/root等文件中有无恶意脚本下载命令,有无挖矿木马启动命令,并将其删除;

3.如有发现挖矿相关进程、恶意程序,及时对服务器存在的系统漏洞、弱口令、Web应用漏洞进行排查和修复。

加固建议

1.建议政企机构运维人员对服务器的SSH服务、Tomcat服务、WordPress服务等常用主机访问入口设置高强度的登录密码,以对抗弱口令爆破攻击。

2.对于Redis、Hadoop Yarn、XXL-JOB、Postgres、Jupyter等应用增加授权验证,对访问对象进行控制。

3.如果服务器部署了Weblogic、Apache Struts、Laravel、Jenkins、Nexus、Supervisord、JBoss、ThinkPHP、Confluence、phpunit 等经常曝出高危漏洞的服务器组件,应及时将其更新到最新版本,并且实时关注组件官方网站和各大安全厂商发出的安全公告,根据提示修复相关漏洞。

根据上述3步对Sysrv-hello挖矿病毒的攻击方式进行加固,运维人员可按照上文中汇总的漏洞及端口列表进行端口映射和补丁修复。

IOCS

MD5:

DA63A2F797B27F31745CFB8F94479BF4(sys.x86_64)
D51BA1FEE712AAC5A3A17129782115AF(sys.exe)
C67607C0927154A4D2EFD79AD502CC7D(ldr.ps1)
46C7302FE138E6A877755A3B5203303A(ldr.sh)
A7013A2C7FD3A6168A7C0D9EED825C32(kthreaddk.exe)

IP:

194[.]145.227.21

URL:

http[:]//194.145.227.21/ldr.ps1
http[:]//194.145.227.21/ldr.sh
http[:]//194.145.227.21/sys.exe
http[:]//194.145.227.21/sys.x86_64