针对某云平台服务器的“云铲”挖矿木马事件分析

时间 :  2021年02月02日  来源:  安天CERT


1、概述


        安天CERT联合哈尔滨工业大学联合实验室通过网络安全监测发现了一起Linux系统挖矿木马事件。在该挖矿木马的扫描策略中,以硬编码的某云平台网段IP地址作为起始地址。分析人员判定该挖矿木马对某云平台服务器存在一定的针对性,安天CERT基于此特点将该事件中的挖矿木马命名为“云铲”。

        该挖矿木马运行后通过服务器下载三个文件(主模块、恶意链接库、开源挖矿程序)。主模块功能为对扫描到目标进行SSH暴力破解,进而传播该挖矿木马;运行下载的挖矿程序进行挖矿;将恶意链接库路径写入预加载文件中,实现屏蔽相关命令对恶意文件实体和恶意进程的查找;将SSH公钥写入目标系统root用户.ssh目录中,实现以root用户对该系统的长期访问。主模块初始阶段扫描以其硬编码的某云平台服务器IP地址作为起始地址,包括该IP地址的同网段和相邻网段IP地址,后续随机扫描外网段IP地址及样本所在网络的外网IP地址,同时对内网相关IP进行扫描。

        安天CERT通过对该起事件的详细分析,在报告中给出了相应的检测、处置和加固方案。

        特别致谢:中国科学技术大学网络信息中心针对本篇报告提供的相关帮助。

        目前,安天智甲终端防御系统(Linux版本)可实现对该挖矿木马的查杀与有效防护。

        安天探海威胁检测系统(PTD)可以在流量中检测该木马的传播,对横向移动过程中的主机发现行为和端口扫描行为进行检测。同时支持对各类具有控制能力的协议如SSH、TELNET、RDP等协议的暴力密码猜解方式进行检测,有效发现此类横向移动传播方式。


2、样本分析


        经分析研判,文件bioset为该挖矿木马的主模块,其在目标主机运行后首先针对相关目标进行SSH暴力破解,同时在/root/.ssh/目录下创建authorized_keys文件,并将SSH公钥信息写入其中,以便后续对该目标主机的访问。其次下载并运行挖矿程序(kthreadd)和新的主模块(bioset),同时下载了恶意链接库文件(libcurl.so.2.17.0),将该文件写入/etc/ld.so.preload中,实现针对相关命令的预加载,进而屏蔽这些命令对该挖矿木马相关文件、进程的查看。

表 2-1挖矿木马相关文件

文件名

hash

备注

bioset

1EB3662AB4D710EF72450DAC9087A96C

主模块

kthreadd

7275D8B380E6FACC7C5420603F2672CC

由开源挖矿程序xmrig修改而来

libcurl.so.2.17.0

F8F745BC28CF24170B422F9B209BEACB

恶意链接库文件

authorized_keys

A4BCD006B681D3EF99C3C28BE376116E

攻击者SSH公钥



2.1 主模块分析

2.1.1 下载恶意文件bioset ,kthreadd,libcurl.so.2.17.0

表 2-2主模块样本标签

病毒名称

Trojan/Linux.BitCoinMiner

原始文件名

bioset

MD5

1EB3662AB4D710EF72450DAC9087A96C

文件格式

BinExecute/Linux.ELF

文件大小

1.42 MB (1,490,328 字节)

数字签名

加壳类型

upx

VT首次上传时间


        该模块连接到远程服务器http://www.fullskystar.top,该域名注册时间为2020年10月14日,通过POST请求指定参数,下载文件。

表 2-3 提交参数

参数

所下载文件

{

         "key":      "0FC2C00124A496A2D8EC43F60CDA466026E646214A2ACAF6E0C9BF43D44C388A93CA18CDAD5B13D190F084EE023A318CD3842279CEE44616F173F04F4EFBC2DF",

         "info":      "2FB42DEF495B310F"

}

kthreadd

{

         "key":      "0FC2C00124A496A2D8EC43F60CDA466026E646214A2ACAF6E0C9BF43D44C388A93CA18CDAD5B13D190F084EE023A318CD3842279CEE44616F173F04F4EFBC2DF",

         "info":      "2D1468E16B0C19D6"

}

bioset

{

         "key":      "0FC2C00124A496A2D8EC43F60CDA466026E646214A2ACAF6E0C9BF43D44C388A93CA18CDAD5B13D190F084EE023A318CD3842279CEE44616F173F04F4EFBC2DF",

         "info":      "002A04B9C955C4F1"

}

libcurl.so.2.17.0



2.1.2 添加攻击者的SSH公钥,达到长期控制该系统的目的

图 2-1 将密钥信息写入文件


        攻击者公钥:

SSH-rsa
AAAAB3NzaC1yc2EAAAABIwAAAQEAv54nAGwGwm626zrsUeI0bnVYgjgS/ux7V5phklbZYFHEm+3Aa0gfu5EQyQdnhTpo1adaKxWJ97mrM5a2VAfTN+n6KUwNYRZpaDKiUwmHNUSW7E1S18ClTCBtRsC0rRDTnIrslTRSHlM3cNN+MskKTW/vWz/oE3ll4MMQqexZlsLvMpVVlGq6t3XjFXz0ABBI8GJ0RaBS81FS2R1DNSCb+zORNb6SP6g9hHk1i9V5PjWNqNGXyzWIrCxLc88dGaTttUYEoxCl4z9YOiTw8F5S4svbcqTTVIu/zt/7OIQixDREGbddAaXZXidu+ijFeeOul/lJXEXQK8eR1DX1k2VL+w== rsa 2048-040119


2.1.3 使用内置的密码表对其它IP进行SSH暴力破解,用户名为root,传播挖矿木马。

图 2-2 利用密码表进行SSH暴力破解


        该挖矿木马使用密码表对相关网段IP进行SSH暴力破解,密码数量共计2000多个,部分如下。

图 2-3 部分密码表


2.1.4 主要针对某云平台相关主机进行SSH暴力破解

        在挖矿木马母体中存在一个硬编码的IP地址:8.129.*.*,该IP地址隶属于广东省深圳市某云平台。其SSH暴力破解对象主要以该IP地址作为起始地址,包括其同网段和相邻网段的IP。而IP地址8.129.0.0-8.129.255.255的范围隶属于某云平台。

图 2-4 某云平台服务器网段扫描


        其中还针对内网、样本所在的外网IP以及部分境外网段进行IP扫描。

图 2-5 境外网段扫描


2.2 挖矿程序分析

表 2-4 挖矿程序

病毒名称

RiskTool/Linux.BitCoinminer

原始文件名

kthreadd

MD5

7275D8B380E6FACC7C5420603F2672CC

文件格式

BinExecute/Linux.ELF

文件大小

1.21 MB (1,274,136 字节)

数字签名

加壳类型

upx

VT首次上传时间

2020-12-28 11:17:40

VT检测结果

19 / 62


        挖矿程序(kthreadd)运行后连接矿池地址www.fullskystar.top:443进行挖矿。挖矿程序使用upx壳进行了压缩,由开源挖矿程序xmrig修改而来,在此不做详细分析。配置信息如下:

图 2-6 挖矿程序配置信息


2.3 恶意链接库分析

表 2-5 恶意链接库

病毒名称

RiskTool/Linux.BitCoinminer

原始文件名

libcurl.so.2.17.0

MD5

F8F745BC28CF24170B422F9B209BEACB

文件格式

BinExecute/Linux.ELF

文件大小

26.4 KB (27,112 字节)

数字签名

加壳类型

VT首次上传时间

2020-12-09 03:10:30

VT检测结果

3 / 63


        该恶意程序为动态链接库文件,通过LD_PRELOAD方式被加载。主要功能是将恶意文件实体和相关的网络链接进行隐藏,当用户使用ls和netstat等命令进行查看时,无法发现恶意文件的存在。对4个字符串ld.so.preload、bioset、kthreadd和libcurl.so.2.17.0进行过滤。

图 2-7 恶意链接库屏蔽的相关信息


        当使用命令top,htop命令查看进程,使用命令w查看登录用户,使用uptime查看使用时间,使用ss,netstat查看网络操作时,如果存在上面4个字符串,则不进行显示,隐藏恶意文件相关信息。

图 2-8 恶意链接库注入的相关命令文件


3、检测、处置与加固方案


3.1 检测

        使用安天智甲终端防御系统(Linux版本)在主机侧检测。

图 3-1 安天智甲检测结果


        使用安天探海威胁检测系统(PTD)在网络侧检测。

图 3-2 安天探海检测下载挖矿程序报警


图 3-3 安天探海检测SSH暴力破解


       网络手动检测方法:

        网关或流量镜像处Linux系统上执行如下命令进行检测,短时间内观察是否有异常的SYN数据包来发现类似的对外扫描:
tcpdump -i < interface> -nn "tcp port 22 and ((tcp[tcpflags]&(tcp-syn)!=0)&&(tcp[tcpflags]&(tcp-ack)==0))"

图 3-4 流量检测


3.2 处置

       由于该挖矿木马通过预加载恶意链接库,给处置带来一定阻碍,清除过程复杂。具体方法如下:

       首先,安装busybox,利用该命令结合ps、kill命令结束路径为“/usr/bin/bioset”、“/usr/bio/kthreadd”的进程;其次,将下列文件只读属性去除。并将/etc/ld.so.preload文件内容置空;最后删除下列文件中除/etc/ld.so.preload文件之外的四个文件,以上操作完成后,可在此确认相关文件是否正常删除,若删除完毕,则完成该挖矿木马的清除。

/etc/ld.so.preload
/lib/libcurl.so.2.17.0
/usr/bin/kthreadd
/usr/bin/bioset
/root/.ssh/authorized_keys


       以下代码为清除该挖矿木马的shell脚本代码,该代码仅在Centos7中测试,未在其他系统上测试,请参考使用。(若删除root用户的authorized_keys文件会影响实际业务,可手工删除木马写入的攻击者公钥。)

#!/usr/bin/bash
wget https://busybox.net/downloads/binaries/1.28.1-defconfig-multiarch/busybox-x86_64 && mv busybox-x86_64 busybox && chmod +x busybox && mv busybox /usr/bin/
busybox ps -ef |grep /usr/bin/kthread |grep -v color |awk '{print $1}'| xargs busybox kill
busybox ps -ef |grep /usr/bin/bioset |grep -v color |awk '{print $1}'| xargs busybox kill
busybox chattr -i /etc/ld.so.preload
busybox echo "" >> /etc/ld.so.preload
busybox chattr -i /usr/bin/kthreadd
busybox rm -rf /usr/bin/kthreadd
busybox chattr -i /usr/bin/bioset
busybox rm -rf /usr/bin/bioset
busybox chattr -i /root/.ssh/authorized_keys
busybox rm -rf /root/.ssh/authorized_keys
busybox chattr -i /lib/libcurl.so.2.17.0
busybox rm -rf /lib/libcurl.so.2.17.0


3.3 加固

        1. 建议更换root用户密码,密码位数至少为15位,密码元素至少包含三种元素(大小写字母,数字,符号)。

        2. 建议在不影响业务的情况下,root用户尽量不对外提供远程访问,可使用其他自定义用户对服务器进行远程维护和管理。