白天在外面浪的好好的,收到客户反馈服务崩了,服务器上去一看两个“xm”进程 cpu300%。。。另一个同事卡的 ssh 都连不上
查到最后发现是 docker 里起的服务,病毒文件在容器 tmp 目录里,宿主机/var/lib/docker/overlay2/容器 id/merged/tmp 也有
病毒是个挖矿程序,跟这个帖子一样 https://www.v2ex.com/t/969255 ,也是 c3pool 的账号
这个病毒挺能潜伏的,有日志文件,发现两个月前就在了,只是 cpu 占用不高没被发现,容器里一堆脚本 networkSync 、kdevtmpfsi 、watchdogs
目前处理方法是重新构建了镜像(怀疑是很久之前某次构建镜像源有问题?因为容器创建都 1 年多了,中途都是拷贝代码到容器重启)
这种人有办法搞他么?脚本备份了,有他 c3pool 的 user 信息,暂时先不放出来,怕被看到,因为不确定毒是否清干净了,咱也不是专业运维
有两个问题希望有遇到过的老哥能解惑下 1 、tmp 目录没映射为啥宿主机也有对应的文件,是 docker 内部能越权还是 docker 内所有文件宿主机都能直接查到? 2 、相同代码、依赖镜像还有其他容器,但是只有这个出了问题,除了镜像源投毒,java 依赖包有可能干这事么
这个病毒挺能潜伏的,有日志文件,发现两个月前就在了,只是 cpu 占用不高没被发现
提醒下各位同志们检查下自己服务器 tmp 或者容器 tmp ,有没有可疑文件( xm 、networkSync 、kdevtmpfsi 、watchdogs 之类的),这货账号下有 100 多个矿机。。。估计都是肉鸡
1
wangsongyan 83 天前 via iPhone 3
成功被标题里的“Go”吸引到了
|
2
DefoliationM 83 天前 via Android
docker 又不是虚拟机,没有虚拟磁盘,文件当然会存在宿主机文件系统上了。
Java 依赖包也有可能投毒,况且 Java 还有 java-agent 这种东西,想干什么更方便。 |
3
gesse 83 天前
“因为容器创建都 1 年多了,中途都是拷贝代码到容器重启”
--- 最少两三个月更新下吧 |
4
yinmin 83 天前 6
推荐一种 docker 容器防止入侵的通用防御方式:把容器配置成不允许访问 internet ,能抵御 99%的漏洞入侵。这是因为:入侵需要下载木马程序到容器里,容器无法访问 internet 能阻止入侵实施。
创建不允许访问 internet 的内部网络模式 (加 --internal 参数): docker network create --driver bridge --internal internal_network 创建容器时指定这个内部网络: docker run --network internal_network ... 更强的方式是容器无网卡,容器间通信使用 unix socket 文件方式,更安全。 |
5
xiaomoxian 83 天前 via Android
源 才是祸首 开源的真实目的
|
7
dallaslu 83 天前 2
这和 Go 有啥关系?直接说“狗日的”会怎么样?
|
8
xsharp 83 天前
挖矿可能只是其中一步,可能还会扫描你的数据,尝试入侵内网服务器,找到更有价值的数据,然后锁你的数据,再然后如果你是大些的公司,可能会给你发勒索邮件,或者上勒索名单。
|
9
laminux29 82 天前 1
兄弟你要更新一下思路了。
1.系统有一千个漏洞,你浪费了无数个周末,修复了 999 个,但只要遗漏一个漏洞,病毒就会沿着这个漏洞攻入。 2.就算你修复了所有漏洞,只要是人,就会犯错,说不定哪天某组件又爆了漏洞,病毒同样也会进来。 所以,系统中毒,是一个常态,你平时就要想好,怎么去处理这个问题。包括不间断不删档的备份,包括晚上周末五一国庆节假日时病毒爆发等等。 做好心理准备,事先想好应对之策。 |
10
BEza5k2j7yew0VN9 82 天前 via Android
@dallaslu go 语言经常被用于挖矿木马
|
13
swulling 82 天前 via iPhone
中了病毒或者木马,非专业人士还是直接重装吧。
你怎么保证自己清除干净呢? |
15
guiling OP @xsharp 最担心的就是这些,目前除了文件没发现有越权到宿主里的行为
@laminux29 确实,不过服务器上没有重要数据,都是代码,实在不行是可以重装系统重新部署的 感谢各位提醒,抱拳 @xiaomoxian @DefoliationM |
16
yinmin 82 天前 via iPhone 1
@falcon05 #6 如果业务容器需要访问 internet 特定的资源,可以建立一个反向代理容器,业务容器只能通过反向代理容器访问 internet 。
如果需要访问的 internet 特定资源都是 https 协议,推荐 sniproxy ,业务容器设置 host 参数将 https 域名指向 sniproxy 容器 ip (让 gpt 写一个 dockerfile ,基于 debian12 的 sniproxy ,别用 hub.docker.com 上的第三方镜像) |
17
yinmin 82 天前 via iPhone
@guiling 基础 golang 镜像不要选基于 alpine ,选基于 debian ( bookworm )
alpine 内置 busybox 支持太多的命令了,debian 很干净,curl 、wget 、ping 、lsof 、netstat 啥都没有。 黑客入侵的第一步往往需要用到 curl 或 wget 命令,基础镜像选基于 debian 或 ubuntu 多一份安全。 |
18
cdlnls 82 天前 via Android 1
不太可能是基础镜像的问题,实现起来很难。dockerfile 里面都是写死了容器启动命令,病毒就算打包在镜像里面,也不会自己启动。
唯一可能就是系统用了有漏洞的框架和库,服务端口暴露在公网,然后恰好被扫描到了。(另外这一堆脚本可能是不同的人植入的) |
19
Jhma 82 天前
检查操作系统对外开放的端口,操作系统防火墙关闭或者限制 IP 访问非公共服务端口,然后外面的硬件防火墙也是同样设置,并限制下面服务器的出站访问即不能上网,这样排查以后还会有病毒产生的话那就是公共服务端口有漏洞的问题了
|
23
guanzhangzhang 82 天前
docker 的容器的 rootfs 是一层 overlay2 的 diff 层,也就是容器产生的文件可以在/var/lib/docker/overlay2/xxx/merged/ 或者 xxx/diff/下看到,因为病毒是容器内下载的,你 touch 一个文件一样的可以看到
|
25
bestcondition 82 天前 via Android
@guiling 那你应该改成,Java 日的挖矿病毒
|
26
azraeljack 82 天前
这标题写的。。。还以为什么 go 依赖被投毒了
|
27
guiling OP @guanzhangzhang 是的,病毒文件就在 merged/tmp,就是不知道哪个进程或者程序把文件拉下来的
|
28
guiling OP |
29
Achophiark 82 天前
告诉你我是怎么解决的,我把主机 cpu 后来只给 4 核心,就好了, 挖矿程序检测到没有可挖掘的 cpu 价值就不启动了。然后记得在主机启动个 server status 监控程序。
|
30
supersu 82 天前 via Android
🌿,我今天也遇到了,病毒的进程名伪装成了 perfctl,也是在 docker 的 tmp 下面,宿主机的 overlay 下面也有,原因是启动了暴露在公网的 selenium 容器,我用的 cloudcone 的便宜 vps,不支持安全组,本机开了 ufw 防火墙,后来查了一下说是 ufw 防火墙和 docker 有冲突不生效,但是我奇怪的是我用 netcat 命令测试我的允许访问的 80 ,443 端口时可以通,我访问 selenium 里面 java 启动的默认的 4444 端口的时候,返回了 no host to route ,也就是不通被防火墙拦截了,好奇是怎么黑进来的~
|
31
guanzhangzhang 81 天前
@guiling #27 这个一般都是容器内下载的,这样实际位置就是 overlay2/xxxx/merged/tmp
|
32
guiling OP @supersu 推测最初应该是某个带毒的依赖带进来的脚本,然后他会下载 sshd 程序,还有个 ssh 脚本的定时任务估计是做保活的,至于端口应该是占用容器映射的端口作为他 ssh 的端口,然后基本就完全控制容器了
|
33
sampeng 81 天前
其实我很好奇。。。是怎么带进来的。一般机器都是不开外网只有一个 80443 在外面还是负载均衡。当然,代码有 bug 那 Go 日的是研发了。。
|
34
jianyang 81 天前
还以为是 GO , 原来是 Go
前段时间我有台机器 也是被挂了 xmr ,我怎么都想不明白真没被挂的、机器很干净、就安装了 1panel nginx 搭建了个网站 并且也没找到木马、后门,就一个 xmr 的挖矿程序和一些配置文件、文件夹名都没改 网站是应该安全的、就只是期间有让机房运维登录了几次处理了几次问题、 也不太可能是 root pass 爆破 怀疑过机房运维、可是没证据、又感觉机房运维不至于做这种事吧 另外清理了挖矿程序、改了 root pass , 后面也没再出现了 |
35
crc8 81 天前
好一个 Go 日的挖矿病毒。牛!
|