按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
* 在一些很少使用的内存区域中,放置病毒存在的标志。
有一些内存驻留病毒,比如说使用病毒制造库生成的病毒,由于不正确的实现了防止重新加载的算法,会造成病毒反复加载,这样会造成其中的一个不能正常工作,如果加载的次数过多会使系统内存耗尽,造成死机。
引导区病毒的内存驻留
引导区内存驻留程序使用类似的方法将病毒代码放入系统内存中,这样会造成系统可用内存减少,由于引导病毒通常都比较小,所以一般减少的内存都只有1K或者几K。
为了避免用户可以很容易的觉察到系统可用内存的减少,一些病毒会等待DOS完全启动成功,然后使用DOS自己的功能分配内存,这样不会显示整个可用内存减少,而是在DOS可用的内存中增加了一小个常驻的程序,这样往往不会引起用户的警觉。
引导区内存驻留程序往往不包括重入检测部分,因为引导区病毒只会在系统启动的时候加载一次。
视窗环境下病毒的内存驻留
视窗环境下病毒可以通过三种方法驻留内存,由于视窗操作系统本身就是多任务的,所以最简单的方法是将病毒作为一个视窗环境下的应用程序,拥有自己的窗口(可能是隐藏的)、拥有自己的消息处理函数;另外一种方法是使用DPMI申请一块系统内存,然后将病毒代码放到这块内存中;第三种方法是将病毒作为一个VXD(视窗3。x或者视窗9x环境下的设备驱动程序)或者在视窗NT/视窗2000下的设备驱动程序VDD加载到内存中运行。
在视窗环境下,进行一次文件系统调用可以有几种途径,一种是通过传统的21H号中断,这和通常的DOS环境下病毒的感染方法是一样的,另外一种是通过视窗环境的应用程序编程接口(API)进行,这种方式最后都会归结到VXD调用,所以通过VXD形式的内存驻留病毒可以拦截这些调用并进行感染。
传统的防止病毒重新加载的方法基本上在视窗环境下也是可用的,对于VXD病毒,静态加载的会在“SYSTEM。INI”中包含加载设备驱动程序的一行,动态加载的可能使用某些英特尔CPU的一些特殊状态位来表示病毒是否存在于内存中(CIH病毒就采用了这种方法)。
宏病毒的内存驻留方法
宏病毒是一类特殊的病毒,它主要存在于WORD和EXCEL环境中,一旦WORD和EXCEL运行起来,病毒就会被加载并且一直存在于系统中,所以从某种意义上,宏病毒都是内存驻留病毒。
宏病毒通常也会进行重入检测,发现一个文档中已经包含了病毒的特征就不会再对这个文档进行感染,这样可以防止反复感染造成文档不断增大甚至损坏。
重入检测和病毒免疫
由上面的叙述可以知道,大部分驻留内存的病毒会在加载病毒代码之前,检查系统的内存状态(判断内存中是否有病毒),感染文件之前,查看文件的状态,看看该文件是否已经被感染了,如果被感染了则不再重复感染。这种机制导致了一种反病毒技术的出现,也就是形形色色的免疫程序,使用一个程序设置内存的状态,设置CPU的状态或者设置文件的一些特征,从而防止某种特定的病毒进入系统。
从实际的作用来看,这种免疫程序的作用是有限的,因为只有对病毒进行了详细的分析才能够编写出这样的免疫程序,而如果已经对病毒进行了详细的分析,应该可以很方便的编写出检查和清除病毒的程序,所以与其使用这种免疫程序防止病毒的感染,不如在执行文件之前进行彻底的病毒检测以防止执行带有病毒的程序。
第七节 浏览就可以传染—可怕的脚本病毒
随着因特网的广泛使用,电脑病毒也出现了新的发展趋势,脚本病毒在1999年以后已经成为最主要的病毒类型之一。脚本病毒类似于前面所描述的宏病毒,但是它的执行环境不再局限于WORD、EXCEL等微软OFFICE应用程序,而是随着微软将脚本语言和视窗操作系统日益紧密的结合,扩展到网页、HTA(基于HTML的应用程序),甚至文本文件中。
脚本语言:脚本语言是介于 HTML 和 Java、C++ 和 Visual Basic 之类的编程语言之间的语言。HTML 通常用于格式化文本和链接网页,基本上没有什么处理功能,编程语言通常用于表示一系列复杂指令和逻辑。脚本语言也可用来向计算机发送指令,但它们的语法和规则没有可编译的编程语言那样严格和复杂,而且脚本语言是解释执行的,直接可以执行脚本语言的文本而不需要使用一个庞大的编译器将脚本语言编译成机器语言。执行脚本语言需要一个脚本语言引擎解释执行脚本语言编写的程序。主要的脚本语言包括下面几种:
* 活动服务器页面(Active Server Pages),在因特网服务器端执行的脚本,构造变化多端的页面供浏览。
* 微软可视化BASIC脚本语言(Microsoft Visual Basic Scripting Edition),使用微软视窗操作系统内置的脚本引擎。
* 爪哇脚本语言(Java Script)使用浏览器内置的脚本引擎执行。
其他的脚本语言还有PHP、REXX、PERL等。由于能自我复制、扩散的程序就可以成为病毒了,脚本语言的功能越来越强大,现代的脚本语言基本上可以完成所有的文件系统操作,所以使用脚本语言的病毒的出现也就成为必然。
脚本语言病毒的基本原理
脚本语言存在的一个最重要的基础和前提是,如何满足病毒的基本前提,复制自身?
使用VBScript可以很容易的完成这个任务。下面是一个普通的VBscript脚本程序(由于众所周知的原因,我们在这里使用的是伪代码而不是实际的VBScript语言代码):
设置 对象1 = 创建对象(“Scripting。FileSystemObject”) //创建一个文件操作对象对象1。创建文本文件( 〃virus。txt〃; 1) //通过这个文件对象的方法创建一个TXT文件
如果我们把这两句话保存成为后缀名为。vbs的VBS脚本文件,点击就会在当前目录创建一个文本文件。
如果把第二句改为:
对象1。获取文件(WScript。ScriptFullName)。拷贝(〃virus。vbs〃)
就可以将自身复制到当前目录的virus。vbs文件中。它的意思是把程序本身的内容拷贝到目的位置。这么简单的两行代码就实现了自我复制的功能,已经具备病毒的基本特征。
下面的一些伪代码,可以实现对微软邮件系统的感染,具有一个脚本病毒的基本功能:
伪代码 代码的说明
上面的代码就可以通过Outllok的邮件系统把自己以附件的方式扩散出去。
从这些简单的伪代码中,我们可以看出,仅仅这么简单的几行代码,就能成为具有自我复制、繁殖、骚扰网络的病毒了。当然,我们可以为它添加更多的本领,比如:修改注册表、删除文件、发送被感染者的文件、隐藏自己,感染其他文件。其实,以目前视窗系统的编程开放特性,以及脚本语言和视窗操作系统的紧密集成,上面的功能都很容易实现。一个中级的VB程序员,没有任何的汇编知识,很容易就能制作类似的蠕虫病毒。
计算机世界的不断发展,界面的友好性以及代码开放性都为病毒的产生提供更好的平台。一个程序简单的病毒,同样能够成为破坏力强大的超级病毒。可以这么说:病毒制作早已经进入高级编程阶段。不会低级机器语言的程序员,也能够制作功能强大的病毒。
正是因为病毒制作进入高级编程阶段,使得病毒的制作更加容易,更多稍微有编程基础的人就能写出病毒来。同时,象脚本病毒这样的代码,如果不加密,它的源代码也能轻松看见,这被更多的有低级趣味的低级程序员所利用。从“爱虫”等脚本病毒开始,它们的源代码也随着病毒一起扩散开来,被人改装过后就发展成新的病毒,什么Homepage、Mayday等,都几乎差不多。最近,又有人改装成“杰西卡蠕虫”病毒,用“163电子邮箱收费通知”做标题,其基本代码和扩散部分代码完全是I Love You 病毒的抄袭。
脚本病毒包括下面的几种基本类型:
* 基于JAVAScript的脚本病毒
使用JAVAScript语言编写的病毒,主要运行在IE浏览器环境中,可以对浏览器的设置进行修改,主要破坏是对注册表的修改,危害不是很大。
* 基于VBScript的脚本病毒
使用VBScript语言的病毒,可以在浏览器环境中运行,更重要的是,这种病毒和普通的宏病毒并没有非常清晰的界限,可以在Office,主要是Outlook中运行,可以执行的操作非常多,前面描述的例子就是使用VBScript语言编写的,甚至可以修改硬盘上的东西,删除文件,执行程序等,危害非常大。
* 基于PHP的脚本病毒
这是新的病毒类型,感染PHP脚本文件,主要对服务器造成影响,对个人电脑影响不大,目前仅有一个“新世界”(NewWorld)病毒,并没有造成很大的破坏,但是前景非常难以估计,如果PHP得到更加广泛的使用,这种病毒将成为真正的威胁。
* 脚本语言和木马程序结合的病毒
这种病毒除了使用脚本语言进行扩散以外,还会在受到侵入的计算机上安装一个名为特洛伊木马程序,容许他人未经授权访问受到感染的计算机。一种典型的方法是,通过直接在病毒代码中包括二进制的木马程序编码,或者另外一个叫做VIRUS。BIN的文件,通过脚本语言直接执行DEBUG程序,使用DEBUG程序将VIRUS。BIN存储成为VIRUS。EXE,然后通过脚本语言就可以偷偷的执行这个木马程序了。
这种木马和脚本相结合的病毒已经成为最近病毒发展的新趋势,也给反病毒软件厂商带来了很大的挑战。
第八节 针对IRC的蠕虫程序
这类病毒在90年代早期曾经广泛流行,但是随着即时聊天系统的普及和基于浏览的浏览逐渐成为交流的主要方式,这种病毒出现的机会也就越来越小了,所以我们对这种病毒不作详细的描述。
第九节 “恶意代码”—不是病毒的病毒
第一种恶意代码是远程控制程序,通常称之为特洛伊木马,关于这种恶意代码我们将在有关黑客那一章作详细的描述。
第二种是恶作剧程序,最有名的是“麦当劳女鬼”,这个恶作剧程序在香港曾经吓死了女职员,虽然由于不具有自我传播的特性,但是所有的杀毒软件厂商仍然把这个程序作为恶意代码处理。杀无赦!
第三种是潜在的病毒,由于开发中的错误或者其他一些原因,造成病毒的感染部分不能正常工作,这些程序不能看作病毒,但是杀毒软件也把它作为恶意代码处理。
还有就是各种病毒制造机,多态病毒生成器等,这些东西虽然不是病毒,但是作为病毒的开发工具,还是不要流传的好,所以杀毒软件看到这些程序当然是“仇人相见分外眼红”了,杀,没有什么好商量的。
第四章 真实的病毒故事
第一节 尼姆达病毒,和恐怖分子有关?
2001年9月18日,距离美国“911”恐怖分子袭击事件整整一周的时间,一个新的,传染力非常巨大的病毒首先在美国出现,由于这个时间和出现的地点是如此的巧合,因此有报道认为这个病毒是恐怖分子策划的又一起针对美国的袭击事件,当然我对此表示怀疑,如果需要配合911的袭击的话,为什么不在