Google 宣布,每天有 9,500 个感染了恶意软件的网站有可能会损害网站的访问者。了解恶意软件如何感染网站以及如何防止这样的感染有助于保证您的访问者的计算机不受恶意软件侵扰。
多年来,恶意软件 这个术语一直用来描述任何类型的恶意程序,包括病毒、木马、蠕虫、间谍软件、流氓软件和广告软件。在计算机发展初期,人们常常将恶意软件看作是通过恶意行为骚扰用户或者炫耀编程技术的恶作剧。基本上,恶意程序感染的人越多,您在某些圈子里的名气就越大。恶意程序往往以电子邮件附件、移动存储介质共享或文件共享服务等手段传递给目标受害者。
尽管这种类型的恶意软件确实给受害者造成了许多问题,但对大部分攻击者来说无利可图,因此也并未吸引过多的人参与。如今,恶意软件背后的动力已经悄然转变为金钱利益。这些攻击由物质利益驱使,因此恶意软件比以往更加猖獗。不但有更多的人参与创建和分发恶意软件,而且攻击也变得越来越复杂。电子犯罪者已经学会了如何通过以下手段利用恶意软件谋取巨额利润:
1.显示和点击广告
2.窃取机密数据
3.劫持用户会话
4.入侵用户登录凭据
5.窃取财务信息
6.进行欺诈性购买
7.制作垃圾邮件
8.发起服务拒绝攻击
为了将其恶意软件递送给尽可能多的受害者,电子犯罪者已经将网站转变为主要分发源之一。
他们为何会选择网站
人们已经学会了不去下载电子邮件中的附件,也对流行的文件共享服务敬而远之,因为许多此类文件都已经被恶意软件感染。但人们并未停止网上冲浪。据互联网世界统计(参考资料 部分提供了一个链接),在 2011 年,活跃的互联网用户达到了 2,279,709,629 名,而且这个数字仍然在不断增加。
由于存在如此之大的攻击范围、如此之多的毫无疑心的用户,网站成为致使用户感染恶意软件的最流行介质也毫不意外。事实上,恶意网站已经极为普及,Google 每天要将大约 6,000 个携带某种对访问者存在危险的恶意软件的网站列入黑名单。
恶意软件如何通过网站传播
负责使用恶意软件感染网站的攻击者是通过三种方式实现传播的:
1.自行创建恶意网站。
2.利用 Web 服务器或其配置中的漏洞。
3.利用网站依赖的应用程序中的漏洞。
本文关注的是如何避免您的网站成为此类攻击的牺牲品,因此这里仅讨论后两种方法。
攻击者发现可以成功利用的漏洞之后,就需要确定如何将恶意软件传递给网站的访问者。表 1 列出了一些常用方法。
表 1. 网站分发恶意软件的常用方法
通过服务器漏洞感染网站
为了解决基于服务器的漏洞问题,我观察了市面上两种最流行的 Web 服务器应用程序:Apache 和 Microsoft® Internet Information Services (IIS)。这两种服务器支撑着所有网站中 78.65% 的比例。
Apache 和 IIS(或其他任何 Web 服务器)都存在着恶意攻击者可以利用的漏洞。如果攻击者能够入侵服务器软件或服务器本身,那么就可以上传恶意代码,甚至上传整个网页,以便将恶意软件传送给网站访问者。举例来说,允许发生此类攻击的漏洞主要来自两种来源。
默认安装中的漏洞
在安装 Web 服务器软件时,人们通常会采用默认配置,但默认配置仅仅会简化网站的发布,而不能保证安全性。此外,Web 服务器的默认安装往往也会包含一些不必要的模块和服务。这些不必要的内容使攻击者有机会无限制地访问您的网站文件。
每一种操作系统、Web 服务器软件和版本都有着自己的漏洞,只需通过简单的 Web 搜索即可发现这些漏洞。在网站上线之前,应该解决所有已知漏洞。
存在问题的身份验证和会话管理
这种来源包含用户身份验证和活动会话管理的所有方面。据 Open Web Application Security Project (OWASP) 表示:“大量的账户和会话管理缺陷会导致用户或系统管理账户遭到入侵。开发团队往往会低估设计身份验证和会话管理架构的复杂程度,无法在网站的所有方面为提供妥善的保护。”
为了缓解此类漏洞造成的风险,负责管理 Web 服务器和站点的人员需要遵循对于所有密码的强度、存储和更改控制有所要求的密码策略。除此之外,Web 服务器的远程管理功能也应该加密,甚至应该考虑完全关闭,确保用户凭据不会通过传输的方式被窃。
通过网站中的漏洞上传恶意软件
如果网站仍然采用静态文本和图像,那么犯罪者就很难利用合法网站传播恶意软件。然而,如今的网站大多由数据库、复杂的代码和第三方应用程序构成,在进一步丰富用户体验的同时也给网站带来了无数种漏洞。
让我们以 WordPress 为例。这种博客编辑应用程序改变了网站的创建方式,它使任何略有技术知识的用户都能轻松创建具有丰富的多媒体内容的互动式网站。WordPress 极为流行,有超过 5000 万个网站采用了它。然而,WordPress 的易用性也是近来爆发的大规模攻击事件的诱因,在这次实践中,大约有 30,000 至 100,000 个运行该应用程序的网站将受害者重定向到恶意网站。
安装了流行插件的网站发现其网页被代码感染,导致访问者重定向到其他网站。随后,该网站会根据受害者计算机运行的操作系统和应用程序,以恶意软件感染受害者的计算机。感染了超过 500,000 台 Mac 计算机的闪回式木马(Flashback Trojan)正是通过这种方法传播的恶意程序之一。
然而,这样的例子并非仅限于 WordPress。Joomla!、Drupal、MediaWiki、Magento、Zen Cart 和其他许多应用程序都有着自身的漏洞,导致恶意黑客能够将恶意软件上传到这些站点并分发给访问者。
防止 Web 应用程序遭受攻击
对于利用 Web 应用程序的攻击者来说,必须要做到的就是找到某种类型的漏洞。遗憾的是,对于网站所有者而言,存在大量各种类型的已知漏洞,甚至无法一一列明。但有些漏洞可能是广为人知的:
1.跨站点脚本攻击 (XSS)
2.结构化查询语言注入
3.跨站点请求伪造注入
4.URL 重定向
5.代码执行
6.Cookie 操纵
还有其他许多漏洞。
减少 Web 应用程序威胁
幸运的是,如果您的站点存在某些可能被利用的已知漏洞,可以利用 Web 应用程序渗透技术,通过某种方法加以解决。通过全面测试网站的已知漏洞,即可预先解决这些威胁,避免发生利用这些漏洞向网站访问者分发恶意软件的攻击。为此,您可以利用多种开放源码或商业工具,也可以将服务外包给相关领域的专业企业。
尽管渗透测试有助于识别网站代码中需要修复的问题,但 Web 应用程序防火墙也能帮助您在威胁危及您的网站之前阻止威胁。通过识别已知攻击模式,即可在恶意黑客损害您的网站之前阻止他们。更为先进的 Web 应用程序防火墙甚至能识别非法流量,针对未知的零日攻击提供保护。
限制 Apache 中的漏洞
只要配置服务器,那么最佳实践就是仅安装必要的模块和应用程序。迄今为止,这种做法不但属于最佳实践,也是最常用的实践。
为了限制 Apache Web 服务器内的漏洞,还应采取其他一些基本措施。本文中将使用与 Linux® 的 Ubuntu 发布版相关的命令。对于在其他操作系统或发布版上运行的 Apache,很容易就能搜索到执行各任务所需的步骤。
禁用横幅
默认情况下,Apache 会在发出 Web 请求时显示其名称和版本号,告诉潜在攻击者网站实际运行的内容。禁用该横幅使潜在攻击者更难查明是否存在其他漏洞。为此,可以导航到 /etc/apache2/apache2.conf 并禁用 ServerSignature 和 ServerTokens 条目。
禁用目录索引
另外一项默认功能就是打印 Web 站点目录中的文件列表。这项特性使攻击者能够映射您的服务器,并识别可能存在漏洞的文件。为了避免这样的问题发生,您需要禁用自动索引模块。只需打开终端并执行以下命令即可:
•rm -f /etc/apache2/mods-enabled/autoindex.load
•rm -f /etc/apache2/mods-enabled/autoindex.conf
禁用 WebDAV
基于 Web 的分布式创作和版本控制 (WebDAV) 是 HTTP 的文件访问协议,允许在网站中上传、下载和更改文件内容。任何生产网站都应禁用 WebDAV,确保攻击者无法更改文件以上传恶意代码。
使用终端执行以下命令,通过删除 dav、dav_fs 和 dav_lock 文件来禁用这些文件:
•rm -f /etc/apache2/mods-enabled/dav.load
•rm -f /etc/apache2/mods-enabled/dav_fs.conf
•rm -f /etc/apache2/mods-enabled/dav_fs.load
•rm -f /etc/apache2/mods-enabled/dav_lock.load
关闭 TRACE HTTP 请求
HTTP TRACE 请求可用于打印会话 cookie,此后利用这些信息劫持用户会话,发起 XSS 攻击。您可以导航到 /etc/apache2/apache2.conf 文件,确保 TraceEnable 设置为 TraceEnable off,以禁用此类跟踪。
限制 IIS 中的漏洞
对于消费者市场来说,Windows Server® 产品最吸引人的一项特征就是易于安装。利用 IIS,企业只需轻点几下鼠标即可设置好一个 Web 服务器并将其投入运行。以开箱即用的方式安装服务器软件时,需要执行一些配置任务:但 IIS 会代替您完成这些任务。
为了解决 Web 服务器产品的安全性问题,Microsoft 对 IIS 的配置方式以及默认安装的内容作出了一些重大变更。然而,您仍然可以采取一些措施来提供更好的保护,避免威胁。
安装防恶意软件程序
Code Red 和 Nimda 均属于攻击 Windows Server 操作系统的蠕虫,两者均造成了