近期,服务器异常,通过htop
或top
命令查看CPU占用前几的进程,发现root
用户的-bash
进程把CPU一半的核占满,而另一台服务器上x
用户(被新创建的用户)和一个普通用户
CPU占用也异常。
kill -9 进程号
杀掉进程后立马又启动了新进程,ll /proc/进程号
查看PID目录,可以看到exe指向了一个被删除了的-bash进程(/usr/bin/-bash),使用 netstat -anp|grep ESTABLISHED
查看State为ESTABLISHED
的网络连接,发现有异常外网连接,这应该就是-bash
病毒木马了。
处理思路
找出与木马相关的所有关联文件并删掉:!!注意删除文件前一定要谨慎,逐一通过文件内容
和创建时间
来综合判断是否为木马关联文件。
cat /etc/passwd
查看是否有异常用户和组,对于木马创建的新用户可以直接删除,逐一检查每个用户目录(包括root
)文件是否异常,重点是~/.bash_profile
、~/.bashrc
和~/.ssh/authorized_keys
。木马能不停启动,可能会篡改命令,并且有守护进程,重点检查
定时任务
、启动项
和服务
等,排查/bin
、/sbin
、/etc/cron*/
、/var/spool/cron*/
、/etc/init.d/
、/etc/rc*/
、/etc/system*/
、/lib/system*/
、/run/system*/
目录下是否有异常文件
或最近修改
(ls -lt | head
)。当查到木马脚本后,总结出脚本中的一些
关键文件
名称,如mcrond
、bcrond
、crondr
、bprofr
、ntpdate
、entpdate
、lntpdate
、initdr
、binitd
、minitd
、msysde
、msysdl
、bsysde
、bsysdl
、sysdr
、dbused
、do-dear
、pwndns
、pwnrig
并用这些关键词作为特征搜索上述目录文件。
下面是整个查杀过程,以下所有操作都在root权限下进行,一定谨慎删除文件,文末会附上我制作的批量查杀脚本:
进程分析
1 | # 分析前几个cpu占用高的进程 |
定时任务分析
1 | # 查看定时任务 |
这里发现了异常目录/var/tmp/.systemd/
和域名pwndns.pw
,在所有定时任务文件夹/etc/cron*/
和/var/spool/cron*/
查一遍最近修改的文件(目录下有很多子文件夹,如cron.d,cron.daily,cron.hourly,cron.weekly,cron.monthly等,很多都会有),可以使用ls -lt 文件名
、cat 文件名
查看文件时间和内容是否异常,然后就发现了下面异常文件。
这里发现了异常文件ntpdate
和pwnrig
,可以看到文件修改时间为9月28日 3点
,后面只要查到文件在这个时间附近修改过
,就基本是木马文件
。查看文件内容:
从文件里又提取了关键词crondr
、mcrond
、bcrond
等,发现该脚本已经污染了/bin
目录,也发现了木马会使用curl
和wget
从服务器不停请求最新脚本
,-bash
进程启动后,原二进制文件就会被删除,所以不能从进程路径溯源
。
用关键词重新搜索一遍定时任务
1 | grep -R -E 'mcrond|bcrond|crondr|bprofr|ntpdate|entpdate|lntpdate|initdr|binitd|minitd|msysde|msysdl|bsysde|bsysdl|sysdr|xmr|pwndns|pwnrig|do-dear|update\.sh|root\.sh|\.systemd|\.update' /etc/cron* /var/spool/cron* 2>/dev/null |
限制网络连接
由于木马会不断通过网络请求下载最新脚本,所以得限制网络连接:
1 | # 暂时修改掉curl和wget |
排查/bin /sbin
1 | cd /bin |
/bin
和/sbin
目录下不少被篡改的命令,并且被添加了-ai
保护属性,常规的rm -rf 文件名
删除不掉,可以chattr -ai 文件名
减除保护属性后删除。
1 | #查看文件保护属性 |
如果还删除不掉,可以使用inode节点
的方式删除:
1 | ls -i 文件名 |
排除异常用户和home目录文件
1 | # 检查异常组和用户 |
发现很多用户目录下和~/.bash_profile
、~/.bashrc
和~/.ssh/authorized_keys
被篡改
检查 SSH 授权密钥有无异常密钥
1 | grep -R 'ssh-rsa' /root/.ssh/authorized_keys 2>/dev/null |
启动项和服务分析
1 | systemctl list-units --type=service |
发现了系统级服务,结合上面的各种关键字,干脆在 /usr/lib/systemd/
、/etc/rc.d/
、/etc/systemd/
、 /lib/systemd/
文件夹里搜索一遍吧,搜索到有问题的再逐一核对删除:
1 | grep -R -E 'mcrond|bcrond|crondr|bprofr|ntpdate|entpdate|lntpdate|initdr|binitd|minitd|msysde|msysdl|bsysde|bsysdl|sysdr|xmr|pwndns|pwnrig|do-dear|update\.sh|root\.sh' /etc/rc*/ /etc/init*/ /lib/system*/ /etc/system*/ 2>/dev/null |
检查系统日志
1 | grep -R -E 'mcrond|bcrond|crondr|bprofr|ntpdate|entpdate|lntpdate|initdr|binitd|minitd|msysde|msysdl|bsysde|bsysdl|sysdr|xmr|pwndns|pwnrig|do-dear|update\.sh|root\.sh' /var/log/ 2>/dev/null |
找到来源了,xmrminer
从某98.12
服务器过来,可以确定这是挖矿木马病毒
,并通过日志确定了可疑用户x
以及/tmp/.pwn
、/tmp/systemd-private*
、/var/tmp/.update
、/var/tmp/.system*
、/var/tmp/systemd-private*
等目录。
编写批量查杀脚本
基于以上分析,基本确定了病毒传播方式和一些关联文件和目录,编写批量查杀脚本scan_bash.sh
:
1 | # Linux server mining Trojan virus detection |
创建scan_bash.sh
,添加权限并批量扫描:
1 | # 创建scan_bash.sh文件并编辑 |
!!一定记得扫描出的可疑文件请逐一核对确认再删除,以免删错影响系统运行。
到这一步,kill -9 进程号
杀掉相关进程,观察2天没有问题,查杀结束,记得恢复curl
和wget
~~~~
后续防护
升级SSH到最新版本
openssh-9.9p1
,https://www.openssh.com/portable.html;禁用默认
22端口
,禁用Root远程登录
,禁用密码登录
,改用密钥登录
;服务器防火墙禁用
不常用的端口
;如果有docker和数据库等服务,一定要提升安全等级,不要使用默认端口,启用
docker持久化
,数据库绑定localhost防止非本机数据库连接
;
最后更新: 2024年10月09日 17:50:38
本文链接: https://sanshui.findn.cn/post/c2344f26.html
版权声明: 本作品采用 CC BY-NC-SA 4.0 许可协议进行许可,转载请注明出处!