十字符病毒,杀不死的小强:一次服务器沦陷实录

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 一、现象 接到客户的电话,说自己的云服务器被提供商禁止访问了,原因是监测到网络流量爆满,服务器不停地向外发包,在确认客户没有业务量突增的情况下,初步判断可能服务器遭受了流量攻击(DDoS)。 不过按照常理来说,客户的业务系统就是一个小的Web系统,平时流量不大,影响力也一般,不至于遭受DDoS,带着这些疑问,要到了客户服务器的登录方式。

一、现象

接到客户的电话,说自己的云服务器被提供商禁止访问了,原因是监测到网络流量爆满,服务器不停地向外发包,在确认客户没有业务量突增的情况下,初步判断可能服务器遭受了流量攻击(DDoS)。

不过按照常理来说,客户的业务系统就是一个小的Web系统,平时流量不大,影响力也一般,不至于遭受DDoS,带着这些疑问,要到了客户服务器的登录方式。现在我们废话少说,还是进入系统,一查究竟吧。

二、排查问题

下图是登录系统后,执行top命令的输出结果,综合查看,系统整体负载并不高,但是带宽占用很高,由于云服务器带宽基本耗尽,SSH登录服务器也非常慢,几乎不能执行任何操作。

此外,还发现第一个进程占用很大CPU资源,就是名为apgffcztwi的进程,这个进程名刚好10个字符,这是什么进程,名字相当古怪,肯定有问题,从文件名看出,这不像一个正常的系统进程。

既然有古怪,那就看看这个进程是哪个程序启动的,操作方式见下图:

112b85dee6e5990c48e583821f55a6220ab62fb5

简单吧,通过刚才那个进程的pid,然后去proc下面查看pid目录下面对应的exe文件,就能找到进程对应的启动程序,Linux就是这么敞亮,一下子找到了这个程序位于/usr/bin目录下。

既然找到了这个程序,那就详细查看下这个程序的属性信息吧,如下图:

71ca55ff9b2d45df714d5581d4dc7d0ca35f6101

看到了吗,第一个文件,文件的读、写和执行属性均没有,相当古怪。好吧,先记录下来这个文件的位置和路径。

下面继续查看系统进程信息,看看有无其它异常,通过ps命令又发现了新的线索,如下图:

43e0ebe10b4434ec1793fc993ea378ec6526809f

在/usr/bin目录下有隐藏的.sshd文件,这个文件是正常系统所没有的,又一个可疑线路,仍然记录下来。

继续查看系统进程,可疑进程还远远不止这些,这不,又发现了一个可疑进程,如下图:

04f82fd318d5178f040a77f49998ec8f6ac9330e

/usr/bin/dpkgd/ps -ef这个进程很明显是个变种的病毒,因为我们指定ps命令肯定不会存在/usr/bin/dpkgd目录下,既然说到/usr/bin/ dpkgd目录,那么就到这个目录下去看个究竟,继续上图:

7de48b7e0407bb800a8e61aa3bf55dcd648cfed3

又发现一些隐藏的病毒文件了,比如lsof ps netstat ss,这些都是变种病毒文件,主要用来替换系统中的一些命令,当看到netstat这个命令时,基本明白了这个病毒的意图,它无非就是发流量包,造成网络瘫痪,病毒替换了系统原有的包,换成自身经过改写的命令包,这样,既隐藏了自己的行为,又不会对服务器造成太大影响,但是它的真正目的就是用咱们的机器做肉鸡啊。真是用心良苦。

记录这个线索,然后继续通过dmesg命令查看系统信息,看看有没有异常,上图:

43314912125ce5e37cd941210ba9af47261e74f1

果然有异常信息,nf_conntrack是iptables里面的连接跟踪模块,它通过哈希表记录已建立的连接,包括其他机器到本机、本机到其他机器、本机到本机的连接,出现dropping packet,就是由于服务器访问量大,内核Netfilter模块conntrack相关参数配置不合理,导致新连接被drop掉。查看nf_conntrack_max,看看设置多大:

[root@server~]# cat /proc/sys/net/netfilter/nf_conntrack_max

2097152

nf_conntrack_max设置200多万,已经设置很大了,看来不是这个参数设置导致的。估计是上面的一些异常进程导致。

三、开始解决问题

通过上面发现的几个线索,为了能快速解决问题,先尝试关闭或删除进程和文件,然后看看网络是否能够恢复正常,一不做二不休,开整吧!

第一步,先删除/usr/bin/.sshd文件,然后关闭此文件对应的进程,看下面的图:

4b1d5d49cc3f0fc37fc2ea8f59708a35528ed38b

这样先删除进程对应的文件,然后kill掉.sshd进程,那么,进程就无法重新启动了。

第二步,删除/usr/bin/dpkgd目录下所有的变种病毒文件,同时删除/usr/bin/apgffcztwi文件,写个脚本,批量删除如下:

5ccfadc14cbad4dba1d0032b60da2be10ec87f63

执行删除后,发现ps命令不好使了,可恶啊,不过,这点问题,难不倒俺,重新安装一个ps命令即可,或者从别的机器拷贝一个ps命令过来,这里来个干脆的,重新安装一个,安装过程看下图:

ec04e8b32027119772c27df76f2a2a2f51def533

大家能看到这个操作吧,先看看ps命令属于哪个RPM包,然后yum在线安装一个新的包即可。

这个ProcPs包安装完成后,ps命令又可以使用了,现在通过ps命令查看到的系统信息,才是真实的系统啊,刚才那个ps命令是加壳的,屏蔽了很多系统中黑暗的勾当。

还在兴奋中,接着执行了一个lsof命令,又发现新情况了:

833f3a1c689a7999f325674c4274bc68b2c92837

刚刚删除了/usr/bin/apgffcztwi文件,但是又自动生成了新的文件,/usr/bin/fhmlrqtqvz,并且还有一个文件/usr/bin/fgqnvqzzck已经被删除了,但是进程仍然存在,那个deleted就是文件的状态。而且新生成的文件,仍然是10个字符。

看来低估这个病毒程序了,继续往下深究。

考虑到会自动产生病毒文件,感觉应该是Linux下的crontab完成的工作,那么是不是病毒在crontab里面做了手脚?

切换到系统的/var/log/cron目录下(此目录记录了Linux下所有用户的计划任务信息,以crontab-u-e方式写入的计划任务都会在此目录下生成文件),没看到任何文件,看来不是用户级别的crontab在作怪,那么再看看系统级别的crontab,就是/etc/crontab文件,贴图如下:

6d6cda84558de45ffccc997b6d53f44dd55d35b2

看最后一行,发现了一个定时任务,此任务每三分钟执行一次,任务对应的是个kill.sh脚本,找到脚本就好办了,看看这个脚本的内容:

66c03d17ee215d7ea9cf99cd6fa50ef1dedc2d65

脚本很简单,但是却是个重大发现。此脚本会自动重启网卡,然后执行一个cp操作,将 /lib/libkill.so文件复制一个/lib/libkill.so.6文件,然后执行这个文件。这个文件是个二进制的文件,无法查看内容,猜想应该就是自动生成那个十个字符文件的病原体。

这里看到的病原体名称是libkill.so,它的名称不是固定的,常见的还有libudev.so、 /lib/udev/udev等类似名称,但是作用应该都是一样的。

到这里为止,思路基本清楚了。

这个×××程序执行的原理应该是这样的:libkill.so是所有进程的病原体,通过kill.sh脚本每隔3分钟自动检测一次,如果发现病毒程序不存在了,就从病原体复制一份儿到/lib/libkill.so.6,病毒副本/lib/libkill.so.6执行后,就会生成一个随机命名(10个字符)的程序,放到/usr/bin/、 /boot,/etc/init.d等目录下。同时还修改了自启动配置chkconfig–add xxx,修改自启动项/etc/rc.local等,让×××程序开机自动运行。

这就是无法杀掉病毒进程的原因。

至此,病毒运行的原理已经清晰了,下面的工作就是清除病毒程序。

四、清除病毒

清除病毒也是需要技巧的,如果直接删除kill.sh文件,你会发现,这个文件又自动生成了,这就是病毒程序在起作用。

那怎么彻底清除呢,可通过下面方式实现:

通过top或者lsof命令可以获取那个自动启动的×××进程的pid为17161,然后执行如下操作:

kill -STOP 17161

注意,这里-STOP选项的含义,不是关闭这个进程,而是停止这个进程。停止执行后,进程仍然存在,这样就绕过了病毒进程来监测。紧接着,再来点硬货:

chattr +i /etc/crontab

这样,先锁定crontab文件,不让任何进程写入数据。

下面就可以安静地删除之前的那些病毒文件了。先删除这个kill.sh文件,让它不再定期执行:

[root@server ~]# ll /etc/cron.hourly/kill.sh

接着删除/usr/bin下和/etc/init.d下的所有可疑文件:

e25bc3474fff8a0ee1222cf692eb7fac402a4b75

比如上图中,第1、2、4、5、6都是可疑文件,随便看一个文件:

0157b97ec9881fdf96111389ddb87828c9a8d6d9

可以看到,这个文件又指向了/root/xd文件,而这个xd文件肯定也是病毒文件,需要删除。

最后,删除病原体文件:

[root@server ~]# rm -rf /lib/libkill.so.6

[root@server ~]# rm -rf /lib/libkill.so

最最后,别忘了,还要清理现场,关闭一直处于停止状态的那个pid为17161的病毒进程:

[root@server ~]# kill -9 17161

现在就可以直接执行kill-9的操作了,因为病原体已经被删除,定时任务文件也被锁定,定时执行的脚本也被删除,所以这个病毒再无回天之力了。

最后,再看下清除病毒后的系统状态:

4364cf26ab2b72a78e6e2cf00348d3346824d7cb

整个世界清静了。

但是,我突然又好像发现了什么,是的,我发现了一个Redis进程在运行。瞬间,我明白了这个事件发生的原因:估计是Redis未授权访问漏洞导致的。

经过验证,确实如此,服务器上的Redis没有密码验证机制,可直接登录,不过这不算什么,最悲催的是Redis的6379端口默认对全网开放。

这里科普下什么是十字叉病毒,它是一个或者多个十位随机字母组成的木马病毒进程,主要目的是消耗服务各项资源。属于一种挂马,此病毒会自我保护和自我恢复。主要特征是会往外发送大量数据包。

最后,引用别人一句话,安全无小事,防微杜渐是关键。运维人要牢记啊!


原文发布时间为:2018-11-8

本文作者:南非蚂蚁

本文来自云栖社区合作伙伴“DBAplus社群”,了解相关信息可以关注“DBAplus社群”。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
10月前
|
安全
阿里云服务器被xmrigMiner及pnscan及伪装httpd的病毒入侵排查记录
阿里云服务器被xmrigMiner及pnscan及伪装httpd的病毒入侵排查记录
580 0
|
4月前
|
安全 Linux
Linux【问题记录 03】阿里云+腾讯云服务器的 kdevtmpfsi(H2Miner挖矿蠕虫变种)病毒处理(5个详细步骤)
Linux【问题记录 03】阿里云+腾讯云服务器的 kdevtmpfsi(H2Miner挖矿蠕虫变种)病毒处理(5个详细步骤)
118 0
|
4月前
|
分布式计算 安全 网络协议
Linux【问题记录 04】SSH突然无法连接排查2个小时最终解决Failed to start OpenSSH server daemon及阿里云服务器的 kdevtmpfsi 挖矿病毒处理
Linux【问题记录 04】SSH突然无法连接排查2个小时最终解决Failed to start OpenSSH server daemon及阿里云服务器的 kdevtmpfsi 挖矿病毒处理
174 0
|
10月前
|
监控 安全 网络安全
服务器被专门针对零日漏洞的.locked勒索病毒攻击,数据能否恢复?
        近日,国内多家公司服务器感染了后缀.locked勒索病毒,公司的服务器文件全部被加密,急需数据恢复,否则公司运作无法进行,部分企业经联系数据恢复工程师远程查看,并沟通协商了相应的解决方案,通过双方远程协同配合,最终在当天顺利完整恢复数据。
256 0
服务器被专门针对零日漏洞的.locked勒索病毒攻击,数据能否恢复?
|
9月前
|
小程序 安全 定位技术
微信小程序学习实录4(开发前准备、认证必备资料、公众号关联小程序、小程序发布、开发配置、服务器域名、业务域名、位置接口设置)
微信小程序学习实录4(开发前准备、认证必备资料、公众号关联小程序、小程序发布、开发配置、服务器域名、业务域名、位置接口设置)
215 0
|
9月前
|
存储 安全 网络安全
服务器感染了[comingback2022@cock.li].eking勒索病毒,如何确保数据文件完整恢复?
近年来,网络安全威胁不断增加,其中勒索病毒是一种极具破坏性的恶意软件。本文91数据恢复将介绍[comingback2022@cock.li].eking勒索病毒的特点,以及一些可能的数据恢复方法。
149 0
|
9月前
|
安全 测试技术 数据库
与黑客的斗智斗勇-一次服务器被攻击的实录
与黑客的斗智斗勇-一次服务器被攻击的实录
113 0
|
10月前
|
存储 安全 算法
locked勒索病毒利用零日漏洞,企业服务器数据瞬间遭受致命加密
近日,网络安全界再次爆发了一起令人震惊的事件,一种名为"Locked"的勒索病毒利用软件中的零日漏洞,迅速传播并瞬间加密了大量企业服务器。这一事件引发了广泛的关注和恐慌,暴露出网络安全的脆弱性和企业在面对新兴威胁时的不足之处。91数据恢复在本文将对这一事件进行深入分析,探讨相关的影响和可能的防范措施。
locked勒索病毒利用零日漏洞,企业服务器数据瞬间遭受致命加密
|
12月前
|
存储 安全 数据库
企业服务器被.eight后缀勒索病毒攻击,数据文件如何自救?
当企业遭受勒索病毒攻击时,数据库文件被加密,这会导致企业无法访问其重要的业务数据,会给企业带来较大的困扰。本篇文章,91数据恢复专家将会针对.eight勒索病毒,介绍如何恢复被.eight后缀勒索病毒加密的数据库文件。 如果受感染的数据确实有恢复的价值与必要性,您可添加我们的技术服务号(sjhf91)进行免费咨询获取数据恢复的相关帮助。
|
存储 安全 数据库
如何应对企业服务器数据库文件遭遇勒索病毒后数据无法访问的情况?
    当企业的服务器遭遇勒索病毒入侵攻击时,往往最为重要的莫过于数据库文件,所以数据库文件也往往是勒索病毒的目标文件,数据库文件被.malox勒索病毒加密了。这时候,企业需要尽快找到解决方案,尽快恢复数据。本文将介绍被.malox后缀勒索病毒加密的数据库文件如何恢复,以及预防勒索病毒攻击的方法。