guiling

Go 日的挖矿病毒,好好的周末被毁了

  •  
  •   guiling · Aug 31, 2024 · 11348 views
    This topic created in 796 days ago, the information mentioned may be changed or developed.

    白天在外面浪的好好的,收到客户反馈服务崩了,服务器上去一看两个“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 多个矿机。。。估计都是肉鸡

    Supplement 1  ·  Sep 6, 2024
    追加个后续,曝光下挖矿的信息,好像没啥人关注,是不是标题骂的太直白了(狗头
    https://v2ex.com/t/1070677
    35 replies  •  2024-09-02 17:53:34 +08:00
    wa8n
    wa8n
    Aug 31, 2024 via iPhone❤️3
    1
    成功被标题里的“Go”吸引到了
    DefoliationM
    DefoliationM
    Sep 1, 2024 via Android
    2
    docker 又不是虚拟机,没有虚拟磁盘,文件当然会存在宿主机文件系统上了。
    Java 依赖包也有可能投毒,况且 Java 还有 java-agent 这种东西,想干什么更方便。
    gesse
    gesse
    Sep 1, 2024
    3
    “因为容器创建都 1 年多了,中途都是拷贝代码到容器重启”
    ---
    最少两三个月更新下吧
    yinmin
    yinmin
    Sep 1, 2024❤️6
    4
    推荐一种 docker 容器防止入侵的通用防御方式:把容器配置成不允许访问 internet ,能抵御 99%的漏洞入侵。这是因为:入侵需要下载木马程序到容器里,容器无法访问 internet 能阻止入侵实施。

    创建不允许访问 internet 的内部网络模式 (加 --internal 参数):
    docker network create --driver bridge --internal internal_network

    创建容器时指定这个内部网络:
    docker run --network internal_network ...

    更强的方式是容器无网卡,容器间通信使用 unix socket 文件方式,更安全。
    xiaomoxian
    xiaomoxian
    Sep 1, 2024 via Android
    5
    源 才是祸首 开源的真实目的
    GG668v26Fd55CP5W
    GG668v26Fd55CP5W
    Sep 1, 2024
    6
    @yinmin 一点也不通用,只适合不需要访问外网的容器。
    dallaslu
    dallaslu
    Sep 1, 2024❤️2
    7
    这和 Go 有啥关系?直接说“狗日的”会怎么样?
    xsharp
    xsharp
    Sep 1, 2024
    8
    挖矿可能只是其中一步,可能还会扫描你的数据,尝试入侵内网服务器,找到更有价值的数据,然后锁你的数据,再然后如果你是大些的公司,可能会给你发勒索邮件,或者上勒索名单。
    laminux29
    laminux29
    Sep 1, 2024❤️1
    9
    兄弟你要更新一下思路了。

    1.系统有一千个漏洞,你浪费了无数个周末,修复了 999 个,但只要遗漏一个漏洞,病毒就会沿着这个漏洞攻入。

    2.就算你修复了所有漏洞,只要是人,就会犯错,说不定哪天某组件又爆了漏洞,病毒同样也会进来。

    所以,系统中毒,是一个常态,你平时就要想好,怎么去处理这个问题。包括不间断不删档的备份,包括晚上周末五一国庆节假日时病毒爆发等等。

    做好心理准备,事先想好应对之策。
    BEza5k2j7yew0VN9
    BEza5k2j7yew0VN9
    Sep 1, 2024 via Android
    10
    @dallaslu go 语言经常被用于挖矿木马
    levelworm
    levelworm
    Sep 1, 2024 via Android
    11
    @ShikiSuen 原来还有这种用途,得去看看源代码学习 Go 。虽然对黑产毫无兴趣,但是技术上也许挺好玩的。
    guiling
    guiling
    OP
    Sep 1, 2024 via Android
    12
    @dallaslu 没关系,只是不想骂的太直白,实际刀了他的心都有
    swulling
    swulling
    Sep 1, 2024 via iPhone
    13
    中了病毒或者木马,非专业人士还是直接重装吧。

    你怎么保证自己清除干净呢?
    guiling
    guiling
    OP
    Sep 1, 2024 via Android
    14
    @gesse 更新什么呢?如果只是重新构建的话依赖镜像版本都是一样的
    guiling
    guiling
    OP
    Sep 1, 2024 via Android
    15
    @xsharp 最担心的就是这些,目前除了文件没发现有越权到宿主里的行为
    @laminux29 确实,不过服务器上没有重要数据,都是代码,实在不行是可以重装系统重新部署的
    感谢各位提醒,抱拳 @xiaomoxian @DefoliationM
    yinmin
    yinmin
    Sep 1, 2024 via iPhone❤️1
    16
    @falcon05 #6 如果业务容器需要访问 internet 特定的资源,可以建立一个反向代理容器,业务容器只能通过反向代理容器访问 internet 。

    如果需要访问的 internet 特定资源都是 https 协议,推荐 sniproxy ,业务容器设置 host 参数将 https 域名指向 sniproxy 容器 ip (让 gpt 写一个 dockerfile ,基于 debian12 的 sniproxy ,别用 hub.docker.com 上的第三方镜像)
    yinmin
    yinmin
    Sep 1, 2024 via iPhone
    17
    @guiling 基础 golang 镜像不要选基于 alpine ,选基于 debian ( bookworm )

    alpine 内置 busybox 支持太多的命令了,debian 很干净,curl 、wget 、ping 、lsof 、netstat 啥都没有。

    黑客入侵的第一步往往需要用到 curl 或 wget 命令,基础镜像选基于 debian 或 ubuntu 多一份安全。
    cctv6
    cctv6
    Sep 1, 2024 via Android❤️1
    18
    不太可能是基础镜像的问题,实现起来很难。dockerfile 里面都是写死了容器启动命令,病毒就算打包在镜像里面,也不会自己启动。

    唯一可能就是系统用了有漏洞的框架和库,服务端口暴露在公网,然后恰好被扫描到了。(另外这一堆脚本可能是不同的人植入的)
    Jhma
    Jhma
    Sep 1, 2024
    19
    检查操作系统对外开放的端口,操作系统防火墙关闭或者限制 IP 访问非公共服务端口,然后外面的硬件防火墙也是同样设置,并限制下面服务器的出站访问即不能上网,这样排查以后还会有病毒产生的话那就是公共服务端口有漏洞的问题了
    guiling
    guiling
    OP
    Sep 1, 2024 via Android
    20
    @cdlnls 我也倾向于这点,但看了最近代码没有引入新库,可能还得往前再排查排查~
    guiling
    guiling
    OP
    Sep 1, 2024 via Android
    21
    @yinmin Java 项目,跟 go 没关系,抱歉标题有歧义哈哈
    guiling
    guiling
    OP
    Sep 1, 2024 via Android
    22
    @Jhma 有的,安全组只开了要用的端口
    guanzhangzhang
    guanzhangzhang
    Sep 1, 2024
    23
    docker 的容器的 rootfs 是一层 overlay2 的 diff 层,也就是容器产生的文件可以在/var/lib/docker/overlay2/xxx/merged/ 或者 xxx/diff/下看到,因为病毒是容器内下载的,你 touch 一个文件一样的可以看到
    assassing
    assassing
    Sep 1, 2024
    24
    @yinmin #4 通用方法是将服务器外网网卡解梆。如果需要调用外网服务 API ,统一走代理服务器,防护好代理服务器即可。
    bestcondition
    bestcondition
    Sep 1, 2024 via Android
    25
    @guiling 那你应该改成,Java 日的挖矿病毒
    azraeljack
    azraeljack
    Sep 1, 2024
    26
    这标题写的。。。还以为什么 go 依赖被投毒了
    guiling
    guiling
    OP
    Sep 1, 2024 via Android
    27
    @guanzhangzhang 是的,病毒文件就在 merged/tmp,就是不知道哪个进程或者程序把文件拉下来的
    guiling
    guiling
    OP
    Sep 1, 2024 via Android
    28
    @azraeljack
    @assassing 我的锅,发的时候没考虑到会碰瓷到 go ,只是不想骂得那么直白
    Achophiark
    Achophiark
    Sep 1, 2024
    29
    告诉你我是怎么解决的,我把主机 cpu 后来只给 4 核心,就好了, 挖矿程序检测到没有可挖掘的 cpu 价值就不启动了。然后记得在主机启动个 server status 监控程序。
    supersu
    supersu
    Sep 2, 2024 via Android
    30
    🌿,我今天也遇到了,病毒的进程名伪装成了 perfctl,也是在 docker 的 tmp 下面,宿主机的 overlay 下面也有,原因是启动了暴露在公网的 selenium 容器,我用的 cloudcone 的便宜 vps,不支持安全组,本机开了 ufw 防火墙,后来查了一下说是 ufw 防火墙和 docker 有冲突不生效,但是我奇怪的是我用 netcat 命令测试我的允许访问的 80 ,443 端口时可以通,我访问 selenium 里面 java 启动的默认的 4444 端口的时候,返回了 no host to route ,也就是不通被防火墙拦截了,好奇是怎么黑进来的~
    guanzhangzhang
    guanzhangzhang
    Sep 2, 2024
    31
    @guiling #27 这个一般都是容器内下载的,这样实际位置就是 overlay2/xxxx/merged/tmp
    guiling
    guiling
    OP
    Sep 2, 2024
    32
    @supersu 推测最初应该是某个带毒的依赖带进来的脚本,然后他会下载 sshd 程序,还有个 ssh 脚本的定时任务估计是做保活的,至于端口应该是占用容器映射的端口作为他 ssh 的端口,然后基本就完全控制容器了
    sampeng
    sampeng
    Sep 2, 2024
    33
    其实我很好奇。。。是怎么带进来的。一般机器都是不开外网只有一个 80443 在外面还是负载均衡。当然,代码有 bug 那 Go 日的是研发了。。
    jianyang
    jianyang
    Sep 2, 2024
    34
    还以为是 GO , 原来是 Go
    前段时间我有台机器 也是被挂了 xmr ,我怎么都想不明白真没被挂的、机器很干净、就安装了 1panel nginx 搭建了个网站
    并且也没找到木马、后门,就一个 xmr 的挖矿程序和一些配置文件、文件夹名都没改
    网站是应该安全的、就只是期间有让机房运维登录了几次处理了几次问题、 也不太可能是 root pass 爆破
    怀疑过机房运维、可是没证据、又感觉机房运维不至于做这种事吧

    另外清理了挖矿程序、改了 root pass , 后面也没再出现了
    crc8
    crc8
    Sep 2, 2024
    35
    好一个 Go 日的挖矿病毒。牛!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2783 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 61ms · UTC 10:40 · PVG 18:40 · LAX 02:40 · JFK 05:40
    ♥ Do have faith in what you're doing.