WordPress 被黑后头 24 小时该做什么

WordPress 遭入侵后的第一天,为之后的一切定下基调。这里是一套能让你获得干净…

Lines of computer code representing the first 24 hours after a WordPress hack

当你发现一个 WordPress 网站被入侵时,很容易想一股脑全做了:删掉恶意文件、改掉所有密码、跑一遍扫描、从备份恢复、给主机商打电话。可如果顺序不对,这些操作反而会毁掉你查找入侵入口所需的证据,让攻击者仍然留在服务器上,并让恢复比本该的更困难。本文介绍我们在确认 WordPress 被入侵后的头 24 小时内所遵循的操作顺序。

第 0 小时:确认是否真的被入侵

在启动应急响应之前,先确认是否真的存在入侵。有些迹象其实有无害的解释。一个新的管理员用户,可能只是某位同事忘了说一声。一个被修改的主题文件,可能是开发者尚未提交的改动。安全插件里的一条警告,也可能是误报。

先检查最有力的信号:文档根目录中本不该存在的文件;Search Console 中与你网站毫无对应的已收录 URL;被修改的 WordPress 核心文件;指向可疑目的地的外连;浏览器对该 URL 发出的警告。只要其中任何一项得到确认,你就遇到了一起安全事件。

第 1 小时:制作一份取证快照

这是大多数人会跳过、事后又最常后悔的一步。在改动任何东西之前,先对当前被入侵的状态做一次完整备份——文件、数据库,全部都要。把它存放到异地、一个不会被触碰的地方。这就是你的取证快照。没有它,你将无法追溯攻击者是如何进来的,而没有这一点,同样的攻击还会重演。

这份快照不是用来恢复的,而是用来分析的。请把它与你那些干净的备份分开保存。

第 2 小时:沟通,但先不要对外公开

告知那些需要知情的人:你主机商的安全团队,尤其是当他们负责共享基础设施时;你的开发者或代理机构;在内部,则是所有拥有管理员访问权限的人。客户和公众可以等到你掌握了事实、并已有清晰的补救措施在进行时再说。在混乱阶段对外公开往往会出错,制造的麻烦比解决的还多。

第 3 小时:控制损害

止血,但不要抹掉证据。如果攻击者明显篡改了页面,或正在投放恶意软件,就暂时让网站下线。大多数主机商都提供维护模式或”即将上线”页面,几秒钟即可启用。这能在不覆盖任何文件的前提下保护访客。

如果只有特定页面被入侵、而网站其余部分仍正常,你可以在主机层面用重定向或临时封锁来绕开它们。除非万不得已,尽量不要直接编辑文件。

第 4 至 6 小时:轮换一切凭据

假定攻击者可能接触过的每一项凭据都已泄露,把它们全部更换:

  • WordPress 管理员密码。
  • 主机控制面板密码。
  • SFTP 和 SSH 凭据。
  • 数据库密码,随后通过主机商的控制台、而非在线上网站上,用新值更新 wp-config.php。
  • 存储在邮件、支付、分析等服务插件中的任何 API 密钥。
  • wp-config.php 中的 WordPress salts 与密钥。

轮换 salts 与密钥会使所有现有的 WordPress 会话失效,从而把你和任何攻击者都”踢出去”。这一步至关重要。否则,捕获了会话 cookie 的攻击者,即便在你更换了所有密码之后,仍可能保留访问权限。

第 6 至 12 小时:找出入侵入口

现在用取证快照来弄清攻击者是如何进来的。查看文档根目录中近期的文件改动。查看主机访问日志,留意对 wp-admin/admin-ajax.php、wp-login.php、xmlrpc.php 或某些插件专用端点的异常 POST 请求。检查插件列表,看是否有任何插件在所安装版本中存在已知漏洞。

在我们此前文章中提到的悉尼案例里,入侵入口几乎可以肯定是一个过时的文件管理器插件,它有着远程代码执行漏洞的长期历史。识别出这一点,正是”治标”与”治本”之间的分水岭。

如果找不到入侵入口,攻击者会在数天、往往是数小时之内卷土重来。

第 12 至 18 小时:系统性地清理

在已知入侵入口、且取证快照已妥善保存的前提下,开始清理。删除每一个恶意文件。将 WordPress 核心文件与官方版本逐一比对,替换掉任何被改动的文件。对主题和插件做同样的检查。审核用户,删除任何陌生账户。检查文章内容,查找被注入的链接或脚本。检查数据库,查找已知的恶意软件选项键以及 wp_options 中的可疑条目。

有些入侵范围足够大,正确的做法是从事件发生前的干净备份中恢复,并只重新应用此后经过核实的内容改动。另一些则足够局限,做”外科手术式”的清理反而更快。

第 18 至 24 小时:把门关上

修补那个让攻击者进来的漏洞。如果是过时的插件,就更新或删除它。如果是弱密码,轮换已经解决了这一点,但要启用双因素认证(2FA),让它无法再次发生。如果是被盗的会话 cookie,你已经轮换了密钥与 salts。如果是一封捕获了管理员登录信息的钓鱼邮件,就对团队进行培训,并审核登录活动,看是否还有其他账户被入侵。

再施加一些本可以阻止此次攻击的额外加固措施:

  • 禁止在上传目录中执行 PHP。
  • 限制对 xmlrpc.php 的访问。
  • 为每个管理员账户启用登录尝试次数限制和 2FA。
  • 改用一款会监测意外位置出现新文件的安全插件。

接下来的 48 小时

网站清理干净之后,工作还没结束。用至少两款信誉良好的工具重新进行一次恶意软件扫描,以便交叉核对。如果网站被施加了人工处罚,就在 Google Search Console 中提交一份重新审核请求。如果有任何数据可能被泄露,要与客户沟通。记录下发生了什么、时间线、入侵入口以及所做的改动。这份文档是供你的团队和日后任何审计使用的。

需要帮忙吗?

如果你的 WordPress 网站目前正被入侵,或你怀疑可能如此,可获得紧急事件响应。请立即联系,我们会实时引导你完成上述步骤:响应越早,损害越小。欢迎与 Defyn 团队联系。

Claire Smith 的头像
Sponsored Loved this story? Defyn turns articles like this into the websites your competitors wish they had. Talk to us → defyn.com.au