Linux 病毒排查指南 🔍

  • 本指南是一份全面且实用的Linux病毒排查实战手册,从最初的症状识别到最终的清除修复,提供了完整的排查流程和具体的操作命令。无论你是遭遇了挖矿病毒、勒索软件,还是其他类型的恶意程序,都能通过本指南提供的系统化方法快速定位问题并有效解决。

导航目录 📚


一、⚡ 查看引起CPU飙高的进程

📊 使用 top 命令

1
top

特点:按 P 键按 CPU 使用率排序,实时监控系统资源占用情况 ✨

🖥️ 使用 htop(更直观)

1
2
3
# 如果未安装,先安装
apt install htop
htop

优势:彩色界面,更直观的进程树展示,支持鼠标操作 🎯

🔍 使用 ps 命令查看进程详情

1
2
3
4
5
# 按CPU使用率排序
ps aux --sort=-%cpu | head -10

# 按内存使用率排序
ps aux --sort=-%mem | head -10

功能:精确获取资源占用最高的前10个进程 📈


二、👻 检查隐藏进程

🛠️ 安装和使用 unhide 工具

1
2
3
4
5
6
7
8
# 安装 unhide
apt install -y unhide

# 快速扫描隐藏进程
unhide quick

# 全面扫描(更耗时)
unhide brute

特点:专业检测隐藏进程和rootkit工具 🔧

🔎 其他检测隐藏进程的方法

1
2
3
4
# 检查进程与文件系统的差异
ps -ef | awk '{print $2}' | sort -n > /tmp/ps_pids
find /proc -maxdepth 1 -type d -name '[0-9]*' | awk -F'/' '{print $3}' | sort -n > /tmp/proc_pids
diff /tmp/ps_pids /tmp/proc_pids

原理:通过对比进程列表和/proc目录发现隐藏进程 🕵️


三、📁 定位病毒文件

🎯 通过进程ID定位可执行文件

1
2
3
4
5
# 查看进程对应的可执行文件路径
ll /proc/<PID>/exe

# 示例
ll /proc/6113/exe

📝 查看进程详细信息

1
2
3
4
5
# 查看特定进程的详细信息
ps -ef | grep <PID>

# 示例输出
# root 4136 1 98 13:50 ? 00:00:23 /bin/bash /var/tmp/.sys/cpu.sh

📂 查看进程打开的文件

1
2
3
4
5
# 查看进程打开的所有文件
lsof -p <PID>

# 查看进程的工作目录
ll /proc/<PID>/cwd

🔧 检查进程环境变量

1
cat /proc/<PID>/environ | tr '\0' '\n'

功能:查看进程运行时的环境配置,发现异常变量 ⚙️


四、⏰ 检查系统计划任务

👤 查看当前用户的计划任务

1
2
3
4
5
# 查看当前用户计划任务
crontab -l

# 查看root用户计划任务(需要root权限)
crontab -u root -l

📁 检查系统计划任务目录

1
2
3
4
5
6
7
8
9
# 查看系统计划任务目录
ls -la /etc/cron.d/
ls -la /etc/cron.hourly/
ls -la /etc/cron.daily/
ls -la /etc/cron.weekly/
ls -la /etc/cron.monthly/

# 查看 /etc/crontab 文件
cat /etc/crontab

🔍 检查其他常见的持久化位置

1
2
3
4
5
6
7
8
9
10
# 检查系统服务
systemctl list-units --type=service

# 检查开机启动项
ls -la /etc/rc.local
ls -la /etc/init.d/

# 检查profile文件
cat /etc/profile
cat ~/.bashrc

重要性:病毒常在这些位置设置持久化机制 🔄


五、🌐 网络连接检查

🔍 查看异常网络连接

1
2
3
4
5
6
7
8
# 查看所有网络连接
netstat -tunlp

# 使用ss命令(更现代)
ss -tunlp

# 查看可疑的对外连接
netstat -anp | grep ESTABLISHED

📡 检查进程网络连接

1
2
3
4
5
# 查看特定进程的网络连接
lsof -i -P -n | grep <PID>

# 或者使用
netstat -tunlp | grep <PID>

功能:发现异常外连行为,识别C&C服务器通信 🌍


六、📊 系统日志分析

📝 检查系统日志

1
2
3
4
5
6
7
8
9
# 查看系统日志
tail -f /var/log/syslog
tail -f /var/log/messages

# 查看认证日志
tail -f /var/log/auth.log

# 使用journalctl(systemd系统)
journalctl -f

特点:实时监控系统活动,发现异常登录和执行记录 🔎


七、📂 文件系统检查

🔎 查找可疑文件

1
2
3
4
5
6
7
8
9
# 查找近期修改的文件
find / -mtime -7 -type f 2>/dev/null

# 查找隐藏文件和目录
find / -name ".*" -type f 2>/dev/null
find / -name ".*" -type d 2>/dev/null

# 查找可疑的脚本文件
find / -name "*.sh" -o -name "*.pl" -o -name "*.py" 2>/dev/null

技巧:重点关注/tmp、/var/tmp等临时目录 🎯


八、🧹 清除和修复

🚫 终止恶意进程

1
2
3
4
5
# 终止进程
kill -9 <PID>

# 强制终止进程及其子进程
pkill -9 -f "process_name"

🗑️ 删除恶意文件

1
2
3
4
5
6
# 删除病毒文件
rm -f /path/to/malicious/file

# 如果是只读文件,先取消只读属性
chattr -i /path/to/malicious/file
rm -f /path/to/malicious/file

📋 清理计划任务

1
2
3
4
5
# 编辑计划任务并删除恶意条目
crontab -e

# 或者直接删除所有计划任务
crontab -r

九、🛡️ 预防措施

🔒 系统安全加固

1
2
3
4
5
6
7
8
9
# 保持系统更新
apt update && apt upgrade

# 安装安全工具
apt install -y fail2ban rkhunter chkrootkit

# 定期扫描
rkhunter --check
chkrootkit

推荐工具

  • fail2ban 🚫 - 防止暴力破解
  • rkhunter 🔍 - Rootkit检测
  • chkrootkit 🛡️ - 系统完整性检查

📈 监控系统资源

1
2
3
4
# 安装监控工具
apt install -y nmon iotop iftop

# 设置资源监控告警

监控重点:CPU异常、内存泄漏、异常网络流量 📊


💡 总结

通过以上系统的排查步骤,可以有效地发现和处理Linux系统中的病毒和恶意程序 ✨。建议定期进行系统安全检查,并保持系统和安全工具的更新,构建多层次的安全防护体系 🛡️。

最佳实践

  • 定期备份重要数据 💾
  • 实施最小权限原则 🔐
  • 启用系统审计功能 📝
  • 建立安全监控告警 🚨

记住:预防胜于治疗!建立完善的安全防护体系是避免病毒入侵的最佳策略 🎯。