贝壳电子书 > 文学历史电子书 > 知者无畏--一个真实的簿世界 >

第27章

知者无畏--一个真实的簿世界-第27章

小说: 知者无畏--一个真实的簿世界 字数: 每页4000字

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!



种语言的机器并不是直接执行该语言的原始环境,这种情况也称为仿真环境。
跨越计算机平台的虚拟机也有很多,比较典型的是在很多Unix下运行MS…DOS或Windows程序的仿真器。在一台非英特尔80x86为CPU的计算机上运行 MS…DOS应用程序,首先需要对MS…DOS应用程序所使用的x86指令进行解释执行,并要提供完整的仿真DOS中断、功能调用和绝大多数BIOS调用,并要解决MS…DOS 环境所使用的内存特点。
因此,我们大致可以看到一个比较完整的虚拟机需要在很多的层次上做仿真,主要包括CPU指令的解释执行和操作系统运行环境的模拟。
具体在电脑病毒的扫描技术上,对于简单的病毒采用特征码或者改进后的特征码技术就可以应付自如了,但是对于多态编码病毒,如果能够正确解析这个病毒在编码上的规律,那么理论上是可以应付自如的,但是对于比较复杂的编码算法以及众多的多态编码病毒,如果没有相对统一的方法来处理,那么势必要仔细研究每种病毒的编码,这种工作量是非常大的。如果能够让病毒在控制下先行运行一段时间,让其自己还原,那么,问题就会相对明了。可以说虚拟机是这种情况下的最佳选择(如果直接放病毒执行,会碰到多种操作系统下的兼容性问题,以及可能执行了病毒代码的危险性)。
通过利用软件构造一个虚拟x86计算机的寄存器表、指令对照表和虚拟内存,能够让病毒体在监控下在虚拟机中运行一段时间。这一过程可以提取与〃有可能被怀疑是〃病毒或与病毒程序〃相似〃的行为,比如截获中断、〃可疑〃的跳转等和普通计算机程序〃不太一样〃的地方。 
同时,编码病毒在运行过程中完成自解码,还原成病毒体〃原形〃。病毒在自解码之后,还要再度结合原来的特征值方法,将已知病毒代码特征库和虚拟机的运行结果进行比较,完成对一个特定已知病毒(可能是多态的病毒)的判定。
通过虚拟机对被扫描的程序(可能的病毒代码)进行模拟执行,可以收集到这段代码的行为信息—是否更改了中断、是否进行了的内存驻留等,从而发现具有病毒特征的代码,从某种意义上可以判断出未知病毒。

如何知道一个软件是否能够检测未知病毒?
杀毒软件通常都会声称自己能够发现百分之多少的未知病毒,虽然非常困难,但是实际上这个比例从某种意义上说是可以检验的,下面是一种对未知病毒判断算法的检验方法:
我们知道,一种杀毒软件检测病毒的数量是由这种软件所拥有的病毒特征库的数量决定的,也就是说,一种杀毒软件如果能够查杀60,000种病毒,就要求这种软件至少要包括60,000条病毒特征记录,在不影响识别准确性的前提下,目前最先进的病毒特征码长度最少是8个字节(采用类似于单向HASH算法的校验码计算方法),加上杀病毒的描述8个字节(普通描述),还有病毒的名字和其他一些描述信息,也就是说描述一个病毒最少需要24个字节左右,这样60,000个病毒就至少需要1。4M左右的病毒特征库。(根据具体采用的算法和特征值采样的差异性,这是一个非常大概的估计值,但是应该不会有数量级上的差异)。
除了这些病毒特征记录以外,为了实现准确的病毒扫描和未知病毒的识别,还需要一个或者多个虚拟机查毒引擎(这些虚拟机是多个层次的,从最简单的仅仅认识几条跳转指令,到非常复杂的可以模拟一个完整的80x86CPU,根据扫描的进程和对代码的怀疑程度采用不同层次的虚拟机进行扫描)。通过这样一个虚拟机处理之后,得到可能是病毒的代码部分,然后提取特征值和病毒特征库中的病毒进行比对,进而判断出是否是某种已知的病毒。
为了判断一种虚拟机算法对未知病毒的识别能力,我们可以将病毒特征库记录数设置为0,也就是说,杀毒软件没有任何关于病毒的准确信息,仅仅通过虚拟机对文件进行分析,然后根据分析的结果,不进行比对,直接根据是否具有一些行为特征,比如说占用中断、复制自身等等(如果杀毒软件有未知病毒检测部分的话,会根据设定的上限,直接报告是否存在未知病毒)判断是不是有未知病毒。
使用这个没有任何病毒特征库的杀毒软件对已知的病毒库进行扫描,我们可以预期对于大量的已知病毒,杀毒软件都会报告发现了未知病毒。根据统计学的原理,我们可以预期对于真正从来没出现过的病毒,这种软件也会获得基本上一样的未知病毒发现率。也就是说,在没有一条准确病毒特征记录的情况,如果这种软件可以发现95%的已知病毒,那么我们可以预期对于新出现的病毒,这种软件同样能够发现其中的95%左右。
当然,这种方式需要对杀毒软件的内部工作机制非常了解,在很多情况下(没有源代码的情况),需要对杀毒软件进行逆向工程,手工修改内存中的杀毒软件,所以对于普通用户来说,不可能用这种方法对杀毒软件进行检测未知病毒能力的测试。

单向哈希(One Way Hash)算法,Hash函数长期以来一直在计算机科学中使用,基本作用就是把可变输入长度串转换成固定长度(经常更短)的输出串(叫做hash值)。所谓的单向Hash函数就是说从长的输入串映射成短的输出串使用的算法非常简单,但是有意或者巧合的情况造成两个不同的输入串产生相同的Hash值几乎是不可能的,也就是说从输出串构造出输入串基本上是不可能的。这样就使得将长的病毒特征代码通过HASH算法,提取出较短的病毒特征HASH码之后,不会由于巧合造成正常文件中的二进制序列可以生成同样的HASH码,从而产生误报。
第十节 数字免疫系统,理想还是现实?
〃种牛痘〃的启示
早在90年代初,怀特和他的IBM公司的同事们就梦想给计算机〃接种〃一种数字免疫系统。他们通过一个模型来观察研究人类的免疫系统,受到很多启发。计算机病毒的制造者们往往会在新造的病毒中重复使用过去的关键性技术〃,怀特解释说。一种能够预先识别新的病毒、被称为基因免疫的系统往往会对病毒的功能给予致命的打击。这里面所说的基因免疫技术,实际上就是某种形式未知病毒发现技术。这种免疫技术的可能性建立在多数病毒都是现有病毒的变种这一假设的基础上的。
当一部计算机参与这种数字免疫系统的小规模试验时,能发现感染的病毒特征,将保密数据除掉而将那些特定的病毒数据译成密码。实验时,专家们将更改过的文件很容易地送往一部中央计算机去分析。中央计算机则将病毒的程序安排给一部实验机,通过运行各种程序,这部实验机就能将病毒诱惑出来使之变为复制品而重复同样的实验。如果这些被诱惑的程序中的任何一种受到病毒感染,则这部实验计算机就能设法识别其他计算机中病毒的特征并从程序中剔除,然后将病毒返送给中央计算机,中央计算机再将新的病毒附加给自己的数据库,并将发觉和处理病毒的信息返回到受感染的计算机中。未经感染的计算机也可预先〃接种疫苗〃,这种疫苗是从试验机上获得的。
下面是一个IBM数字免疫系统的示意图:


















1999年夏末,IBM与一家著名的防病毒程序开发机构赛门铁克公司合作,准备推出一项包括这种数字免疫系统在内的防病毒计划。怀特预测说,〃这是朝着综合免疫系统的开发迈出的第一步,该系统能以远比病毒本身快得多的扩展速度运作。一旦发现病毒,就立刻在全球范围内迅速遏制和根除这种病毒的蔓延。〃虽然直到今天为止,这种雄心勃勃的计划仍然只是一个理想而已,研究一下IBM的思路对于我们应该也是有价值的。

开发综合〃免疫系统〃
IBM的专家们还在努力寻找具有另外一些免疫机理模拟特征的方式。生理上,一个受感染的细胞会发出化学信号,警告相邻的细胞赶快设置障碍以阻止病毒扩散。于是,当免疫系统准备好了反击〃入侵者〃的方法后,它就能迅速出击,一举击溃病毒的进攻。人类免疫系统在鉴别外来入侵的病毒时,决不会因为这类入侵病毒类似其他传染性媒介而识不破它、容纳它。而要让计算机独立完成这项识别工作是非常困难的,福里斯特和她的同事们正在研制一种能使计算机不断实现自身重新定义的系统,但专家们依然没有找到识别病毒后如何抵抗的最佳方法。虽然现在进行的仅是理论上的探讨,但福里斯特的方法或许能提供新的捷径。〃应该说,不断开发的数字式抗体会使系统工作更加精确,愈来愈类似生物学〃,怀特说,〃但这种模拟研究极其困难。〃成功的程度将依赖于人工智能发展的速度。
 
〃数字免疫〃存在于将来
〃因为程序和操作系统通常在设计时无法将安全因素同时融入进去,抗病毒程序将始终落后于程序和系统的开发而处于被动,〃杰乔迪亚说,〃尽管理想的数字免疫系统仍是雾里看花,谁也说不准会以什么形式运作,但我们只有锲而不舍地去尝试,因为这是唯一的选择〃。
福里斯特指出,〃90年代初期刚刚兴起因特网时,计算机安全问题就已十分突出,而现在已演化到令人谈虎色变的境地〃。现兼任《计算机安全》杂志首席编辑的杰乔迪亚说,程序设计人员在人们开始使用最新版本的软件之前,就应致力于病毒的研究。〃在设计计算机系统和程序时养成一种必须加入安全保密技术的主观意识,是极其重要的关键步骤〃。迄今仍没有十分成熟的技术足以保护日益密切相连的计算机系统的安全。诸如数字免疫系统这样的新安全武器在短时间内不太可能达到实用的程度,现在我们还是必须依赖独立的杀毒软件、良好的安全习惯和不断的软件升级来对抗病毒的入侵。


第六章 关于电脑病毒的哲学讨论
第一节 开拓与创造,黑客文化的内在动力
在一般人的观念里,黑客就是成天攻击网站的一帮子人,他们生活在午夜,在一间漆黑的小房间里,唯一发着光的东西就是显示器的屏幕,他们在网络上巡游,寻找可以非法闯入的一切地点,包括中央情报局或者瑞士银行的主机在内,对他们来说因特网上没有任何秘密。很多人认为Hacker及Cracker之间没有明显的界线。 但实际上; 这是错误的观点。 Hacker及Cracker不但可以很容易的分开; 而且可以分出第三群 “因特网海盗”(Internet Pirate)出来; 一般大众认定的“破坏份子”; 事实上是这第三种。
Hacker及Cracker都有明确的定义; 要发表有关Hacker及Cracker之间的评议之前; 最好要详细调查一番; 否则招惹这两群技术高明的族群都不是好受的事。比较容易判断的方式; “Hacker从来不自称Hacker; Cracker会自称Cracker; 自称Hacker的不是Hacker; 自称Cracker的不见得是Cracker; 被确认为Hacker称为Hacker的; 是Hacker; 而Richard M。 Stallman是Hacker圣者” 相信大家应该可以看出来; 为何大众对Hacker及Cracker会有错误观点的由来,Pirate利用这样的漏洞来污染整个玩家文化在大众的观点。
计算机领域本质上是一种创造的领域,这个领域中具有创造力的个人�

返回目录 上一页 下一页 回到顶部 赞(0) 踩(0)

你可能喜欢的