保密安全与密码技术-9病毒

保密安全与密码技术-9病毒

ID:1494012

大小:1.10 MB

页数:121页

时间:2017-11-12

上传者:U-3151
保密安全与密码技术-9病毒_第1页
保密安全与密码技术-9病毒_第2页
保密安全与密码技术-9病毒_第3页
保密安全与密码技术-9病毒_第4页
保密安全与密码技术-9病毒_第5页
资源描述:

《保密安全与密码技术-9病毒》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

保密安全与密码技术第九讲病毒与数据安全 病毒与数据安全恶意代码病毒的概念和起源病毒的危害和传播方式病毒的特点和分类病毒的一般结构病毒的工作原理杀毒技术 恶意代码软件威胁的分类,也就是恶意代码的分类情况如下。这些威胁可以分成两类:需要宿主的程序和可以独立运行的程序。前者实际上是程序片段,它们不能脱离某些特定的应用程序、应用工具或系统程序而独立存在;后者是完整的程序,操作系统可以调度和运行它们。 恶意代码也可以把这些软件威胁按照能不能够自我复制来进行分类。不能够自我复制的可能是程序片段,当调用宿主程序完成特定功能时,就会激活它们。可以自我复制的程序可能是程序片段(病毒),也可能是一个独立的程序(蠕虫、细菌)。当执行它们时,将会复制出一个或多个自身的副本。以后这些副本可以在同一个系统中或其它系统中被激活。值得注意的是,随着恶意代码编写技术的提升,各种代码之间都在取长补短,所以有些恶意代码可能包含其它的恶意代码。例如逻辑炸弹或特洛伊木马可能是病毒或者蠕虫的一部分。 恶意代码后门(Backdoor/Trapdoor,陷阱门):是进入程序的一个秘密入口。知道这个后门的人就可以通过它绕过访问控制的一般安全检查,而直接获得访问权限。很多年来,程序员为了调试和测试程序一直合法地使用后门。当这些后门被用来获得非授权访问时,后门就变成了一种安全威胁。逻辑炸弹(LogicBomb)合法程序中的代码,当符合某种条件的时候就会“爆炸”。用来触发逻辑炸弹的条件可以是某些文件的出现或缺失、某个日期或星期几、某一特定用户运行该应用程序等。 恶意代码特洛伊木马(TrojanHorse)特洛伊木马程序是一个有用的(或表面看起来很有用的)程序或命令过程,其中包含了秘密代码。当调用的时候,这些秘密代码将执行一些不必要的或有害的操作。当未授权用户无法直接完成某些操作的时候,就可以通过特洛伊木马程序来间接完成。比如在一个多用户操作系统中,如果想访问其它用户的文件,那么用户就可以创建一个特洛伊木马程序。当执行它的时候,将改变用户文件的访问权限,这样,任何用户都能读取它。接着攻击者为了诱使用户运行该程序,就会把它放在公共目录里,并给它取一个听起来好像是一个很有用的程序的名字。当另一个用户运行该程序后,攻击者就能够访问该用户的文件信息了。很难被检测到的一种特洛伊木马程序就是编译器。通过修改正常的编译器,就可以在编译某些程序的时候插入附加代码,比如系统登录程序。该代码在登录程序中留下后门,这样攻击者就可以使用特殊的口令登录到系统中。 恶意代码病毒(Virus)病毒是能够通过修改其它程序而“感染”它们的一种程序。修改以后的程序里面包含了病毒程序的一个副本,这样它们就能够继续感染其它程序。细菌(Bacteria)细菌是那些不会直接损坏文件的程序,它们的惟一目的就是复制自己。细菌以指数的形式增长,最终会占用全部的处理器、内存或磁盘空间,从而使用户无法访问这些资源。蠕虫(Worm)网络蠕虫通过网络连接从一个系统向另一个系统传播。一旦在一个系统中激活,网络蠕虫就能够像计算机病毒或细菌一样活动。它也能植入特洛伊木马程序或执行一些破坏性动作。 恶意代码在复制自身的时候,网络蠕虫会使用一些网络工具。这包括:电子邮件功能:蠕虫会把自身的副本邮寄到其它系统中去远程执行能力:蠕虫能够运行其它系统中的副本。远程登录能力:蠕虫能够像用户一样登录到远程系统中,然后使用系统命令从一个系统向另一个系统复制自身。这样,蠕虫程序的一个新的副本就在远程系统中运行了。网络蠕虫和计算机病毒有很多相似之处,包括休眠期、传播期、触发期和执行期等。 病毒与数据安全恶意代码病毒的概念和起源病毒的危害和传播方式病毒的特点和分类病毒的一般结构病毒的工作原理杀毒技术 计算机病毒的概念计算机病毒是一种特殊的计算机程序,由于计算机病毒具有与生物学病毒相类似的特征(潜伏性、传染性、发作期等),所以人们就用生物学上的病毒来称呼它。计算机病毒程序比较小,一般不会超过5KB。与计算机其它合法程序一样,可以存储,可以执行,但是它没有文件名,不能在磁盘中以文件的形式独立存在。 计算机病毒的概念1994年2月28日,我国出台的《中华人民共和国计算机安全保护条例》对病毒的定义如下:“计算机病毒是指编制、或者在计算机程序中插入的,破坏数据、影响计算机使用,并能自我复制的一组计算机指令或者程序代码。”这只是计算机病毒的狭义定义,就广义而言,计算机病毒是指凡驻留于计算机内部(指掌握着系统的控制权),对系统原有功能进行非正确或用户未预计修改的程序。常见的广义上的计算机病毒有逻辑炸弹、特洛伊木马等。 计算机病毒的概念计算机病毒寄生于磁盘、光盘等存储介质当中。这时它是静态的,不会感染,也不会起破坏作用。当用寄生了病毒的磁盘启动计算机时,或者执行染毒程序时,病毒就会随着合法程序的运行进入计算机内存,这时病毒进入活跃状态,随时可以进行感染和破坏,这个过程被称为病毒激活。病毒被激活后,随时可能进行感染和破坏。不同的病毒有不同的感染目标,病毒的破坏行为也是不同的。虽然现在对计算机病毒的定义存在着差异,但都肯定这样的一个事实,即:计算机病毒是一种特殊的程序。 第二次作业根据概念,通过网络学习病毒相关知识内容:病毒的类型,功能或危害,原理可以根据后面讲的病毒类型去搜集可以根据病毒造成的危害分类要求:分组搜集病毒,组长协调不要重复。以PPT形式作报告,5-10分钟讲解。时间:4月8号下午5点前发到邮箱 病毒的起源“计算机病毒”一词首次出现在1977年由美国的ThomasJ.Ryan出版的一本科幻小说《TheAdolescenceofP-1》中。在这部小说中作者幻想出世界上第一个计算机病毒,它可以从一台计算机传播到另一台计算机,最终控制7000多台计算机的操作系统,造成了一场大灾难。10年后,计算机病毒由幻想变成现实,并广为传播。 病毒的起源一般认为,计算机病毒的发源地在美国。早在20世纪60年代初期,美国电报电话公司贝尔研究所里的一群年轻研究人员常常做完工作后留在实验室里饶有兴趣的玩一种他们自己创造的计算机游戏,这种被称为“达尔文”的游戏很刺激。它的玩法是,每个人编一段小程序,输入到计算机中运行,互相展开攻击并设法毁灭他人的程序。这种程序就是计算机病毒的雏形,然而当时人们并没有意识到这一点。 病毒的起源也有人认为,计算机病毒来源于爱好者的表现欲。这些人编制计算机病毒的目的不是为了破坏,而是为了显示他们渊博的计算机知识和高超的编程技巧。又有一些人认为,计算机病毒来源于软件的加密技术。软件产品是一种知识密集的高科技产品,软件产品的研制耗资巨大,而且生产效率很低,但复制软件却异常的简单。由于各种原因,社会未能给软件产品提供有力的保护,大量存在非法拷贝和非法使用的情况,严重地损坏了软件产业的利益。 病毒的起源为了保护软件产品,防止非法复制和非法使用,软件产业发展了软件加密技术,使软件产品只能使用,不能复制。早期的加密技术只是为了自卫,可以使程序锁死,使非法用户无法使用,或者使磁盘“自杀”,防止非法用户重复破译。后来随着加密与破译技术的激烈对抗,软件加密从自卫性转化为攻击性,于是产生了计算机病毒。还有人认为,计算机病毒来源于感情的寄托。有些病毒信息具有明显的感情色彩,表明病毒制造者借用病毒发泄心中郁愤,这种病毒的发作显示信息往往直书心意。 病毒的起源计算机界真正认识到计算机病毒的存在是在1983年。在这一年11月3日召开的计算机安全学术讨论会上,美国计算机安全专家科恩(FrederickCohen)博士首次提出了计算机病毒的概念,随后获准进行实验演示。由此证实了计算机病毒的存在,并证明计算机病毒可以在短时间内实现对计算机系统的破坏,且可以迅速地向外传播。 病毒与数据安全恶意代码病毒的概念和起源病毒的危害和传播方式病毒的特点和分类病毒的一般结构病毒的工作原理杀毒技术 病毒的危害计算机病毒都有感染性,它能广泛传播,但这并不可怕,可怕的是病毒的破坏性。归纳起来,计算机病毒的危害大致有如下几个方面:破坏磁盘文件分配表(FAT表)。使磁盘的信息丢失,这时使用DIR命令察看文件,就会发现文件还在,但是文件的主体已经失去联系,文件已无法再用。删除软盘或磁盘上的可执行文件或数据文件,使文件丢失。修改或破坏文件中的数据,这时文件的格式是正常的,但内容已发生了变化。这对于军事部门或金融系统的破坏是致命的。 病毒的危害产生垃圾文件,占据磁盘空间,使磁盘空间逐渐减少。破坏硬盘的主引导扇区,使计算机无法启动。对整个磁盘或磁盘的特定扇区进行格式化,使磁盘中的全部或者部分信息丢失。破坏计算机主板上BIOS内容,使计算机无法工作。破坏网络中的资源。占用CPU运行时间,使运行效率降低。破坏屏幕正常显示,干扰用户的操作。破坏键盘的输入程序,使用户的正常输入出现错误。破坏系统设置或对系统信息加密,使用户系统工作紊乱。 病毒的传播方式病毒若想摧毁对方的计算机系统,必须先夺得对方计算机系统的控制权,当用户运行一个带病毒的可执行文件时,首先执行的是病毒体程序,而不是原程序本身。病毒程序在执行过程中,如果驻留内存,则它首先要修改中断向量,使这个向量指向病毒,以便及时获得控制权。如果不驻留内存,则它将寻找感染对象并感染之。病毒的传播途径有五种:利用电磁波;利用有线线路传播;直接放毒;利用微波传输;利用军用或民用设备传播。 病毒与数据安全恶意代码病毒的概念和起源病毒的危害和传播方式病毒的特点和分类病毒的一般结构病毒的工作原理杀毒技术 病毒的特点计算机病毒是一种特殊的程序,除与其它正常程序一样可以存储和执行之外,还具有以下几个与众不同的特点。感染性(传染性)计算机病毒的感染性是指病毒把具有自身复制到其它程序中的特性。感染性是病毒的根本属性,也是判断一个可疑程序是否是病毒的主要依据。计算机病毒多有自己的标志。当染毒程序运行时,病毒随着合法的程序进入计算机系统,虎视眈眈的监视着计算机的运行,一旦发现某个程序没有自己的标志,也就是说,没有被感染,就立刻发起攻击。还有一些病毒,不管有没有被自己感染过,只要有机会就发起攻击,形成重复感染。 病毒的特点潜伏性(隐蔽性)计算机病毒的潜伏性是指病毒具有依附其它媒体而寄生的能力。计算机感染病毒后并不是马上破坏计算机系统的,而是要潜伏一段时间,这就是病毒的潜伏期。从病毒感染某个计算机系统开始到该病毒发作为止的这段时间,就是病毒的潜伏期。病毒之间潜伏性的差异很大。有的病毒非常外露,每次病毒程序运行的时候都企图进行感染,但是这种病毒的编制技巧比较粗糙,很容易被人发现,结果是以很高的感染效率换来很短的生命;有的病毒非常不容易发现,它通过降低感染发作的频率来隐蔽自己,侵入系统后不露声色,以看上去近似偶然的机会进行感染,以求获得较大的感染范围,一段时间后突然发作进行破坏。与外露型病毒比较,这种隐蔽型的病毒更为凶狠、可怕。 病毒的特点可触发性计算机病毒因某个事件或某个数值的出现,诱发病毒进行感染或进行破坏,称为病毒的可触发性。为了隐蔽自己,病毒必须潜伏下来,少做动作。但如果完全不动,又失去了作用,因此病毒为了又隐蔽自己,又保持杀伤力,就必须给自己设置合理的触发条件。每个病毒都有自己的触发条件,这些条件可能是时间、日期、文件类型或某些特定的数据。如果满足触发条件,病毒就进行感染或破坏,如果还没有满足条件,病毒就继续潜伏。 病毒的特点破坏性病毒破坏文件或数据,甚至破坏主板,干扰系统的正常运行,称为计算机病毒的破坏性。病毒的破坏性只有在病毒发作的时候才体现出来。病毒的破坏程度取决于病毒制造者的目的和技术水平。病毒的破坏行为可以是不同程度的损坏。一些病毒只是干扰系统的运行,如干扰屏幕显示、降低机器的运行速度等;有一些病毒却能给计算机系统造成不可恢复的破坏,如将用户的信息删除。世界上每年由于计算机感染病毒造成的损失达数亿美元。第二个层面就是以上说的由于衍生性给病毒家族带来了更多的变种,使人们防不胜防。这正像感冒病毒一样,具有多种变种,因此使很多感冒药的使用周期很短,迫使人类加快新感冒药的研制。 病毒的分类按攻击对象分类攻击DOS的病毒:已发现的病毒中,攻击DOS的病毒种类最多,数量最多,而且每一种病毒都有变种,所以,这种病毒传播得最广泛。如小球病毒就是国内发现的第一个DOS病毒。攻击Windows的病毒:攻击Windows的病毒主要是宏病毒,有感染Word的宏病毒,有感染Excel的宏病毒,还有感染Access的宏病毒,其中感染Word的宏病毒最多。如Concept病毒是世界上首例感染Word的宏病毒。攻击网络的病毒:随着Internet的迅猛发展,没有在网络中徜徉过的人已经成为了时代的弃儿,上网已经成为了一种时尚。随着网络用户的增加,网络病毒的传播也就更为迅速与广泛,病毒造成的危害也就越大。如GPI病毒就是世界上第一个专门攻击网络的病毒。 病毒的分类按寄生方式分类操作系统型病毒:这类病毒寄生在计算机磁盘的操作系统引导区,在启动计算机时,能够运行病毒程序,然后再运行启动程序。这种病毒的破坏力很强,可使系统瘫痪,再也无法启动。入侵型病毒:这类病毒将自己插入到感染的目标程序中,使病毒程序与目标程序成为一体。这类病毒程序写起来很难,要求病毒在感染程序中自动地找到恰当的位置,把自身插入,同时还要保证病毒可以正常的实施攻击,且感染的程序还可以正常的运行。这类病毒数量不多,但是危害极大,而且很难检测,有时候即使是查出病毒并将它杀除,但是被感染的程序也已经没法再使用了。外壳型病毒:外壳型病毒寄生于被感染程序的头部或尾部,对源程序不作改动。这类病毒易于编写,数量也最多。 病毒的分类按破坏力分类良性病毒:指的是那些只表现自己,而不破坏计算机系统的病毒。它们多是出自一些恶作剧的人之手,病毒编制者不是为了对计算机系统进行破坏,而是为了显示他们在计算机编程方面的技巧和才华,但是这类病毒会干扰计算机系统的正常运行。恶性病毒:恶性病毒就像是计算机系统的恶性肿瘤,它们的目的就是为了破坏计算机系统的信息资源。常见的恶性病毒破坏行为就是删除计算机内存的数据与文件;也有的是不删除文件,而是让磁盘乱作一团,表面上看不出有什么破坏痕迹,但是原来的数据和文件都已经改变;还有的对硬盘或磁盘进行格式化,使上面的信息全部丢失;甚至有更厉害的,如CIH病毒,它不仅能够破坏计算机系统的资源,还可以破坏计算机的硬件。 病毒的分类感染方式引导型病毒:也称作磁盘引导型病毒。引导型病毒就把自己存放在磁盘的引导区,当作正常的引导程序,而将真正的引导程序搬到其它位置(一般在主引导区和C盘引导区之间的隐含扇区)。计算机启动时,就会把病毒程序当作正常的引导程序来运行,使寄生在磁盘引导区的静态病毒进入计算机系统,病毒于是变为活跃状态(也称作被激活),这时病毒就可以随时的进行感染和破坏了。这种病毒的感染目标是一致的,所以比较好防治。系统程序病毒:操作系统的程序称作系统程序。系统程序型的病毒专门感染操作系统程序,一旦计算机感染上这样的病毒,操作系统一运行,这台计算机就成为传播病毒的基地。一般应用型病毒:这类病毒感染计算机的一般应用程序,如电子表格等。 病毒与数据安全恶意代码病毒的概念和起源病毒的危害和传播方式病毒的特点和分类病毒的一般结构病毒的工作原理杀毒技术 病毒的一般结构计算机病毒是一种特殊的程序,它寄生在正常的、合法的程序中,并以各种方式潜伏下来,伺机进行感染和破坏。在这种情况下,我们称原先的那个正常的、合法的程序为病毒的宿主或宿主程序。计算机病毒具有感染和破坏能力,这与病毒的结构有关,病毒程序一般由感染标记、感染程序模块、破坏程序模块和触发程序模块等四个部分组成。 病毒的一般结构感染标记它又称为病毒签名。病毒程序感染宿主程序时,要把感染标记放到宿主程序中,作为该程序已经被感染的标记。感染标记是一些数字或字符串。病毒在感染健康的程序之前,先要对感染对象进行搜索,查看它是否已被感染,带有感染标记。如果有,说明它已被感染过,如果没有,病毒将感染该程序。不同的病毒有不同的感染标记,感染标记的位置也不同。但是,并不是所有的病毒都有感染标志,可以重复感染的病毒就没有。 病毒的一般结构感染程序模块感染程序模块是病毒程序的重要组成部分,它负责病毒的感染工作,主要完成三件事:寻找目标。一般是一个可执行文件,如EXE文件或COM文件。检查该文件是否有感染标记。如果没有,则进行感染,将病毒程序和感染标记放入宿主程序中。 病毒的一般结构破坏程序模块破坏程序模块负责病毒的破坏工作。计算机之所以可怕是因为它对计算机系统有破坏能力,由于病毒编写者的目的不同,病毒的破坏力也不同。触发程序模块病毒的触发条件是由现有病毒的编制者设置的,触发程序判断触发条件是否满足,并根据判断结果来控制病毒的感染和破坏动作。触发条件有多种形式,例如:日期、时间、发现某个特定程序、感染的次数、特定的中断调用次数等,还可以是这些条件的组合。 病毒与数据安全恶意代码病毒的概念和起源病毒的危害和传播方式病毒的特点和分类病毒的一般结构病毒的工作原理杀毒技术 病毒的工作原理引导型病毒工作原理文件型病毒工作原理宏病毒工作原理网络病毒工作原理 引导型病毒的工作原理引导型病毒感染的是硬盘的主引导区或软盘的引导扇区,它是BIOS调入内存的第一个程序。病毒常驻内存,一旦满足条件(调用了被病毒修改后的某个中断服务程序),病毒就会兴风作浪。软盘引导区被感染的传染机制也差不多,但是病毒感染引导扇区的隐蔽性比较差。大麻病毒就是一种很典型的引导型病毒。它也叫做石头病毒或新西兰病毒。它感染硬盘的0柱面0头1扇区,即硬盘的主引导扇区或者感染软盘的0磁道0头1扇区,即软盘的引导扇区。 引导型病毒的工作原理对硬盘而言,正常的引导程序放在第7个扇区,对于软盘则放在根目录区中的某一扇区。大麻病毒的程序长度有512个字节。病毒将自身驻留到计算机的内存高端,使内存总量比实际值少2KB。发作时,在屏幕上显示:“YourPCisnowstoned!”它的工作原理如下。 引导型病毒的工作原理加载过程由于大麻病毒将自身存放在硬盘的主引导扇区(软盘的引导扇区),因而系统启动时,自举程序便把病毒体当作系统的引导程序装入到内存,并将系统控制权交给病毒程序。就这样,大麻病毒简简单单地得到了控制权。病毒修改INT13H的程序入口地址(即中断向量,INT13H是磁盘中断),将其指向病毒程序本身,同时把正确的INT13H的程序入口地址保留好。 引导型病毒的工作原理加载过程接下来减少DOS可用的内存空间,使病毒程序常驻内存。最后把正确的主引导区(对软盘而言是引导扇区)原来的内容调入内存,开始正常的计算机启动程序。这样一来,今后一旦其它的应用程序借助这个中断程序进行有关的键盘操作,首先就被病毒盗取控制权,执行病毒程序,再由病毒程序将控制权交给原有的中断服务程序完成正在执行的磁盘操作。当然在病毒获得控制权以后,它可以进行传播和破坏。 引导型病毒的工作原理传染过程当其它程序通过INT13H中断服务程序执行磁盘操作时,由于这时该中断向量已经指向了病毒程序,因此病毒程序自动地获得控制权,首先运行。病毒程序先判断一下是否是读盘操作,若是,则把当前磁盘的0号相对扇区读入内存,并判断它是否感染过这个病毒。如果已经感染了,则执行正常的读盘操作,没有必要再感染一次;若没有被感染,则把正常的0扇区内容放到病毒指定的位置(对软盘而言是根目录区中的某一扇区,对硬盘而言是文件分配表的第7扇区),再将病毒程序写入该磁盘的0号扇区。这样病毒就将自身复制了一份放在原来未感染的磁盘上,完成其传播。传播之后,病毒程序再执行正常的磁盘操作。 引导型病毒的工作原理破坏过程大麻病毒并没有专门的破坏过程。以上讲过,病毒要把原引导区写到硬盘文件分配表的第7扇区。既然是文件分配表的第7扇区,那么DOS就会认为这个扇区中表项为0的对应磁盘上的簇是自由空间,于是就会把数据存放进去。这样一来,经过一段时间,这个主引导扇区中所有的为0的字节都被填充了其它内容,以至于硬盘主引导程序被破坏,将来病毒调用它来启动计算机时就无法启动起来。 引导型病毒的工作原理破坏过程假如在病毒把主引导扇区写到FAT的第7扇区前的这部分文件分配表所对应的磁盘上的数据区已经分配完毕,那么这部分的文件分配表项就出错了,这将导致一些文件的丢失。而对于软盘而言,如果写进去的根目录扇区已经有目录表项占用,那么这几个文件的数据表项就丢失了;如果该位置还没有目录表项占用,那么就损失了16个文件目录表项(一个扇区512个字节,一个目录表项为32个字节,所以512/32=16)。 病毒的工作原理引导型病毒工作原理文件型病毒工作原理宏病毒工作原理网络病毒工作原理 文件型病毒的工作原理文件型病毒专门攻击后缀名是COM、EXE、SYS、DLL等的可执行文件。上面说了,因为它感染的是可执行文件,所以它要迟于引导型病毒。它也有像引导型病毒一样的加载、感染、破坏过程。以下以著名的耶路撒冷病毒为例来说明它的工作原理,如图1所示。耶路撒冷病毒也叫做黑色星期五病毒,因为它有两个触发条件,所以它有两种破坏方式:一种是使计算机速度降低20%;另一种是删除可执行文件。它使染毒文件增加1813个字节。 图1耶路撒冷病毒加载过程 文件型病毒的工作原理加载过程当运行感染了耶路撒冷病毒的可执行文件时,现有病毒将获得系统的控制权。病毒随即判断它是否已常驻内存,如果已常驻内存,则把控制权交给可执行文件,进行正常操作;如果没有的话,则先把病毒调入内存,然后修改INT21H中断向量,将其指向病毒程序所在的内存地址,并保存正常的INT21H中断向量。修改完毕后,病毒程序判断计算机日期是否是13日,随后再判断是否是星期五,若同时满足这两个条件则置某一特征单元(0EH)为1,否则为0。最后,调用DOS常驻内存功能把病毒体常驻内存,然后把控制权交给可执行文件,执行正常的程序操作。 文件型病毒的工作原理传染过程耶路撒冷病毒加载之后,时刻等待时机准备传染。它监视INT21H中断,当用户执行INT21H的4BH号功能时(INT21H是DOS的系统管理功能调用,有很多功能,分别用功能号来表示,其中4BH号功能为加载程序功能,用的很多,一般外部命令的执行都需要用这个中断服务程序),病毒程序获得控制权,它先判断0EH单元的值,如为0则进行感染,若为1则运行发作程序段。 文件型病毒的工作原理传染过程耶路撒冷病毒感染后缀名为COM和EXE的可执行文件的机制稍有不同。传染前者时,它首先申请64KB内存,若申请成功,将病毒程序传送到该内存区的前端;其次将原有文件读入内存紧接病毒程序存放,同时病毒标志"MsDos"追加到原程序尾;最后将这三部分内容统一存盘,并退出病毒传染程序。感染后者时,比较复杂,首先修改文件头信息,修改过程为:(a)将文件头控制信息读入自内存4FH开始的1CH个单元中;(b)将值1984H送入61H单元;(c)将堆栈段和代码段的入口地址送43H~4AH单元保存; 文件型病毒的工作原理传染过程(d)修改051H~054H单元值,使文件总长度增加710H~71FH中的某一段;(e)修改5DH~60H和63H~64H值,使其指向程序中病毒代码的入口和其所新设堆栈入口;(f)将修改后的文件控制头信息写回原文件。完成对EXE文件头控制信息的修改后,传染程序移动文件指针到病毒程序存放处,最后将传染程序在内存中驻留的710H字节病毒存入位于文件结尾处的磁盘存储区,退出病毒传染程序。 文件型病毒的工作原理发作过程如果0EH值为1,则修改文件属性,然后删除任何一个在计算机上运行的COM或EXE文件,退出发作程序,执行原4BH号功能调用。如果不为1,则病毒程序内部有一个计数器,它对系统调用INT8H中断的次数进行计数,当计数值为0时,病毒强迫计算机运行一段无用程序,使系统工作速度减慢。如果计数值为2,病毒在屏幕上显示一个“长方块”的小窗口。 病毒的工作原理引导型病毒工作原理文件型病毒工作原理宏病毒工作原理网络病毒工作原理 宏病毒的工作原理宏病毒是新型病毒的代表,它是随着Microsoft的办公自动化软件Office的流行开始慢慢流行起来的。为了减少用户的重复劳作,比如进行相似的操作,Office提供了一种所谓宏的功能。利用这个功能,用户可以把一系列的操作记录下来,作为一个宏,之后只要运行这个宏,计算机就能自动地重复执行那些定义在宏中的所有操作。这种宏操作一方面方便普通的计算机用户,另一方面给病毒制造者提供了可乘之机。简单地说,宏是一组批处理命令,是用高级语言编写的一段程序。 宏病毒的工作原理宏病毒的传播方法与其它病毒不同。在Office目录下,有一个“Templates”目录,里面有一个Normal.dot文件,每次我们启动Word的时候,该文件都会先被Word启动并执行里面的VBA语句(宏语句)。大多数宏病毒都会采用感染Normal.dot,把自身的恶意VBA语句复制到Normal.dot里面。这样,Word每次启动时都执行里面的恶意VBA语句,并将自己的代码复制到其它Word文档里面的方法来达到传染的目的。 宏病毒的工作原理当用户打开一个感染了Word宏病毒的文档时,就等于激发了Word宏病毒的运行,它将组成宏病毒的其它几个宏复制到Word的通用模板Normal.dot中。这就相当于感染了用户的Word本身,使得以后新建或打开的文档都将被宏病毒感染。其中有些宏与文件的保存和关闭有关,如FileSaveAs、FileSave、FileClose等。当用户保存或关闭文档时,激发这些宏的运行,将当前的文档转换成模板形式保存,并将宏病毒代码添加在文档中,使其成为原先宏病毒的复制品,完成了病毒的复制,为其再次传播提供可能。 宏病毒的工作原理除了Word宏病毒外,还出现了感染Amipro、Eexel、Access的宏病毒。宏病毒还可以在它们之间进行交叉感染,并由Word感染Windows的VXD。很多宏病毒具有隐形、变形能力,并具有对抗反病毒软件的能力。宏病毒还可以通过电子邮件等功能自行传播。一些宏病毒已经不再在FileSaveAs时暴露自己,并克服了语言版本的限制,可以隐藏在RTF格式文档中。 宏病毒的工作原理七月杀手是第一只能格式化硬盘的宏病毒(正确来说应该是把C盘的文件全部删除)。为了对付这些层出不穷的宏病毒,Microsoft公司从取消了几个重要的宏的复制命令语句。另外,各种杀毒软件也针对着宏的复制命令来判断一个宏是否为病毒。七月杀手成功地避开了复制语句,它先在C盘下新建一个叫做“class.sys”的隐藏文件,然后把自身代码写到该文件里,传播时再从该文件里读取代码,再写到其它文档里面。 宏病毒的工作原理计算机一旦被七月杀手病毒感染,就会经常出现保存Normal.dot的对话框。另外,很多菜单选项都失灵了(“工具”菜单基本上都无效了),无法通过VisualBasic编辑器来查看宏代码,这是宏病毒的最典型特点。再检查Normal.dot的文件大小,发现其由正常的28672字节变成了69724字节,还有在注册表中HKEY_CURRENT_USERSoftwareMicrosoftOffice8.0WordOptions主键下,以EnableMacroVirusProtection为键名的键值变成了“0”(原来该值为“1”)。 宏病毒的工作原理这样一来,Word的自动检测宏的能力就完全被禁止了。通过以上种种现象,可以肯定这台电脑中了宏病毒,但是用杀毒软件却又查不出个究竟。这时,就应尝试用人工的方法:删除Normal.dot文件,这个文件删除后,Word会在下次启动时自动恢复;修改注册表,把EnableMacroVirusProtection的值由“0”改成“1”,恢复Word的检测宏的能力。 CIH病毒的工作原理CIH病毒从分类来说属于文件型病毒(只感染Windows9X下的可执行文件)。之所以对它进行专门的分析是因为它是第一种可以破坏硬件的病毒,杀伤力极强。CIH攻击的就是用户的主板,发作时有两个症状:一个是让ROMBIOS处于特殊的电子状态,从而擦除BIOS中的数据(当然也指其中的程序);另一种是从硬盘的主引导区开始作低级格式化。一旦ROMBIOS中的程序被破坏了,那么计算机连开机自检、系统引导都无法进行了,因而这台计算机就不能引导操作系统了。CIH病毒感染32位程序时,并不增加被感染文件的长度,而是把病毒体拆成几部分,寻找被感染程序的空当插入。 CIH病毒的工作原理CIH病毒的加载、感染、破坏则是利用了Windows的VXD(虚拟设备驱动程序)编程方法。目的是获取高的CPU的权限。接着,CIH病毒将检查DR0寄存器的值是否为0,用以判断是否已有CIH病毒驻留。如果值不为0,则表示CIH病毒程序已驻留,则此CIH副本将恢复原先的INT3H入口地址,然后正常退出。如果值为0,则CIH病毒将尝试进行驻留,并首先将当前EBX寄存器的值赋给DR0寄存器,以生成驻留标记然后调用INT20H中断,要求分配Win系统的内存区。如果申请成功,则从被感染文件中将原先分成多段的病毒代码收藏起来,并进行组合放到申请成功的内存空间中。 CIH病毒的工作原理CIH不会重复感染32位可执行文件,感染文件后,文件的日期与时间信息将保持不变。绝大多数的32位可执行程序感染后,程序的长度将保持不变,CIH会把自身分成多段,插入到程序的空域中。完成驻留工作后的CIH病毒将把原先的IDT中断表中的INT3H入口恢复成原样。当然,如果重新启动计算机,而不运行感染有CIH病毒的程序,则内存中将不再存在病毒,因而更加具有隐蔽性。只有再一次运行含有CIH病毒的程序时,系统才会再次携带病毒。 病毒的工作原理引导型病毒工作原理文件型病毒工作原理宏病毒工作原理网络病毒工作原理 网络病毒的工作原理网络互联有两种含义:一种是指局域网;另一种含义是指互联网。局域网上的病毒,称之为传统的网络病毒,一般有Novell和UNIX操作系统下的病毒;随着互联网的兴起以及Winodws体系架构的流行产生新的网络病毒。互联网提供了众多的服务,如电子邮件服务、文件传输服务等。病毒可以利用这些服务来传播,因而可以把网络病毒分为邮件病毒、网页病毒、FTP病毒等。其中,邮件病毒在网络病毒中占绝大多数。 网络病毒的工作原理RemoteExplorer(远程探险者)病毒是传统的网络病毒。它需要通过网络方可实施有效的传播;同时,它要想攻入网络,本身必须具备系统管理员的权限。该病毒仅在WindowsNTServer和WindowsNTWorkstation平台起作用,专门感染EXE文件。RemoteExplorer的破坏作用主要表现在:加密EXT、TXT和HTM文件,并且能够通过局域网或广域网进行传播。 网络病毒的工作原理当具有系统管理员权限的用户运行了被感染的文件后,该病毒将会作为一项NT的系统服务被自动加载到当前的系统中。此后,如果打开系统服务清单,就会发现多了一项NT系统服务。这项新增系统服务的文件就是WinNTSys-tem32driversIE403R.SYS。为增强自身的隐蔽性,该系统服务会自动地修改RemoteExplorer在NT服务的优先权,在工作日(周一到周五)的6时到15时,RemoteExplorer将自己的优先权设置为最低,而在其它时间则将自己的优先级提升一级,以便加快传染。 网络病毒的工作原理RemoteExplorer的传播无需普通用户的介入。该病毒侵入网络后,直接使用远程管理技术监视网络,查看域登陆情况并自动搜集远程计算机的数据,然后再利用所搜集的数据(如口令)将自身向网络中的其它计算机进行传播。该病毒对文件系统有两方面的破坏作用:一方面,RemoteExplorer几乎不检查被感染对象是否是一个WIN32可执行文件,因此一些DOS或16位Windows应用程序也可被感染,受感染的这些文件就再也不能正常工作;另一方面,EXE文件被感染后长度大致增加125KB。感染完成后,目标目录中所有其它文件,除DLL和TMP类型之外均被加密,以至无法正常打开。 网络病毒的工作原理电子邮件病毒也是网络病毒的一种。电子邮件有很多扩展功能,附件就是其中最常用的一种。依靠这种功能,用户可以把任何一个文件作为电子邮件的附属部分发送给对方。病毒也可以随之传播出去。与CIH病毒齐名的是“梅丽莎”(Melissa)病毒。这种病毒是通过Word宏和Outlook(用于收发电子邮件的程序)来传染的,当你收到一个带有这种病毒的邮件时,这个电子邮件有一个附件,附件的文件名为list.doc。 网络病毒的工作原理如果你打开这个附件,这个文档文件中的宏病毒就会获得控制权,然后这个宏病毒控制Outlook,给用户的电子邮件地址列表中前50个地址发送电子邮件,邮件的内容就是该用户收到的电子邮件内容。有一种名为“BubbleBoy”(泡沫男孩)的病毒,即使用户不打开染有病毒的附件仍有被感染病毒的可能。 病毒与数据安全恶意代码病毒的概念和起源病毒的危害和传播方式病毒的特点和分类病毒的一般结构病毒的工作原理杀毒技术 杀毒技术病毒的一般消除方法病毒检测技术类属解密(GenericDecryption)数字免疫系统 病毒的一般消除方法当我们确定计算机系统已经感染上病毒时,就要做消除病毒的工作。消毒的目的是解除对计算机系统的威胁和传染,这项工作一般采用以下三种方法。软件编程法系统再生法手工操作法 病毒的一般消除方法软件编程法用户使用自己编制的杀毒软件或购买现成的杀毒软件消除病毒,我们称这种方法为软件编程解毒法。这种方法的优点是适合于大批量处理感染磁盘,且处理速度快,缺点是如果编制不当,容易使清除后的软件功能受到影响,或系统不能启动,有的甚至不能恢复被病毒破坏的资源。 病毒的一般消除方法系统再生法系统再生法是消除系统内病毒的最有效的方法,即重新进行硬盘的分区和磁盘格式化。但是使用这种方法的前提是用户的硬盘或软盘数据文件一定要有备份,如果没有备份的话,造成的损失比病毒造成的还要大。因此,当因病毒侵入而不得不采取这种方法时,一定要注意这个问题。如果是过程病毒(即依附于可执行文件体内的或单独存在于计算机系统中的病毒),使用同名文件覆盖的方法也可以消除病毒。 病毒的一般消除方法手工操作法手工操作法适用于没有杀毒软件或者被感染的磁盘很少的情况。优点是简单、快捷;缺点是错误率高,稍有操作不当,可能会造成更大的破坏,而且需要一定的技术作保证。系统提供的动态调试工具DEBUG(DOS程序调试)和微软提供的调试工具都可以用于消除病毒。用这些工具时,一定要注意不能破坏系统原有的功能或文件原有的功能。 杀毒技术病毒的一般消除方法病毒检测技术类属解密(GenericDecryption)数字免疫系统 病毒检测技术计算机病毒检测技术是通过对计算机病毒的特征来进行病毒判断的技术,如自身校验、关键字、文件长度的变化等。计算机病毒的检测分为对内存的检测和对磁盘的检测两种,这是因为病毒静态时存储于磁盘中,而激活时驻留在内存中。在这两种检测中,内存的检测带有一定的动态性和不确定性。因此,一般对磁盘进行病毒检测时,要求内存中不带病毒。只有在要求确认某种病毒的类型和对其进行分析、研究时,才在内存中带毒的情况下作检测工作。检测磁盘中的病毒又可分成检测引导区型病毒和检测文件型病毒两种。概括来讲,检测病毒的方法有:特征代码法、校验和法、行为监测法、软件模拟法等。 病毒检测技术特征代码法一般的计算机病毒本身存在其特有的一段或一些代码。早期的SCAN、CPAV等著名病毒检测工具均使用了特征代码检测法,它是检测已知病毒的最简单、开销最小的方法。特征代码检测法的优点是准确快速、可识别病毒的名称、误报警率低,并依据检测结果可做解毒处理。 病毒检测技术校验和法对正常文件的内容计算校验和,并将该校验和写入文件中或写入别的文件中保存。在文件使用过程中,定期地或每次使用文件前,按照文件现有内容算出校验和,并与原来保存的校验和进行比较,从而确认文件是否被感染的方法叫做校验和法。这种方法能及时发现被查文件的细微变化,而且既可发现已知病毒又可发现未知病毒。除了将正常的内容计算校验和以外,还可将每个程序的名称、长度、时间、日期等属性值,与文件内容一起进行检验码计算,并将检验码附加在程序的后面,或是将针对所有程序的检验码放在同一个资料库,利用校验和系统,追踪并记录每个程序的检验码是否遭更改,以判断是否中毒。 病毒检测技术行为监测法有一些行为是病毒的共同行为,比较特殊,而且在正常程序中,这些行为比较罕见。归纳各种病毒的共有行为模式,运用反汇编技术分析被检测对象,并利用常驻内存(TSR)手段,随时监控系统中可疑病毒行为的方法,称为行为监测法。病毒的主要行为特征有:占有INTl3H。修改DOS系统内数据区的内存总量。对COM和EXE文件做写入操作。 病毒检测技术行为监测法与特征代码检测法各有各的特点:前者是对动态程序的监测,它知道病毒运行的中间过程或最终要到达的地点,并在那里悄悄地等候病毒的来临;后者是对静态数据的扫描,是在病毒运行前就先抓住它。因此,行为监测法可以发现未知病毒,可以相当准确地预报未知的大多数病毒。但是,使用行为监测法可能产生误报警;且在具体实现时,不容易考虑周全,设计程序有一定难度,而且不能识别出病毒名称。 病毒检测技术软件模拟法多态形病毒每次感染都变换其病毒密码,特征代码法是无效的。虽然行为检测法可以检测多态形病毒,但是在检测出病毒后,因为不知病毒的种类,所以难以做消毒处理。为了检测多态形病毒,可应用新的检测方法——软件模拟法。它是一种软件分析器,用软件方法来模拟和分析程序的运行。开始运行时,使用特征代码法检测病毒,如果怀疑有隐蔽病毒或多态形病毒,就启动软件模拟模块,监视病毒的运行,待病毒用自身的密码译码以后,再运用特征代码法来识别病毒的种类。 病毒检测技术比较法比较法是用原始备份与被检测的数据区域进行比较,从而发现病毒的方法。这里的数据区域可能是引导扇区或是被检测的文件。用这种方法可以发现那些尚不能被现有的查病毒程序发现的计算机病毒。由于要进行比较,因而保留好原始备份是非常重要的,也是比较法的前提和基础。比较法的好处是简单方便,不需专用软件。缺点是无法确认病毒的种类名称。 病毒检测技术分析法分析法更侧重于计算机病毒的研究,适合开发反病毒产品的专业技术人员使用。其基本步骤如下:确认被观察的磁盘引导区和程序中是否含有病毒;确认病毒的类型和种类,判定其是否是一种新病毒;搞清楚病毒体的大致结构,提取特征识别用的字节串或特征字,用于增添到病毒代码库中供病毒扫描和识别程序用;详细分析病毒代码,为制定相应的反病毒措施制定方案。 杀毒技术病毒的一般消除方法病毒检测技术类属解密(GenericDecryption)数字免疫系统 类属解密(GenericDecryption)类属解密技术可以有效地检测多态病毒(PolymorphicVirus)。多态形病毒每次在感染一个新的程序之前都会对自身进行变异,以此达到隐藏自己的目的。因此,被感染了多态形病毒的可执行文件通常由以下几个部分组成:变异引擎、病毒体和原可执行文件。变异引擎产生各种各样的变异算法所对应的机器代码,这些变异代码完成对原病毒体代码指令的加密。 类属解密(GenericDecryption)一个类属解密扫描器通常包括:CPU仿真器:被扫描的可执行文件的运行环境,通常是一个软件仿真的虚拟机。可执行文件在仿真器中逐条执行指令,然后感染其中的文件。病毒签名扫描器:扫描解密出来的病毒体代码。仿真控制模块:控制代码的执行,确保病毒代码不会对实际的底层计算机造成损害。 杀毒技术病毒的一般消除方法病毒检测技术类属解密(GenericDecryption)数字免疫系统 数字免疫系统IBM为了应付日益众多的互联网威胁,对软件模拟法进行了扩展,提出了一种通用的模拟和病毒检测系统,如图2所示。这个系统的目标就是提供快速的响应时间,使得病毒一被引入系统就能被马上识别出来。当一个新病毒进入一个组织时,免疫系统自动地捕获并分析它、增加检测和隔离物、删除它并将有关病毒信息传递给运行着其它反病毒免疫系统的主机,使得病毒在其它地方运行之前就能被检测出来。 图2数字免疫系统 数字免疫系统整个数字免疫系统的工作流程如下:每台计算机上的监视程序使用启发式经验规则(寻找经常使用的代码片段),同时根据系统行为、程序的可疑变化或病毒家族特征码来判断病毒是否出现。监视程序把认为已经感染的程序的副本发送到组织里的管理机上。管理机把样本加密,然后发送到中心病毒分析机器。 数字免疫系统工作流程分析机器创建一个环境,安全运行已经感染的程序,同时进行病毒分析。为了实现这个目的所采用的技术叫仿真技术,即创建一个受保护的虚拟机器环境,在其中可以执行并分析受到怀疑的程序。然后这台病毒分析机开出一个用来识别、消除该病毒的处方。这个最终处方被发送回相应的管理机。这台管理机器把该处方发送给受到感染的客户主机。同时该处方也被发送给组织中的其它客户主机。 移动代码安全移动代码安全技术恶意代码恶意主机 移动代码安全技术移动代码又称移动代理、可下载代码、可执行内容、远程代码等等,它是指在本地执行的远程代码。传统系统中,执行的代码都是驻留在执行代码的主机上,而对于移动代码,执行的代码则是来自远程主机。移动代码与传统的基于客户机—服务器技术的分布式系统作了比较: 移动代码安全技术客户机—服务器模型:客户机和服务器位于不同的主机上,由客户机向服务器发送请求;处理请求所需的资源和代码都位于服务器端。即时响应代码:客户机拥有完成某项操作的资源,但没有如何完成这项操作的代码,客户机通过向远程服务器发送请求,由服务器将代码发送给客户机。这种类型的移动代码包括:Java应用程序、ActiveX控件等。远程计算:客户机拥有描述某项服务的代码,而执行代码所需的资源位于远程服务器上。客户机把代码发送到服务器上,由服务器执行代码并把结果回送到客户机。移动代理:客户机进程在执行期间为了完成某项服务需要访问一些资源,而这些资源位于远程服务器上,于是客户机把客户机进程移植到服务器端并由服务器完成服务。客户机进程会一直停留在服务器上直到下一个客户机进程移植过来。 移动代码安全技术移动代码会导致安全问题的本质在于在运行代码时需要访问系统资源,而代码却是来自于另一台,甚至是不可信的主机。即代码提供者和代码运行者之间可能是互不信任的。移动代码易受到以下几种类型的攻击:泄漏用户或主机的机密信息;拒绝服务:使合法用户无法获得资源;破坏或修改数据;恶作剧攻击:如在用户屏幕上显示图片或在用户主机上播放音乐等。 移动代码安全技术移动代码安全需要考虑以下几个方面:访问控制:规定谁可以使用代码;用户认证:识别合法用户;数据完整性:保证代码在传输过程中未被修改过;不可抵赖:发送者和接收方不能否认使用过代码;数据机密性:保护敏感数据;审计:跟踪移动代码的使用。在前面提到,移动代码安全可以从两个方面考虑:一是恶意代码对本地系统的破坏;二是远程恶意主机对代理的非法使用。接下来,我们将从恶意代码和恶意主机两个方面来讨论移动代码的安全技术。 恶意代码对于Java应用程序类的移动代码,一般的操作是用户下载可执行格式的二进制Applet然后运行。这就很容易带来安全问题:用户必须允许不可信的代码在本机运行,而这些代码可能会随机写内存,从而导致系统崩溃;代码甚至可以读、修改以至删除用户个人文件。在运行Applet之前进行认证可以解决这个问题。通过认证,用户就可以确定它所运行的代码来自于特定的可信源。但是这种方法带来了两个问题:严重限制了用户可以运行的Applet,而不可信服务器也可提供有用的、好的代码;更重要的是来自可信源的代码可能存在bug,从而对用户系统带来恶劣的影响。对该问题的理想解决方法就是阻止不安全的行为。接下来讨论三种解决恶意代码问题的技术:安全解释器、故障隔离和代码验证。 恶意代码安全解释器直接运行二进制代码是很危险的,解决这个问题的常用方法是不使用编译好的可执行代码,而采用解释移动代码的方法。在这种情况下,解释器能很好地控制Applet并能检查每一条指令和每一个状态以决定是否执行Applet。这样,系统的安全性就在于实现解释器的安全策略的正确性上。安全解释器包括Safe-Tcl、Safe-Tcl扩展、Java等等。故障隔离采用安全的解释器系统能很好地解决恶意代码的问题。但是,相对编译的机器码而言,解释器存在严重的性能缺陷:执行JavaApplet比执行一般的二进制代码要慢得多。为此可以转而采用一种称为“沙盒”(sandbox)的方法来获得安全。 恶意代码故障隔离在沙盒模式中,下载的不可信代码的操作将严格局限于沙盒中。沙盒是由运行代码的主机特别为移动代码分配的地址空间。这时,移动代码可以在沙盒中运行,但不会超出沙盒的界限。因此这种沙盒模式为移动代码提供了一个受限的运行环境,在此环境中可以运行从开放网络中获得的不被完全信任的代码(如Applet等)。采用沙盒模式的主要缺点是可下载的代码不再是与平台无关的,而与操作平台无关原本是Java系统的主要设计目标之一。 恶意代码代码验证第三种技术是一种称为证明携带码PCC(Proof-CarryingCode)的技术。JavaApplet作者的任务不仅是把Applet编译成机器代码,还要产生一个安全证明(SafetyProof),用来证明这个代码符合安全策略中指定的安全规则(SafetyRules)。当用户下载代码后,它只要验证代码中的证明,看是否合法并满足安全规则就行。如果是则加载代码并运行它。这种方法是否有效的关键在于哪些程序特性可以表示和证实。PCC已成功应用于最小和最大CPU周期限制、内存的安全使用以及类型安全中。此外,为C语言的安全子集开发了PCC编译器,它可以自动生成安全证明。PCC是一种很有前景的方法,但是,它也存在一些缺点:PCC与平台有关;LF编码的安全策略和安全证明必须和操作系统以及机器硬件密切联系。 恶意主机在移动代理编程中,用户所关心的是其代理能否被正确执行。如一个购物代理可能会携带电子现金,一个主机就可能会欺骗代理使它为某些商品支付高价钱,甚至窃取代理内的金钱。主机为了执行代理,需要访问代理代码和状态,那么如何保证敏感数据的机密性,或者说如何保证代理算法被忠实地执行呢?保护移动代理的限制有:要对代理代码或状态的任意部分保密,就必须采取加密;我们无法阻止拒绝服务攻击,因为攻击者不需要专门可信硬件的帮助就可以任意修改代理代码或终止代理。由此可见,要解决恶意主机问题就要着手于:能够检验篡改;能阻止机密信息泄漏。 恶意主机检测篡改执行跟踪。可以通过产生代理程序执行迹的方法来检测篡改。首先,将代理代码的指令分成两类:只依赖于代理内部状态的指令以及其结果依赖于和计算环境交互的指令。对于前一类指令,服务器只有在代理的任一变量的值发生变化时,才在执行迹中记录其新值;对于后一类指令,不但要记录这些新值,还需要对这些值进行数字签名。 恶意主机检测篡改一旦执行完毕,服务器就计算整个执行迹的密码散列值并将它返回给代理的所有者。这时,如果代理所有者怀疑在执行代理时有违规操作,它就可以要求出示执行迹,那么主机执行代理时就必须生成执行迹(执行迹的散列值可被验证),然后检验执行迹就可确定:主机是否错误地执行了只依赖于内部状态的指令;主机执行代理过程中,在与计算环境交互时是否欺骗了代理。 恶意主机保密在有些情况下,事后检测是不适当的或是不能解决问题的。保密方案是这样的:代理程序计算某个函数f,主机为代理计算f(x)但不需要知道f的任何实质性的内容。协议描述如下:代理所有者加密f;所有者创建程序P(E(f))来实现E(f),并把它放在代理中;代理到达远程主机,在远程主机上计算P(E(f))(x),并把值返回给所有者;所有者解密P(E(f))(x)并获得f(x)。其中,E为某个加密函数。协议的基本思想是把基本算法转化成杂乱算法,使其结果只对代理所有者有意义。 恶意主机总结相比恶意代码而言,恶意主机问题更难以处理,目前还没有实际的、在计算上可行的方法用来检测篡改,而一些可以用来证明发生了篡改的技术也会大大增加服务器的负荷。此外,在一个不友好的环境中运行代理时,有没有可能为代理提供某种类型的机密性还是一个未知数。这些问题的存在或许可以解释移动代理为什么得不到广泛应用。 安全编程缓冲区溢出(BufferOverflow)格式化字符串(FormatString) 缓冲区溢出(BufferOverflow)所谓的缓冲区溢出,是指一种系统攻击的手段,它是通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的的。缓冲区溢出问题大部分是由于在程序中没有进行适当的边界检查造成的。安全问题分析家认为,解决缓冲区溢出问题的第一步是,人们必须更加小心地进行计算机的编程。程序员只要增加能够处理过长字符串的指令,就能够防止对他们的产品的攻击。 缓冲区溢出攻击方式仅仅通过向缓冲区中写入任意超长的字符就可以导致程序崩溃。任意数据覆盖堆栈中变量的内容。安全漏洞的一个经典例子是基于口令的认证:首先从本地数据库中读取口令并存储在本地变量中,然后用户输入口令,程序比较这两个字符串。覆盖堆栈中保存的寄存器。通过输入超长的字符从而覆盖指令指针IP,攻击者可以利用函数结尾的RET来执行程序中的任意程序代码。覆盖函数指针以执行第三方代码。 缓冲区溢出安全建议编写正确的代码必须更加小心地进行计算机的编程。程序员只要增加能够处理过长字符串的指令,就能够防止对自己产品的攻击。使用Libsafe针对这些易受缓冲区溢出攻击的函数,ArashBaratloo、TimothyTsai和NavjotSingh(朗讯技术公司)开发出了封装这些库函数的库函数。Libsafe是一个简单的动态载入库。库中的函数实现了原有功能,但在某种程度上可以确保任一缓冲区溢出都被控制在现有堆栈帧之内。安装Libsafe后,Libsafe解析那些不安全的Libc库函数,并用Libsafe中实现的安全函数代替,由于Libsafe实现边界检查,从而保证了代码的安全。 缓冲区溢出安全建议不可执行的缓冲区技术为了利用缓冲区溢出漏洞以达到攻击的目的,需要向缓冲区中写入可执行代码。因此,防止缓冲区溢出攻击的一个有效方法就是通过使被攻击程序的数据段地址空间不可执行,从而使攻击者不可能执行植入到被攻击程序输入缓冲区中的代码。数组边界检查要实现缓冲区溢出就必须扰乱程序的流程,使程序不按既定的流程运行。如果给局部变量分配的内存空间没被溢出,改变程序运行状态也就无从谈起。为此,我们可以利用一些编译器或工具对程序进行数组边界检查,即当对数组进行读写时要确保对数组的操作是在正确的范围内进行的。 缓冲区溢出安全建议程序指针完整性检查与防止程序指针被改变不同,程序指针完整性检查在程序指针被引用之前检测它是否有变。因此,即便一个攻击者成功地改变了程序的指针,由于系统事先检测到了指针的改变,因此这个指针将不会被使用。目前,程序指针完整性检查大致有以下三个研究方向:手写的堆栈监测StackGuard:提供完整性检测的编译器技术PointGuard:编译器生成代码指针完整性检查 格式化字符串(FormatString)在2000年下半年,一种称之为“格式化字符串”的漏洞开始威胁系统和网络的安全。这种攻击方式与缓冲区溢出类似,也是通过覆盖缓冲区来达到攻击的目的的,只是这种攻击方式是利用格式化函数,如printf()的格式化字符串%n来覆盖缓冲区的。格式化字符串包括两部分内容:一部分是正常字符,这些字符将按原样输出;另一部分是格式化控制字符,以“%”开始,后跟一个或几个规定字符,用来控制输出内容格式。 表1格式化控制符符号作用%d十进制有符号整数%u十进制无符号整数%f浮点数%s字符串%c单个字符%p指针的值%e,%E指数形式的浮点数%x,%X无符号、以十六进制表示的整数%g,%G自动选择合适的表示法%o无符号、以八进制表示的整数%n得到输出字符的个数%m输出错误时相应的字符串提示%%输出正文字符中的 “%”字符 格式化字符串攻击格式化字符串控制着格式化函数所要进行的操作,并指定要打印的参数的数据类型和格式。格式化字符串是一包含文本及格式化参数的ASCII串,如:printf(''Thenumberis:%s '',''2001'');这里,要打印的文本是“Thenumberis:”,后面跟的是格式化参数%s,在输出时将被后面的参数(2001)代替。因此,这条语句的执行结果为:Thenumberis:2001。在这个例子中,格式化字符串指定的参量个数和参量表中的参量个数均为1。一般来说,格式化字符串由程序员定制,因而不会出现太大的安全问题。但是,如果程序中的格式化字符串由用户提供,用户就可以定制格式化字符串实现格式化字符串攻击。 格式化字符串攻击使程序崩溃利用格式化字符串使程序崩溃是比较简单的攻击方法。printf(''%s%s%s%s%s%s%s%s%s'');因为格式参数“%s”显示由堆栈提供的地址内存中的字符串,而堆栈中有许多数据,因此很可能会去读取非法地址中的数据内容,从而导致进程崩溃。同样,我们也可以利用“%n”格式参数向一个地址写数据而导致进程崩溃。 格式化字符串攻击查看进程内存更进一步,可以利用格式化字符串来查看堆栈中的内容。考虑下面的语句:printf(''%08x.%08x.%08x.%08x.%08x '');这条语句将以8位十六进制数的形式依次显示堆栈中的内容,其输出将具有如下形式:40012980.080628c4.bffff7a4.0000005.08059c04这有助于黑客在开发攻击程序时确定地址偏移量。 格式化字符串攻击覆盖内存区格式化字符串攻击更主要的是利用格式化字符串来覆盖内存区,一般覆盖指令指针,改变程序的流程,使调用结束时执行攻击者想要执行的代码。 格式化字符串安全建议格式化字符串漏洞源于函数接受了不可信源(如键盘等)的数据并把这些数据作为格式化字符串。当程序中存在类似snprintf(buf,sizeof(buf),UntrustedUserDataBuffer);的语句时,可能导致格式化字符串漏洞。为了避免格式化字符串漏洞,在编程时应采用如下正确的使用方式:snprintf(buf,sizeof(buf),"%s",UntrustedUserDataBuffer);更一般来说,当采用:my_sprintf(Buffer,"%s",UntrustedUserDataBuffer);方式时,就可以使函数不再解析用户数据中的格式化控制符,从而使程序更安全。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭