上个星期五同事说阿里云发短信说吉林一个IP登陆了我们公司的一个服务器,让我上去看看,然后在/var/log/secure日志中两行登录日志
Mar 9 20:35:30 localhost sshd[30379]: Accepted password for root
from 221.203.142.131 port 56906 ssh2
Mar 9 20:35:30 localhost sshd[30379]: pam_unix(sshd:session):
session opened for user oracle by (uid=0)
但是当天服务器没有出现问题,文件其它东西也没有丢,并且那几天在配制防火墙的一些东西,所以也没有太在意。但是。。后面就悲剧了,咱星期天早上六点多醒了以后看同事截了一个阿里云短信,说服务器可能已经被当成肉鸡了。。。so问题来了。。
起来打开电脑并通过浏览器打开阿里云的管理界面,看到当天的服务器出网流量被打满,原本就5g的出网和入网,出网被弄的1k都没有。然后赶快通过跳板机登录服务器后,通过top命令查看那些不正常的进程,找到一个随机10位字母的进程。然后复制后直接kill掉。并通过find 找到了两个文件,一个在/bin/dfsasdiew,一个在/etc/rc.d/init.d/,rm删除后,继续观察进程,又出现了木马有自我保护自我恢复。
刚开始想linux自我启动如果没有程序那只能通过定时器去监听,所以通过 crontab -e 查看当前的定时器,找到一个每三分钟调用一个远程服务,当前服务器没有配置这种定时器,然后直接删掉。观察流量有下降,但是陌生进程还在。
查看进程的脚本,如下所示
[root@Xd9BdoAkG ~]# cat /etc/rc.d/init.d/fregonnzkq
#!/bin/sh
# chkconfig: 12345 90 90
# description: fregonnzkq
### BEGIN INIT INFO
# Provides: fregonnzkq
# Required-Start:
# Required-Stop:
# Default-Start: 1 2 3 4 5
# Default-Stop:
# Short-Description: fregonnzkq
### END INIT INFO
case $1 in
start)
/usr/bin/fregonnzkq
;;
stop)
;;
*)
/usr/bin/fregonnzkq
;;
esac
看到这我真是佩服这帮人单用户启动模式都不放过啊,尼玛,你这是赶尽杀绝啊。。。。。。。
到了这里我天真的删除了几个这样的启动脚本,然后重启服务器,问题依旧。。。。。。。。。你妹啊。。。不带这样玩的。。。。
不知道为什么我瞬间想到了我遗漏了一个地方,cron,对。。。我是crontab -l 来查看的,还有个地方的cron任务不会在这个命令下出现/etc/cron.*
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
*/3 * * * * root /etc/cron.hourly/gcc.sh
[root@Xd9BdoAkG ~]# cat /etc/cron.hourly/gcc.sh
#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin
for i in `cat /proc/net/dev|grep :|awk -F: {'print $1'}`; do ifconfig $i up& done
cp /lib/libudev.so /lib/libudev.so.6
/lib/libudev.so.6
[root@Xd9BdoAkG ~]# cat /proc/net/dev|grep :|awk -F: {'print $1'}
lo
em1
em2
em3
em4
我擦,看到这,再次shit,你还知道主动启动网络和外面联系啊。。。。
通过排查可以肯定/lib/libudev.so是主体。其他是协助运行和自我保护自我复制的实现。
既然你是个程序还在系统上,我有root,还搞不定么。为了不再多拖时间,直接查杀了。。
chmod 0000 /lib/libudev.so && rm -rf /lib/libudev.so && chattr +i /lib/
##貌似主体被控制住了,不能再次自我恢复了。。。
然后删除掉启动命令的所有刚创建的陌生命令。所有东西都稳定下来了。
从星期天早上六点搞到快12点。看来还是能吃上中午饭的。。。