样本概述
本次分析的样本是MalGeneric家族的挖矿脚本—somescript.sh。挖矿主程序Warmup是XMrig挖矿病毒的变种。somescript.sh是挖矿程序的前置程序,主要行为包括:获取恶意文件、流量代理、端口扫描、清除杀软、运行挖矿程序、持久化、清除记录等。
Somescript
SHA1: 5955041ACFFA91F6CA86F133C8BCE73A6827D0DC
恶意IP及端口
原 始 矿池IP:5.133.65.53、5.133.65.54、5.133.65.55、5.133.65.56
代理服务器IP:77.247.243.434、45.142.212.30、185.74.222.72、45.140.146.252、5.67.229.147
公网相关端口:80、443、14444、24444
内网相关端口:703、708、757、8080、443
病毒传播方式
使用开源的爆破工具spirit,结合资源服务器上下载的弱口令字典对内网中的其他主机进行SSH爆破。
情报&沙箱检测
Warmup为ELF文件,属于Linux系统的可执行文件,通过IDA中发现的多个XMrig字符串和微步沙箱的报告可以判定这个程序是XMrig挖矿病毒的变种。
Acrchive.tar.gz是一个包含配置、恶意脚本、挖矿程序、爆破程序、弱口令字典的打包文件。通过在根目录下解压并强制覆盖,几乎等同于完成了运行somescript期间的所有动作。
Somescript主要功能
设置关键变量
USER变量,决定要使用哪些代理IP池
SKIPUPDATE变量,决定是否进行更新
MY_NAME变量
用于存储当前脚本名称
FILENAME变量
一般指定FILENAME=”somescript”
FILE_TO_FETCH_URL变量
指定文件下载地址
FILE_TO_FETCH_URL=http://5.133.65.53/soft/linux/$FILENAME
EXISTING_SHELL_SCRIPT变量
准备运行的脚本的绝对地址
EXECUTABLE_SHELL_SCRIPT
当前要执行的脚本绝对地址
设置DNS服务器为8.8.8.8
读取ect/resolv.conf文件,写入8.8.8.8 DNS服务器地址。
安装nc wget xinetd工具
用于网络请求和代理转发
根据不同的Liunx发行版本调用包管理工具安装NC、Wget和Xinetd
检测杀软、EDR等安全软件并清除
检测360相关进程是否存在,存在则获取进程pid然后kill掉。对于其他的安全软件,如qaxsafe、clamav、深信服edr、KvEdr等则会调用这些设备自带的移除脚本移除。
左右滑动查看更多
写入文件到/etc/init.d/modules中
(持久化程序,系统自动运行)
包含设置shell串口大小、告警、成功等不同颜色的字体打印,加密文件,查询进程是否正常运行,设置环境变量等
清除指定日志文件
遍历日志文件地址字符串,读取文件覆盖写入为空,删除文件夹。
关闭登录日志文件记录功能
关闭历史命令记录功能
指定IP端口探活
下载远程服务器文件
自更新
根据前面初始化的变量作为参数调用update_self_and_invoke函数
创建定时任务,设置运行权限
获取系统信息
检查warmup服务是否正常
不正常则下载该文件(warmup是elf文件,挖矿程序)
磁盘写入指定配置文件
/root/.warmup/config.json(warmup配置文件)
在本地启动一个监听0.0.0.0 999端口的http服务,以及cup、显卡、算法、原始矿池地址等配置
左右滑动查看更多
端口扫描,配置代理转发服务(703、708、757、443、8080)
配置了多种的流量转发服务,smtp、http、https
左右滑动查看更多
检查防火墙配置,开启指定端口
下载爆破字典和工具包
下载的压缩包中含有另一个挖矿前置脚本xbash(功能和本脚本类似)、挖矿主程序libgcc_a、开源爆破工具spirit以及其他依赖库so文件。
文件解压释放到根目录下,强制覆盖。
设置libgcc_a和xbash可执行、把/etc/cron.daily/xbash加入计划任务
总结
该脚本是挖矿程序的前置程序,主要行为有:初始化环境、创建web服务、代理转发,扫描端口、写入自启动的服务脚本、创建计划任务、检测并关闭杀软、自我更新、清除log日志、清除历史命令和相关文件、关闭日志记录和历史命令记录等。通过SSH爆破实现横移传播,利用开源的SSH爆破工具spirit以及自带的弱口令字典进行爆破,成功后进行病毒下载和运行。
样本所属家族
Warmup家族
原始矿池地址
5.133.65.53
5.133.65.54
5.133.65.55
5.133.65.56
本地相关端口
703、708、757、999、8080、443
涉及以上端口的本地文件操作如下:
Warmup相关操作(文件)
/root/.warmup/config.json
999端口开启web服务
检查warmup服务的配置文件/root/.warmup/config.json ,该配置文件中定义了api、http接口信息,cup、显卡信息以及三种的矿池地址,按使用优先级排序:
⏩ 第一种是原始矿池的5.133.65.53-56的ip,
⏩ 第二种是有外网访问能力的内网地址和端口,
⏩ 第三种是代理服务器
45.67.229.147:14444
45.67.229.147:80
45.67.229.147:443
45.142.212.30:443
45.142.212.30:14444
185.74.222.72:14444
185.74.222.72:80
185.74.222.72:443
77.247.243.43:14444
45.140.146.252:24444
45.140.146.252:80
45.140.146.252:443
脚本会遍历/root/.warmup/ip.txt(扫描到的内网ip)文件,对文件中的ip依次探测703,708,443,8080端口,能建立连接的就将ip加入/root/.warmup/config.json文件中”pools”字段的”url”键对应的值中。最多添加5个,然后把所有的pool汇总成POOLS放入config.json文件中。
创建服务/etc/systemd/system/warmup.service文件或/etc/init.d/warmup(根据系统的不同创建),开启服务。用于持久化
Xinetd相关操作(文件)
etc/xinetd.d/smtp_forward
安装xinetd,(文件更新,脚本下载可以在内网的757口下载,所以感染的每台内网主机都会开启757端口的文件下载服务)探测本地的757端口能否正常响应,不能则本地写入/etc/xinetd.d/smtp_forward文件,监听757,转发到5.133.65.53 80或45.142.212.30 80,或者内网任意一台开启了757端口的主机ip。
/etc/xinetd.d/http_forward
操作同上,探测本地703端口,开启监听,写入/etc/xinetd.d/http_forward中,转发到MINEIP的80端口
/etc/xinetd.d/timesync
特殊代理池的服务配置和本地api.json文件中的pool字段有关,监听本地708端口,转到发到pool字段中的ip和端口
/etc/xinetd.d/https_stream
探测本地443端口是否可以连通,然后查看 /etc/xinetd.d/https_stream服务中有没有配置特殊代理ip和端口,监听443,转到发到pool字段中的ip和端口
/etc/xinetd.d/http_stream
探测本地8080端口是否可以连通,然后查看 /etc/xinetd.d/https_stream服务中有没有配置特殊代理ip和端口,监听8080,转到发到pool字段中的ip和端口。
排查&清理
2、查看/etc/xinetd.d/配置文件,是否存在重定向至恶意服务器的配置;
3、查看是否存在可疑文件夹root/gcclib,并且含有可疑文件,例如libgcc_a、xfit.sh、xfitaarch.sh等;
4、是否存在恶意路径/usr/spirit/
5、排查定时任务相关配置文件,例如/etc/cron.hourly、/etc/crontab等是否存在/etc/cron.daily/xbash等可疑项;
6、是否存在usr/local/lib/sshpkit.so、/usr/local/lib/pkitarm.so此类路径;
7、排查etc/ld.so.preload配置文件,是否存在指向usr/local/lib/sshpkit.so、/usr/local/lib/pkitarm.so等内容,
8、 排查目录/etc/lib是否存在adxintrin_b文件
9、 查看是否有可疑服务,例如crtend_b
红鲸RedOps安全协同响应平台
我们时刻关注客户需求,为您搭建更高效的新一代智能安全运营协同作战体系。如果您想了解更详细的支持信息,可联系下方邮箱进行咨询!
原文始发于微信公众号(众智维安):典型挖矿样本分析 | somescript.sh