你知道苹果里面会有虫子,可是你知道电脑里面也会有“虫子”吗?虽然这两种虫子截然不同,可是研究发现,电脑“虫子”在衍生、破坏性等方面却和自然界的虫子有不少类似之处。今天,我们就一起来深入了解一下什么是网络“虫子”,以及它的危害和防治。
老皮特坐在电脑前写着邮件,愁眉不展,连敲回车也弄出很大的声响。
“该死的虫子!我用了几种农药也杀不死它们!它们总是躲着,从这棵树爬到那棵树!这些可恶的虫子!现有的农药不管用!你们快点赶过来,带上新的杀虫剂,要快!费用不是问题,重要的是我的果园!看在果实就快要成熟的份上,快点!上帝啊!”。原来,老皮特的果园正在经历一场蠕虫危机,他今天和农业虫害防治的人员取得了联系,正在发电子邮件让他们马上过来。
蠕虫源起
提到蠕虫,大家都不会陌生,这些自然界中的低等生物以农作物为食,给人类带来经济损失。但是,如果说计算机中也有这样一种名为“蠕虫”的东西存在,同样也给人类带来严重经济损失,你也许会觉得这是天方夜谭,虫子怎么会爬进计算机呢?
1988年11月2日,世界上第一个计算机蠕虫正式诞生。美国康乃尔大学一年级研究生莫里斯为了求证计算机程序能否在不同的计算机之间自我复制传播,他写了一段试验程序,为了程序能顺利进入另一台计算机,他写了一段破解用户口令的代码。11月2日早上5点,这段被称为“Worm”(蠕虫)的程序开始了它的旅行(图1),它果然没有辜负莫里斯的期望:它爬进了几千台电脑,让它们死机,造成了经济损失高达9600万美元的记录。从此,“蠕虫”这个名词传开了,莫里斯也许并不知道:他在证明这个结论的同时,也打开了潘多拉魔盒。
图1 蠕虫最初模型。
爬进机器的虫子
过了一会儿,老皮特收到两封邮件,一封是虫害防治人员的回复,他们说马上就会过来;另一封就有点奇怪,是个陌生的地址发来的,内容更奇怪,只有一行字:“Hey,is that your photo?”。也许是哪个孩子的恶作剧吧,老皮特随手把邮件删除了。但是老皮特做梦也不会想到,他用来管理果园的计算机里已经来了一个不受欢迎的“客人”。
自1988年第一个蠕虫显示出它的威力以来,越来越多的人加入了蠕虫制作阵营,他们用这种途径来证明自己的能力,或者实现一些特殊目的,于是多种多样的蠕虫诞生了。可是不管蠕虫的“行为方式”(它们进入计算机后要做的事情)有多少种,其“传播方式”却仅仅有屈指可数的几种:电子邮件、网页代码、社会工程学以及系统漏洞等。
下面,我们就来看看蠕虫进入计算机的几种主要方式。
破邮箱而出:邮件蠕虫
虫害防治人员刚赶到老皮特的果园就意识到了这里虫害的严重性:路边树上有个苹果掉进了他们的车里,裂开了,里面爬出两条毛茸茸的褐色虫子。
也许是受遗传的影响吧,最初的莫里斯蠕虫是通过邮件系统复制自身的,发展到现在,蠕虫传播的主流依然是邮件系统,不同的是,蠕虫“前辈”利用的邮件系统能够自动完成协助复制工作,而如今的邮件系统只能负责传播,要启动蠕虫必须由用户打开邮件才可以。
为什么选择邮件传播?因为这是最大的传播系统。为什么用户一打开邮件就被蠕虫撬窗入室?这要从微软的两个古老漏洞说起,它们分别是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、求职信等。