挖矿病毒防护和处理指南

云环境中的挖矿病毒会引发业务中断、数据泄露及风险扩散。通过云安全中心或者手动响应处理及防护策略(如重置密码或密钥、IP封锁),可快速止损并预防二次感染。

挖矿病毒告警

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

挖矿告警

重要

如果服务器是首次因为挖矿病毒被关停,可前往安全管控事件自行解除关停锁定状态。

解除锁定后,请及时清理挖矿程序,否则后续如果被检测到仍然存在挖矿,会被再次关停管控,且无法自主解封。

挖矿病毒应急响应与清除

隔离受感染的服务器

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

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

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

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

    说明

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

清除恶意程序

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

云安全中心

前提条件

步骤一:快速止血

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

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

  2. 在左侧导航栏,选择检测响应 > 安全告警。在控制台左上角,选择需防护资产所在的区域:中国全球(不含中国)

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

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

    image

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

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

    image

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

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

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

步骤二:深度查杀

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

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

  2. 在左侧导航栏,选择防护配置 > 主机防护 > 病毒查杀。在控制台左上角,选择需防护资产所在的区域:中国全球(不含中国)

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

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

    image

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

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

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

    image

安全检测

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

无代理检测

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

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

  3. 无代理检测页面主机安全检测面板,单击创建检测任务

  4. 创建检测任务面板,选中要检测的主机,并单击下一步

  5. 选择扫描范围并设置快照/镜像保存时间,单击下一步

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

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

    image

自助手动清理

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

Linux

  1. 阻断恶意网络通信。

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

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

      netstat -antp

      image

    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

        image

        ps -eo pid,ppid,cmd,%cpu --sort=-%cpu | more

        image

      2. 排查异常网络连接行为。

        netstat -antp

        image

      3. 获取可疑进程的文件路径。

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

        md5sum /proc/$PID/exe

        image

      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)的属性。

image

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

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

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