今天我的网站突然无法访问,我马上进入服务器排查情况。用top命令查看进程,发现有某个进程的cpu使用率到达90%以上,而这个进程并不是我启动的。我怀疑这个进程是个木马程序,于是我用kill -9 【进程id】把该进程杀掉。发现没过多久该进程又启动了。我反复试了几次还是不行,于是更加断定我的怀疑了。
经过老大的提醒,有可能是redis的漏洞导致被攻击,我马上检查了redis服务,果然我redis忘记设置密码了,被黑客攻击,自动下载木马程序并运行木马程序。于是我赶紧把redis服务停掉,当时我只是通过netstat -lnp 查看端口并用kill -9 【端口号】命令杀掉redis进程。接着我再kill 那个木马进程,发现过一会又启动了,于是我在网上查了一下资料,普遍的做法:
- 先用ls -l /proc/进程id/exe找出木马程序的执行文件,把文件删除。
- 在/tmp/目录里查找可疑文件,并把可疑文件备份后删除
- 用crontab -l命令查看所有定时任务,并把定时任务删除,如果没有定时任务,则查看/etc/crontab文件的内容,看看是否有任务。
- 把定时任务,临时文件,木马的exe文件删除后再把占用cpu最高的进程杀掉。
我按照这些步骤都做了一遍,发现跟我的情况完全不一样。首先我用ls -l /proc/进程id/exe查找木马执行文件,发现文件已经被木马程序删除了,根本就没有exe文件。如下图所示:那个文件不存在,已被木马程序删除
我接着再查看定时任务,发现也没有定时任务,定时任务为空。我进到crontab文件查看也没有定时任务,这就奇怪了,咋会没有定时任务呢。我这个时候灵光一现,会不会有其它的定时任务文件,于是我就用 ls -l |grep 'cron*'模糊查找,结果找出了一大堆定时任务。如下图所示:有一个cron.d文件,它里面包含了其它所有以cron开头的定时任务文件。
藏得好深啊,原来不是藏在crontab文件里。cron.hourly和cron.daily都发现有定时任务文件。
于是把cron.d的文件和cron.hourly,cron.daily的定时任务都删除掉。
心想着这下总算好了,找到定时任务了,满怀着兴奋的再去kill 木马程序。发现 过了一会这个木马程序又启动了,哎,这到底是咋回事,服了,该做的都做了,还是没法杀掉木马程序。
想了好久没想通,我把top窗口打开,再仔细观察一下电脑程序运行情况,突然之间有一个进程在出现了一下又消失了我看到是一个服务叫redis-server的进程。如下图所示:
看到用户和木马程序的用户一样。我redis不是已经关掉了吗,怎么还有redis-server。此时豁然开朗,难道这是一个伪装进程?我抱着试试的态度,把redis-server的进程kill掉。再top打开窗口,发现木马程序也关掉了,哈哈哈。原来redis-server才是幕后老大,藏得太深了。原来那个占用cpu最高得进程不是主进程,只是一个子进程。幕后还藏在老大。我把redis-server杀掉之后就把木马程序给干掉了,大功告成!!!