Linux服务器下Linux.BackDoor.Gates.5病毒的简单处理方法

贾琮
• 阅读 6111

今年年初的时候,公司负责的项目有相当一批Linux服务器,被病毒侵袭了。。
有的人可能会问了,Linux也能被感染病毒?呵呵,答案是可以的。

任何服务器只要把Root或者Administrator权限泄露出去了,对于Hacker来说就拥有无限可能,要知道Hacker就是高级的程序员,呵呵。

记录这篇文章的目的,并不是说按照这篇文章的描述方法,就可以把病毒从服务器上彻底清掉,而是传达给大家一种面对紧急情况时候的应对方法,这个Case归根到底还是要进行服务器的重装的,有人可能会说了,你这不是标题党吗?明明处理不了的东西还要发出来——套用一句老话“就算死也得知道是怎么死的” 。既然搞技术,多钻研一点总是没有错的。

  • 系统弱口令
    什么是弱口令?说得简单一点,就是你的密码设定的过于简单了嘛。这个病毒首先就是通过这种方式,来进行暴力破解系统的弱口令,再多说一点什么是暴力?那就是写个程序来回去实验你的密码到底是什么,如果密码比较简单,长度又不够,又不够复杂,基本很短时间内就可以被暴力破解。

  • 问题初期
    其实公司负责安全的同事在病毒发现的时候,就已经把这个如何判断是中了这个木马告知了,但是很遗憾的是,给出的解决方法并不能阻止木马继续肆虐。
    1.用root 登录系统,分别查看/root、/tmp、/dev/shm执行ls –lrt
    凡带有文件:

    -rwxrwxrwx 1 oracle oinstall 646674 Mar 10 18:32 .lz1489875542
    -rwxrwxrwx 1 oracle oinstall      4 Mar 19 05:40 gates.lod
    ZTE
    3.22
    4.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|grep ZTE,用安全同事给的方法进行处理,结果删掉之后马上有新的进程出现,并且木马有很多种展现形式。
    Linux服务器下Linux.BackDoor.Gates.5病毒的简单处理方法
    Linux服务器下Linux.BackDoor.Gates.5病毒的简单处理方法

    2.查看/tmp下目录,执行ls -lart: 发现所有感染的机器,/tmp下均有这两个文件:gates.lodmoni.lod
    Linux服务器下Linux.BackDoor.Gates.5病毒的简单处理方法
    3.上网搜索了下这两个文件,查到一篇比较符合的文章,确定病毒为Linux.BackDoor.Gates.5

文章链接:http://blog.clzg.cn/home.php?...

4.尝试着用文章中的方法来删除病毒
看了文章后,可以得出这么一个结论:

这个病毒首先会替换系统中的一些命令,比如lsof ps netstat ss,看到Netstat,可以知道这个病毒大概要干什么了,无非就是发流量包,造成网络瘫痪,病毒替换了系统原有的包,换成自身经过改写的命令包,可能对本身服务器没影响,但是是用咱们的机器做肉鸡。。

执行命令:
Linux服务器下Linux.BackDoor.Gates.5病毒的简单处理方法

删除过后,发现执行ps -ef语句不好用了,同时重新登陆服务器报错。。。
于是将正常机器上的ps命令复制到该机器上,但是没多久又不行了,做到这里,联想到病毒原理,很容易就分析出来情况了:
病毒是反复覆盖掉系统操作命令,将文件删掉后,每次删除病毒进程,病毒都会复制一个新的病原体到/bin下。
经过病毒修改的文件系统是没办法直接用的,这也就解释了为什么放上去新的好使,过一会儿又不好使了的情况。

5.明白了这个道理,我们可以采用接下来的手段:

chattr命令阻止病毒修改系统正常的命令:
我们首先将正确的系统命令文件,放到对应目录下,并且用chattr命令保护起来,不允许任何操作,比如rm,mv等。这里放一篇文档:

http://www.ha97.com/5172.html

cd /bin  
chattr +i /bin/ps
chattr +i /bin/netstat
cd /usr/sbin
chattr +i /usr/sbin/lsof
chattr +i /usr/sbin/ss

然后执行如下命令:因为病毒可能在的地方很多,所以有些地方需要手动去改一改,我这里列的应该比较全了。

rm -rf /usr/bin/dpkgd
rm -rf /usr/bin/pythno
rm -rf /usr/bin/bsd-port
rm -f /usr/bin/.sshd
rm -f /usr/bin/sshd
rm -fr /root/ZTE
rm -fr /root/ZTE.1
rm -fr /root/Manager
rm -fr /root/Manager.1
rm -fr /root/1
rm -fr /root/jhost
rm -f /usr/local/zabbix/sbin/zabbix_AgentD
rm -f /usr/local/zabbix/sbin/conf.n
rm -f /root/cmd.n
rm -f /root/conf.n
rm -f /root/IP
rm -fr /tmp/ZTE
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
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

6.执行ps -ef|grep root命令:
执行此命令的意义是:该病毒会伪装成常用的命令形式,比如:/usr/bin/dpkgd/ps就是一个异常进程。
参照网上的文章,把root用户下有问题的进程,都找出来,并且kill掉:

kill -9  5663      1  0 Apr21 ?        00:04:55 /usr/bin/bsd-port/getty
kill -9  5698      1  0 Apr21 ?        00:00:00 /usr/bin/.sshd
kill -9 14913      1  0 Mar23 ?        00:00:02 /usr/bin/.sshd
kill -9 25423      1  0 13:15 ?        00:00:00 /usr/bin/pythno
kill -9 30589      1  0 Apr26 ?        00:02:18 /usr/bin/bsd-port/knerl           
kill -9 47879      1  0 13:35 ?        00:00:01 /usr/bin/bsd-port/knerl
kill -9 65205      1  0 14:08 ?        00:00:00 /usr/bin/bsd-port/getty
kill -9 65240      1  0 14:08 ?        00:00:00 /usr/bin/.sshd
kill -9 67423      1  0 14:12 ?        00:00:00 /usr/bin/bsd-port/getty
kill -9 67466      1  0 14:12 ?        00:00:00 /usr/bin/.sshd
kill -9 71342      1  0 Apr10 ?        00:00:01 /usr/bin/pythno
kill -9 71468      1  0 Apr10 ?        00:00:01 /usr/bin/.sshd
kill -9 71873      1  0 14:20 ?        00:00:00 /usr/bin/dpkgd/ps
kill -9 71985      1  0 14:20 ?        00:00:00 /usr/bin/pythno
kill -9 72062      1  0 14:20 ?        00:00:00 /usr/bin/dpkgd/ps
kill -9 72116      1  0 14:20 ?        00:00:00 /usr/bin/pythno
kill -9 72568      1  0 14:21 ?        00:00:00 /usr/bin/dpkgd/ps
kill -9 72626      1  0 14:21 ?        00:00:00 /usr/bin/bsd-port/knerl
kill -9 72631      1  0 14:21 ?        00:00:00 /usr/bin/pythno
kill -9 74582      1  0 Apr10 ?        00:10:44 /usr/bin/bsd-port/getty
kill -9 74615      1  0 Apr10 ?        00:00:01 /usr/bin/.sshd
kill -9 76088      1  0 Apr10 ?        00:00:01 /usr/bin/.sshd

7.进行观察,ps -ef|grep ZTE , 发现没有该进程再重复产生了,查看 /usr/bin下,之前的病毒本体,主程序也都没有了。

8.延迟一小时后再验证,还是没有病毒进程及病毒本体文件产生,只是在/user/bin下会产生下图的文件:看起来也像个异常的东西,但是因为没有进程跟随,可以忽略了。随后又试验了一台机器,另外一台就没有这个随机文件,猜想可能跟病毒发布者的实际用途有关。
Linux服务器下Linux.BackDoor.Gates.5病毒的简单处理方法

9.手动清理 .conf文件和 /bin下的 lsof ss文件
/bin下的ss 和lsof是病毒自己复制过去的,真正的文件在/usr/sbin下,这两个可以删掉。
.conf文件可能在/tmp或者/root下,根据实际情况删除一下即可。

  • 以上就是我对此问题的思路及全过程,从系统层面上,将该病毒暂时抑制掉了。
    要注意我说的,是从操作系统层面上。呵呵。我上面留的悬念,crt都没法操作了,到最后怎么办呢?

用户紧急找了硬件厂商,去机房里实际观测端口的网络流量情况,因为是虚拟机,观测到异常后,直接将虚拟机关闭,因为中木马这事是很严重的问题,没法考虑什么业务不业务的了,必须停掉进行处理。
之后又开始将一台未中毒的虚拟机的系统二进制码拿出来,跟问题服务器做对比,一对比发现。。整个操作系统,文件被篡改了90%以上。。。我们刚才做的那些只不过是九牛一毛而已。
但是只有3台服务器上的病毒在发作,已经通过关闭虚拟机的到了抑制,其他的服务器上虽然系统命令被篡改,但是没有达到不能用的地步。并且通过咱们刚才的初步处理方法,保证了病毒源不再生成,通过限制ip访问,也保证了病毒源不再扩散。

分享这篇文章的目的是,如果你的root密码管理不规范,那么真中了木马,没人能帮得到你了,其他用户中了的话,直接删除用户就可以了,但是root权限是打开一台服务器的大门,这个Case最完美的同时也是最残酷的处理方式,就是重装系统,这样的话安全合规、漏扫的重要性就体现出来了,呵呵。

点赞
收藏
评论区
推荐文章
李志宽 李志宽
3年前
一文 读懂 还原 破解 incaseformat病毒
读懂Incaseformat病毒1.这个病毒的庐山真面目。其实就是个tsay.exe,用delphi语言开发的程序,不过它将应用程序伪装成文件夹的一样的效果,这就是给大家挖了个大坑,大家一般情况下不注意手快就点进去想打开文件夹的那种冲动。2.这个病毒界面的开关这个病毒的界面其实就是一个普通的delphi界面程序,它主要是由一个delphi的label控件和几
李志宽 李志宽
4年前
想开发一个安全软件,怎么搞?
今天跟大家介绍一下,开发一个像360、QQ电脑管家这样的安全软件,有哪些核心技术,或者说哪些核心组件是必不可少的?反病毒引擎首先,第一个必不可少的就是反病毒引擎。安全软件最早的核心也就是这个东西,它的目的就是检测一个文件是不是恶意软件。反病毒引擎主要通过对文件进行静态分析,识别恶意文件的特征,与自己的病毒特征库进行匹配,来判断目标是否是恶意的。这里面主要用
Stella981 Stella981
4年前
Linux运维高级篇—CentOS 7下Postfix邮件服务器搭建
第一章实验环境1.硬件环境:Linux服务器一台,IP地址:192.168.80.10;WIN7客户端一台,拥有OUTLOOK2013,测试用,与服务器在同一局域网内。2.Linux系统环境,如下图:!Linux运维高级篇—CentOS7下Postfix邮件服务器搭建
Stella981 Stella981
4年前
Linux应急响应(三):挖矿病毒
0x00前言随着虚拟货币的疯狂炒作,利用挖矿脚本来实现流量变现,使得挖矿病毒成为不法分子利用最为频繁的攻击方式。新的挖矿攻击展现出了类似蠕虫的行为,并结合了高级攻击技术,以增加对目标服务器感染的成功率,通过利用永恒之蓝(EternalBlue)、web攻击多种漏洞(如Tomcat弱口令攻击、WeblogicWLS组件漏洞、Jboss
Stella981 Stella981
4年前
Linux 服务器上有挖矿病毒 kdevtmpfsi 如何处理?
症状表现服务器CPU资源使用一直处于100%的状态,通过top命令查看,发现可疑进程kdevtmpfsi。通过google搜索,发现这是挖矿病毒。!(https://cdm.yp14.cn/img/kdevtmpfsitop.png)排查方法首先:查看kdevtmpfsi进程,使用ps
Stella981 Stella981
4年前
CTF中对web服务器各种提权姿势
    在我们拿下服务器web服务往往只是低权限用户,对于内网渗透,我们往往需要root权限,Linux系统提权包括使用溢出漏洞已及利用系统配置文件。提权前提:1.拿到低权限shell2.被入侵机器上有nc,python,perl等常见linux下的工具3.有权上传下载文件1. 利用内
Wesley13 Wesley13
4年前
Java 程序员必须掌握的 Linux 命令
  作为一个Java开发人员,有些常用的Linux命令必须掌握。即时平时开发过程中不使用Linux(Unix)或者mac系统,也需要熟练掌握Linux命令。因为很多服务器上都是Linux系统。所以,要和服务器机器交互,就要通过shell命令。  本文并不会对所有命令进行详细讲解,只给出常见用法和解释。具体用法可以使用–help查看帮助或者直接通过goog
Stella981 Stella981
4年前
IceFire Security Visibility :看得见的安全防护
在计算机病毒大行其道的今天,勒索病毒很容易伪装成合法和普通的邮件发送到公司员工的邮箱中,一旦员工将该邮件打开,勒索病毒便可轻易的突破企业的第一道安全防线,如防火墙、IPS、防病毒网关等。一旦企业IT管理员电脑被植入了木马文件,攻击者便可利用木马文件的后门进入IT管理员的电脑,全网扫描企业的重要资产,并以该电脑为跳板,轻松访问企业的核心业务和数据。 !
3A网络 3A网络
3年前
一次 minerd 肉鸡木马的排查思路
在日常使用Linux系统服务器时,如果系统安全维护方面做的不够规范和严谨,很容易导致主机被黑客植入恶意木马病毒被当做肉鸡。以后就是一次肉鸡木马病毒的排查过程,有助于运维服务器时遇到此情况时进行针对性的排查和修复。【问题现象】Linux主机CPU跑满,或者使用服务器越来越慢,以及收到报警信息提示服务器有对外恶意扫描。【问题原因】这种状况在出现时通
掌握了这几个 Linux 命令可以让你工作效率提升三倍
很多程序员熟悉了在Windows环境下开发,而我们服务器一般都是Linux系统。当有一天你需要在Linux服务器上做一些配置或者故障排除的时候,你会很困惑,不知道如何下手。原因是对Linux常用的命令还不熟悉,今天我就给大家介绍几个Linux常用命令。掌握它们的用法后,我们在使用CRMEB打通版系统的时候就能如鱼得水,可以大大提高工作
通过linux-PAM实现禁止root用户登陆的方法
前言在linux系统中,root账户是有全部管理权限的,一旦root账户密码外泄,对于服务器而言将是致命的威胁;出于安全考虑,通常会限制root账户的登陆,改为配置普通用户登陆服务器后su切换到root账户使用,这种方式较为安全,限制roo