加载页面:您的网站如何导致访问者感染恶意软件

开发人员浅谈恶意网站

Google 宣布,每天有 9,500 个感染了恶意软件的网站有可能会损害网站的访问者。了解恶意软件如何感染网站以及如何防止这样的感染有助于保证您的访问者的计算机不受恶意软件侵扰。

Jeff Orloff, 技术协调员/顾问, Sequoia Media Services Inc.

Jeff Orloff 是 Palm Beach County 学区的技术协调员。他同时还是 Sequoia Media Services Inc. 的顾问,专门帮助公司在业务中实现社交媒体,从而实现协作和信息共享。他目前正在撰写 MediaWiki: A Beginner's Guide 一书,由 Packt 出版。



2013 年 2 月 22 日

多年来,恶意软件 这个术语一直用来描述任何类型的恶意程序,包括病毒、木马、蠕虫、间谍软件、流氓软件和广告软件。在计算机发展初期,人们常常将恶意软件看作是通过恶意行为骚扰用户或者炫耀编程技术的恶作剧。基本上,恶意程序感染的人越多,您在某些圈子里的名气就越大。恶意程序往往以电子邮件附件、移动存储介质共享或文件共享服务等手段传递给目标受害者。

尽管这种类型的恶意软件确实给受害者造成了许多问题,但对大部分攻击者来说无利可图,因此也并未吸引过多的人参与。如今,恶意软件背后的动力已经悄然转变为金钱利益。这些攻击由物质利益驱使,因此恶意软件比以往更加猖獗。不但有更多的人参与创建和分发恶意软件,而且攻击也变得越来越复杂。电子犯罪者已经学会了如何通过以下手段利用恶意软件谋取巨额利润:

  • 显示和点击广告
  • 窃取机密数据
  • 劫持用户会话
  • 入侵用户登录凭据
  • 窃取财务信息
  • 进行欺诈性购买
  • 制作垃圾邮件
  • 发起服务拒绝攻击

为了将其恶意软件递送给尽可能多的受害者,电子犯罪者已经将网站转变为主要分发源之一。

他们为何会选择网站?

人们已经学会了不去下载电子邮件中的附件,也对流行的文件共享服务敬而远之,因为许多此类文件都已经被恶意软件感染。但人们并未停止网上冲浪。据互联网世界统计(参考资料 部分提供了一个链接),在 2011 年,活跃的互联网用户达到了 2,279,709,629 名,而且这个数字仍然在不断增加。

由于存在如此之大的攻击范围、如此之多的毫无疑心的用户,网站成为致使用户感染恶意软件的最流行介质也毫不意外。事实上,恶意网站已经极为普及,Google 每天要将大约 6,000 个携带某种对访问者存在危险的恶意软件的网站列入黑名单。

恶意软件如何通过网站传播

负责使用恶意软件感染网站的攻击者是通过三种方式实现传播的:

  • 自行创建恶意网站。
  • 利用 Web 服务器或其配置中的漏洞。
  • 利用网站依赖的应用程序中的漏洞。

本文关注的是如何避免您的网站成为此类攻击的牺牲品,因此这里仅讨论后两种方法。

攻击者发现可以成功利用的漏洞之后,就需要确定如何将恶意软件传递给网站的访问者。表 1 列出了一些常用方法。

表 1. 网站分发恶意软件的常用方法
方法描述
下载欺骗用户下载恶意代码。常用的一种策略就是告诉访问者需要更新多媒体软件才能观看视频,或者哄骗受害者下载实际上包含恶意软件的 PDF 或其他类型的文件。
横幅广告欺骗用户点击网站中出现的受感染广告,从而下载恶意文件。
隐蔽式强迫下载(Drive-by downloads) 使用这种方法时,访问者只要访问网站即可下载恶意软件,无需在网站中执行任何操作。 恶意软件可以隐藏在网站的不可见元素中,例如 iframe 或清晰的 JavaScript 代码中;甚至可能会嵌入多媒体文件,例如图片、视频或 Adobe Flash 动画之中。加载页面时,恶意软件将利用浏览器或插件的漏洞,感染访问者的计算机。

通过服务器漏洞感染网站

为了解决基于服务器的漏洞问题,我观察了市面上两种最流行的 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 应用程序的攻击者来说,必须要做到的就是找到某种类型的漏洞。遗憾的是,对于网站所有者而言,存在大量各种类型的已知漏洞,甚至无法一一列明。但有些漏洞可能是广为人知的:

  • 跨站点脚本攻击 (XSS)
  • 结构化查询语言注入
  • 跨站点请求伪造注入
  • URL 重定向
  • 代码执行
  • Cookie 操纵

还有其他许多漏洞。

减少 Web 应用程序威胁

幸运的是,如果您的站点存在某些可能被利用的已知漏洞,可以利用 Web 应用程序渗透技术,通过某种方法加以解决。通过全面测试网站的已知漏洞,即可预先解决这些威胁,避免发生利用这些漏洞向网站访问者分发恶意软件的攻击。为此,您可以利用多种开放源码或商业工具,也可以将服务外包给相关领域的专业企业。

尽管渗透测试有助于识别网站代码中需要修复的问题,但 Web 应用程序防火墙也能帮助您在威胁危及您的网站之前阻止威胁。通过识别已知攻击模式,即可在恶意黑客损害您的网站之前阻止他们。更为先进的 Web 应用程序防火墙甚至能识别非法流量,针对未知的零日攻击提供保护。


限制 Apache 中的漏洞

只要配置服务器,那么最佳实践就是仅安装必要的模块和应用程序。迄今为止,这种做法不但属于最佳实践,也是最常用的实践。

为了限制 Apache Web 服务器内的漏洞,还应采取其他一些基本措施。本文中将使用与 Linux® 的 Ubuntu 发布版相关的命令。对于在其他操作系统或发布版上运行的 Apache,很容易就能搜索到执行各任务所需的步骤。

禁用横幅

默认情况下,Apache 会在发出 Web 请求时显示其名称和版本号,告诉潜在攻击者网站实际运行的内容。禁用该横幅使潜在攻击者更难查明是否存在其他漏洞。为此,可以导航到 /etc/apache2/apache2.conf 并禁用 ServerSignatureServerTokens 条目。

禁用目录索引

另外一项默认功能就是打印 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 操作系统的蠕虫,两者均造成了极大的损害。如果主机操作系统本身不具备重组的防恶意软件保护,那么网站就极易受到攻击。利用按键记录器、木马和其他恶意软件,攻击者不仅能够轻松入侵 Web 管理员的登录凭据,还能在提供给网站访问者的文件中插入恶意代码。

安装防恶意软件程序之后,应该及时更新程序,随后在上传任何网站文件之前运行。如果发现任何异常之处,则应立即更改所有密码。

更新其他所有内容

在运行 IIS 的 Web 服务器上限之前,请务必更新操作系统软件和 Web 服务器软件,安装 Microsoft 发布的最新更新。这些更新通常包括解决 Microsoft 产品特有漏洞的补丁程序。


在发生攻击后进行清理

在网站导致访问者蒙受损失之后,必须立即采取纠正措施。首先应将站点脱机,并将之隔离。如果需要将站点投入运行,以避免业务中断,那么应该使用经过验证、确无恶意软件的备份。

处理在线状态之后,接下来就应该清理受感染的文件。某些感染仅需移除几行代码,而较为复杂的攻击则可能要求您重新编写整个文件。此时,应采取一切必要措施,从站点中移除恶意软件。


挽救您的名誉

Google 和其他搜索引擎发现一个网站传播恶意软件之后,就会将该网站从搜索结果中剔除。这会给业务造成灾难性的影响。

移除所有恶意软件、修补所有漏洞之后,应将网站提交给搜索引擎,供其审查。如果搜索引擎确定其中不再存在对任何访问者有害的威胁,该网站即可重新列入搜索结果,搜索引擎带来的访问流量即可恢复如常。

如果恶意软件感染侵害了用户帐户信息,那么应该立即通知所有用户,使之能够处理因之产生的任何后果。除此之外,组织还需要查看此类入侵是否违反了任何法律或法规,并采取必要的措施来应对负面影响,保证符合法律法规。


结束语

Dasient 的一份报告指出,2010 年第四季度发现约 110 万个网站中包含某种类型的恶意软件。其他研究表明,大约有 85% 的恶意软件来自 Web。如果导致所有这些问题的网站都是从最初起便心怀恶意的网站,那么问题或许就简单多了。但遗憾的是,许多计算机的感染源头是小型企业的网站、教会网站,甚至是名声良好的新闻网站。

Web 开发人员需要承担起保护网站免受攻击的重责。单纯地编写一些出色的代码就可以完成任务的日子已经一去不复返。现在,开发人员必须确保其代码功能正常并且安全可靠。

本文所列举的技术无疑能帮助尚不了解网站安全性的开发人员打下知识基础,但还有更多的知识需要探索。威胁形势日新月异。随着零日攻击的兴起和电子犯罪者对抗措施的发展,Web 开发人员也需要适应形势,设法更好地保护自己的网站。

参考资料

学习

获得产品和技术

讨论

  • developerWorks 社区:探索由开发人员推动的博客、论坛、小组和维基,并与其他 developerWorks 用户进行交流。

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Web development
ArticleID=858457
ArticleTitle=加载页面:您的网站如何导致访问者感染恶意软件
publish-date=02222013