企业挖矿木马应急响应实战手册:6小时完成止损、溯源与加固

第一阶段:应急启动、初步研判与止损 (Initial Triage & Containment)

1. 第一响应原则:为什么不能直接重启或Kill进程?

在获取关键证据前,严禁直接重启服务器或强制杀死(kill -9)可疑进程。原因有三:

  • 证据灭失:重启或杀死进程会清除内存中的关键信息(如进程网络连接、命令行参数、关联的隐藏进程等),这些是溯源和分析入侵途径的唯一机会。

  • 无法根治:成熟的挖矿木马具备"复活"机制(如守护进程、计划任务)。仅杀死进程,它会在一分钟内被重新拉起,且会打草惊蛇,可能触发攻击者的自我保护机制。

  • 错过分析窗口:我们需要先"冻结"现场进行诊断,而非直接"销毁"现场。

2. 快速确认与隔离:两步关键"止血"操作

遵循"先断网,再排查"的黄金法则,在控制传播的同时保全证据。

  • 云平台侧(网络层隔离) :登录云厂商(如华为云、阿里云)的控制台,找到该服务器绑定的安全组 ,立即新增一条出方向 规则,将其优先级设为最高,拒绝所有流量Destination: 0.0.0.0/0, Action: Deny)。这一操作瞬间切断服务器与矿池及C2服务器的通信,且不改变系统内部状态。同时,在安全组入方向,仅放行用于远程运维的特定IP地址(堡垒机IP)对SSH端口的访问,阻断攻击者可能的二次登录。

  • 主机侧(进程级阻断):若云平台操作延迟,可立即在主机上通过iptables阻断通信。但考虑到命令可能被篡改,优先推荐云平台操作。若必须使用主机命令:

    复制代码
    # 阻断与已识别恶意IP的通信(假设矿池IP为 209.38.180.198)
    iptables -A OUTPUT -d 209.38.180.198 -j DROP
    iptables -A INPUT -s 209.38.180.198 -j DROP
    # 考虑将除运维IP外的所有出站流量暂时阻断
    # iptables -A OUTPUT -d 可信运维网段 -j ACCEPT
    # iptables -A OUTPUT -j DROP

3. 告警验证:判断真实威胁还是误报

处理云安全中心(HSS)的"挖矿软件"告警时,不盲目信任,但也不能轻易忽略。

  • 查看告警详情 :在HSS控制台点击告警,查看进程路径、命令行参数、父进程、首次/最近检测时间 。挖矿程序通常位于/tmp/var/tmp或伪装目录下,命令行常包含矿池地址或stratum+tcp://协议。

  • 业务关联性确认 :确认该路径和进程是否属于业务应用(如Java、Nginx)。如果路径陌生,或进程名伪装成系统进程(如[kworker]sshd)但位于非标准路径,则可断定为恶意。

  • 威胁情报验证:提取告警中的IP或域名(如矿池地址),通过微步在线、VirusTotal等平台查询,若被标记为恶意,则确凿无疑。


第二阶段:系统性信息收集与深度排查 (Investigation)

注意 :以下所有操作应在screentmux会话中执行,防止网络中断导致操作中断。

A. 进程与资源排查(对抗伪装和隐藏)

  1. 验证系统命令完整性 :常规top/ps可能被篡改,需校验。

    复制代码
    # 使用rpm包管理器验证核心命令是否被修改(适用于CentOS/RHEL)
    rpm -Vf /bin/ps /bin/top /usr/bin/netstat /usr/bin/ss
    # 若输出包含 'S.5....T' 等标记,表明文件大小、MD5或修改时间异常,已被篡改[citation:8]
  2. 使用替代工具或静态编译工具 :如果命令被篡改,立即使用busybox工具。

    复制代码
    cd /root
    wget https://www.busybox.net/downloads/binaries/1.35.0-x86_64-linux-musl/busybox
    chmod +x busybox
    # 使用busybox提供的命令,它们不依赖被篡改的系统库
    ./busybox ps -ef
    ./busybox top
  3. 进程树分析(揪出守护进程) :使用pstree查看进程父子关系,挖矿进程通常有一个监控其存活的父进程。

    复制代码
    pstree -asp # 显示完整的进程树及参数
    # 寻找父进程为PID 1 (init/systemd) 或可疑路径下的父进程
  4. 检查动态链接库劫持 :挖矿木马常通过/etc/ld.so.preload加载恶意so文件来隐藏自身。

    复制代码
    cat /etc/ld.so.preload
    # 该文件默认应为空。若存在恶意.so文件路径,则确认被劫持
    ls -l /etc/ld.so.preload
    # 使用lsattr检查是否被附加了不可更改属性(+i)
    lsattr /etc/ld.so.preload

B. 网络连接与持久化排查(找出所有"复活"机制)

  1. 定位异常连接 :使用ssnetstat查看与矿池的通信。

    复制代码
    # 使用busybox避免被过滤
    ./busybox ss -tulnp
    ./busybox netstat -antp
    # 重点关注ESTABLISHED状态,Foreign Address为外部IP或非常见端口(如3333, 5555, 7777, 1443等)的连接[citation:5][citation:8]
  2. 系统化排查所有持久化驻留点:必须逐一检查,清除"复活"机制。

    • 计划任务 (Cron):攻击者最爱用的持久化手段。

      复制代码
      crontab -l          # 当前用户任务
      crontab -u root -l  # root用户任务
      ls -la /var/spool/cron/  # 所有用户的任务文件
      cat /etc/crontab    # 系统级任务
      ls -la /etc/cron.d/ /etc/cron.hourly/ /etc/cron.daily/ /etc/cron.weekly/ /etc/cron.monthly/
      # 注意:/etc/cron.d/下的隐藏文件(如 .vuhcwazfbpmgakhhoc)极易被忽略,需使用ls -la查看[citation:4]
    • 系统服务 (Systemd/Init.d)

      复制代码
      systemctl list-unit-files --state=enabled  # 查看所有启用的服务
      # 检查服务文件内容,查找可疑的ExecStart路径
      grep -r "可疑进程名或路径" /etc/systemd/system/ /usr/lib/systemd/system/
    • 本地启动脚本

      复制代码
      cat /etc/rc.local
      ls -la /etc/rc.d/
    • SSH后门:检查是否被写入免密登录公钥。

      复制代码
      cat /root/.ssh/authorized_keys
      # 发现非管理员添加的公钥,意味着攻击者可随时免密登录,必须立即删除[citation:3][citation:5]
    • 命令别名劫持

      复制代码
      alias
      cat ~/.bashrc ~/.bash_profile
      # 查找是否将常见的命令(如 ls, ps)别名指向了恶意脚本[citation:1]

C. 文件与后门排查

  1. 时间线文件查找:以恶意文件创建时间为基准,查找同一时间窗内被修改的文件,发现更多后门。

    复制代码
    # 假设恶意文件创建于 2026-06-23 14:00:00
    find / -newerct '2026-06-23 13:50:00' ! -newerct '2026-06-23 14:10:00' -type f 2>/dev/null
  2. 检查SUID与隐藏用户

    复制代码
    # 查找所有SUID文件,重点关注非系统目录下的文件[citation:1]
    find / -perm -4000 -type f 2>/dev/null
    # 检查是否有UID为0的隐藏账户
    awk -F: '$3==0 {print $1}' /etc/passwd

第三阶段:彻底根除与系统恢复 (Eradication & Recovery)

1. 正确的清除顺序:先暂停进程,再删除文件,最后清理持久化。这样做是为了防止进程在文件被删前再次写入或创建子进程。

复制代码
# 1. 挂起而非杀死进程,以便分析关联
kill -STOP <恶意进程PID>
# 2. 根据父子关系,先杀子进程,再杀父进程
kill -9 <子进程PID>
kill -9 <父进程PID>
# 3. 最后删除文件
rm -f /path/to/malware

2. 处理文件保护属性 :如果文件被chattr +i锁定,先解锁。

复制代码
# 使用busybox或从干净系统拷贝的chattr命令
chattr -ia /path/to/malware
rm -f /path/to/malware

3. 清理清单与恢复

  • 进程 :通过kill -9结束所有恶意进程及守护进程。

  • 文件:删除所有在排查阶段确认的恶意可执行文件、配置文件、so库文件。

  • 持久化 :清空所有异常的cron任务,禁用并删除恶意systemd服务,清空/etc/ld.so.preload文件,删除SSH authorized_keys中的异常公钥。

  • 修复系统命令 :如果ps, top, netstat等命令被篡改,最佳恢复方法是从一个同版本、干净的系统镜像中拷贝对应二进制文件进行覆盖,并重置其权限。操作前务必检查新文件是否也被锁定了。

  • 重置凭证(关键) :清除后,必须立即修改所有用户(尤其是root)密码为强密码,并重新生成或更换所有SSH密钥对。因为在之前的攻防中,攻击者可能已经获取了hash或密钥。


第四阶段:日志分析与溯源 (Root Cause Analysis)

  • 定位入侵源头 :重点分析安全日志/var/log/secure(CentOS)或/var/log/auth.log(Ubuntu)。

    复制代码
    # 查看SSH登录失败记录,寻找暴力破解痕迹
    grep "Failed password" /var/log/secure
    # 查看SSH登录成功记录,特别是非工作时间、非可信IP的登录
    grep "Accepted password" /var/log/secure
    grep "Accepted publickey" /var/log/secure
    # 结合文件创建时间和恶意进程启动时间,锁定入侵窗口[citation:1][citation:4]
  • 时间线还原 :以/var/log/secure中的首次可疑登录成功时间,以及find命令查到的恶意文件创建时间为锚点,拼凑出"初始入侵 -> 建立后门(下载木马)-> 安装持久化 -> 启动挖矿"的完整攻击链。


第五阶段:报告输出与长效加固建议

事件应急响应报告

1. 事件概述

  • 报告时间:2026-06-24

  • 事件编号:IR-2026-0623-001

  • 受影响系统:生产环境核心业务Linux服务器 (IP: 10.0.1.100)

  • 事件描述:服务器CPU持续90%以上,经HSS告警及人工确认,确认遭受挖矿木马入侵。

2. 关键发现(IOC)

  • 恶意进程 :伪装成[kworker/0:1]的进程(PID 动态),实际文件路径 /tmp/.X11-unix/.rsync

  • 文件MD5(挖矿程序) e4d909c290d0fb1ca068ffaddf22cbd0(后门so) 098f6bcd4621d373cade4e832627b4f6

  • 矿池/C2地址

    • IP: 209.38.180.198 (端口 443)

    • 域名: evil-pool.example.com

  • 持久化路径

    • 计划任务:/etc/cron.d/.systemd-logrotate

    • 系统服务:/etc/systemd/system/auto-update.service

    • 动态库劫持:/etc/ld.so.preload -> /usr/lib/libcrypt.so.2

    • SSH后门:/root/.ssh/authorized_keys 中发现了未知公钥。

3. 处置过程

  • 2026-06-23 14:30:收到HSS告警,启动应急。

  • 14:32:通过云平台安全组隔离服务器网络,仅保留堡垒机访问权限。

  • 14:45 - 16:00:使用Busybox进行系统性排查,发现上述IOC。

  • 16:05:按顺序挂起并清除恶意进程,删除恶意文件。

  • 16:30:清理所有持久化项,修复被篡改系统命令,重置所有密码。

  • 17:00:重启系统,观察30分钟,CPU恢复正常,无异常进程复活。

4. 根因分析

攻击者极有可能通过SSH暴力破解获取了低权限账户,后利用本地提权漏洞(或直接获取root密码)获取root权限。通过分析/var/log/secure发现,IP 45.33.xx.xx 在事发前一周内进行了超2000次SSH登录尝试,并在某次尝试后成功登录。系统未配置账户登录失败锁定策略和双因素认证。

5. 安全加固建议

  • 高优先级(立即执行)

    • 全网修改密码:强制所有服务器和业务系统管理员修改密码,启用密码复杂度策略。

    • 加固SSH服务:禁止root直接登录,使用密钥认证,并限制可登录的用户和IP范围。

    • 收紧安全组:遵从最小化原则,仅开放必要端口,对外关闭Redis、MySQL等非必要互联网暴露端口。

    • 部署EDR/HIDS:确保所有服务器均已安装并启用HSS专业版或更高版本,开启实时防护和病毒查杀功能。

  • 中/低优先级(持续改进)

    • 建立漏洞管理流程:定期对服务器进行漏洞扫描和风险评估,及时修补系统及应用漏洞。

    • 日志集中管理:将服务器日志接入SIEM平台,建立异常行为分析模型。

    • 开展安全意识培训:提升全员安全意识,防范社工攻击。