网站被黑之后:发现、清理、加固与重新收录
一、被黑之后的第一个问题:你怎么知道的
先划边界:安全基线讲的是事前防线怎么配,收录诊断讲的是收录异常的常规排查,本篇只讲事后处置——从发现异常那一刻起,到恢复收录、复盘结束的完整流程与时间线。防线配得再好也只是降低概率,不等于不会被黑,所以事后流程每个有站点的企业都需要知道。
发现的信号通常有四个,多数 B2B 站是被前两种惊动的。
| 发现信号 | 具体表现 | 常见发现渠道 |
|---|---|---|
| 搜索结果出现垃圾页面 | 搜品牌名出现赌博、药品、仿牌类结果 | 自己搜索品牌词、客户告知 |
| Search Console 安全通告 | 收到”检测到黑客内容”类通知 | Search Console 邮件与站内消息 |
| 客户反馈跳转 | 从搜索引擎进入站点被跳到陌生页面 | 销售与老客户的投诉 |
| 流量与日志异常 | 深夜流量激增、陌生爬虫、后台陌生登录 | 主机面板与访问日志 |
这里有一个多数人低估的事实:当老板自己刷到垃圾页面时,污染内容通常已经被收录数周了。企业站日常访客少,跳转劫持往往先被搜索引擎抓取收录,再被偶然看到。所以比起”尽早发现”这句话,更实际的做法是每月固定搜一次自己的品牌词看结果——这一步可以并进月度维护清单,成本一分钟。
二、第一小时的三件事:先取证,再清理
发现被黑之后的第一小时,做的不是清理,是三件准备工作。顺序不能反。
| 动作 | 具体做法 | 目的 |
|---|---|---|
| 快照取证 | 对站点文件与数据库做完整打包留存,记录服务器当前时间 | 保留入侵证据,防止清理过程毁掉线索 |
| 改全部密码 | 主机、数据库、后台、FTP、SSH、域名、邮箱账号全部换成新密码 | 切断攻击者现有的全部入口 |
| 判断感染范围 | 确认是单站还是同主机多站,是否波及邮箱与域名账号 | 决定处置规模,判断要不要通知相关方 |
为什么取证在清理之前?两个原因。第一,入侵路径的证据(哪些文件被改、什么时候改的、从哪个账号登录)会随着你删文件、覆盖目录而消失,之后再想定位入侵原因就只剩猜测。第二,直接动文件可能惊动后门脚本,部分后门检测到被清除时会触发数据破坏或把感染扩散到同主机其它站点。取证包要放到站点之外的本地或网盘,不要留在被感染的服务器上。
改密码要一次改全,漏掉一个入口,清理就白做。常见漏项是 FTP 和数据库账号——很多人只改了后台密码。判断感染范围时注意同主机多站点的情况:一台服务器上挂着官网、测试站、旧站,攻击者往往从最弱的那个进来,只清理官网不清理同主机的其它站点,过几天还会再被挂上。
三、清理三层:文件、数据库、后门
清理按三层推进,每层的检查对象和方法不同。
| 层级 | 检查对象 | 操作方法 |
|---|---|---|
| 文件层 | 程序核心文件与近期被改动的文件 | 用官方安装包比对核心文件,按修改时间倒序排查近期变动 |
| 数据库层 | 注入的脚本与可疑账号 | 搜索文章内容中的脚本标签,核对管理员账号列表 |
| 后门层 | webshell 与异常计划任务 | 扫描可执行文件的修改时间与代码特征,检查定时任务 |
后门最常藏的位置有规律可循:
| 藏身位置 | 识别特征 | 处理方式 |
|---|---|---|
| 上传目录 | 目录里出现 .php 文件(正常只有图片与文档) | 删除并收紧目录执行权限 |
| 主题与插件目录 | 核心文件末尾被追加长串代码 | 用官方包比对后替换 |
| 站点根目录 | 命名随机的 php 文件,修改时间与入侵窗口吻合 | 确认后删除 |
| 缓存与配置文件 | 内容出现 base64 长串与 eval 结构 | 清理后全站搜索同类特征 |
三层里后门层最容易被漏。只删了垃圾页面和注入内容,留下一个后门文件,几天后页面重新长出来——这是”清理完又复发”的最常见原因,也是很多人以为”被黑清不掉”的真实原因。基本功是全站按修改时间排序,把与入侵时间窗口吻合的文件逐个看一遍;拿不准的文件用官方包比对。同层原则还有一条:清理完成后复扫一次,确认三层都没有残留,再进入下一步。
四、从备份恢复:条件与陷阱
如果备份体系健全,恢复往往比逐层清理更快。但恢复有三个前提条件,缺一个就走不通。
| 条件 | 判定方法 | 不满足时的处理 |
|---|---|---|
| 恢复点早于感染时间 | 按日志与文件修改时间确定感染窗口 | 只能走人工逐层清理 |
| 备份完整可用 | 当场校验完整性,最好演练过 | 混合方案:恢复文件部分,人工清理数据库 |
| 恢复后立即加固 | 组件升级、改密、补漏洞一次做完 | 否则二次被黑只是时间问题 |
最大的陷阱是恢复点晚于感染时间:用一份已经带后门的备份恢复站点,等于把入侵者请回来。判断感染时间的线索包括可疑文件的修改时间、访问日志里第一次出现陌生 IP 的后台登录、垃圾页面首次被收录的时间——这也是第二小时取证那一包数据的价值所在。另一个常见错误是恢复完不改密码:密码在数据库里明文或弱哈希存储的情况并不少见,攻击者手里的旧密码可能依然有效。
五、加固五项与入侵路径复盘
清理或恢复之后,必须完成五项加固,否则重复被黑是大概率事件。
| 加固项 | 具体做法 | 优先级 |
|---|---|---|
| 更新全部组件 | 程序核心、主题、插件升到最新版本 | 最高 |
| 改默认路径与账号 | 修改默认后台地址,删除或改名默认管理员账号 | 高 |
| 最小化安全插件 | 安装一个主力安全插件,开启文件改动监控 | 高 |
| 限制后台登录 | 登录限速、双因素验证、必要时按地区限制 | 中 |
| 文件权限收紧 | 配置文件与上传目录按最小权限原则设置 | 中 |
复盘回答四个问题,写成一页文档存档:入侵从哪个口子进来(过期的插件、被撞库的弱密码、同主机其它站点沦陷);为什么之前没被发现(缺了哪个监控);从发现到清理完成用了多久;备份与演练在这次事故里有没有起作用。这份文档的价值在下一次——多数站点一生会被黑不止一次,同一类口子被打通第二次就是管理问题了。监控告警缺什么补什么,缺口要与月度维护的检查项对齐。
六、向 Google 申诉与垃圾页面的收敛
申诉的时机纪律只有一条:清理完成后再提交,中途提交会拉长周期——Google 复核时如果再发现恶意内容,等待会重置,比多等几天再提交慢得多。
| 步骤 | 动作 | 说明 |
|---|---|---|
| 1 确认清理完成 | 三层清理完毕且复扫无残留 | 含 Search Console 示例 URL 逐一核对 |
| 2 修复站点本身 | 恶意内容移除与漏洞修补 | 官方要求复核时站点不再存在安全问题 |
| 3 提交复核 | 在 Search Console 的安全问题部分提交 | 附上已采取的措施与时间线说明 |
| 4 等待复核 | 通过周期通常数天到两周 | 中途不要重复提交 |
被注入的垃圾页面如果已经被收录,处理方式有讲究:返回 410(永久删除)比返回 404 更利于收敛——Google 对 410 的移除处理明显更快;同时用 Search Console 的移除工具申请紧急隐藏最要紧的那几条垃圾结果。之后每周做一次进度检查:用 site 指令与品牌词搜索核对残留数量,收录从几百条降到个位数通常需要两到四周,期间不要因为进度慢而反复提交复核。
七、损伤评估:哪些能回来,哪些回不来
把时间线交给老板之前,先明确各阶段的典型周期与及格标准,避免”怎么还没恢复”的反复追问。
| 阶段 | 典型周期 | 及格标准 |
|---|---|---|
| 清理与加固 | 1–3 天 | 复扫无恶意文件与脚本残留 |
| 重新收录与安全标记解除 | 1–4 周 | 安全通告消失,垃圾搜索结果基本清空 |
| 排名恢复 | 1–2 个月 | 核心词回到事发前的位置附近 |
损伤的可逆性分两种情况。只被挂了垃圾内容、没有收到人为处罚通告的站,清理后排名通常能回来;被明确判定”人为垃圾行为”的站(比如植入的隐藏文字与跳转被算法识别并处罚),恢复周期更长,部分词可能回不到原位。还有一类损伤不可逆:被黑期间客户从邮件或搜索里点进过垃圾页面,这部分流失的信任不会随着收录恢复而回来。这也是第一节强调发现信号的原因——发现每晚一周,污染面和客户流失都多一层。
FAQ 常见问题
写在最后
被黑处置拼的不是技术多强,而是顺序对不对、清单全不全:第一小时先取证再清理,清理按文件、数据库、后门三层走完,恢复点必须早于感染时间,复核等清理完再提交。每一步都有明确的动作和时机,没有需要临场发挥的地方。
落地建议三件事:把”每月搜品牌词”写进例行检查,把本篇的三层清理步骤存成内部文档,把恢复演练的计时记录留好——事故夜你手里有什么,取决于平时留了什么。团队没有技术人手、或希望按站点现状配好这套监控与备份流程的,可以联系我们。记住一句判断就够了:被黑不可怕,没流程的被黑才可怕。
