病从“口”入-警惕来自浏览器的入侵

2008-02-23 07:17:38来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

  一. IE的多事之秋

  九月真是多事之秋,每年的这个月份里,总是要发生一些令人淬不及防的事情的。在一间大学宿舍里,王同学正如一般大学生一样百无聊赖的以上网玩游戏看小说打发在大学里的每一个日子,现在接近九月底了,舍友们正在讨论国庆去哪里腐败,而他,则急于寻找一款网络游戏的新外挂。

  王同学通过搜索引擎找到了一个号称拥有最新最全外挂的站点并如愿以偿的找到了对应着他那款游戏的外挂下载页面连接,但是当他打开这个页面时,IE浏览器突然毫无预兆的关闭了。“这破机器!”王同学有点恼怒的骂了一句,他还没来得及记下网站的地址,这下可找不到了,他只好登录游戏把人物移动到一处僻静的地方让其自行“修炼”,还挂了好几个同学的QQ,然后赶着上课去了。

  当王同学再次回到宿舍时,他的表情是可以用“口瞪目呆”来形容的:在他机器上挂的QQ全都以“您的QQ/TM正在别处登录,您被迫下线”的提示面对着屏幕前的人,而那款网络游戏早就蹦出了“与服务器连接失败,请重新登录”的消息界面。王同学手忙脚乱的去登录,只觉得一阵天昏地暗:QQ全部提示密码不正确,而那款网游里的人物不仅所有道具物品失踪,甚至连衣服都被人扒光了,正在原地站着等他呢。

  事后,王同学借来最新杀毒软件,才发现机器感染了一个专门盗窃密码的木马,要是王同学那会儿连网络银行也登录了的话,恐怕他的损失会更大。

  木马到底是什么时候混进来的呢?王同学差点把这一星期做的事情都回忆了个遍,仍然毫无头绪,他郁闷了。

  二. 虎!虎!虎!IE遭遇零日攻击

  其实,郁闷的并不仅仅王同学一个。今年9月,全球广大用户都有可能遭遇一场神秘的木马入侵事件,如果遭受入侵的用户能把之前做过的事情回忆起来,那么他们大部分人都会有过点击不明网站连接后IE突然关闭的经历,但是谁会留意到这么一个不起眼的“IE崩溃”错误背后,隐藏着一个巨大的阴谋呢?

  这次的幕后黑手,借助的入侵途径非常特殊,所以导致大众几乎都防不胜防,因为,被渗透的是我们使用最频繁的IE浏览器。

  今年9月20日,国内一个安全团体“XSec.org”发布了一个漏洞利用代码,称为“Internet Explorer VML Buffer Overflow Download Exec Exploit”(IE浏览器VML缓冲区溢出导致远程代码执行漏洞),这场危害级别被定义为“严重”的安全风波开始在国内蔓延开来。

  其实9月20日并非祸害的第一日。早在9月18日,就有外国安全团体在某著名黑客交流邮件列表FD(Full-disclosure Mailing list)里公开了这个漏洞,XSec.org则写出了漏洞利用代码并把它正式的传播了出去,从而把这场危机带入了国内。

  现在我们来看看国内安全小组发出的有关这个漏洞的安全公告信息:“NSFocus安全小组得知IE的VML组件存在一个未公开的漏洞,已经有某些网站利用这个漏洞向用户的电脑上安装间谍软件。VML(Vector Markup Language)是一种基于XML的矢量图形绘制语言。IE通过vgx.dll提供了对VML语言的支持,可以在解析页面中嵌入的VML,显示矢量图。vgx.dll在解析VML的时候存在缓冲区溢出漏洞,利用这个漏洞可以完全控制用户的系统。该漏洞目前尚无补丁。”

  许多用户也许是在这一次公告里才第一次听说了VML,也可能会发出疑问:我用浏览器上网,和这个图形绘制语言有什么联系?为什么这个VML出现漏洞会导致IE遭受入侵?这是因为,浏览器面对的是互联网众多的交互功能,以单独一家公司自身的处理能力,要让浏览器能识别处理世界上尽多数的交互功能是不现实的,因此任何浏览器厂商都要为程序设计一个公开的接口规范让其能调用扩展或第三方接口程序,以便把它自身并不认识的交互任务交给某些有特定处理能力的接口程序来处理,所以浏览器并非是一个独立的程序,而是一个可以调用多个扩展组件运行的结合体。浏览器通过读取页面特定标记来决定自己需要加载什么组件执行,例如读取到脚本标记就自动加载脚本扩展组件执行、读取到XML标记就交给XML处理扩展执行,如果这些众多的扩展组件被取消,你将会发现浏览器大概只能显示最基本的文字和图片了。

  而这次的事件,最根本的溢出发生在VML组件里,也就是说,浏览器自身并没有问题,但是当它把数据传递给VML执行并期待它返回一个能让自己看懂的结果时,VML组件不幸溢出而执行了数据里的非法要求,例如“去某某站点下载一个程序执行”,然后因为堆栈在内存里发生异常而被系统的保护机制给踢掉,而浏览器是执行这个组件的宿主,因此它也随着组件的异常退出而崩溃了,而这些动作在用户界面上的表现就是IE浏览器自动关闭,但是用户并不会知道,在浏览器关闭之前,那只充满邪恶的木马已经在你的机器里撒开蹄子奔跑了。

  以上都是对VML缓冲区溢出漏洞导致后果的描述,究竟它是什么样的一种漏洞呢?现在让我们来系统的了解一下溢出发生的过程。

  首先,入侵者以VML标记声明格式开头编写一个HTML页面,让浏览器明白它需要调用VML组件去解释这个页面里的代码(<html xmlns:v="urn:schemas-microsoft-com:vml">),然后用一些标准的VML格式标记填写前缀,为后面的构造溢出字符串做初始化工作的准备,紧接着,溢出代码开始了,入侵者使用“<v:fill method>”标记填充内容,它使用超过260个字节的字符串作为内容填充method数据字串,后面紧跟着经过了Unicode编码的溢出执行代码(ShellCode),由于VML组件在检测缓冲区时遗漏了对其长度的严格判断,因而导致缓冲区发生溢出,入侵者提交的ShellCode得以执行,从而实现了远程执行代码的漏洞,在这次事件里,远程添加管理员账户或者开启远程登录功能很明显是没用的,因为VML组件会很快因为内存异常而崩溃,且入侵者也不知道用户什么时候会被漏洞渗透,因此这次,通过溢出实现下载文件执行的ShellCode是最实际的,而且他们都这样做了。

  因此,遭遇了漏洞渗透的用户,在浏览器宣告崩溃的同时,那只从远方站点下载来的小木马已经开始运行了,只是,你不会很快就知道的。

  而使用XP Service Pack 2的用户可以说是侥幸逃过了一劫,由于SP2引入了被称为“执行保护”的技术(也被称为Cookie保护),执行保护是被设计为针对溢出攻击的众多保护方法之一,它通过一个异常函数在缓冲区里额外插入一个数值进行数据检验,如果发生溢出,这个数值就会被覆盖和改变,系统就根据检测这个数值来判断是否发生了溢出,一旦发生情况,被溢出的程序就会被异常函数进行处理,从而防止了程序缓冲区被溢出的情况发生。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:知己知彼 解析黑客如何编写恶意软件

下一篇:输入的QQ密码正确却无法登录问题的解决