安天CERT联合哈尔滨工业大学联合实验室通过网络安全监测发现了一起Linux系统挖矿木马事件。在该挖矿木马的扫描策略中,以硬编码的某云平台网段IP地址作为起始地址。分析人员判定该挖矿木马对某云平台服务器存在一定的针对性,安天CERT基于此特点将该事件中的挖矿木马命名为“云铲”。
该挖矿木马运行后通过服务器下载三个文件(主模块、恶意链接库、开源挖矿程序)。主模块功能为对扫描到目标进行SSH暴力破解,进而传播该挖矿木马;运行下载的挖矿程序进行挖矿;将恶意链接库路径写入预加载文件中,实现屏蔽相关命令对恶意文件实体和恶意进程的查找;将SSH公钥写入目标系统root用户.ssh目录中,实现以root用户对该系统的长期访问。主模块初始阶段扫描以其硬编码的某云平台服务器IP地址作为起始地址,包括该IP地址的同网段和相邻网段IP地址,后续随机扫描外网段IP地址及样本所在网络的外网IP地址,同时对内网相关IP进行扫描。
安天CERT通过对该起事件的详细分析,在报告中给出了相应的检测、处置和加固方案。
特别致谢:中国科学技术大学网络信息中心针对本篇报告提供的相关帮助。
目前,安天智甲终端防御系统(Linux版本)可实现对该挖矿木马的查杀与有效防护。
安天探海威胁检测系统(PTD)可以在流量中检测该木马的传播,对横向移动过程中的主机发现行为和端口扫描行为进行检测。同时支持对各类具有控制能力的协议如SSH、TELNET、RDP等协议的暴力密码猜解方式进行检测,有效发现此类横向移动传播方式。
经分析研判,文件bioset为该挖矿木马的主模块,其在目标主机运行后首先针对相关目标进行SSH暴力破解,同时在/root/.ssh/目录下创建authorized_keys文件,并将SSH公钥信息写入其中,以便后续对该目标主机的访问。其次下载并运行挖矿程序(kthreadd)和新的主模块(bioset),同时下载了恶意链接库文件(libcurl.so.2.17.0),将该文件写入/etc/ld.so.preload中,实现针对相关命令的预加载,进而屏蔽这些命令对该挖矿木马相关文件、进程的查看。
表 2-1挖矿木马相关文件
2.1.1 下载恶意文件bioset ,kthreadd,libcurl.so.2.17.0
表 2-2主模块样本标签
该模块连接到远程服务器http://www.fullskystar.top,该域名注册时间为2020年10月14日,通过POST请求指定参数,下载文件。
表 2-3提交参数
2.1.2 添加攻击者的SSH公钥,达到长期控制该系统的目的
攻击者公钥:
SSH-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAv54nAGwGwm626zrsUeI0bnVYgjgS/ux7V5phklbZYFHEm+3Aa0gfu5EQyQdnhTpo1adaKxWJ97mrM5a2VAfTN+n6KUwNYRZpaDKiUwmHNUSW7E1S18ClTCBtRsC0rRDTnIrslTRSHlM3cNN+MskKTW/vWz/oE3ll4MMQqexZlsLvMpVVlGq6t3XjFXz0ABBI8GJ0RaBS81FS2R1DNSCb+zORNb6SP6g9hHk1i9V5PjWNqNGXyzWIrCxLc88dGaTttUYEoxCl4z9YOiTw8F5S4svbcqTTVIu/zt/7OIQixDREGbddAaXZXidu+ijFeeOul/lJXEXQK8eR1DX1k2VL+w== rsa 2048-040119 |
2.1.3 使用内置的密码表对其它IP进行SSH暴力破解,用户名为root,传播挖矿木马。
该挖矿木马使用密码表对相关网段IP进行SSH暴力破解,密码数量共计2000多个,部分如下:
2.1.4 主要针对某云平台相关主机进行SSH暴力破解
在挖矿木马母体中存在一个硬编码的IP地址:8.129.*.*,该IP地址隶属于广东省深圳市某云平台。其SSH暴力破解对象主要以该IP地址作为起始地址,包括其同网段和相邻网段的IP。而IP地址8.129.0.0-8.129.255.255的范围隶属于某云平台。
其中还针对内网、样本所在的外网IP以及部分境外网段进行IP扫描。
挖矿程序(kthreadd)运行后连接矿池地址www.fullskystar.top:443进行挖矿。挖矿程序使用upx壳进行了压缩,由开源挖矿程序xmrig修改而来,在此不做详细分析。配置信息如下:
该恶意程序为动态链接库文件,通过LD_PRELOAD方式被加载。主要功能是将恶意文件实体和相关的网络链接进行隐藏,当用户使用ls和netstat等命令进行查看时,无法发现恶意文件的存在。对4个字符串ld.so.preload、bioset、kthreadd和libcurl.so.2.17.0进行过滤。
当使用命令top,htop命令查看进程,使用命令w查看登录用户,使用uptime查看使用时间,使用ss,netstat查看网络操作时,如果存在上面4个字符串,则不进行显示,隐藏恶意文件相关信息。
网络手动检测方法:
网关或流量镜像处Linux系统上执行如下命令进行检测,短时间内观察是否有异常的SYN数据包来发现类似的对外扫描:
tcpdump -i < interface> -nn "tcp port 22 and ((tcp[tcpflags]&(tcp-syn)!=0)&&(tcp[tcpflags]&(tcp-ack)==0))"
图 3-4流量检测
由于该挖矿木马通过预加载恶意链接库,给处置带来一定阻碍,清除过程复杂。具体方法如下:
首先,安装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/kthreadd |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 |
1. 建议更换root用户密码,密码位数至少为15位,密码元素至少包含三种元素(大小写字母,数字,符号)。
2. 建议在不影响业务的情况下,root用户尽量不对外提供远程访问,可使用其他自定义用户对服务器进行远程维护和管理。