在互联网的复杂环境中,运行着CentOS系统的服务器是众多网站和服务的基石,但也因此成为黑客攻击的主要目标,所谓“挂马”,即黑客通过各种手段在服务器中植入恶意程序(如木马、Web Shell、挖矿脚本等),以达到窃取数据、控制服务器、利用服务器资源进行非法活动的目的,及时发现并清除这些“挂马”程序,是保障服务器安全和业务稳定运行的关键,本文将系统性地介绍在CentOS系统中查找“挂马”的多种方法,从初步排查到深度分析,旨在为系统管理员提供一份全面、实用的操作指南。
初步迹象与快速排查
当服务器被“挂马”后,通常会表现出一些异常症状,管理员应保持警惕,对以下迹象进行关注:
- 系统资源异常:通过
top
或htop
命令查看CPU、内存占用率,如果发现某个未知进程持续占用极高资源,特别是CPU,很可能存在挖矿脚本或其他恶意程序。 - 网络流量异常:服务器在无业务高峰期却产生大量出站流量,或对外部可疑IP地址进行频繁连接,这可能是数据窃取或作为DDoS攻击“肉鸡”的迹象。
- 被篡改:网站首页或内部页面被添加博彩、色情等非法链接,这是最直观的“挂马”现象。
- 系统文件被修改:关键系统目录(如
/bin
,/sbin
,/usr/bin
)中的文件最近被修改,这是rootkit的典型特征。 - 出现异常的计划任务:黑客经常利用
crontab
设置定时任务,以实现持久化控制。
手动深入排查方法
当发现初步异常后,需要进行更深入的手动排查来精确定位恶意文件和进程。
进程与端口排查
使用 ps aux
或 ps -ef
命令查看所有进程,重点关注:
- 进程名称是否伪装成系统服务(如
scvhost
,systemd
的变体)。 - 进程的运行用户是否合理。
- 进程的启动命令是否包含可疑URL或Base64编码的字符串。
使用 ss -tulnp
或 netstat -antp
命令检查网络连接:
- 监听是否有非业务需要的特权端口(<1024)。
- 查看是否有对境外可疑IP的长时间连接。
文件系统排查
这是“挂马”查找的核心环节。
- 查找近期修改的文件:利用
find
命令可以快速定位最近被修改的文件,查找Web目录下过去7天内被修改的PHP文件:find /var/www/html -type f -name "*.php" -mtime -7
- 搜索Web Shell特征:Web Shell通常包含一些危险的函数调用,可以使用
grep
递归搜索Web目录,查找如eval
,base64_decode
,shell_exec
,passthru
,system
等关键字。grep -r "eval(" /var/www/html/ | grep -v ".svn"
- 检查系统核心文件:使用
rpm -Va
命令可以校验系统中所有通过RPM包安装的文件,查看是否有被篡改的迹象,输出中的S
表示文件大小改变,M
表示权限或模式改变,5
表示MD5校验和不同。 - 检查隐藏文件和目录:木马文件可能被隐藏,使用
ls -la
检查各个目录,留意 开头的可疑文件或目录。 - 检查定时任务:仔细检查
/etc/crontab
,/etc/cron.*
,/var/spool/cron/
以及crontab -l
的内容,删除任何未经授权的计划任务。
下表小编总结了常用的排查命令及其用途:
排查类别 | 命令示例 | 主要目的 |
---|---|---|
进程检查 | ps aux --sort=-%cpu | 按CPU使用率排序,查找高耗能进程 |
进程检查 | pstree -p | 以树状图显示进程间关系,发现父子进程 |
网络连接 | ss -tulnp | 查看所有监听(t, u)的TCP/UDP端口及对应进程 |
网络连接 | lsof -i :80 | 查看占用80端口的进程 |
文件查找 | find / -name ".*" -type f | 查找所有隐藏文件 |
文件查找 | find / -size +10M | 查找大于10MB的文件(可能存在大马) |
文件完整性 | rpm -qf /bin/ps | 确认文件属于哪个RPM包 |
文件完整性 | rpm -Va | 校验所有已安装RPM包的文件完整性 |
自动化检测工具
手动排查耗时耗力,且容易遗漏,借助专业的安全检测工具可以大幅提高效率和准确性。
- Rootkit检测器:
chkrootkit
:一款轻量级的Rootkit检测脚本,能够检测多种已知的Rootkit。rkhunter
(Rootkit Hunter):功能更为强大,不仅检测Rootkit,还会检查系统命令、网络配置、启动脚本等。
- 恶意软件扫描器:
ClamAV
:开源的跨平台杀毒引擎,可以用于扫描服务器上的病毒、木马、恶意软件。Linux Malware Detect
(LMD):专为Linux设计,专注于Web托管环境的恶意软件检测,与ClamAV集成效果更佳。
- 文件完整性监控:
AIDE
(Advanced Intrusion Detection Environment):通过创建一个数据库来记录系统文件的状态(权限、大小、时间戳、哈希值等),定期运行对比,可以发现任何未经授权的文件变更。
清除与预防
找到“挂马”文件后,处理步骤需谨慎:
- 隔离与备份:首先将服务器断网,防止危害扩大,备份重要数据(注意不要备份恶意文件本身)。
- 清除恶意体:终止恶意进程,删除恶意文件和计划任务。
- 修复漏洞:分析入侵原因,是弱口令、未修复的CMS漏洞(如WordPress, Joomla),还是第三方插件缺陷,必须修复根本漏洞,否则会被再次入侵。
- 恢复与加固:从干净的备份恢复数据,修改所有相关密码(SSH, FTP, 数据库等),并更新系统及所有应用软件。
预防永远胜于治疗,建立完善的防御体系,包括定期更新、使用防火墙(firewalld
)、配置强密码策略、最小化服务安装原则、定期备份和部署文件完整性监控系统,是保障CentOS服务器长治久安的根本。
相关问答FAQs
问题1:我发现了一个可疑的脚本文件,但不确定它是不是木马,我该怎么办?
解答:切勿直接执行或随意删除,可以使用 file
命令查看文件类型,用 strings
命令查看其中的可读字符串,寻找如IP地址、URL、编码特征等线索,可以将文件内容(或文件本身)上传到VirusTotal(www.virustotal.com
)这样的在线多引擎扫描平台进行检测,如果条件允许,在隔离的虚拟机(沙箱)环境中运行并监控其行为,是判断其是否恶意的最准确方法。
问题2:服务器被“挂马”后,是应该彻底清理还是直接重装系统?
解答:这是一个经典的“清理 vs. 重装”问题。最安全、最推荐的做法是重装系统,因为一旦服务器被完全控制,黑客可能留下了多个后门、Rootkit或系统级的篡改,手动清理很难保证100%清除干净,存在“潜伏”的风险,重装系统可以从一个已知的、干净的状态开始,在某些业务不允许长时间停机的特殊情况下,可以选择彻底清理,但前提是:必须100%确定入侵途径和所有恶意文件/进程,并且有可靠的、未被污染的备份,清理后,必须立即进行全面的系统加固,如果对清理没有十足的把握,为了长远安全,牺牲短暂的业务时间进行重装是值得的。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复