今年年初,公司负责的项目中有多台Linux服务器被病毒攻击。.可能有人会问,Linux也会感染病毒吗?呵呵,答案是肯定的。只要有服务器泄露Root或Administrator权限,Hackers就有无限可能。要知道Hackers都是高级程序员,哈哈。记录这篇文章的目的并不是说按照本文介绍的方法就可以彻底清除服务器上的病毒,而是想传达给大家一个应对突发事件的方法。这个case归根结底还是要重装服务器,有人可能会说,你不是头条党吗?不能处理的事情明明要发出来——用一句老话来说,就是死了也要知道是怎么死的。既然是搞技术的,多学点总没有错。系统弱密码什么是弱密码?简单来说,你的密码设置太简单了。首先,该病毒就是利用这种方式暴力破解系统的弱口令。让我们多谈谈什么是暴力?那就是写一个程序来回测试你的密码是多少。如果密码比较简单,不够长,不够复杂,短时间内可以暴力破解。在问题出现初期,公司的安全同事在发现病毒的时候就已经告知了他们如何判断自己是否中了木马,可惜给出的解决方案并不能阻止木马继续作恶破坏。1、用root登录系统,分别查看/root、/tmp、/dev/shm,执行ls–lrt。其中有文件:-rwxrwxrwx1oracleoinstall646674Mar1018:32.lz1489875542-rwxrwxrwx1oracleoinstall4Mar1905:40gates.lodZTE3.224.55受到攻击。2.检查/etc/crontab。任何人每三分钟就会受到一次攻击。3、使用top查看cpu使用情况,系统受到攻击,cpu会异常高。我看到的现象与我的安全同事发送的现象不同。我这里看到的现象,有木马的服务器CPU不是很高,维持在正常水平。一开始没太在意,因为只是1-2台服务器被击中,按照安全同事给的操作方法处理,就没再关注了。后来,当它散成碎片时,我才意识到问题可能并没有那么简单。有句话叫木马初露锋芒,永远不要低估你的对手,哪怕他现在还很小。刚才说了,正是因为一开始我没有认真对待,木马哥不高兴,有点露了手,直接导致我加班了将近2天。..最先遭殃的是业务系统A,这个系统实时性高,用户直接反映功能不好用。抬头一看,程序还在运行,只是里面的日志没有刷新。我重启后就好了。但它只好几个小时,然后又死了。.那时,我的心有些波涛汹涌。.一波又一波的动荡,接着是业务系统B、C、D……都是一样的现象。我只想说:我是X!整个下午一直跟踪应急处理过程,一直到晚上12点。最终导致无法继续排查问题的原因是木马哥。这哥们最厉害的地方在于,直接给你服务器的网络环境发一堆包,直接把你的网络给堵死了。举个例子:比如有一条路有4条车道,现在有6辆车要通过,而这6辆车很有个性,按照6车道的标准行驶,怎么能跑的顺畅呢?于是我反思了一个具体的现象,就是我通过crt工具在服务器上远程执行命令,但是根本无法输入命令。ping通后,丢包率达到了惊人的95%。..留个悬念放在文末。那我之前做了什么?1、执行ps-ef|grepZTE,使用安全同事给的方法进行处理。结果,删除后立即出现新进程,木马有多种表现形式。2、查看/tmp下的目录,执行ls-lart:发现所有被感染的机器,在/tmp下有这两个文件:gates.lod和moni.lod3。上网搜索这两个文件,找到了一个与文章对比,确定病毒为Linux.BackDoor.Gates.5文章链接:http://blog.clzg.cn/home.php?...4.尝试使用文章中的方法删除病毒看完文章,我们可以得出这样一个结论:这个病毒会先替换掉系统中的一些命令,比如lsofpsnetstatss,看netstat,就可以知道病毒要干什么,无非就是发送流量包,造成网络瘫痪,病毒替换用自己改写过的命令包替换系统原来的包,可能对服务器本身没有影响,但是使用我们的机器作为肉鸡。.执行命令:删除后发现执行ps-ef语句不好用,同时再次登录服务器报错。..于是我把普通机器上的ps命令复制到这台机器上,但是一会就不行了。这样做的时候我想到了病毒原理,很容易分析出情况:病毒反复覆盖系统操作命令,删除文件。drop后,每删除一次病毒进程,病毒就会复制一个新的病原体到/bin。被病毒修改过的文件系统是不能直接使用的,这也解释了为什么很容易放上一个新的,但是过一段时间就不行了。5、了解了这个原理之后,我们可以使用下一个方法:使用chattr命令来防止病毒修改正常的系统命令:我们先把正确的系统命令文件放在相应的目录下,使用chattr命令进行保护.任意操作,如rm,mv等。这里有个文档:http://www.ha97.com/5172.htmlcd/binchattr+i/bin/pschattr+i/bin/netstatcd/usr/sbinchattr+i/usr/sbin/lsofchattr+i/usr/sbin/ss然后执行以下命令:因为病毒可能在很多地方,有些地方需要手动更改,我这里列出的应该是比较完整的。rm-rf/usr/bin/dpkgdrm-rf/usr/bin/pythonnorm-rf/usr/bin/bsd-portrm-f/usr/bin/.sshdrm-f/usr/bin/sshdrm-fr/root/ZTERm-fr/root/ZTE.1rm-fr/root/Managerrm-fr/root/Manager.1rm-fr/root/1rm-fr/root/jhostrm-f/usr/local/zabbix/sbin/zabbix_AgentDrm-f/usr/local/zabbix/sbin/conf.nrm-f/root/cmd.nrm-f/root/conf.nrm-f/root/IPrm-fr/tmp/ZTErm-f/tmp/gates.lodrm-f/tmp/moni.lodrm-f/tmp/notify.filerm-f/tmp/gates.lockrm-f/etc/rc.d/init.d/DbSecuritySptrm-f/etc/rc.d/rc1.d/S97DbSecuritySptrm-f/etc/rc.d/rc2.d/S97DbSecuritySptrm-f/etc/rc.d/rc3.d/S97DbSecuritySptrm-f/etc/rc.d/rc4.d/S97DbSecuritySptrm-f/etc/rc.d/rc5.d/S97DbSecuritySptrm-f/etc/rc.d/init.d/selinuxrm-f/etc/rc.d/rc1.d/S99selinuxrm-f/etc/rc.d/rc2.d/S99selinuxrm-f/etc/rc.d/rc3.d/S99selinuxrm-f/etc/rc.d/rc4.d/S99selinuxrm-f/etc/rc.d/rc5.d/S99selinux6。执行ps-ef|greproot命令:执行这个命令的意思是:病毒会把自己伪装成常用的命令形式,例如:/usr/bin/dpkgd/ps就是一个异常进程。参考网上的文章,找出root用户下所有有问题的进程,杀掉:kill-9566310Apr21?00:04:55/usr/bin/bsd-port/gettykill-9569810Apr21?00:00:00/usr/bin/.sshdkill-91491310Mar23?00:00:02/usr/bin/.sshdkill-9254231013:15?00:00:00/usr/bin/pythonkill-93058910Apr26?00:02:18/usr/bin/bsd-port/knerlkill-9478791013:35?00:00:01/usr/bin/bsd-port/knerlkill-9652051014:08?00:00:00/usr/bin/bsd-port/gettykill-9652401014:08?00:00:00/usr/bin/.sshdkill-9674231014:12?00:00:00/usr/bin/bsd-port/gettykill-9674661014:12?00:00:00/usr/bin/.sshdkill-97134210Apr10?00:00:01/usr/bin/pythonkill-97146810Apr10?00:00:01/usr/bin/.sshdkill-9718731014:20?00:00:00/usr/bin/dpkgd/pskill-9719851014:20?00:00:00/usr/bin/pythnokill-9720621014:20?00:00:00/usr/bin/dpkgd/pskill-9721161014:20?00:00:00/usr/bin/pythonkill-9725681014:21?00:00:00/usr/bin/dpkgd/pskill-9726261014:21?00:00:00/usr/bin/bsd-port/knerlkill-9726311014:21?00:00:00/usr/bin/pythonkill-97458210Apr10?00:10:44/usr/bin/bsd-port/gettykill-97461510Apr10?00:00:01/usr/bin/.sshdkill-97608810Apr10?00:00:01/usr/bin/.sshd7。观察,ps-ef|grepZTE,发现没有重复这个过程,查看/usr/bin,之前的病毒本体,主程序也没有了。8、延迟一个小时后验证,还是没有病毒进程和病毒体文件,但是在/user/bin下会生成如下文件:看起来是异常的东西,但是因为没有进程可循,所以可以被忽略。然后又测试了另一台机器,另一台机器并没有这个随机文件,这可能与病毒发布者的实际使用有关。9.手动清理/bin下的.conf文件和lsofss文件。/bin下的ss和lsof是病毒自己复制的。真正的文件在/usr/sbin下,这两个可以删除。.conf文件可能在/tmp或/root下,根据实际情况删除即可。以上就是我的思考和这个问题的全过程。从系统层面来看,病毒暂时得到了抑制。注意,我说的是从操作系统层面。呵呵。上面我留下的悬念,crt无法运行,最后怎么办?用户紧急去找硬件厂商,到机房实际观察端口的网络流量。因为是虚拟机,观察到异常后直接关闭了虚拟机,因为木马是个很严重的问题,不能考虑业务。不再营业的,必须停业处理。之后,我开始取出一台没有中毒的虚拟机的系统二进制代码,与问题服务器进行对比,对比后发现。.整个操作系统和文件的90%以上都被篡改过。..我们刚刚所做的只是九牛一毛。但是只有3台服务器的病毒在爆发,通过关闭虚拟机已经被抑制了。其他服务器上的系统命令虽然被篡改了,但是还没有到不能用的地步。并且通过我们刚才的初步处理方式,保证病毒源不再产生,通过限制ip访问,也保证病毒源不扩散。分享这篇文章的目的是,如果你的root密码管理不规范,那你就真的中了木马,没人能帮你。如果其他用户被击中,直接删除用户即可,但是root权限是打开服务器的大门,处理这种情况最完美最残忍的方法就是重装系统,这样安全合规的重要性并且反映了丢失的扫描,哈哈。
