中国教育和科研计算机网
EDU首页 |  中国教育 |   高校科技 |   教育信息化 |   CERNET
教育信息化

资讯 | 专题 会议 观点 专栏 访谈 企业 产品 CIO 技术 校园信息化 下一代互联网 IPv6视频课堂

中国教育网 > 教育信息化
您现在的位置: EDU首页 > 教育信息化 > 解  读
用“生物进化论”来阐述“恶意代码进化论”
http://www.edu.cn   2009-07-13 中国教育和科研计算机网 作者:江海客

字体选择:【大】 【中】 【小】

  >>死篇
  天敌是造成演变的重要原因,但它只是演进的推动力而非消亡的推动力,没有任何一种病毒是彻底被反病毒软件杀灭的,是环境淘汰了物种。

  三叶虫,消亡了;恐龙,消亡了;剑齿虎,消亡了,华南虎,也快要消亡了。消亡者留下了化石,快要消亡者还在动物园里残喘,比如“巴基斯坦智囊”,不再具有活性;“莫里斯蠕虫”,不再具有活性;还有一些恶意代码,也快要彻底退出历史舞台了。不再具有活性的病毒,我们看到的就不再是他的危害,而是印在教科书上,孤零零的源码或者反汇编代码。

  为什么恶意代码被淘汰?首先说说天敌,就是对恶意代码的查杀,如同生物捕食一样,反病毒软件杀掉恶意代码。再就是防御,比如说乌龟有一层坚硬的壳,其他的动物就伤害不了它,主动防御、防火墙也是一个道理。天敌是造成演变的重要原因,但它只是演进的推动力而非消亡的推动力,没有任何一种病毒是彻底被反病毒软件杀灭的,是环境淘汰了物种。

  历来操作系统的升级都淘汰大量的病毒,比如说DOS 3.3 、DOS 5、DOS 6,由于中断的微妙变化,VASFE的引入等等,导致了一些传统的早版本DOS活性病毒消失。再一个就是COM-MZ—NE-PE格式,从com这种非常简单的无格式头的可执行体,简单的尾部感染直接附着,就可以运行,到了PE,把代码复制到PE后面执行逻辑根本读不到,怎么去破解这种格式?

  再就是Ring0这个机制,大家知道Windows95系统出来之后,为什么到1998年才出现像CIH这样广泛传播的病毒?这是因为整个安全机制发生了变化,系统运行在Ring0、应用运行在Ring3,如何获取Ring0的权限?而在这种情况下,CIH把VXD的技术突破零环的方法公示于天下,所以造成了大传播。每一次这样的升级都会淘汰掉一批,最后就是VXD->WDM。所以,导致CIH最终灭亡的是NT架构系统的崛起。

  传播与迁徙的方式
  动物是迁徙,恶意代码是传播。恶意代码被主流数据交换方式的依赖不亚于动物对迁徙途径的依赖。

  最早的恶意代码是如何传播的?“巴基斯坦智囊”发作的原因是通过软盘的交换传播,因为当时软盘是数据交换的主要通道,没有Internet。而1998年出现了happy 99。它应该不是第一个电子邮件的蠕虫,但是具有代表性。后来出现了Melisa等,既有宏病毒特性、又有邮件蠕虫特性,依赖电子邮件传播。电子邮件蠕虫又是怎样衰落的?是Outlook遏制了很多调用,自动发送控件被限制,电子邮件蠕虫也逐步衰亡。

  再比如远程溢出。这种溢出蠕虫受到严重挫折的是什么?不是天敌,是操作系统的数据执行保护(DEP),从机制上使即使成功溢出了也不能获取控制权限。

  再比如口令破解蠕虫家族,这是利用微软具备在权限足够情况下可以让远端系统直接运行本地程序的内部调用,如果系统是空口令的话,直接就可以把木马投上去运行。口令破解为什么消亡?除了Windows自带防火墙可以切到Block all packet coming in模式之外,Windows默认安全配置禁止空口令连接。

  我们再看当前最主要的病毒传播方法——U盘,本来是为了方便用户交换数据的,但其自动运行机制被利用了。Web注入,有设计的缺陷,但有的也是为了系统功能的灵活性;这些途径都在不断变化着,不断淘汰选择着,恶意代码的作者就要选择这些方式去改进。

  需要注意的是,被淘汰的不只是病毒。比如,我常说的OLE2分水岭,宏病毒是全球民间反病毒和商业反病毒的分水岭,尤其是在国内造成了这样的结果。宏病毒易写、易改、难杀。因为Windows的文件链接结构OLE2不公开,如果采用直接匹配会把文件破坏。可是当时McAfee等很容易就通过和微软的合作关系而拿到了相应的结构,而国内厂商莫不是通过长达六个月以上的逆向工程才完成这样的工作。因此这时首先就拉开了国外厂商和国内厂商的距离,接着就拉开了国内厂商和民间的距离。所以这是分水岭,不仅对于病毒自身,也包括反病毒软件。比如说Vista强化的DEP、PatchGuard等安全机制,把病毒挡在外面的同时,也把大量AV厂商长时间阻断于“兼容性”测试之外。所以有人觉得微软是在“行进中开火”,不仅拖垮了竞争对手和威胁,也把友军晃得晕头转向。

  光有生死不是进化论,有变异才叫进化论,进化论的核心不是简单的繁殖和生死,而是以无可辩驳的关于物种起源和进化的铁证构建学说体系,颠覆神创论的物种神造和物种不变的谬论。

  从变异的结果上看,从架构和变种来看,DOS时代最多的“耶路撒冷病毒”有354个变种,当时人们觉得不可思议;而目前来看,很多的病毒家族变种数以万计,而且还不包括被通用特征匹配出的变种。大量团队的批量制造,每天可以为不同的用户定制开发,比如灰鸽子变种数占全球后门变种总数的17%。这是非常严峻的形势。在这个变异过程中,我过去举过DOS病毒反免疫的案例,说明恶意代码实现变种的有趣倾向,这是靠作者预留了死分支,等待被改造者激活。但无论如何,恶意代码自己是不能增加功能的。

  另外,关于反汇编和代码演进的过程,在早期病毒刚进入我国的时候,一个反病毒的分析可以上到全国科学大会的报告,可见当时何其神秘,但现在就不一样了,因为相关的资源太多了。我们可以看看其中的轨迹,DOS病毒大量泛滥的起点是因为源于某个病毒的彻底反汇编剖析被公开了,这样的一个结果使很多有意愿写病毒的人对病毒基理非常了解。随后就是在源代码的基础上演进,比如后门的急剧膨胀在于BO的代码公开。另外就是变种最多的Rbot等僵尸程序家族的大量变种源于代码公开包括被销售,这是整个病毒的反汇编和代码演进。

  再说说一个二进制演进,口令猜测蠕虫族的演进。这个工具出现之后,病毒呈现了DIY特色,一行代码不用写就可以编出病毒。在网上找到了psexec,作为投放的部分,再找一个行命令的扫描器,再找个后门或者木马放在里面。写一个批处理作为调度,解决投放的怎么读扫描结果的问题。然后用一个自解压工具打包进行传播,于是就出现了演变,一些感染者把木马换成自己的二次传播。在这个过程中,我们可以根据很多信息猜测口令蠕虫的家族如何进行传播演进,这就是一个很典型的二进制过程。演进过程中一个固定的特点是有人参与的,不会发生自我的变异。

  关于自我变异,有人举跨平台的例子,但跨平台不是变异。比如有人写的PE和ELF的双态病毒,在Windows下PE格式,在Linux下ELF格式。这是变异吗?不是。比如有人写过 Macro和DOS COM的双态病毒也不是变异,这都是代码本身有的功能,并不是自己发明的功能。所以这只是两栖动物,既能在水里生活,也可以跑到陆上。此外,变形也不是变异,代码没有自我变异的可能性,比如新病毒哪里来的?变形的过程中并没有产生新的功能特性,你可以把它当作变色龙。

页面功能 【打印】 【关闭】 【我有话说

MOOC风暴来袭

版权所有:中国教育和科研计算机网网络中心 CERNIC,CERNET,京ICP备15006448号-16,京网文[2017]10376-1180号

关于假冒中国教育网的声明 | 有任何问题与建议请联络:Webmaster@staff.cernet.com