一次处理服务器挖矿木马失败的经历

前一段时间,某公司网站服务器中了病毒,我去帮人解决,跑了四趟,重装了两次系统,犯了若干低级错误,也走了许多弯路,一言难尽啊。

我接手之前的情况:Linux服务器中木马病毒后,技术人员按一些网络教程操作,造成服务器彻底瘫痪,无法启动。

第一次查看情况,用CentOS6的U盘启动后发现:

1、服务器两个分区,boot分区和lvm分区,lvm分区有三个lv,root、swap和home;

2、boot分区无内核和grub文件,疑似被误操作删除;

3、vgchange后,挂载lvm分区,分区完整,数据都还在。

确定解决方案,将数据备份,并重装系统(为什么不直接修复?呵呵)。

第二次备份数据,重装系统。

1、用CentOS6的U盘启动后,挂载了一个移动硬盘,将lvm上的数据复制到上面,结果发现真坑,几百G的数据,得复制好几个小时,算了,把原root分区有用的文件先复制到home分区;

2、安装系统。安装时突然想到还有个8G的swap分区,直接把这个8G的分区格式化成root分区不就行了?这样,原root分区得以保留下来(前面都在做无用功。。。);

3、系统安装过程很顺利,将原root分区文件全部复制到home分区,删掉,重新划分lvm分区,恢复到之前分区状态(lvm太方便了);

4、安装后不让联网(别问我为什么),于是从别的机器上下载好的两个DVD的iso文件,用U盘复制到机器中,挂载为安装源,yum安装apache、php、mysql,从原系统文件中将配置文件找出来,apache和php没问题,顺利启动运行。mysql数据则是找到了一个去年备份的sql文件,导入。怀着激动的心情,打开网站,网站前台页面无法访问!!后台却可以访问。排查半天,无果。

5、由于mysql备份较早,没有后来网站更新的数据。于是又开始折腾将原/var/lib/mysql中的数据恢复,一是Mysql数据库版本不清楚,二是数据表部分为InnoDB,折腾很长时间没弄好。算了,时间晚了,先这样吧。

6、由于直接在机房操作不方便,应对方要求,没有关掉ssh端口(此处为后面重装创造了条件),后面许多操作是局域网ssh登录进行的。

7、回家途中突然想明白前台页面无法访问的原因,应该是犯了一个低级错误:网站目录权限问题(后来证实确实如此)。

第三次修复网站问题,恢复mysql数据。

1、修改网站目录权限,前台页面访问恢复;

2、下载本站的wnmp一键包,将原/var/lib/mysql中的网站数据文件复制到一键包中,删掉InnoDB引擎的部分表(没用的表),成功将其他表的数据恢复出来,导入到网站数据库中,全部网站数据恢复。

3、第二天早晨上班路上,想到一个问题,他们不会没防火墙吧?用手机ssh登录服务器,成功!

一台开放到外网的服务器、曾经中过木马、默认22端口、弱密码,后果是什么?

果然,下午就跟我联系说服务器经常卡住,我登录一看,发现木马!!

以前也给人解决过挖矿的木马,这次的木马又有新的特征:

1、将病毒可执行文件用vim打开,里面除了乱码,还有一些创建文件的操作,代码显示病毒不断检查这些文件是否存在:

/proc/%d/exe
/etc/daemon.cfg%s/%s%s/%s.sh
/etc/cron.hourly/%s.sh
/etc/init.d/%s
/etc/rc%d.d/S90%s
/etc/rc.d/rc%d.d/S90%s

如果不存在,就自动生成随机文件名的文件。

2、木马不断的杀掉自己的进程,并且创建进程名称随机的10来个新进程(进程名如:ps、ls、top等常见命令),因此无法用ps -ef显示进程id或进程名称来杀掉进程。使用进程id和进程名称杀它时,进程id或进程名称已经不存在了。

尝试过的方法:

1、将/etc/init.d/和/etc/cron.d等文件夹中的可执行文件删掉或权限改成000,均无效,病毒检测到后,会重新创建一个名称随机的文件。

2、写了个脚本,将ps出来的可疑进程kill掉,不起作用。可能是由于不可能同时干掉所有的进程,或者还有其他进程存在,很快就会又出现10来个进程。

后来想,算了,不折腾了,重装吧!

第四次,重装,重新配置网站。

1、这次由于有上次经验,很快就重装了,网站配置也很顺利;

2、做好基本的安全防护:修改ssh端口、禁用root登录、只允许key登录、配置好iptables等。

经过这次折腾,也算积累了一些经验吧。

一次处理服务器挖矿木马失败的经历》有1个想法

发表评论

电子邮件地址不会被公开。

This site uses Akismet to reduce spam. Learn how your comment data is processed.