网站被黑了怎么办:取证、清马到恢复上线应急响应步骤 核心要点图解,先隔离断网再取证,直接删文件会破坏入侵证据链;入侵入口优先从Web访问日志与文件修改时间线定位;清马要全量排查,只删发现的webshell大概率残留后门;恢复上线前必须重置全部凭据并补齐漏洞补丁
网站被黑了怎么办:取证、清马到恢复上线应急响应步骤 · 核心要点一图读懂(AegisX)

核心要点(TL;DR)

  • 先隔离断网再取证,直接删文件会破坏入侵证据链
  • 入侵入口优先从Web访问日志与文件修改时间线定位
  • 清马要全量排查,只删发现的webshell大概率残留后门
  • 恢复上线前必须重置全部凭据并补齐漏洞补丁

凌晨收到监控告警,首页被跳转到博彩站,或者服务器 CPU 跑满、搜索引擎提示「该页面可能被篡改」——这是站长最不想面对的场面。慌乱中直接删文件、重启服务器,往往把入侵证据一起抹掉,导致入口找不到、后门清不干净、几天后再次被黑。本文按真实应急响应顺序,给出从隔离取证、定位入口、查杀webshell到恢复上线的可执行步骤与命令,照着做能把损失和 downtime 压到最低。

第一步:隔离止血与证据固定

发现异常后先控制影响面,再谈清理。顺序错了,后面全是无用功。

  1. 切换维护模式:把域名解析指向维护页,或在 Nginx 层返回 503,避免继续对外提供被篡改内容。
  2. 保留现场:云服务器先打快照,物理机用 dd 或 tar 备份关键目录,不要先删文件。
  3. 导出日志:把 Web 访问日志、系统日志、数据库慢日志复制到独立介质,后续分析都在副本上做。
mkdir -p /root/ir_$(date +%F)
cp -a /var/log/nginx /root/ir_$(date +%F)/nginx_logs
cp -a /var/log/secure /root/ir_$(date +%F)/
tar czf /root/ir_$(date +%F)/webroot.tgz /var/www/html

同时记录当前网络连接与进程,便于判断是否有外联木马:

ss -antp > /root/ir_$(date +%F)/netstat.txt
ps auxf > /root/ir_$(date +%F)/ps.txt
crontab -l > /root/ir_$(date +%F)/cron_root.txt

第二步:定位入侵入口

找不到入口,清理就是碰运气。重点看三处:Web 访问日志、文件修改时间线、账号与计划任务。

1. 从访问日志找可疑请求

搜索常见 webshell 路径与危险参数,关注 POST 请求和异常 UA:

grep -Ei "(eval|assert|base64|cmd=|shell|phpmyadmin)" access.log | tail -50
awk '{print }' access.log | sort | uniq -c | sort -rn | head -20

如果日志中出现大量来自同一 IP 的 200 响应 POST 请求,基本可锁定上传或命令执行点。

2. 按时间线筛异常文件

以被篡改时间为基准,前后各放宽一天,列出新增或被修改的脚本文件:

find /var/www -type f \( -name "*.php" -o -name "*.jsp" -o -name "*.aspx" \) -mtime -3 -ls

重点检查上传目录、缓存目录、图片目录中出现的可执行脚本,这类「图片马」是常见藏匿点。

3. 检查持久化后门

crontab -l; ls -l /etc/cron.*
cat /etc/rc.local; systemctl list-unit-files | grep enabled
awk -F: '==0{print }' /etc/passwd
ls -la ~/.ssh/

出现陌生 root 权限账号、异常 SSH 公钥或定时任务,说明攻击者已建立持久化通道,清理范围要扩大到系统层。

第三步:查杀webshell与恶意代码

清马的核心原则是「全量排查、交叉验证、宁可误删」。单靠肉眼找文件不可靠,建议工具加人工复核。

  • 用河马、D盾、ClamAV等工具对 Web 目录全量扫描,输出可疑文件清单。
  • 用 grep 搜危险函数组合,缩小人工复核范围:
grep -rEn "(eval|assert|system|passthru|popen|base64_decode)\s*\(" /var/www --include=*.php
  • 对加密混淆文件(超长单行、大量 \x 转义)逐个打开确认,确认恶意后删除并记录路径。
  • 对比官方源码或备份,恢复被篡改的核心文件,不要试图手工修补被注入的代码。
注意:删除文件前先把可疑文件打包留证,命名带上原路径,便于事后复盘与追责。

第四步:清除系统层后门与提权痕迹

Web 层清完不代表安全。若攻击者拿到 shell,还需检查以下位置:

检查项命令或位置异常特征
计划任务crontab -l、/etc/cron.*陌生下载或反弹脚本
启动项systemctl、rc.local异常服务名
账号与密钥/etc/passwd、~/.ssh新增 UID 0 账号、陌生公钥
进程与外联ps、ss -antp挖矿进程、异常外连 IP

确认存在提权或内核级后门时,最稳妥的做法是备份数据后重装系统,而不是在原系统上「打补丁」。

第五步:加固与恢复上线

上线前按清单逐项确认,缺一项都可能二次被黑:

  1. 重置所有密码、数据库账号、API 密钥与 SSH 密钥。
  2. 修补入侵所用漏洞,升级 CMS、插件与中间件版本。
  3. 关闭不必要的上传执行权限,限制上传目录脚本解析。
  4. 开启 WAF 与文件完整性监控,配置异常登录告警。
  5. 验证站点功能与文件完整性,再解除维护模式。

在防护环节,可借助 AegisX 的 Web 防护与文件监控能力,对上传目录、核心脚本做实时篡改告警,把「事后应急」前移到「事中拦截」。上线后一周内持续观察访问日志与进程变化,确认无异常再收尾。

行动建议

把本文步骤整理成一张应急卡片贴在运维群:先隔离取证、再定位入口、全量清马、重置凭据、加固上线。平时做好异地备份与日志留存,被黑时才有证据可查、有备份可回。真正决定恢复速度的,不是清理那几小时,而是事前有没有备份和监控。

常见问题(FAQ)

网站被黑了第一步应该做什么?

第一步是隔离止血而不是删文件。立即把站点切到维护页或下线解析,保留服务器快照与磁盘镜像,再复制访问日志、系统日志到独立介质。直接删除可疑文件会破坏时间线与证据,导致后续无法定位入侵入口,也无法判断是否还有其他后门。

怎么快速找到网站里的webshell?

按文件修改时间与特征双线排查最快。用find按mtime筛出异常时段新增的php/jsp文件,再用grep搜索eval、assert、base64_decode、system等危险函数组合,配合河马、D盾等查杀工具交叉验证。注意图片目录、上传目录和缓存目录是重灾区,需逐个人工复核。

网站被黑后需要重装服务器吗?

取决于入侵深度。若确认提权到root、存在内核级后门或大量系统文件被改,最稳妥是备份数据后重装系统并重新部署。若仅限Web目录且系统完整性校验通过,可彻底清马、重置凭据并加固后继续使用,但必须持续观察一段时间。

恢复上线前必须做哪些事?

至少完成四件事:重置所有账号密码与密钥、修补入侵所用漏洞、清理计划任务与启动项、验证站点文件完整性。上线后开启WAF与文件监控,持续观察访问日志和异常进程,确认无二次入侵再解除维护模式。

网站被黑会不会影响SEO排名?

会。被植入黑链、赌博页面或挂马会导致搜索引擎降权甚至K站。处理完入侵后应主动提交死链、更新sitemap、在搜索资源平台申请安全检测与恢复抓取,并持续监控索引量变化,通常恢复周期从数天到数周不等。