
核心要点(TL;DR)
- rootkit常用chkrootkit和rkhunter检测,但需结合手动检查内核模块。
- 计划任务后门常隐藏在/etc/cron*和/var/spool/cron中,需全面检查。
- 异常进程可通过ps、top、lsof综合判断,注意隐藏进程和资源占用。
- 排查后门后必须修复入侵入口并加固系统,否则可能再次被入侵。
服务器被入侵后,攻击者往往会留下隐藏后门以便长期控制。这些后门可能表现为rootkit、恶意计划任务或异常进程,普通管理员难以察觉。本文提供一套实战排查方法,通过具体命令和检查清单,帮助你快速定位并清除后门,恢复系统安全。
一、rootkit检测:从内核模块到隐藏文件
rootkit是攻击者用来隐藏自身存在的工具集,通常通过替换系统命令、加载恶意内核模块或修改内核结构来实现。检测rootkit需要结合工具扫描和手动检查。
1. 使用专业工具扫描
安装并运行chkrootkit和rkhunter,它们能检测常见rootkit特征:
# 安装工具(以Debian/Ubuntu为例)
apt install chkrootkit rkhunter -y
# 运行chkrootkit
chkrootkit
# 运行rkhunter
rkhunter --check --sk注意:工具可能误报,需结合手动分析。
2. 手动检查内核模块
攻击者可能加载恶意内核模块来隐藏进程或文件。使用lsmod列出已加载模块,对比/proc/modules内容,检查是否有陌生模块。重点关注名称可疑或与硬件无关的模块。
lsmod
cat /proc/modules若发现可疑模块,可使用modinfo查看详情,并考虑卸载:rmmod 模块名。
3. 检查隐藏文件和目录
使用find命令查找最近修改的隐藏文件,以及权限异常的文件:
find / -name ".*" -type f -mtime -7 2>/dev/null
find / -perm -4000 -type f 2>/dev/null特别关注/dev、/tmp、/var/tmp等目录下的可执行文件。
二、计划任务排查:揪出定时后门
计划任务(cron、at、systemd timer)是后门持久化的常见方式。攻击者可能添加恶意任务,定期下载或执行恶意脚本。
1. 检查系统级cron
查看以下文件/目录:
/etc/crontab/etc/cron.d//etc/cron.hourly/、/etc/cron.daily/等
使用cat或ls -la检查内容,注意可疑的命令行,如curl、wget下载远程脚本。
2. 检查用户级cron
每个用户的cron任务存储在/var/spool/cron/(CentOS)或/var/spool/cron/crontabs/(Debian)。使用crontab -l查看当前用户任务,并检查所有用户:
for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l; done3. 检查at和systemd timer
使用atq查看at任务,systemctl list-timers查看systemd定时器。检查/etc/systemd/system/下是否有可疑的timer或service文件。
三、异常进程检测:发现隐藏的恶意活动
攻击者运行的恶意进程可能伪装成系统进程,或使用资源挖矿、端口转发等。通过以下方法综合判断。
1. 进程列表分析
使用ps auxf查看进程树,关注:
- 父进程为1但命令行可疑的进程
- CPU或内存占用异常高的进程
- 名称与系统进程相似但路径不同的进程(如
/tmp/sshd)
使用top -c动态查看,按CPU或内存排序。
2. 网络连接检查
使用netstat -antp或ss -antp查看所有网络连接,关注:
- 可疑的监听端口(如非标准端口)
- 与陌生IP建立的连接
- 进程名与端口不匹配的情况
使用lsof -i也可以列出网络连接对应的进程。
3. 隐藏进程检测
对比/proc目录下的PID与ps输出,若发现/proc中有而ps中无的PID,可能存在隐藏进程。可使用unhide工具检测:
apt install unhide -y
unhide proc对于隐藏进程,可通过/proc/PID查看其详细信息,并使用kill -9 PID终止。
四、检查清单与工具汇总
以下清单帮助你系统化排查:
| 检查项 | 命令/工具 | 关注点 |
|---|---|---|
| rootkit扫描 | chkrootkit, rkhunter | 常见rootkit特征 |
| 内核模块 | lsmod, /proc/modules | 陌生模块 |
| 隐藏文件 | find / -name ".*" -mtime -7 | 近期修改的隐藏文件 |
| 系统cron | cat /etc/crontab; ls /etc/cron.* | 可疑命令 |
| 用户cron | crontab -l; /var/spool/cron/ | 所有用户任务 |
| at任务 | atq | 待执行任务 |
| systemd timer | systemctl list-timers | 可疑定时器 |
| 进程列表 | ps auxf, top -c | 异常进程 |
| 网络连接 | netstat -antp, ss -antp | 可疑端口和IP |
| 隐藏进程 | unhide proc | ps未显示的进程 |
五、清除后门与加固建议
发现后门后,按以下步骤处理:
- 隔离服务器:断开网络或限制访问,防止数据泄露。
- 备份证据:对可疑文件、进程信息、网络连接进行截图或导出。
- 终止恶意进程:使用
kill -9终止,并删除对应文件。 - 清除计划任务:删除恶意cron、at任务和systemd timer。
- 卸载恶意内核模块:使用
rmmod卸载。 - 修复入侵入口:更新软件、修改密码、关闭不必要的端口。
- 全面加固:部署WAF、启用入侵检测、定期扫描。例如,AegisX提供实时入侵检测和文件完整性监控,可有效发现隐藏后门。
最后,建议使用debsums(Debian)或rpm -Va(RHEL)校验系统文件完整性,确保没有其他后门。
行动建议:立即按照上述清单排查你的服务器,并建立定期安全检查机制。安全无小事,防患于未然。
常见问题(FAQ)
服务器被入侵后,如何快速判断是否中了rootkit?
首先使用chkrootkit和rkhunter进行扫描,它们能检测常见rootkit特征。同时手动检查内核模块(lsmod)是否有可疑模块,对比/proc/modules与lsmod输出,并检查/dev目录下是否有异常文件。若发现隐藏进程或文件,需进一步分析。
计划任务后门通常藏在哪些位置?
计划任务后门常见于/etc/crontab、/etc/cron.d/、/etc/cron.hourly/等目录,以及用户级任务/var/spool/cron/。攻击者还可能使用at命令或systemd timer。建议使用crontab -l检查当前用户任务,并全局搜索cron相关文件。
如何检测服务器上的异常进程?
使用ps auxf查看进程树,关注异常父进程、高CPU/内存占用、可疑命令行。结合lsof -p PID查看进程打开的文件和网络连接。使用netstat -antp检查异常端口。对于隐藏进程,可对比/proc目录与ps输出,或使用unhide工具检测。
发现后门后应该如何处理?
首先隔离服务器,备份证据。然后终止恶意进程,删除后门文件,清除计划任务和恶意服务。修复入侵入口(如更新软件、修改密码)。最后进行全面安全加固,并监控是否还有残留活动。
如何预防服务器再次被植入后门?
定期更新系统和软件,使用强密码和密钥认证,限制SSH访问来源,部署WAF和入侵检测系统,定期检查计划任务和进程,监控文件完整性。建议使用AegisX等安全平台进行持续监控和防护。