Linux 挖矿病毒应急响应:从 top 异常到 chattr 恢复的 5 步排查手册

📅 2026/7/13 1:50:45
Linux 挖矿病毒应急响应:从 top 异常到 chattr 恢复的 5 步排查手册
Linux 挖矿病毒应急响应从 top 异常到 chattr 恢复的 5 步排查手册当服务器CPU突然飙升至100%而top命令却显示不出异常进程时有经验的运维工程师会立刻意识到这很可能遭遇了挖矿病毒。不同于普通恶意程序现代挖矿病毒已形成完整的对抗链——从篡改系统命令、建立持久化后门到隐藏进程甚至还会删除关键恢复工具。本文将分享一套经过实战验证的排查框架涵盖从异常识别到彻底清除的全流程。1. 异常识别与紧急处置典型入侵迹象往往表现为CPU使用率异常高但top显示正常服务器响应缓慢甚至服务中断安全组出现非常规外联记录如3333、5555等矿池端口系统命令如ps、netstat输出结果异常紧急止损三步骤网络隔离立即修改安全组规则仅保留SSH等管理端口对可信IP开放# 查看活跃连接 ss -antp | grep -E 3333|5555|7775 # 临时阻断出站连接 iptables -P OUTPUT DROP进程初筛使用未被篡改的命令查找异常进程# 通过proc目录直接检索 ls -l /proc/*/exe | grep deleted # 按CPU排序查看 ps -eo pid,ppid,cmd,%cpu --sort-%cpu | head -n 20备份关键证据# 保存进程树快照 pstree -apn /tmp/process_tree.log # 记录所有打开文件 lsof L1 /tmp/deleted_files.log注意避免直接杀死进程某些变种会触发自毁机制导致取证困难2. 系统命令恢复实战当发现top、ps等命令输出异常时大概率遭遇了动态链接库劫持或二进制替换。以下是恢复方案场景A动态库劫持# 检查预加载库 cat /etc/ld.so.preload # 临时解除劫持 echo /etc/ld.so.preload ldconfig场景B二进制替换以top为例# 验证文件完整性 rpm -Vf /usr/bin/top # 从同版本系统拷贝原始文件 scp roothealthy_host:/usr/bin/top /usr/bin/top.orig # 权限修复 chmod 755 /usr/bin/top.orig mv /usr/bin/top.orig /usr/bin/top对抗chattr缺失的三种解决方案方法适用场景操作步骤同系统文件拷贝有相同环境的健康主机scp rootbackup:/usr/bin/chattr /tmp/ chmod x /tmp/chattr静态编译版本无可用主机但可下载wget https://example.com/chattr.static -O /usr/bin/chattr源码编译开发环境完备gcc -static chattr.c -o chattr3. 深度排查技术进程隐藏对抗技巧# 使用unhide检测隐藏进程 unhide proc # 通过sysdig监控系统调用 sysdig -c topfiles_bytes # 检查内核模块 lsmod | grep -i evil持久化后门排查清单定时任务# 检查所有任务文件 find /etc/cron* -type f -exec ls -la {} \; # 特别关注每小时任务 grep -r wget\|curl /etc/cron.hourly/服务项# 列出所有服务单元 systemctl list-unit-files --stateenabled # 检查可疑service文件 grep -l AliyunDuns /etc/systemd/system/*SSH后门# 检查authorized_keys stat /root/.ssh/authorized_keys # 查看最近登录 lastlog | grep -v Never病毒家族特征速查表家族名特征文件对抗命令Skidmap/lib/systemd/systemd-*rm -f /usr/bin/systemd-cgroupKinsing/tmp/kinsingchattr -ia /etc/ld.so.preloadXMRig/opt/systemd-privatesystemctl disable xmrig4. 彻底清理指南分步清理方案解除文件锁定# 递归解除/var目录锁定 chattr -R -ia /var/spool/cron清理病毒文件# 查找最近修改的可执行文件 find /usr/bin -type f -mtime -7 -exec ls -la {} \; # 批量删除挖矿相关文件 locate -b xmrig | xargs rm -rf用户账户处理# 检查异常用户 awk -F: ($3 1000) {print $1} /etc/passwd # 删除后门用户 userdel -r malicious_user网络层清理# 清除异常路由 ip route show | grep -v via | awk {print $1} | xargs -I {} ip route del {}自动化辅助工具# 使用clamav扫描 freshclam clamscan -r --remove / # 安全狗查杀 safedog -a scan -m 35. 加固与监控关键加固措施SSH加固# 禁用密码登录 echo PasswordAuthentication no /etc/ssh/sshd_config # 限制登录IP echo AllowUsers root192.168.1.* /etc/ssh/sshd_config文件监控# 安装aide并初始化 aideinit # 每日校验 echo 0 3 * * * /usr/sbin/aide --check /etc/cron.d/aide-check实时防护# 安装sysdig监控 csysdig -vcontainers # 设置文件防篡改 chattr i /etc/crontab长效监控方案# 监控CPU异常的脚本 while true; do [ $(top -bn1 | grep Cpu(s) | awk {print $2}) -gt 90 ] \ alert High CPU usage detected! sleep 30 done在最近处理某金融客户案例时发现攻击者不仅替换了chattr还修改了ld.so.preload导致常规检测失效。通过对比正常系统的/proc/self/maps最终定位到恶意库文件。这提醒我们对抗现代挖矿病毒需要保持命令的多样性验证任何单一检测方式都可能被绕过。