第一阶段:应急启动、初步研判与止损 (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)
注意:以下所有操作应在screen或tmux会话中执行,防止网络中断导致操作中断。
A. 进程与资源排查(对抗伪装和隐藏)
验证系统命令完整性:常规
top/ps可能被篡改,需校验。# 使用rpm包管理器验证核心命令是否被修改(适用于CentOS/RHEL) rpm -Vf /bin/ps /bin/top /usr/bin/netstat /usr/bin/ss # 若输出包含 'S.5....T' 等标记,表明文件大小、MD5或修改时间异常,已被篡改[citation:8]
使用替代工具或静态编译工具:如果命令被篡改,立即使用
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
进程树分析(揪出守护进程):使用
pstree查看进程父子关系,挖矿进程通常有一个监控其存活的父进程。pstree -asp # 显示完整的进程树及参数 # 寻找父进程为PID 1 (init/systemd) 或可疑路径下的父进程
检查动态链接库劫持:挖矿木马常通过
/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. 网络连接与持久化排查(找出所有“复活”机制)
定位异常连接:使用
ss或netstat查看与矿池的通信。# 使用busybox避免被过滤 ./busybox ss -tulnp ./busybox netstat -antp # 重点关注ESTABLISHED状态,Foreign Address为外部IP或非常见端口(如3333, 5555, 7777, 1443等)的连接[citation:5][citation:8]
系统化排查所有持久化驻留点:必须逐一检查,清除“复活”机制。
计划任务 (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. 文件与后门排查
时间线文件查找:以恶意文件创建时间为基准,查找同一时间窗内被修改的文件,发现更多后门。
# 假设恶意文件创建于 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
检查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文件,删除SSHauthorized_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.2SSH后门:
/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发现,IP45.33.xx.xx在事发前一周内进行了超2000次SSH登录尝试,并在某次尝试后成功登录。系统未配置账户登录失败锁定策略和双因素认证。
5. 安全加固建议
高优先级(立即执行):
全网修改密码:强制所有服务器和业务系统管理员修改密码,启用密码复杂度策略。
加固SSH服务:禁止root直接登录,使用密钥认证,并限制可登录的用户和IP范围。
收紧安全组:遵从最小化原则,仅开放必要端口,对外关闭Redis、MySQL等非必要互联网暴露端口。
部署EDR/HIDS:确保所有服务器均已安装并启用HSS专业版或更高版本,开启实时防护和病毒查杀功能。
中/低优先级(持续改进):
建立漏洞管理流程:定期对服务器进行漏洞扫描和风险评估,及时修补系统及应用漏洞。
日志集中管理:将服务器日志接入SIEM平台,建立异常行为分析模型。
开展安全意识培训:提升全员安全意识,防范社工攻击。