全部产品
Search
文档中心

云服务器 ECS:挖矿病毒防护和处理指南

更新时间:Jul 16, 2026

云环境中的挖矿病毒会恶意抢占CPU等资源,导致实例卡顿、响应缓慢甚至无法远程连接,并引发业务中断、数据泄露及风险扩散。通过云安全中心或者手动响应处理及防护策略(如重置密码或密钥、IP封锁),可快速止损并预防二次感染。

挖矿病毒告警

开启免费安全加固的实例,在被挖矿程序入侵时,云安全中心会发送告警短信或邮件,可前往安全告警, 查看是否存在挖矿程序告警。

安全告警列表中,挖矿程序和木马程序告警均显示为红色紧急等级,可单击对应告警右侧的处理详情进行处置。

说明

挖矿程序会持续占满CPU资源,因此实例卡顿、响应缓慢甚至无法远程连接往往是用户最早察觉的异常信号。如果您在排查无法远程连接问题时发现CPU负载异常偏高,请参见本文进行排查与处理。

重要

如果服务器因挖矿被管控关停,请先前往云资源安全管控事件自行解除关停锁定状态。解除锁定后,请及时清理挖矿程序。

挖矿病毒应急响应与清除

隔离受感染的服务器

通过修改安全组规则,可以限制ECS实例的公网和SSH访问,从而达到隔离的效果。

  1. 登录ECS控制台-安全组 。

  2. 找到目标ECS实例所属的安全组,单击安全组ID进入安全组管理页面。

  3. 在安全组规则页面,找到所有允许公网访问的入方向规则(如允许RDP、SSH等端口的规则),确保将其授权对象修改为仅允许特定IP访问。

    说明

    修改安全组规则会影响所有绑定该安全组的ECS实例,请确保不会误操作影响其他实例。

清除恶意程序

挖矿程序一般很难清理,建议在备份重要数据后,重新初始化云盘,可确保完全清理挖矿程序。

云安全中心

前提条件

步骤一:快速止血

使用云安全中心安全告警功能,可以终止恶意进程的运行,并隔离病毒文件,快速阻断挖矿程序运行。

  1. 登录云安全中心控制台

  2. 在左侧导航栏,选择威胁分析与响应 > 安全告警 。在控制台左上角,选择需防护资产所在的区域。

  3. 单击挖矿告警操作列的详情,查看该告警的详细信息。

    根据云安全中心控制台提供的告警基础信息、事件说明等,找到挖矿程序的位置,以及确认是否存在其他告警或可疑文件。需要自行判断导致挖矿告警的文件是正常业务文件,还是攻击者运行的文件。挖矿程序如果关联了其他告警事件,例如矿池通信行为、访问恶意域名等,建议一并处理。

  4. 单击告警处理。在告警处理对话框,处理方式选中病毒查杀,单击立即处理

    如果需要批量处理相同规则或类型触发的告警,可以选中同时处理相同告警

  5. 在安全告警列表,对挖矿事件产生的其他衍生告警(例如:矿池通信行为),执行阻断操作。

    云安全中心通过生成对应的策略防止服务器访问矿池,确保有充足的时间对安全事件进行处理。也可手动将矿池IP加入安全组禁用。添加安全组的具体操作,请参见添加安全组规则

  6. 在安全告警列表,查看进程行为异常告警,确认是否存在异常的计划任务,并处理对应告警。

步骤二:深度查杀

建议使用云安全中心的病毒查杀功能扫描资产,病毒查杀功能可以扫描清理恶意文件的一些持久化行为,例如:自启动项、定时任务。

  1. 登录云安全中心控制台

  2. 在左侧导航栏,选择防护配置 > 主机防护 > 病毒查杀。在控制台左上角,选择需防护资产所在的区域。

  3. 在病毒查杀页面,单击立即扫描重新扫描。在扫描设置页面,设置扫描模式和扫描范围,然后单击确定

    扫描模式选择快速扫描扫描范围选择被挖矿程序攻击的服务器。

  4. 等扫描完成后,在病毒查杀页面,单击目标告警操作列的处理

  5. 告警处理面板,选择深度查杀,单击下一步

    系统开始处理告警。处理完成后,可以查看处理结果和告警状态。

    修复方式区域选择自动创建快照并修复,设置快照名称快照保存时间,然后单击下一步

安全检测

使用云安全中心无代理检测功能,对云服务器ECS的系统盘和数据盘进行全面的安全检测。该功能仅支持检测,不支持修复;需要根据风险详情页的说明,自行处理风险项。需开通无代理检测按量付费。具体操作,请参见无代理检测使用指南

无代理检测

  1. 登录云安全中心控制台

  2. 在左侧导航栏,选择防护配置 > 主机防护 > 无代理检测。在控制台左上角,选择需防护资产所在的区域。

  3. 无代理检测页面主机安全检测面板,单击立即检测

  4. 立即检测面板,参考如下说明完成配置后,单击确定

    • 扫描范围:建议勾选选中数据盘,数据源越完整,漏洞、告警等检测效果越好。

    • 镜像保存时间

      • 取值范围为1~365,单位:天。

      • 创建镜像会收取相关费用,镜像保存天数越多收费越高。

        重要

        勾选仅保留存在风险的镜像后,系统将在扫描结束后自动删除无风险镜像。

  5. 等待检测任务完成后,查看检测出的漏洞风险、基线检查、安全告警和敏感文件结果。

    建议根据风险详情页的说明及时处理对应风险项。

    无代理检测 > 主机安全检测页面中,概览区域展示风险主机数、扫描主机数、安全告警数和漏洞风险数。漏洞列表支持按漏洞分类(Linux软件漏洞Windows系统漏洞应用漏洞)和严重级别()筛选,并可对漏洞执行加白名单查看操作。

自助手动清理

在进行任何清理操作前,建议先为服务器创建快照进行备份,以防数据丢失或操作失误。

Linux

  1. 阻断恶意网络通信。

    在发现主机存在挖矿行为后,由于完整地处理整个挖矿事件的周期比较长,所以为了及时控制挖矿影响,需要首先阻断挖矿木马的网络通信行为。

    1. 执行以下命令,查看当前系统网络连接状态。

      netstat -antp
      [root@ixxx poc]# netstat -antp
      Active Internet connections (servers and established)
      Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
      tcp        0      0 0.xxx:xxx               0.0.0.0:*               LISTEN      1399/sshd
      tcp        0      0 12xxx:xxx               0.0.0.0:*               LISTEN      1121/master
      tcp        0      0 127.0.0.xxx:xxx         0.0.0.0:*               LISTEN      8847/node
      tcp        0      0 0.0.xxx:xxx             0.0.0.0:*               LISTEN       572/rpcbind
      tcp        0      0 127.xxx:xxx             12x.x.x.xxx:xxx         ESTABLISHED 8988/node
      tcp        0      0 1xx.xxx.xxx:xxx         10x.xxx.xxx:xxx         TIME_WAIT   -
      tcp        0      0 1xx.xxx.xxx:xxx         10x.xxx.xxx:xxx         TIME_WAIT   -
      tcp        0      0 127.xxx:xxx             1xx.xxx.xxx:xxx         ESTABLISHED 8847/node
      tcp        0      0 127.xxx:xxx             127.x.x.x:xxx           ESTABLISHED 8761/sshd: root@not
      tcp        0      0 17x.xxx:xxx             10x.xxx.xxx:xxx         ESTABLISHED 17704/AliHips
      tcp        0      0 17x.xxx:xxx:5           18x.xxx:xxx             ESTABLISHED 16901/logrotate
      tcp        0      0 1xx.xxx:xxx             12x.xxx.xxx:xxx         ESTABLISHED 8761/sshd: root@not
      tcp        0      0 1xx.xxx.xxx:xxx         100.xxx:xxx             TIME_WAIT   -
      tcp        0      0 1xx.xxx:xxx:3           10x.xxx.xxx:xxx         ESTABLISHED 1506/AliYunDun
      tcp        0      0 17x.xxx.xxx:22          14x.xxx.xxx:xxx         ESTABLISHED 8761/sshd: root@not
      tcp6       0      0 :::xxx                  :::*                    LISTEN      1121/master
      tcp6       0      0 :::xxx                  :::*                    LISTEN       572/rpcbind
    2. 将以下命令中c2地址替换为正常业务不会使用的可疑远程地址(Foreign Address),然后执行下述命令添加防火墙规则,阻断服务器与该可疑地址之间的所有网络连接。

      iptables -A INPUT -s c2地址 -j DROP
      iptables -A OUTPUT -d c2地址 -j DROP
  2. 删除挖矿程序及其相关文件

    挖矿程序一般很难清理,建议在备份重要数据后,重新初始化云盘,可确保完全清理挖矿程序。

    • 清除计划任务

      挖矿木马常通过计划任务实现定期下载(更新)并启动挖矿木马,如果仅清理挖矿进程、挖矿木马文件,并不能根治挖矿程序,且会出现挖矿反复的情况。

      排查以下计划任务文件,删除计划任务中的挖矿木马下载和启动任务。

      1. 查看当前用户或指定用户(username)的计划任务。

        crontab -l
        crontab -u username -l
      2. 主机所有计划任务文件。

        /etc/crontab
        /var/spool/cron/
        /etc/anacrontab
        /etc/cron.d/
        /etc/cron.hourly/
        /etc/cron.daily/
        /etc/cron.weekly/
        /etc/cron.monthly/
    • 清除自启动服务项

      1. 执行以下命令,排查系统所有自启动服务。

        systemctl list-unit-files | grep enabled
      2. 找到对应可疑服务的单元文件,排查服务详细信息。

        将命令中*替换为服务名称,<service_unit_name>替换为服务的单元文件名称。

        ls -al /etc/systemd/system/*.service
        ls -al /usr/lib/systemd/system/*.service
        
        # 查看服务详细信息(服务启动的进程文件)
        cat /etc/systemd/system/<service_unit_name>.service
      3. 如果发现恶意的自启动服务项,使用以下命令禁用服务,删除对应单元文件。

        将命令中<service name>替换为服务名称,<service_unit_name>替换为服务的单元文件名称。

        systemctl disable <service name>
        rm /etc/systemd/system/<service_unit_name>.service
        rm /usr/lib/systemd/system/<service_unit_name>.service
      4. 排查以下服务路径是否有自启动服务,然后参考以上步骤进行清理。

        /etc/rc.local
        /etc/inittab
        /etc/rc.d/
        /etc/init.d/
    • 清除SSH公钥

      挖矿木马通常会将黑客SSH公钥写入~/.ssh/authorized_keys文件中,以便黑客可以通过SSH免密登录受害主机,重新植入恶意文件。需要排查~/.ssh/authorized_keys文件,如果发现可疑公钥,立即删除。

    • 清除.so劫持

      通过/etc/ld.so.preload文件设定预加载的.so文件,可以劫持常见的系统命令,例如top/ps/netstat等,达到隐藏挖矿进程的目的。

      1. 执行以下命令,排查预加载的.so文件。

        cat /etc/ld.so.preload
      2. 执行以下命令,删除预加载劫持。

        echo > /etc/ld.so.preload
    • 清除恶意账号

      部分挖矿木马家族会创建新的后门账号,以达到长期控制受害主机的目的。执行以下命令,查看恶意账号,然后手动删除相关账号信息。

      1. 通过日志查看近期是否有创建账号行为。

        cat /var/log/audit/audit.log | grep useradd
        # 或者
        cat /var/log/secure | grep 'new user'
      2. 通过/etc/passwd文件查看是否有可疑账号。

        cut -d: -f1 /etc/passwd
      3. 通过账户的home目录查看可疑账户的创建或最近活跃时间,需特别关注近期创建的home目录。

        stat /home/guest/
    • 清除挖矿木马进程

      挖矿进程通常占用较高的CPU,通过以下命令可以排查可疑的挖矿进程。

      1. 排查占用主机大量CPU的进程。

        top -c
        top – 11:42:28 up 5 days,  1:30,  0 users,  load average: 2.71, 0.84, 0.32
        Tasks: 114 total,   1 running, 110 sleeping,   3 stopped,   0 zombie
        %Cpu(s): 99.4 us,  0.6 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
        KiB Mem :  7732792 total,  5724224 free,   562256 used,  1446312 buff/cache
        KiB Swap:        0 total,        0 free,        0 used.  6911024 avail Mem
        
          PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
        16901 root      20   0  320776   3220   2308 S 395.0  0.0   2:31.13 /root/.config/logrotate
        ps -eo pid,ppid,cmd,%cpu --sort=-%cpu | more
        [root@ixxx poc]# ps -eo pid,ppid,cmd,%cpu --sort=-%cpu | more
          PID  PPID CMD                         %CPU
        16901     1 /root/.config/logrotate      208
         8988  8847 /root/.vscode-server/bin/2d  3.9
      2. 排查异常网络连接行为。

        netstat -antp

        执行该命令后,发现 logrotate 进程(PID 16901)异常建立了 ESTABLISHED 状态的外部网络连接(本地端口 1200),疑似后门行为。完整输出如下:

        [root@iZbp113etj2f09g5ci8fukZ poc]# netstat -antp
        Active Internet connections (servers and established)
        Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
        tcp        0      0 0.xxx.xxx.xx            xxx.xxx.xx              LISTEN      1399/sshd
        tcp        0      0 12x.x.x.x.xx           x.x.xxx                 LISTEN      1121/master
        tcp        0      0 1xx.x.x.x.xx           xxx.xxx.xxx             LISTEN      8847/node
        tcp        0      0 0.xxx.xxx               x.x.x.x                 LISTEN      572/rpcbind
        tcp        0      0 12x.xxx.xxx.xxxxx       127.0.0.1.xxxxx         ESTABLISHED 8988/node
        tcp        0      0 17x.xx.xxx.xxx.xxxxx    xxx.xxx.xxx             TIME_WAIT   -
        tcp        0      0 17x.xx.xxx              xxx.xxx.xxx             TIME_WAIT   -
        tcp        0      0 1xx.x.x.1.xxxxx        xxx.xxx.xxx             ESTABLISHED 8847/node
        tcp        0      0 12x.x.x.x.xx           xxx.xxx.xxx             ESTABLISHED 8761/sshd: root@not
        tcp        0      0 1x.xxx.xxx.xxx.xxxxx    xxx.xxx.xxx.xxx         ESTABLISHED 17704/AliHips
        tcp        0      0 172.xx.xxx.xx:1200      xxx.xxx.x.xxx:xxxx      ESTABLISHED 16901/logrotate
        tcp        0      0 12x.x.x.x.xxxxx        12x.xxx                 ESTABLISHED 8761/sshd: root@not
        tcp        0      0 17x.xx.xxx.xxxxx        xxx.xxx.xx.xxx.xx       TIME_WAIT   -
        tcp        0      0 17x.xx.xxx              xxx.xxx.xxx             ESTABLISHED 1506/AliYunDun
        tcp        0      0 17x.xx.xxx              xxx.xxx.xxx             ESTABLISHED 8761/sshd: root@not
        tcp6       0      0 :::xxx                  :::*                    LISTEN      1121/master
        tcp6       0      0 :::xxx                  :::*                    LISTEN       572/rpcbind
      3. 获取可疑进程的文件路径。

        ls -al /proc/$PID/exe
      4. 计算对应进程文件的MD5信息,在阿里云威胁情报平台查询对应文件信息。

        md5sum /proc/$PID/exe

        查询结果页面显示该文件风险等级为中危,威胁标签为挖矿,并展示文件的 MD5、SHA1、SHA256 等哈希信息、首次发现时间及近期活跃度。

      5. 执行以下命令,终止挖矿进程,并清理挖矿文件。

        kill -9 $PID
        # 删除 ls -al /proc/$PID/exe 获取的进程路径
        rm /path/to/executable

Windows

  1. 在PowerShell中执行以下命令,通过CPU占用情况排查可疑的挖矿进程。

     ps | sort -des cpu
     While(1) {ps | sort -des cpu | select -f 15 | ft -a; sleep 1; cls}
  2. 执行以下命令,查看挖矿进程的磁盘文件、进程启动命令的参数。

    wmic process where processid=xxx get processid,executablepath,commandline,name     //xxx表示进程pid
  3. 结束挖矿进程,清除挖矿文件。

  4. 执行以下命令,检查主机连接的可疑网络端口。

    netstat -ano | findstr xxx            // xxx表示可疑的网络端口
  5. 执行以下命令,检查服务器中hosts文件是否存在挖矿程序的矿池地址。

    type  C:\Windows\System32\drivers\etc\hosts
  6. 执行以下命令,排查是否存在挖矿程序设定的计划任务。

    schtasks /query

防护建议

清理完成后,建议参考以下建议,以防再次被入侵:

  • 重置密码和密钥:实例的密码或密钥可能已经泄露,建议及时更换所有用户密码和SSH密钥,防止再次入侵。如果你使用密码作为登录凭证,请避免使用弱口令。

  • 修复漏洞:修复已知漏洞,定期为操作系统和应用软件(如 Redis、Jenkins 等)更新安全补丁。

  • 数据备份:对重要数据和系统配置进行定期快照备份,以便在发生意外时能够快速恢复 。

相关文档

防御挖矿程序最佳实践:阿里云防火墙IPS模块通过漏洞情报和虚拟补丁方式可以跟踪和防御大部分挖矿蠕虫的网络漏洞利用行为,阻断病毒传播。

常见问题

删除文件时提示“Operation not permitted”,无法删除怎么办?

部分挖矿病毒在写入计划任务、自启动等持久化文件后,为防止对应文件被删除,会为对应文件设置一个不可更改immutable)的属性。

[root@iZxxx poc]# rm /etc/cron.hourly/logrotate
rm: remove regular file '/etc/cron.hourly/logrotate'? y
rm: cannot remove '/etc/cron.hourly/logrotate': Operation not permitted
[root@iZxxx poc]# echo "" > /etc/cron.hourly/logrotate
bash: /etc/cron.hourly/logrotate: Permission denied
[root@iZxxx poc]# lsattr /etc/cron.hourly/logrotate
----i---------e-- /etc/cron.hourly/logrotate

对该文件执行 chattr -i [文件名] 命令解除该属性,然后再进行删除。

为什么删除了挖矿程序,但它很快又出现了?

这通常是因为只删除了病毒主程序,而没有清除其设置的持久化后门(如计划任务或自启动服务)。病毒会通过这些后门重新下载并运行,导致反复出现。请务必按照清除恶意程序步骤,彻底排查所有持久化方式。