针对某云平台服务器的“云铲”挖矿木马事件分析
时间 : 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用户尽量不对外提供远程访问,可使用其他自定义用户对服务器进行远程维护和管理。