网站被挂马怎么排查清理?完整应急响应流程 核心要点图解,发现挂马先隔离断网,保留现场取证再清理。;重点检查最近修改文件、异常进程和计划任务。;使用grep和find命令快速定位恶意代码。;清理后必须修复漏洞并加固,防止二次入侵。
网站被挂马怎么排查清理?完整应急响应流程 · 核心要点一图读懂(AegisX)

核心要点(TL;DR)

  • 发现挂马先隔离断网,保留现场取证再清理。
  • 重点检查最近修改文件、异常进程和计划任务。
  • 使用grep和find命令快速定位恶意代码。
  • 清理后必须修复漏洞并加固,防止二次入侵。

网站被挂马是运维人员最头疼的安全事件之一,恶意代码不仅影响用户体验,还会导致搜索引擎降权、数据泄露甚至服务器被控。面对突如其来的告警,很多站长容易手忙脚乱,直接删除文件了事,结果漏洞未补,攻击者很快卷土重来。本文提供一套完整的应急响应流程,从隔离取证到清理加固,手把手教你彻底清除恶意代码,并给出可落地的检查清单和命令,帮助你在最短时间内恢复业务。

第一步:隔离与取证,保留现场

发现挂马后,第一反应不应该是删除文件,而是隔离服务器并保留证据。立即断开网络连接(或通过防火墙限制访问),防止恶意代码继续传播或数据外泄。同时备份关键数据:

# 备份网站目录和数据库
 tar -czf /backup/webapp_$(date +%F).tar.gz /var/www/html
mysqldump -u root -p --all-databases > /backup/db_$(date +%F).sql
# 备份系统日志
cp -r /var/log /backup/logs_$(date +%F)

取证内容包括:恶意文件样本、进程列表(ps aux)、网络连接(netstat -antp)、计划任务(crontab -l)、用户账号(cat /etc/passwd)等。如果条件允许,对磁盘做镜像备份,便于后续深度分析。

第二步:定位恶意代码,快速排查

挂马通常表现为页面被插入恶意脚本、跳转代码或隐藏的Webshell。使用以下命令快速定位:

  • 查找最近修改的文件:find /var/www/html -type f -mtime -7 -ls(7天内修改的文件)
  • 搜索恶意特征:grep -r -l "eval(base64_decode" /var/www/html 或 grep -r -l "iframe src="#blocked"/var/www/html
  • 检查异常文件:find /var/www/html -name "*.php" -exec grep -l "eval\|assert\|system\|passthru" {} \;

同时检查系统层面:

  • 进程:ps aux | grep -v grep | grep -E "(wget|curl|python|perl)" 查看可疑进程
  • 网络:netstat -antp | grep ESTABLISHED 查看异常外连
  • 计划任务:crontab -l 和 ls -la /etc/cron*
  • 用户:awk -F: '==0 {print }' /etc/passwd 检查特权用户

第三步:清除恶意代码与后门

确认恶意文件后,不要直接删除,先备份样本再清理。对于Webshell,可使用工具查杀:

# 使用ClamAV扫描
clamscan -r --remove /var/www/html
# 使用rkhunter检查rootkit
rkhunter --check --sk
# 使用Lynis进行系统审计
lynis audit system

手动清理时,注意检查以下位置:

  • 网站根目录及子目录中的异常文件(如随机命名.php)
  • 上传目录中的可执行脚本
  • .htaccess文件是否被篡改
  • 数据库中的恶意代码(如wp_options表被插入script)

清理后,使用grep再次确认无残留:grep -r "eval(\|base64_decode" /var/www/html。

第四步:修复漏洞与安全加固

清除恶意代码只是治标,修复漏洞才能治本。常见入侵原因包括CMS漏洞、弱密码、文件上传漏洞等。务必:

  • 更新所有软件到最新版本(CMS、插件、服务器组件)
  • 修改所有账号密码(SSH、数据库、后台管理员)
  • 删除可疑用户和计划任务
  • 限制文件上传目录的执行权限(如Nginx中location ~* /uploads/.*\.php$ { deny all; })
  • 禁用危险PHP函数:disable_functions = exec,passthru,shell_exec,system

在防护建议方面,可以考虑部署Web应用防火墙(WAF)来拦截恶意请求。例如AegisX提供针对Webshell上传、SQL注入等攻击的实时防护,并能对异常文件变更进行监控,帮助你在挂马初期及时发现。

第五步:监控与复盘,防止二次入侵

清理加固后,需持续监控一段时间,确保无残留后门。建议:

  • 启用文件完整性监控(如AIDE),定期检查关键文件变化
  • 分析访问日志,寻找攻击者留下的痕迹:grep -i "eval\|base64" /var/log/nginx/access.log
  • 设置告警规则,对异常登录、异常进程进行实时通知
  • 编写事件报告,记录入侵时间、漏洞点、处理过程,并更新安全基线

最后,建议定期进行安全扫描和渗透测试,将应急响应流程文档化,并组织演练,提升团队响应速度。

行动建议

网站被挂马后,冷静执行“隔离→取证→排查→清理→加固→监控”六步流程,切忌直接删文件。日常运维中,保持软件更新、使用强密码、部署WAF、定期备份,才能将风险降到最低。立即检查你的服务器,按照上述清单做一次安全体检吧。

常见问题(FAQ)

网站被挂马了,第一步应该做什么?

立即隔离服务器,断开网络连接,防止恶意代码进一步传播或数据泄露。同时备份当前系统状态和日志,为后续取证和分析保留现场。不要急于删除文件,以免破坏证据。

如何快速找到网站中的恶意代码?

使用find命令查找最近修改的文件,结合grep搜索常见恶意特征如eval、base64_decode等。检查网站根目录和上传目录,对比文件完整性,重点关注异常的新增或修改文件。

清理挂马后如何防止再次被黑?

修复导致入侵的漏洞(如更新CMS、插件),修改所有密码,删除可疑账号,加固服务器配置(如禁用危险函数),部署WAF,并定期进行安全扫描和日志监控。

查杀后门时有哪些常用工具?

可以使用ClamAV进行病毒扫描,使用rkhunter检查rootkit,使用Lynis进行系统审计。对于Webshell,可使用专门查杀工具如D盾、河马Webshell查杀,或手动搜索特征代码。

应急响应过程中需要保留哪些证据?

保留系统日志(如/var/log/secure、access_log)、恶意文件样本、进程列表、网络连接状态、计划任务列表、用户账号信息等。最好对磁盘进行镜像备份,以便后续深入分析。