按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
后,才从栈中POP出进行写盘操作。写盘的步骤如下:
以逆序将各块病毒写入文件各段(Section)相应的自由空间中;将病毒首块写入文件头自由空间内;将病毒块链表指针区写入文件头;将修改后的“段头”区域写回文件;将修改后的PE 文件头和 PE可选文件头写回文件置病毒感染标志,将IFSMgr_Ring0_FileIO程序的第一个字节(通常是55h='U',即PUSH EBP的操作代码)写到PE文件标识符(Signature)'PE'的前一地址内(原为00h),'00PE0000'改为了'UPE0000'。
病毒读入文件和写入文件都是通过调用系统内核的IFSMgr_Ring0_FileIO的读(EAX=0000D600)和写(EAX=0000D601)功能实现的。
病毒的发作
病毒发作条件判断:
在CIHv1。4中,病毒的发作日期是4月26日,病毒从S的70、71端口取出系统当前日期,对其进行判断:
如果系统当前日期不是4月26日,则离开病毒程序,回到文件的原正常操作上去;若正好是4月26日,则疯狂的CIH病毒破坏开始了!
病毒的破坏
对基本输入输出系统的破坏
通过主板的BIOS端口地址0CFEH和0CFDH向BIOS引导块(boot block)内各写入一个字节的乱码,造成主机无法启动。
为了保存BIOS中的系统基本程序,BIOS先后采用了两种不同的存储芯片:ROM和PROM。ROM(只读存储器)广泛应用于x86时代,它所存储的内容不可改变,因而在当时也不可能有能够攻击BIOS的病毒;然而,随着闪存(FlashMemory)价格的下跌,奔腾机器上BIOS普遍采用PROM(可编程只读存储器),它可以在12伏以下的电压下利用软件的方式,从BIOS端口中读出和写入数据,以便于进行程序的升级。
CIH病毒正是利用闪存的这一特性,往BIOS里写入乱码,造成BIOS中的原内容被会彻底破坏,主机无法启动。所幸的是,CIH只能对少数类型的主板BIOS构成威胁。这是因为,BIOS的软件更新是通过直接写端口实现的,而不同主板的BIOS端口地址各不相同。现在出现的CIH只有1K,程序量太小,还不可能存储大量的主板和BIOS端口数据。它只对端口地址为0CFEH和0CFD的BIOS(据有关资料为英特尔430TX 芯片组、部分奔腾电脑使用的芯片组)进行攻击。
对硬盘的破坏
通过调用Vxd call IOS_Sendmand直接对硬盘进行存取,将垃圾代码以2048个扇区为单位,从硬盘主引导区开始依次循环写入硬盘,直到所有硬盘(含逻辑盘)的数据均被破坏为止。
第五节 漏洞、臭虫还有其他
象任何人造的物品一样,电脑软件作为人类的创造物,同样存在缺陷。越是代码量多,规模庞大的软件,出现漏洞的可能性也就越大,这是由于软件本身的复杂性决定的。在六十年代,曾经出现过一次软件危机。在这一时期软件开始作为一种产品被广泛使用,出现了专门的软件开发公司专门开发软件。但是软件开发的方法基本上仍然沿用早期的个体化软件开发方式,但软件的数量和规模急剧膨胀,软件需求日趋复杂,维护的难度越来越大,开发成本令人吃惊地高,而失败的软件开发项目却屡见不鲜。〃软件危机〃就这样开始了。“软件危机〃使得人们开始对软件及其特性进行更深一步的研究,人们改变了早期对软件的不正确看法。早期那些被认为是优秀的程序常常很难被别人看懂,通篇充满了程序技巧。后来人们普遍认为优秀的程序除了功能正确,性能优良之外,还应该容易看懂、容易使用、容易修改和扩充。这种认识上的进步和软件工程、面向对象技术的出现,使得软件开发的质量有了一定的提高。
但是随着软件的规模达到上百万行,软件的运行环境日益复杂,软件中存在的漏洞和缺陷仍然具有逐步上升的趋势,特别是象微软操作系统这样极其复杂的软件,存在漏洞和臭虫是不可避免的。所以,问题的焦点不在于讨论是否存在漏洞和臭虫,而在于发现这些漏洞和臭虫之后如何处理。
对于〃发现软件漏洞后应作出怎样反应〃的问题,现在有两派:一派支持〃全面披露〃,他们认为发现漏洞后应当全面公布有关漏洞的信息;而另一派则持有比较保守的看法,他们认为应当只公布那些与修补漏洞有关的信息,而且,这些信息应当在软件公司编写出了相关补丁之后再作公布。在这方面,微软通常支持后者。该公司安全响应中心的安全程序经理Scott Culp声称,该公司通过同时发布有关漏洞的信息以及漏洞补丁,使用户得以在黑客行动前采取防护措施。
由于黑客或者病毒程序的作者往往拥有比一般用户更高的技术水平,在对待漏洞上,他们利用的速度要远远超过用户修补漏洞的速度,所以我比较赞成微软的做法,公布漏洞的详细细节更有利于黑客和病毒的作者而不是用户,但是普通用户需要注意的一点就是,一定要及时下载最新的补丁,因为纸是包不住火的,这些漏洞一定会被黑客们发现,而且他们会很快找到利用的办法的,类似“尼姆达”这样的病毒/木马今后会越来越多。
第六节 谁制造了病毒
形形色色的人们,科学家、学生、病毒爱好者等等,出于不同的目的,制造了数万种病毒,而且由于因特网的爆炸性发展,病毒的制造技术越来越简单,人们获得病毒知识的途径也越来越多。病毒制造从早期少数玩家的游戏已经变成一种非常大众化和时尚化的行为了,病毒的数量在可以预见的将来仍然会持续的增长。
学生的课外作业
大量的病毒可能来自学生的课外作业,他们对汇编语言有好奇心,愿意学习这样一门新的语言,如果他们有机会接触到一些病毒的源代码的话,制造病毒就变成触手可及的事情了。和普通使用高级语言或者汇编语言编写的程序相比,病毒表现出来的精巧性和程序编写的难度是非常大的,学习这些新的、甚至是非常规的编程方法对于学校的学生来说是一个很大的挑战,因为这种对智力的挑战,很多学生开始研究病毒,制造多种病毒的变种,甚至实现一些新的算法和机制,制造出新的病毒(CIH病毒就是一个最典型的例子)。
大量这种病毒都仅仅存在于学校中,或者学生的课外作业里,在过去,这些病毒流传出来的机会是比较少的,但是随着因特网的广泛使用,学校内部的网络和公共网络之间联系也越来越紧密。这就客观上使学生的业余作品可以在一夜之间成为一个全球性的问题(比如说CIH就是一个从学校到全球的典型例子,最新的红色代码可能也是来自于学校)。
科学家的试验品
八十年代的时候,国外的一些非常权威性和学术性的杂志上,还能看到关于电脑病毒的一些论文,论述电脑病毒的一些原理性的东西,比如说电脑病毒的形式化定义,满足电脑病毒的一些必要条件等等。在九十年代国内一些学术性很强的计算机期刊上,甚至还有一些关于病毒的基本原理,病毒感染详细机制的研究性论文发表。
最早的磁芯大战,更是很多科学家出于研究的目的,编写种种“前病毒”,类似自我复制、自我传播的概念,比如说莫里斯的蠕虫程序就纯粹是为了验证这种思想的可行性所制造出来的试验品,当然,这个试验品发展到今天,远远超过了当初制造者最大胆的想象。就像最早的科幻小说《弗兰肯斯坦》所描写的那样,主人公弗兰肯斯坦是一位科学家,一个天才的创造者,他利用死人器官拼凑出一个怪物;怪物在人间东奔西跑,却得不到理解和同情;他向往美好,渴望感情,换来的却是谎言与追杀;他终于不顾一切地向人类复仇了,杀死了创造他的人之后,漂流到北极冰原迎接自己的灭亡。
有意思的恶作剧
很多病毒的产生,是出於恶作剧的目的,最典型的是“麦当劳女鬼”,这个程序严格意义上并不能算成病毒,因为它不能自我复制,更不能进行感染,这个恶作剧程序的作者似乎对心理学很有研究,首先在屏幕上显示一个很恐怖的故事,但是没有任何其他的东西,这样在你心中营造了一个氛围,然后在很长时间以后,突然出现一声惨叫和屏幕上一个脸色惨白的女鬼,真的很吓人的。
类似的恶作剧程序还有很多,比如说显示一个对话框,告诉你正在格式化你的硬盘(虽然实际上什么也没做),而你发现什么操作都不起作用了等等。
制作这些恶作剧程序不需要很高的电脑知识,只要会写程序就可以编写这种