前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实战矿马:消灭“薅羊毛”门罗币矿马(config.sh;zhihuatnail.so;sshd2)

实战矿马:消灭“薅羊毛”门罗币矿马(config.sh;zhihuatnail.so;sshd2)

原创
作者头像
枪哥四海为家
修改2021-01-20 17:01:35
2K0
修改2021-01-20 17:01:35
举报

前言

我又来消灭挖矿木马了,这次消灭的挖矿文件为config.json;zhihuatnail.so;sshd2这三个矿马。

本次的CASE特别有意思,往期我们碰到的大部分挖矿木马是以高占用CPU,GPU为主的矿马,而这次是一次全程同“薅羊毛”式矿马的斗智斗勇。 本次重要的是分析过程,分享给大家。


案例背景

1.发现在CentOS服务器进程中,出现大量config.sh进程,但每个CPU占用不高,每个config.sh进程占用7%~10%左右的,8个进程,整体已实现占用80%以上的CPU,影响服务器正常运行(可见矿马作者开始有分布式,无文件的逻辑编写矿马了)

使用小占用比的思路分布式进程进行“薅羊毛”挖矿,一定程度上可以成功规避杀毒软件的查杀规则,不被发现
使用小占用比的思路分布式进程进行“薅羊毛”挖矿,一定程度上可以成功规避杀毒软件的查杀规则,不被发现

被入侵原因

1.被植入挖矿进程的原因经最后的溯源分析,问题在于服务器对ssh服务(22端口)未配置访问源,直接暴露于公网。

ssh服务无限制开放于公网,容易被挖矿进程批量爆破“抓机”
ssh服务无限制开放于公网,容易被挖矿进程批量爆破“抓机”

2.服务器密码存在通用口令,容易被爆破入侵。


恶意进程定位

1.矿马位置:

(1)/usr/local/lib/路径下:

代码语言:javascript
复制
/usr/local/lib/zhihuatnail.so

病毒名:Linux.Rootkit.Processhider.Hnur

文件检测结果为Linux.Rootkit.Processhider.Hnur
文件检测结果为Linux.Rootkit.Processhider.Hnur

(2)tmp/javax路径下:

门罗币矿马watchdogs病毒分析:https://www.freebuf.com/articles/system/196515.html

也可以称它为XMRig挖矿木马,XMRig参数详情:https://www.kuangjiwan.com/news/news-2872.html

代码语言:javascript
复制
/tmp/javax/sshd2 
/proc/(PID)/tmp/javax/sshd2 
/tmp/javax/config.sh 
/tmp/javax/config.json                             // watchdogs门罗币挖矿进程
/etc/cron.daily/tmpwatch
max-threads-hint参数是XMRig挖矿的CPU线程占比,100的意思是占用主机的1核为100%
max-threads-hint参数是XMRig挖矿的CPU线程占比,100的意思是占用主机的1核为100%
访问pool.supportxmr.com:3333矿池地址
访问pool.supportxmr.com:3333矿池地址
在线矿池
在线矿池

(3)/var/spool/cron/路径下:

代码语言:javascript
复制
/var/spool/cron/root  
/var/spool/cron/root~
/var/spool/cron/roow~
/var/spool/cron/roox~
定时从地址https://pastebin.com/raw/qKcPmSNp地址curl下来恶意进程
定时从地址https://pastebin.com/raw/qKcPmSNp地址curl下来恶意进程

我们从11月这几天的自动任务日志中可以找到痕迹:

代码语言:javascript
复制
grep "Nov" /var/log/cron
自11月4日凌晨2:30分开始自动爬取恶意进程至服务器
自11月4日凌晨2:30分开始自动爬取恶意进程至服务器

(4)/etc/路径下:——触发进程

代码语言:javascript
复制
/etc/ld.so.preload 
/etc/ld.so.preload~
/etc/ld.so.preloaz~
/etc/crontab 
/etc/crontab~
/etc/ksoftirqds
/etc/watchdog
这几个进程都是启动zhihuatnail.so的自启动脚本
这几个进程都是启动zhihuatnail.so的自启动脚本

排查:

第一步:使用top命令查看当前进程占用情况(目的:快速定位高占CPU的进程)

代码语言:javascript
复制
top -c

定位出占用较高的恶意进程,这几个服务的PID分别为24768,32566,25639,25820,15711,24190,28157,25787

恶意进程config.sh,源文件为config.json
恶意进程config.sh,源文件为config.json

同时再读一下进程文件:

代码语言:javascript
复制
readlink /proc/24768/exe
readlink /proc/32566/exe
readlink /proc/25639/exe
readlink /proc/25820/exe
readlink /proc/15711/exe
readlink /proc/24190/exe
readlink /proc/28157/exe
readlink /proc/25787/exe

可以判定为恶意挖矿进程
可以判定为恶意挖矿进程

第二步:先停止对应恶意PID进程,为服务器CPU降压

代码语言:javascript
复制
kill -STOP 24768,32566,25639,25820,15711,24190,28157,25787

第三步:查看定时任务(目的:挖矿进程常有写入定时任务的习惯,所以从定时任务中去定位挖矿文件往往效率较高)

代码语言:javascript
复制
crontab -l 

本次定时发现在定时任务里并没有写入,则极有可能矿马的定时任务创建是通过其他路径写入的。


清理

第四步:删除该恶意进程定时任务,再删除恶意进程文件

首先清理/tmp/javax/sshd2:

代码语言:javascript
复制
rm -rf /tmp/javax/sshd2                          

发现无法通过命令行直接清理,此时结合主机安全后台,隔离成功。

sshd2可以成功隔离,但/usr/local/lib/zhihuatnail.so无法通过工具隔离
sshd2可以成功隔离,但/usr/local/lib/zhihuatnail.so无法通过工具隔离

可以看看zhihuatnail.so的创建时间,作为参考:

代码语言:javascript
复制
stat /usr/local/lib/zhihuatnail.so
11月4日下午18:57分创建
11月4日下午18:57分创建

在清理的过程中可能会碰到文件只读不可写,这是在感染矿马的机器上常见的一种现象,我们可以借助chattr工具清除文件的特殊权限属性,再对文件进行修改操作。zhihuatnail.so无法清理的原因是存在文件特殊权限,因此清除其特殊权限,再进行删除操作就搞定了。

代码语言:javascript
复制
yum -y install e2fsprogs                      // CentOS安装chattr
chattr -ias /usr/local/lib/zhihuatnail.so    // 删除文件特殊属性
chmod +x zhihuatnail.so                      // 赋权后,即可正常执行

其他恶意文件的清理就不附图了,一次性全部清理

代码语言:javascript
复制
rm -rf /tmp/javax/sshd2 
rm -rf /proc/(PID)/tmp/javax/sshd2 
rm -rf /tmp/javax/config.sh 
rm -rf /tmp/javax/config.json                
rm -rf /etc/cron.daily/tmpwatch
rm -rf /var/spool/cron/root  
rm -rf /var/spool/cron/root~
rm -rf /var/spool/cron/roow~
rm -rf /var/spool/cron/roox~
rm -rf /etc/ld.so.preload 
rm -rf /etc/ld.so.preload~
rm -rf /etc/ld.so.preloaz~
rm -rf /etc/crontab 
rm -rf /etc/crontab~
rm -rf /etc/ksoftirqds
rm -rf /etc/watchdog

第五步,kill 掉对应的进程PID,这里就可以删除进程了,因为挖矿源文件已经被删除

代码语言:javascript
复制
Kill -9 24768,32566,25639,25820,15711,24190,28157,25787

继续观察是否有新的异常进程和端口启动

第六步:验证

(1)验证

代码语言:javascript
复制
top -c
已恢复正常,恶意进程config.sh已经消失
已恢复正常,恶意进程config.sh已经消失

(2)查看自启动日志,看看是否还有新增任务,观察三个小时,无新增说明已经清理干净

代码语言:javascript
复制
grep "Nov" /var/log/cron
定时进程在日志中已经消失,说明定时类的恶意木马已经清理干净
定时进程在日志中已经消失,说明定时类的恶意木马已经清理干净

观察三小时没有新文件生成,已经清理完毕。


总结一下

一、config.sh文件的特点是不会将定时任务写入crontab -l中,而是通过/var/spool/cron/root 等作为定时脚本,向矿池定时curl更新挖矿文件,更新待进程起来后,再自动删除更新下来的文件。平均每2分钟执行一次进程更新动作。

二、XMRig核心挖矿程序是/tmp/javax/config.json,定义了挖矿的各个参数。

三、/etc/ld.so.preload等作为定时触发任务,定时触发/usr/local/lib/zhihuatnail.so进程,让每次若进程未清理干净,则会自动继续触发挖矿行为和文件更新行为。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档