kdevtmpfsi挖矿病毒中招与破解

一、背景

本人是一名程序员,主要负责后端开发,已经做了10多年程序员了。
本人有一台ECS服务器,在腾讯云上双11买的,2C4G + 5M带宽三年话费1000不到。
平时自己喜欢在上面搭建一些服务玩玩。

二、发现

  • 有一天我在上面安装了hadoop玩,需要创建一个hadoop账号,并且给用户hadoop创建了一个简单的密码hadoop123(我真的是太懒了),同时开放了22端口的ssh服务(HDFS免密登录需要),第二天发现登录ECS机器异常卡顿,敲命令也延迟的厉害。直觉告诉我应该是我电脑的网络顿造成的(男人的直觉还真的不准)
  • 这样过了两天,依然还是卡顿,我就开始怀疑可能不是网络的原因。于是开启了linux命令行的检查(骚操作)
  • 执行top命令,然后ALT + P,发现有个进程名称为kdevtmpfsi,它占用了将近199%的CPU利用率,因为我是两核CPU,所以说明我的所有CPU计算资源都在执行这个该死的进程
  • 执行kill -9命令,杀掉进程,世界终于清静了
  • 然而好日子没有几分钟,系统又开始卡顿,top命令一看,我去,这个该死的进程kdevtmpfsi又来了,我意识到估计中招了(中毒)
  • 登录腾讯云平台,发现是hadoop账号被破解了密码,这么简单的密码,被破解不意外,只是没想到互联网的环境真的是好恶劣。
    kdevtmpfsi挖矿病毒中招与破解_第1张图片

三、清理病毒(一)

  • 先来百度一下你就上当(知道),这里插一句,我之前对百度没有什么好感,不过最近使用百度搜索,明显感觉搜索质量比以前提升了好多,广告也少了很多。
  • 搜索结果里有好多和我一样中招了的,并且附有杀毒策略,大体的清理病毒步骤如下:
    1)KILL掉kdevtmpfsi进程(第二部分已说明,不再详说)
    2)KILL掉kinsing进程(据说这个进程会监控kdevtmpfsi进程,如果kdevtmpfsi进程被kill了,还会被重新开启,这个就解释了为什么KILL掉kdevtmpfsi又会出来)
    3)清除kinsing文件,位置在/var/tmp/kinsing,这个是守护进程病毒的二进制文件,清理掉。
    4)清除kdevtmpfsi文件,位置在/tmp/kdevtmpfsi,这个是挖矿病毒的二进制文件,清理掉
  • 清理掉后,感觉整个人都轻松了,命令敲起来也溜溜的,真想对病毒的创造者说,小小病毒可笑可笑。对于我们后台开发者来说,清理这种病毒就是手到擒来。

四、清理病毒(二)

  • 经过这么清理,我以为病毒是彻底的被杀掉了,然而好戏才刚刚开始。
  • 清理完病毒的第二天,我照常登录服务器查看一下服务器状态,结果是令人沮丧的,病毒依然在,还是同样的进程,还是熟悉的配方。我低估了这个病毒的威力,可笑的是我的自大。
  • 是该好好的伺候一下这个病毒了。
  • 这次我登录了一下腾讯云后台看了一下服务器的监控,发现在凌晨3点左右,CPU又开始100%了。
    kdevtmpfsi挖矿病毒中招与破解_第2张图片
  • 网上搜索各种关于这个病毒的最新消息,发现有说这个病毒会自建一个定时任务,这个是我之前清理病毒忘记了的,查看了一下,果然在hadoop用户名下有一个定时脚本,如下
    在这里插入图片描述
  • 查看一下这个是什么地方的IP,结果是外国的,看来这个病毒的发起者是一个外国人。太可恶了。
    kdevtmpfsi挖矿病毒中招与破解_第3张图片
  • 把crontab的定时任务清理掉,然后按照第三部分的操作再清理一遍病毒
  • 与此同时登陆腾讯云后台,发现有一个木马病毒告警,也清理掉
    kdevtmpfsi挖矿病毒中招与破解_第4张图片
  • 重新新建hadoop账号(密码为乱码),这样靠原来的密码就登录不进来了,并且清理hadoop的ssh登录指纹(即删除/home/hadoop/.ssh里面的所有信息)
  • 清理完毕之后,继续观察服务器状态,直到下班,我的服务器依然还是很健康,心里的石头总算放下来了。

五、彻底清理

  • 第三天一大清早,第一件就是查看服务器状态,结果悲催了,还是被病毒攻破了,时间还是凌晨3点左右。
    在这里插入图片描述
  • 这个时候,我的心理是绝望的,网上能搜索到的,并且我能想到的,都做了,但是病毒依旧肆虐。
  • 这次我决定靠自己思考,病毒是怎么再次攻进来的。
  • 我看了下hadoop用户下面的crontab,发现相同的定时任务又出现了,怎么会这样?(答案后面揭晓)
  • 我注意到进程里面有一些异常的进程,这些进程会到远端下载病毒库,并下载到本地。下面分析下载病毒的任务树
    1)命令行分析:
    kdevtmpfsi挖矿病毒中招与破解_第5张图片
    2)语义化分析:
    kdevtmpfsi挖矿病毒中招与破解_第6张图片
  • 经过上面分析,现在问题是为什么定时任务删除了,还是会被新建,问题就出现在进程ID为12087的脚本里,脚本里面会修改定时任务crontab。所以即使人为删除了定时任务,还是会被脚本重新修改。那么怎么办呢?,没错,KILL -9 这些异常任务即可。
  • 经过上面处理后,发现wget下载f.sh脚本还是会被重新建立即使KILL掉还会再次出现。处理方法就是监听网络连接,发现有一个可疑的TCP连接一直连接着机器,如下图。我大胆的推测这个TCP连接会触发这个shell脚本的下载而且这个TCP连接很有可能是在破解我hadoop账号后就植入的一个木马。怎么办?KILL -9这个进程,同时使用一个新的ssh端口,然后关闭ssh端口22。
    kdevtmpfsi挖矿病毒中招与破解_第7张图片
  • 经过上面操作后,再次清理一下病毒,脚本如下
#!/bin/sh
rm -rf /var/tmp/kinsing
rm -rf /tmp/kdevtmpfsi
ps -efww|grep -w 'kinsing'|grep -v grep|cut -c 9-15|xargs kill -9
ps -efww|grep -w 'kdevtmpfsi'|grep -v grep|cut -c 9-15|xargs kill -9
  • 实时监控可疑的TCP连接,脚本如下
echo "###################### ps -ef | grep kdevtmpfsi ####################"
ps -ef | grep kdevtmpfsi

echo ""
echo "###################### ps -ef | grep kinsing ####################"
ps -ef | grep kinsing

echo ""
echo "###################### cat /var/spool/cron/hadoop ###################"
cat /var/spool/cron/hadoop

echo ""
echo "###################### netstat -natp info    ####################"
netstat -natp | grep -vE '(nginx|php-fpm|docker-proxy|php|YDService|mysqld|redis-server|java)'

监控需要关注是否有病毒进程,是否有可以的TCP连接
kdevtmpfsi挖矿病毒中招与破解_第8张图片

  • 经过两天观察,机器终于恢复了平静。
    kdevtmpfsi挖矿病毒中招与破解_第9张图片

后记

  1. 安装中间件一定不要开放外网端口,如果开放,一定要设置复杂的密码
  2. ssh端口不要开放为22,可以设置一个别的值
  3. 外网服务安全一定是重中之重,我见过因为服务安全导致的各种损失,有的甚至损失了几十万,所以外网服务的安全性必须是所有服务首先要考虑的。

你可能感兴趣的:(安全)