信息来源:火绒安全
近期,火绒安全实验室收到用户反馈称自己电脑运行异常,火绒安全工程师第一时间为用户提供技术支持。经排查,确认异常为挖矿病毒事件导致且提取到相关病毒源头xbash。xbash是Coinminer家族开发的恶意脚本,去年开始就被发现大规模传播,近期动作不断且频繁更新,在国内以其投放的xmrig挖矿病毒变种libgcc_a闻名,又称libgcc_a挖矿病毒。
该病毒主要通过SSH口令爆破来获得初始访问权,通过各种技术手段来运行、隐藏和传播,其中包括预加载劫持、杀软对抗、流量代理,内网横向等。目前,火绒安全产品已支持对该类病毒进行拦截和查杀,请广大用户及时更新病毒库以提高防御能力。
![Image-0.png](/__local/F/6B/7A/D096F59EBE48D56B0ADD9D0B98A_49BDAD02_3D28.png?e=.png)
火绒查杀图
一、样本分析
xbash分析:
起始样本为一个xbash脚本文件,通过查看其开头的描述可以确认其使用了Makeself打包工具:
![Image-1.png](/__local/1/89/9D/5F077D6402E69D7A87E0269BC49_27FE8F28_4D96.png?e=.png)
前置描述截图
Makeself是一个自提取压缩工具,打包后的程序前半段是相关解压函数,后半段是被压缩的二进制数据:
![Image-2.png](/__local/7/B6/52/F728537BEA3EA887D31886ADDA0_82D0D71A_15F73.png?e=.png)
开源项目简介
这里使用 --noexec --noexec-cleanup --confirm --keep --chown 参数来解压,发现里面包含一个cronman脚本,其为主要执行脚本:
![Image-3.png](/__local/5/B6/E2/E4A9BC5B1075EEBB90C725EA396_723457E3_D007.png?e=.png)
解压截图
引导脚本分析:
cronman 是主引导脚本,主要行为包括:下载payload、持久化、清除痕迹、清除杀软、内网代理、内网横向、运行挖矿程序等,具体分析如下:
cronman 首先通过run_cmd函数,以传参的方式执行安装xinetd守护进程:用于后续配置代理转发服务,包括 smtp、http、https 等,以供后续攻陷主机无法回连恶意域名及 C2 地址时通过内网横向代理下载 payload:
![Image-4.png](/__local/F/C5/12/E695B133C5A327D6300118B455F_AC60894B_A5D2.png?e=.png)
设置转发代理
调用 clean 函数清理杀毒软件及其它挖矿程序:通过终止进程、停止服务、删除自保护驱动、调用自带的卸载脚本等操作,移除包括 360、sangfor 在内的安全软件并终止其它同类挖矿程序:
![Image-5.png](/__local/E/8C/54/4CDD02034912D1A7D3A0EDF3F4B_8237E7A1_77BB.png?e=.png)
清除杀软
![Image-6.png](/__local/E/2C/B7/E974E54894E27452DAA407BE60D_F664D43D_9CD7.png?e=.png)
清理挖矿病毒
依据SKIPUPDATE变量的值和data文件进行配置更新,通过get_remote_file函数下载文件并写入计划任务中实现自启动:
![Image-7.png](/__local/A/DE/77/722B7E68175AF83942BBB67161C_100C1F4B_561F.png?e=.png)
自身配置更新
通过修改/etc/ld.so.preload内容以劫持程序启动后加载的动态库从而实现hook行为,写入的文件适配具体架构,具体分析见“预加载劫持分析”:
![Image-8.png](/__local/3/9C/33/B1832F6EECD6C2483698E696CFF_45D532D3_114A4.png?e=.png)
预加载劫持
通过checkfrw和addportfrw检查iptables、firewalld安装情况,并开放特定端口:
![Image-9.png](/__local/3/9E/61/953F07D2EF960782C2AA6821D5B_67D6DDFB_F538.png?e=.png)
修改防火墙配置
修改SSH配置文件,实现持久化:
![Image-10.png](/__local/F/55/CF/5D3421026F24B3BB7061BC65A25_F3667E1C_9D5E.png?e=.png)
修改 ssh 配置
通过下载开源网络探测工具spirit,通过crontab命令创建周期任务来执行ssh爆破,以实现内网横向移动:
![Image-11.png](/__local/B/04/25/E4B641A8C2B4A4ADD44CFFD0384_10EADE30_7CCA.png?e=.png)
创建计划任务
依据不同的架构下载对应的程序xfitaarch.sh、xfit.sh,在后续发现均为xmrig挖矿程序的变种:
![Image-12.png](/__local/5/AA/28/F9E5AB3D42F0C4F0A3DE64838AC_61DD86C7_9E38.png?e=.png)
下载挖矿程序
清除系统日志和历史记录,消除痕迹:
![Image-13.png](/__local/6/48/2B/AA37106B0E329A201B937888B08_37938A09_F4AD.png?e=.png)
清理记录
预加载劫持分析:
对相关库进行逆向分析发现,sshkit.so库文件会hook掉readdir函数,获取原始返回结果并过滤掉ssh进程文件,pkit.so隐藏libgcc_a,skit.so隐藏spirit,sshpkit.so隐藏sshpass:
![Image-14.png](/__local/1/FD/05/343DEF7ECC7E8B566CA9D23DE0B_6298967C_4297.png?e=.png)
隐藏相关进程
fkit.so则是隐藏相关恶意文件:
![Image-14.png](/__local/4/D6/49/020C7FA6378A6E3AC2057213BE2_602E6B78_4F9E.png?e=.png)
隐藏相关恶意文件
readdir函数是c语言libc库在用户层提供用于读取目录内容的函数,在该函数内部的实现中,会调用系统getdents64函数,所以hook readdir函数就间接hook了使用getdents64函数的命令,包括常用的ls、ps、top命令等:
![Image-14.png](/__local/A/AF/31/4C7457EA99F71F8FFC64930C1E9_6AF27D2A_27B4F.png?e=.png)
函数追踪
隐藏进程分析:
被隐藏的进程中spirit.sh是一个开源渗透测试工具(https://github.com/theaog/spirit),用于linux下内网主机存活探测及横向移动:
![Image-17.png](/__local/D/7F/52/9C6915A3FA36EE044D6298F5DB5_C1E1DD3B_E278.png?e=.png)
开源项目简介
Spirit会加载sshpass组件,用于内网主机ssh的暴力破解,加载ip.txt中的ip序列进行探测,对于活跃的内网ip则会调用 sshpass进行ssh密码爆破。其中,已破解的口令会存储到/usr/spirit/password.txt中,用于后续继续爆破利用:
![Image-17.png](/__local/2/07/3D/BC450C251FEC1D365EB74FCA5A6_8FCE4F2F_11014.png?e=.png)
sshpass 运行命令
被隐藏的另一个程序libgcc_a根据相关字符串可以确定是XMrig挖矿程序的变种,其由前面cronman下载的xfitaarch.sh、xfit.sh重命名而来,用于挖矿牟利:
![Image-19.png](/__local/D/90/2A/3EBCDAFCC0BD8972CF7AB18DFF0_8F3F43C9_11141.png?e=.png)
开源项目简介
![Image-20.png](/__local/8/9F/6A/621FED0360B5715151421570A6C_9B9EB86C_12E37.png?e=.png)
xmrig 字符串
二、附录
HASH:
![Image-21.png](/__local/9/1E/62/C693F67A4CDDDCA59D7FD08212E_C9B05E5E_134B.png?e=.png)
C&C:
![Image-21.png](/__local/D/5D/79/ADCF1064202CD09C7427CE4FFDE_11ABA176_46E.png?e=.png)