页里藏刀!深入蠕虫病毒及防治办法
● 破邮箱而出:邮件蠕虫
虫害防治人员刚赶到老皮特的果园就意识到了这里虫害的严重性:路边树上有个苹果掉进了他们的车里,裂开了,里面爬出两条毛茸茸的褐色虫子。
也许是受遗传的影响吧,最初的莫里斯蠕虫是通过邮件系统复制自身的,发展到现在,蠕虫传播的主流依然是邮件系统,不同的是,蠕虫“前辈”利用的邮件系统能够自动完成协助复制工作,而如今的邮件系统只能负责传播,要启动蠕虫必须由用户打开邮件才可以。
为什么选择邮件传播?因为这是最大的传播系统。为什么用户一打开邮件就被蠕虫撬窗入室?这要从微软的两个古老漏洞说起,它们分别是1999年11月11日的IFrame漏洞和2001年3月29日的MIME漏洞。
IFrame是一段用于往网页里放入一个小页面的HTML语言,它用来实现“框架”结构。当年有好事者测试出一个可怕的现象:往一个页面里放入多个IFrame时,框架里请求运行程序的代码就会被执行,如果有人故意做了一个执行破坏程序的页面,那后果可想而知。由于IFrame的尺寸可以自由设置,因此破坏者可以在一个页面里放入多个“看不见”的框架,并附带多个“看不见”的有害程序,浏览了那个网页的人自然就成了受害者!
和IFrame漏洞相比,MIME漏洞更加出名,它其实只是一小段用来描述信息类型的数据。浏览器通过读取它来得知接收到的数据该怎么处理,如果是文本和图片就显示出来,是程序就弹出下载确认,是音乐就直接播放。请留意最后一个类型:音乐,浏览器对它采取的动作是:播放。
要知道:音乐文件和程序文件都是一样的二进制数据,都需要解码还原数据到系统临时目录里,然后浏览器通过一个简单的文件后缀名判断来决定该用哪种方法处理它。例如用户收到一个MP3文件,MIME把它描述成音乐文件,所以浏览器解码保存这个文件到一个临时目录,而后查找调用这个文件后缀MP3对应的执行程序,这就是一次完整的工作过程;但是问题就出在这个似乎完美的步骤上,如果攻击者给用户发送一个带有EXE后缀可执行文件的邮件,并把它的MIME描述为音乐文件,这时候浏览器会把它解到临时目录,然后根据它的后缀名调用一个能打开它的应用程序——EXE后缀告诉系统,直接运行这个文件!于是这个文件就被顺利执行了,用户的机器也开始遭到破坏(图2)。
图2 MIME描述漏洞
正因为这样,邮件蠕虫才成了如今世界“虫害”的主要来源。靠邮件传播的蠕虫主要有SoBig、MyDoom、求职信等。