linux系统入侵排查以及木马清除

挖矿病毒攻防

一.rootkit病毒介绍
这类挖矿木马是一种很深的隐藏在操作系统中执行恶意或令人讨厌的程序,正如病毒名字所述,这个木马病毒就是用来挖矿的,通过一系列脚本来控制系统的cpu做一些计算,同时将计算结果发往外界。一般的病毒清除方法对这个挖矿程序并不管用,因为这个程序超级顽固,你清除了一个,又会产生新的,春风吹又生。
二.被木马感染后的系统表现
(1)最直接表现是系统带宽被打满。网卡流量跑满。这里写图片描述
(2)通过top看系统cpu也被打满。内存占用还好。这就是被挖矿了。我们的cpu被控制了。
这里写图片描述
(3)ps命令,ls命令执行无输出。这个时候我们需要清醒的意识到,这些系统命令已经病被病毒程序替换了。我们的系统已经变得不可靠了,任何命令的执行都有可能进一步拉起病毒。
这里写图片描述
三.入侵排查
(1)首先我们要做的就是恢复一些我们常用的用来排查的工具,比如,ls,ps,netstat,lsof等命令。

/root/chattr -i -a /bin/ps && rm /bin/ps -f    #删除这些可能被感染的命令,比如ps,ls,netstat,lsof,top等。可以通过ls -lh /bin/ps 查看这些命令的大小和正常程序是否一致

接下来可以找一个相同操作系统的的ps,ls, netstat,lsof命令,将这些命令复制到被感染的系统中,临时使用。
(2)其次我们需要对系统做一个全面检查

a.检查系统日志
检查系统错误登陆日志,统计IP重试次数(last命令是查看系统登陆日志,比如系统被reboot或登陆情况)
注:此时last命令也有可能变得不可靠,需要检查

b.检查系统用户

查看是否有异常的系统用户
[root@bastion-IDC ~]# cat /etc/passwd

查看是否产生了新用户,UID和GID为0的用户
[root@bastion-IDC ~]# grep “0” /etc/passwd

查看passwd的修改时间,判断是否在不知的情况下添加用户
[root@bastion-IDC ~]# ls -l /etc/passwd

查看是否存在特权用户
[root@bastion ~]# awk -F: ‘ 3==0 {print 1}’ /etc/passwd

查看是否存在空口令帐户
[root@bastion ~]# awk -F: ‘length( 2)==0 {print 1}’ /etc/shadow

c.检查异常进程

top  #仔细检查异常进程pid
ls -l /proc/pid/exe 查看异常进程命令所在地

这里写图片描述

kill -9 970  #杀掉这个进程之后发现根本不管用,春风吹又生,又从/usr/bin/转移到/bin,再又转移到/tmp.这个时候必须注意倒病毒后台有监控进程,进程死掉了之后,立马又重新起来一个新的进程。

3、更多异常文件的发现

(1)查看定时任务文件crontab -l 并没有发现什么一次,查看/etc/crontab发现异常脚本gcc.sh。
这里写图片描述
(2)然后查看系统启动文件rc.local然后进入/etc/init.d目录查看,发现比较奇怪的脚本文件DbSecuritySpt、selinux。
这里写图片描述

第一个文件可以看出他就是开机启动那个异常文件的,第二个应该和登录有关,具体我还不是很清楚,反正肯定是有问题的。
这里写图片描述

既然和登录有关,那就找和ssh相关的,找到了下面的一个文件,是隐藏文件,这个也是木马文件,我们先记录下来,这样程序名字都和我们的服务名字很相近,就是为了迷惑我们,他们的大小都是1.2M,他们有可能是一个文件。
这里写图片描述

我有看了一下木马喜欢出现的目录/tmp,也发现了异常文件,从名字上感觉好像是监控木马程序的。
这里写图片描述

4.快速清理病毒木马
假设*的名字是nshbsjdy,如果top看不到,可以在/etc/init.d目录下面查看

(1)首先锁定三个目录,不能让新*文件产生

chmod 000 /usr/bin/nshbsjdy
chattr +i /usr/bin
chattr +i /bin
chattr +i /tmp

(2)删除定时任务及文件以及开机启动文件

注释/etc/crontab里的gcc.sh脚本  (监听程序死掉后重新启动的)
删掉对应的lib.so文件

删除定时任务

rm -f /etc/init.d/nshbsjdy (开机自启动的)
rm -f /etc/rc#.d/***连接文件掉***进程

killall -9 nshbsjdy

(3)清理*进程

chattr -i /usr/bin
rm -f /usr/bin/nshbsjdy
rm -rf /usr/bin/dpkgd (ps netstat lsof ss) 
rm -rf /usr/bin/bsd-port #木马程序 
rm -f /usr/bin/.sshd #木马后门 
rm -f /tmp/gates.lod 
rm -f /tmp/moni.lod 
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

至此发现系统的cpu和带宽均降下来了。应该是恢复正常了。
这里写图片描述

我这是个人使用linux,并不是生产环境。同时对安全组加以限制了。到这里是可以继续使用了。如果是生产环境,强烈建议重装系统。防止潜在的危险发生,对生产环境破坏。

5.防止系统入侵的一些个人建议
(1)从以往碰到的实例来分析,密码太简单是一个错
用户名默认,密码太简单是最容易被入侵的对象,所以切忌不要使用太过于简单的密码, 这种密码在扫描的软件里是通用的,所以很容易被别人扫描出来的。

(2)不要使用默认的远程端口,避免被扫描到
扫描的人都是根据端口扫描,然后再进行密码扫描,默认的端口往往就是扫描器的对象,他们扫描一个大的IP 段,哪些开放22端口且认为是ssh服务的linux系统,所以才会猜这机器的密码。更改远程端口也是安全的一个措施!

(3)使用一些安全策略进行保护系统开放的端口
使用iptables或者配置/etc/hosts.deny 和/etc/hosts.allow进行白名单设置
可以对/etc/passwd、/etc/group、/etc/sudoers、/etc/shadow等用户信息文件进行锁定(chattr +ai)

(4)禁ping设置

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

猜你喜欢

转载自blog.csdn.net/bittersweet0324/article/details/80650626