linux服务器被入侵查询木马(清除方法)
2016年11月17日 15:52:33 UpUpUpUpUpUpUp 阅读数 3359
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012599988/article/details/53201212
记录一次查询清除木马过程
木马名称:
Linux.BackDoor.Gates.5
链接:https://forum.antichat.ru/threads/413337/
前两天服务器被扫描后,出现莫名进程,清理后重启,也把原来的SSH密码登陆改为公钥,仅仅过去两天,一早登陆服务器发现一个进程直接懵了,清掉我ROOT所有文件。
这是/etc/profile文件,发现!!!
这明显是前天我没有清理干净,又被攻击了。
那就开始排查,战斗!
先清理可疑程序,如:
明显不认识呐,我的服务器跑了什么我还不知道?
干掉!咦,干掉自己起来。明显是自启!!!
查,/etc/rc.local
- 1
- 2
进程杀了又起来,文件删了又自动生成,无奈之下只好想了一个怪招,把/bin/bash重命名一下
再查询基础命令是否被掉包:
对比下其他在正常服务器的显示如下:
怒了有没有!明显换了。换成程序大小为1.2M的了。
那就删掉被更改的,从其他同配置服务器拷贝一份。
记的拷贝过来要给予755 权限。
- 1
分析了一下,这些木马程序名字变着花样来,但万变不离其宗,名字都写
在/etc/rc.d/init.d/DbSecuritySpt和/etc/rc.d/init.d/selinux里面,而且名字和正常的服务很像。
注意rm命令也被掉包了,需要更换!
有:
/usr/bin/bsd-port/getty、/usr/bin/dpkgd/ps
/usr/bin/.sshd
- 1
- 2
哈哈,清理了这些服务器CPU立马从100%下来了。
简单判断有无木马
有无下列文件
cat /etc/rc.d/init.d/selinux
cat /etc/rc.d/init.d/DbSecuritySpt
ls /usr/bin/bsd-port
ls /usr/bin/dpkgd
查看大小是否正常
ls -lh /bin/netstat
ls -lh /bin/ps
ls -lh /usr/sbin/lsof
ls -lh /usr/sbin/ss
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
删除如下目录及文件
rm -rf /usr/bin/dpkgd (ps netstat lsof ss)
rm -rf /usr/bin/bsd-port (木马程序)
rm -f /usr/local/zabbix/sbin/zabbix_AgentD (木马程序)
rm -f /usr/local/zabbix/sbin/conf.n
rm -f /usr/bin/.sshd
rm -f /usr/bin/sshd
rm -f /root/cmd.n
rm -f /root/conf.n
rm -f /root/IP
rm -f /tmp/gates.lod
rm -f /tmp/moni.lod
rm -f /tmp/notify.file 程序
rm -f /tmp/gates.lock 进程号
rm -f /etc/rc.d/init.d/DbSecuritySpt(启动上述描述的那些木马变种程序)
rm -f /etc/rc.d/rc1.d/S97DbSecuritySpt
rm -f /etc/rc.d/rc2.d/S97DbSecuritySpt
rm -f /etc/rc.d/rc3.d/S97DbSecuritySpt
rm -f /etc/rc.d/rc4.d/S97DbSecuritySpt
rm -f /etc/rc.d/rc5.d/S97DbSecuritySpt
rm -f /etc/rc.d/init.d/selinux(默认是启动/usr/bin/bsd-port/getty)
rm -f /etc/rc.d/rc1.d/S99selinux
rm -f /etc/rc.d/rc2.d/S99selinux
rm -f /etc/rc.d/rc3.d/S99selinux
rm -f /etc/rc.d/rc4.d/S99selinux
rm -f /etc/rc.d/rc5.d/S99selinux
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
如:
然后找出下列程序进程号并杀死:
/root/ps aux |grep -i jul29(主要是最近开启的进程)
/root/ps aux |grep -i jul30
/root/ps aux |grep -i jul31
/root/ps aux |grep sshd
/root/ps aux |grep ps
/root/ps aux |grep getty
/root/ps aux |grep netstat
/root/ps aux |grep lsof
/root/ps aux |grep ss
/root/ps aux |grep zabbix_Agetntd
/root/ps aux |grep .dbus
如:
注意如果kill后删除后还会再出现就这样操作(破坏木马程序)
/usr/bin/dpkgd/ps && /root/chattr +i /usr/bin/dpkgd/ps
/usr/bin/bsd-port/getty && /root/chattr +i /usr/bin/bsd-port/getty
删除含木马命令并重新安装(或者把上传的正常程序复制过去也行)
ps
/root/chattr -i -a /bin/ps && rm /bin/ps -f
yum reinstall procps -y
或
cp /root/ps /bin
netstat
/root/chattr -i -a /bin/netstat && rm /bin/netstat -f
yum reinstall net-tools -y
或
cp /root/netstat /bin
lsof
/root/chattr -i -a /bin/lsof && rm /usr/sbin/lsof -f
yum reinstall lsof -y
或
cp /root/lsof /usr/sbin
chattr && lsattr
yum -y reinstall e2fsprogs
ss
/root/chattr -i -a /usr/sbin/ss && rm /usr/sbin/ss -f
yum -y reinstall iproute
或
cp /root/ss /usr/sbin
修改下面两个程序的权限,这个是意外发现有的改了这两个程序的权限,让你发现了木马既不能下载正常程序也不能杀进程
/usr/bin/killall
/usr/bin/wget
- 1
- 2
另外他们还修改了DNS怕我们识别不了有的域名吧,想得很周到。
cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
——————————————————————
工具扫描
安装杀毒工具
安装
yum -y install clamav*
启动
service clamd restart
更新病毒库
freshclam
扫描方法
clamscan -r /etc –max-dir-recursion=5 -l /root/etcclamav.log
clamscan -r /bin –max-dir-recursion=5 -l /root/binclamav.log
clamscan -r /usr –max-dir-recursion=5 -l /root/usrclamav.log
clamscan -r –remove /bin/
clamscan -r –remove /usr/bin/
查看日志发现
/bin/netstat: Linux.Trojan.Agent FOUND为病毒
grep FOUND /root/usrclamav.log
/usr/bin/.sshd: Linux.Trojan.Agent FOUND
/usr/sbin/ss: Linux.Trojan.Agent FOUND
/usr/sbin/lsof: Linux.Trojan.Agent FOUND 如: “`
加强自身安全
但是此时还不知道系统入侵的原因,只能从两个方面考虑:暴力破解和系统及服务漏洞
a、yum update 更新系统(特别是bash、openssh和openssl)
b、关闭一些不必要的服务
c、设置ssh普通用户登陆并用hosts.all、hosts.deny限制登陆的网段
d、记录登陆系统后操作的命令
在日常运维中,我们需要清楚服务器上每个用户登录后都做了哪些操作,我们需要记录下每个用户的操作命令。
下面的内容设置可以实现在Linux下所有用户,不管是远程还是本地登陆,在本机的所有操作都会记录下来,并生成包含“用户/IP/时间”的文件存放在指定位置。
export HISTTIMEFORMAT="[%Y.%m.%d %H:%M:%S]"
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
HISTDIR=/var/log/.hist
if [ -z $USER_IP ]
then
USER_IP=`hostname`
fi
if [ ! -d $HISTDIR ]
then
mkdir -p $HISTDIR
chmod 777 $HISTDIR
fi
if [ ! -d $HISTDIR/${LOGNAME} ]
then
mkdir -p $HISTDIR/${LOGNAME}
chmod 300 $HISTDIR/${LOGNAME}
fi
export HISTSIZE=4096
DT=`date +%Y%m%d_%H%M%S`
export HISTFILE="$HISTDIR/${LOGNAME}/${USER_IP}.hist.$DT"
chmod 600 $HISTDIR/${LOGNAME}/*.hist* 2>/dev/null
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
得到的结果,永久保存,每个用户的命令记录分目录保存
ls -l /var/log/.hist/root/
-rw——- 1 root root 546 2006-05-26 10:00 218.82.245.54.hist.20060526_092458
-rw——- 1 root root 243 2006-05-28 13:28 218.82.245.54.hist.20060528_114822
-rw——- 1 root root 10 2006-05-28 12:18 218.82.245.54.hist.20060528_121605查看命令记录
export HISTFILE=/var/log/.hist/root/xx04.hist.208_152551[root@demoredis_171 root]# history
1 2016-11-17 15:41:40 ll
2 2016-11-17 15:41:42 cd /data/
3 2016-11-17 15:41:42 ll
4 2016-11-17 15:41:47 cd /var/log/.hist/
5 2016-11-17 15:41:47 ll
6 2016-11-17 15:41:48 cd root/
7 2016-11-17 15:41:48 ll
10 2016-11-17 15:42:18 export HISTFILE=18—.hist.20161117_154054 11 2016-11-17
15:42:21 history
所有评论(0)