如何检查网站有没有恶意软件?
能看到的症状,在 Google 安全浏览和 Search Console 里的检查,从外部扫描能发现什么,先做什么,以及什么时候该找开发者。
网站恶意软件,是有人加进你网站文件或数据库里的代码。它不会像邮件附件那样攻击你自己的电脑。它针对的是你的访问者:把他们带到诈骗页面,弹出虚假警告,截取他们在表单里输入的内容,或者利用你的网站发送垃圾邮件。
检查大约要十五分钟。下面是四个步骤,从最简单的开始,再加上发现问题后的行动方案。
不用工具就能发现的症状
打开任何工具之前,先想一想,是否发生过下面这些情况:
- 有客户说,打开你的网站后被带到了抽奖页面、假网店,或者一条声称他们手机中毒的消息,
- 在 Google 搜索
site:yourdomain.com,出现了你们企业里没人创建过的页面,比如药品广告或日文文字, - 浏览器在放人进入之前显示红色警告,
- 主机商暂停了账户,或来信说你有恶意文件,
- 以你的域名发出的邮件开始进入垃圾箱,
- WordPress 后台里出现了一个你不认识的管理员。
没有症状,不等于网站是干净的。恶意代码常常只对部分访问者现形,比如只在手机上,只对从 Google 进来的人。已登录的管理员通常什么也看不到。关于这些迹象,网站被入侵的迹象里有更多内容。
第一步:Google 安全浏览
打开 Google 安全浏览网站状态页面,输入你的网址。Google 会告诉你它是否认为该网站不安全。Chrome 和其他几款浏览器使用同一份名单,所以如果你的网站在名单上,客户就会看到警告。
局限在于:这份名单只显示 Google 已经发现的东西。刚发生的感染可能还不在上面。
第二步:Google Search Console
如果你有 Search Console,打开安全问题报告。Google 会在那里列出被入侵的内容(被注入的代码、被注入的内容和被注入的网址)、恶意软件,以及试图欺骗访问者的页面。它通常会给出示例地址,你就从这些地方开始查。
问题消除后,在同一份报告里请求重新审核。具体怎么做,见 Google 提示你的网站有危险时该怎么办。
如果你没有 Search Console,请让管理你网站的人把你添加为所有者。这需要一条 DNS 记录,或服务器上的一个文件,而且是免费的。
第三步:从外部扫描
在线扫描工具看到的网站,和访问者看到的一样。在 20 多项检查里,ShieldWave 会看:
- 域名是否在威胁名单上:Google 安全浏览、URLhaus,以及 Spamhaus 这类 DNS 黑名单,
- 首页代码里有没有隐藏的框架、脚本中的可疑重定向,或通过
eval运行的混淆代码, - 页面是否从裸 IP 地址或已知的恶意主机加载脚本,
- 页面上是否运行着加密货币挖矿程序,
- 表单是否把数据发往境外的服务器,
- 服务器上有没有任何人都能下载的文件,比如网站的备份。
局限在于:扫描工具看到的,是网站发给它的东西。只对从 Google 进来的移动端访问者现形的代码,或者藏在 PHP 文件里、页面上毫无痕迹的后门,可能始终看不到。这就是第四步的用处。
第四步:从内部检查
检查服务器上的文件,有两种办法。许多主机商在控制面板里有文件扫描工具,通常在安全设置下面。在 WordPress 上,可以加一个安全插件,它会把你的文件与 WordPress.org 的官方校验和比对,并查找 uploads 文件夹里的 PHP 文件、新增的管理员,以及被注入文章里的垃圾内容。
怎么选,见免费的 WordPress 安全插件:应该检查什么。
恶意软件怎么进入网站
了解这一点对清理有帮助,因为事后必须把同一条入口堵上。在小企业网站上,有四条路径反复出现:
- **有已知漏洞的过时插件或主题。**机器人会检查海量网站是否使用特定版本,凡是没人更新的地方都能进去。
- **被盗或被猜出的密码。**WordPress 后台、FTP 或主机的密码,常常也是在别的服务上用过的密码。
- **来自盗版渠道的插件或主题。**在随便什么网站上“免费”提供的付费附加组件,有时自带后门。
- **同一台服务器上的邻居。**在便宜的共享主机上,如果服务器配置不当,别的客户被感染的网站可能触及你的文件。
只处理症状而不堵上入口,通常几天后会碰到同样的问题。
发现问题后先做什么
- **不要盲目删除。**先请主机商或开发者给你一份网站当前状态的副本。它有助于弄清楚发生了什么,以及从什么时候开始。
- **更换密码。**WordPress 后台、主机、FTP、数据库,以及你域名下的邮箱。移除你不认识的管理员账户。
- **把你看到的写下来。**截图、日期、可疑页面的地址、客户来信的原话。
- **告诉你的主机商。**他们往往有你够不到的工具和日志。
- **想一想数据保护法。**如果网站收集个人数据,比如通过表单或网店,而这些数据可能已经泄露,通用数据保护条例(GDPR)第 33 条给你从得知泄露起 72 小时,向监管机构通报。其他国家有各自的规则,请核对适用于你的那一套。
什么时候找开发者
出现下面任何一种情况,立刻找:
- 网站收款或收集客户数据,
- Google 或浏览器在向访问者发出警告,
- 主机商已封禁账户,
- 删除后恶意代码又回来了,这通常意味着有一个还没人找到的后门,
- 你不知道哪些文件被改过。
只删一个文件,很少能解决问题。典型的清理,是用感染之前的干净备份恢复网站,更新一切,更换密码,并查明攻击者是怎么进来的。把症状清单、日期和扫描结果交给开发者。ShieldWave 的完整报告里附有一份说明,开发者可以直接据此报价。
**检查你的网站。**在 shieldwave.io 输入你的网址。大约需要 90 秒,不需要密码,也不需要账号。