欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 记一次挖矿木马查杀经历

记一次挖矿木马查杀经历

2025/2/25 10:26:41 来源:https://blog.csdn.net/gsls200808/article/details/144008486  浏览:    关键词:记一次挖矿木马查杀经历

排查了一周,写个总结吧。

第一轮分析

由于后端服务器访问数据时总是报java.net.SocketException: Connection reset

从这一步开始排查,排查后发现数据量不大的几个表做连接查询时总是报慢查询。

到这一步感觉是数据的问题,优化了一下索引和innodb_buffer_pool_size配置参数、

配置完了,好了一会,但是没完全好。过一阵查询还是还是报Connection reset

用top命令查看,load average 长期超过核心数,这个情况就必须优化了

补一下查看核心数命令

下面查看的是物理核心数 逻辑核心数 和线程数

[root@192 ~]# cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
1
[root@192 ~]# cat /proc/cpuinfo| grep "cpu cores"| uniq
cpu cores	: 2
[root@192 ~]# cat /proc/cpuinfo| grep "processor"| wc -l
4

最后一个线程数也可用下面这个命令

nproc

top命令排查下来后发现cpu占用最高的是mysql cpu占用才50%,优化完配置效果有提升但是不大。

第二轮分析

那么接下来应该排查什么呢?问了一遍通义灵码

应该排查io和网络

使用ss -p命令打印了一个列表,如下

Netid  State      Recv-Q Send-Q Local Address:Port                 Peer Address:Port     
tcp    ESTAB      0      0      192.168.88.131:43626                51.91.220.237:https                
tcp    ESTAB      0      0      192.168.88.131:55568                209.141.39.182:https                
tcp    ESTAB      0      0      192.168.88.131:42362                192.168.1.131:3306                  users:(("java",pid=30139,fd=92))
tcp    ESTAB      0      0      192.168.88.131:55546                209.141.39.182:https                

可以看到,有两个异常的ip连接,而且ss -p命令还没有显示进程号,这就很诡异了。

猜想可能是病毒替换掉了对应的shell命令,不管三七二十一,先用杀毒软件clamav扫描一波

yum install -y epel-release 
yum install clamav clamav-update
sudo clamscan -r / > scan_results.txt
cat scan_results.txt|grep FOUND

找到4个病毒

文字版如下

[root@database ~]# cat scan_results.txt|grep FOUND
/usr/bin/crond: Win.Trojan.Tsunami-5 FOUND
/usr/bin/where: Win.Trojan.Tsunami-5 FOUND
/usr/bin/execute: Win.Trojan.Tsunami-5 FOUND
/usr/lib64/libstdc++.so: Unix.Trojan.Prochider-9821784-0 FOUND

由于病毒都在系统目录。为了不影响系统功能,开个同版本的centos虚拟机,对对应的bin目录替换成正常的系统文件

替换过程也一波三折,大多数病毒文件加了 i a的不可变属性,需要先去掉才能替换。

比如对上面的/usr/bin/crond去掉不可变属性使用下面的命令

sudo chattr -i /usr/bin/crond
sudo chattr -a /usr/bin/crond 

去掉之后可以执行对应的copy和rm命令了。

删除之后负载并没有下降。怀疑可能存在隐藏进程。通过搜索找到一个工具unhide

安装

yum install unhide

执行

unhide proc

执行后把出现的进程id都kill掉

这个进程很狡猾

冒充busybox kthreadd ntpdate,全kill掉一遍之后 load average降低为原来的一半了。

第三轮分析

本以为这样就相安无事了。

第二天发现,mysql的查询还是慢。这下就得好好排查了

systemctl status mysqld

发现mysql重启时间不对,总是整点重启,这下又得排查了。

查看隐藏进程发现,昨天有一些进程又回来了

unhide proc

这下先解决bin目录文件被篡改的问题

使用两个方法

rpm -Va #这个是rpm数据库校验有没有篡改
md5sum /usr/bin/top #这个用来查询对比正常系统对应文件的md5值

替换的文件不完全统计如下

crontab
moduli
nologin
rc.local
ssh_config
sshd_config
top
whereis
crond
ntpdate

用正常的系统文件替换完之后 top下,占用高的进程显原型了。

记录下这里历史时刻,后面的清理都是针对它展开的。

kill掉这个pid之后,发现它过一段时间又重启。所以逐个清理了/etc/cron.d/下面的定时

发现这个定时很想伪装成ntpdate,

伪装的文件如下

lrwxrwxrwx   1 root root  17 1月   2 2021 K60ntpdate -> ../init.d/ntpdate

索性我就先卸载了ntpdate,然后全局搜索文件

find / -name "*ntpdate*"

找到的全干掉。

然后使用journalctl -b查看最近的日志,确认是伪装ntpdate的问题。没有其他问题作祟。

系统修复

这下全干掉之后开始着手系统修复。

对rpm -Va校验有问题的逐个分析,对有问题的软件包一律reinstall,对有问题的命令一律替换。

对ssh命令配置用正常系统上的进行替换。删除用不到的vnc等远程空值软件。

对系统所有用户设置强密码。

逐个排查定时任务文件和内容

逐个排查启动文件的内容。

病毒样本

关于病毒样本

光顾删和替换了,目前留一个bin目录下的lntpdate和etc的crond下的定时0clock

病毒样本传到VirScan和腾讯哈勃了,都是未检出。从这方面看,linux上的防病毒能力还是任重道远。

virscan报告如下

VirScan - 多引擎文件在线检测平台

VirScan - 多引擎文件在线检测平台

哈勃报告如下

腾讯哈勃分析系统

腾讯哈勃分析系统

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词