知者无畏--一个真实的簿世界-第21节
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
如果没有对所写数据的数量限制,都可被用来实施DoS攻击。
此外,攻击者通过破坏或改变配置信息,如改变网络路由信息、改变Windows NT的注册表信息等;也可以阻止计算机或网络的使用;甚至通过破坏计算机或网络中的物理组件导致服务拒绝。
分布式拒绝服务攻击(Distributed Deny of Service)是一种更加高级的拒绝服务攻击技术, 分布式拒绝服务攻击的理论和技术可能性很早就为网络界所认识,而最近分布式拒绝服务开始被攻击者采用并有泛滥趋势。在分布式拒绝服务攻击中,攻击者利用成百上千个被〃控制〃节点向受害节点发动大规模的协同攻击,如同时泛洪(flood)受害节点。由于攻击来自很多节点,使得受害程度更加严重,涉及范围更广,也更难发现攻击者。在这类攻击工具中比较有名的有Trin00、TFN(Tribe Flood Network)、TFN2k以及stacheldraht(德文铁丝网的意思)等。1999年6月,Trin00最先被发现用来进行网络攻击。1999年8月,焦点转向TFN。TFN据称是Mixter在分析Trin00时编写的,TFN后来升级到TFN2k。1999年9月底,类似TFN的称为stacheldraht的攻击出现在欧洲和美国网络上。分布攻击系统基于Server/Client模型体系。典型的分布攻击系统中,一般由一个攻击者控制一个或几个Master ; 再由其控制大量分布的Daemon,Daemon 直接向受害节点泛洪包或实施其他攻击。
第五章 不为人知的幕后——透过技术的迷雾
第一节 防病毒卡的兴起与衰落
防病毒卡是非常具有中国特色的一种反病毒技术,国外的病毒和反病毒技术远远领先于我国,但是国外一直没有出现一个真正的防病毒卡市场,反病毒技术一直是以软件的形式存在的。而与国外相反,我国计算机反病毒技术的研究和发展,是从研制防病毒卡开始的。防病毒卡的核心实际上是一个软件,只不过将其固化在ROM中。它的出发点是想以不变应万变,通过动态驻留内存来监视计算机的运行情况,根据总结出来的病毒行为规则和经验来判断是否有病毒活动,通过截获中断控制权规则和经验来判定是否有病毒活动,并可以截获中断控制权来使内存中的病毒瘫痪,使其失去传染别的文件和破坏信息资料的能力,这就是防病毒卡〃带毒运行〃功能的基本原理。
1990年4月,国内最早一块防病毒卡由深圳〃华星〃公司推出,1991年瑞星也推出了自己的防病毒卡,随后还有北京华能、南京新创以及广州优益等几家比较知名的公司加入了这个市场,由于在90年代中期,人们对于电脑软件的认识还存在一定的误区,总觉得没有实实在在拿在手里的东西心里就不踏实,这种心理造成了对防病毒卡的盲目崇拜,也引发了大量单位踊跃的购买防病毒卡,使得防病毒卡的研究和销售在1993-1994年达到了顶峰。
防病毒卡主要的不足是与正常软件特别是国产的软件有不兼容的现象,误报、漏报病毒现象时有发生,降低了计算机运行速度,升级困难等。从防病毒技术上说是不成熟的,病毒发展的速度远远超过了防病毒卡的发展速度,病毒感染和破坏所使用的技术手段越来越高,企图以一种一成不变的技术对付病毒是不可能的。
防病毒卡的动态监测技术、病毒行为规则的研究,对于发现计算机病毒起了很大的作用,这些技术是防病毒卡的精华。但是作为一个产品,只有这部分技术是远远不够的,在电脑病毒使用了多态、加密等技术手段之后,操作系统本身也开始快速的升级和更新,防病毒卡对于病毒的进步和操作系统的更新变得无能为力,所以防病毒卡也就逐步走到了它的尽头。现在看来,防病毒卡只能适用于简单的DOS环境,而且运行的应用软件也比较简单。当1994年“目录2代”(DIRII)病毒出现的时候,防病毒卡对于这种感染硬盘上大量扇区,需要采用非常复杂的算法才能清除的病毒无能为力,从客观上宣告了防病毒卡时代的结束。
防病毒卡的衰落也使得防病毒卡时代的老大—瑞星公司走入低谷,江民公司依靠KV300获得了杀毒市场的统治地位。直到1998年以后,瑞星公司通过瑞星杀毒软件进行二次创业,才重新回到市场的前列。
第二节 查病毒——万物之源
考察一个杀毒软件的质量,最重要的一个特性,也就是杀毒软件最基本的技术指标是能够检测到的病毒的数量,但是在这一问题上,用户可以说是没有任何知情权的,你不可能拥有如此多的病毒样本对杀毒软件进行指标的测量。核心、引擎、智能扫描、启发式算法,在这样一个简单的问题上,笼罩了如此多的迷雾,那么,什么是真实的反病毒技术呢。
原始文件比较法
所有的杀毒软件要解决的第一个任务一定是如何发现一个文件是否被病毒感染。对于个人用户来说,有一个最简单的办法,就是找到一个确信没有病毒的文件,和你电脑上的文件进行比较,如果发生了改变(可能是大小的变化,也可能是文件内容的变化),在一般情况下,可以断定这个文件被病毒感染了。
在视窗操作系统下面有一个简单的命令可以完成这项工作,打开一个DOS窗口(在视窗9x环境下,选择开始菜单的MS…DOS方式,在视窗 NT和视窗 2000/XP环境下,选择开始菜单 -》 附件 …》 命令提示符),然后输入 〃FC '文件名1' '文件名2'〃,你立刻可以看到比较的结果。
另外,这种方法还可以用来识别一些反病毒软件使用的一些小伎俩,如果你发现在你的电脑上有几个文件,只有一种杀毒软件报告有病毒,而你安装的其他好多种杀毒软件都没有任何查到病毒的迹象,这时候你不要着急的杀病毒,把报告感染病毒的文件拷贝到另外的目录中,然后再用杀毒软件杀病毒,这时候你会很高兴的看到“XXX文件发现YYY病毒,已清除”,但是且慢,不要高兴太早,这时候使用刚才的方法,比较你备份的文件和宣称病毒已经被清除的文件,你会发现,“找不到相异处”?!*,也就是说,该文件没有发生任何改变!如果不是白痴的话应该都知道,一个文件如果一个字节都没有变化,怎么可以认为其中隐藏了病毒而且已经清除掉了。我的误报率虽然高一点,但是人家都查不出的病毒我可以查出来并且安全的清除(废话,一个字节都没改当然安全的清除了)
这种方法最大的问题是无法保证一定可以找到确信没有被病毒感染的程序,当然,反病毒软件不可能采用这种方法,
特征码识别法
最早的病毒纯粹是为了验证概念(好酷啊,可以在没有任何人干预的情况下自己传播啦!),或者是恶作剧,突然演奏一段音乐,在屏幕上一阵表演,没有考虑到对付反病毒软件扫描的需要(实际上,最早一批病毒产生的时候,最早的反病毒软件还没有出现,任何时候都是矛先于盾出现的)。当使用非常简单的算法,
比如说,“如果在第1034字节处是下面的内容:0xec ; 0x99; 0x80;0x99,就表示是大麻病毒。”这样的规则就可以非常容易的查出病毒的时候,电脑病毒开始进化。
病毒采用变形、加密等手段使每一次感染的表现形式都不一样。简单的特征码技术已经无法适应检测变形、加密病毒的需要。
这就需要辅助采用虚拟执行、启发扫描等技术,才能准确高效的判断病毒是否感染了特定的文件,但是不论采用了什么技术进行病毒扫描,最终进行准确判断,发现是否被感染,被什么病毒感染还是要依靠特征码识别的方法来完成。
广谱特征码?
〃广谱特征码〃本质上仍旧是特征码,只是在其基础上稍加变通而已。原本的特征码是病毒中一串有这种病毒自己特色的指令序列,例如一段检查自身是否已获控制权或者实施破坏的代码。这样的代码是这种病毒所独有的,在其它正常程序中不可能出现的序列。为了确保不会把其它程序中有可能出现的类似于这种病毒的数据也误判为病毒,特征码串一般都选得很长,有时甚至可达数十字节。为了压缩病毒数据库,很多杀毒软件将很长的特征串经过某种算法计算之后压缩成32位或者64位的校验码。
然而对多形性病毒情况就没这么简单,大量的多态病毒不同形态之间甚至没有超过三个连续字节是相同的。为了对付这种情况,首先特征码的获取不可能再是简单的取出一段代码来,而是分段的,中间可以包含任意的内容(也就是增加了一些不参加比较的“掩码字节”,在出现“掩码字节”的地方,出现什么内容都不参加比较)。单纯的使用这种放宽了条件的特征码是无法准确的判断出病毒的。误报、误杀将会增多,漏报率也会增加,因为这种特征的抽取完全是通过经验总结,也就是说正确程度依赖于病毒分析者的经验和某种先天的“感觉”,从多态性病毒的上亿种甚至无穷种可能静态形态中找到能够简单描述的规律是非常困难的。
使用广谱特征扫描病毒如果达到实用的程度,必须和一对一的病毒分析相对应,也就是说需要针对某种特定的病毒设计使用广谱特征之前的预处理程序,然后再应用广谱特征断定是不是病毒。至于杀病毒,广谱特征没有任何作用,因为使用简单的带掩码的特征是不可能描述稍微复杂一点的病毒清除算法的。
下面是一个完成基本检测/清除病毒软件系统的基本流程
这是一个非常简单的示意图,实际的杀毒软件结构比他要复杂很多,但是目前先进的的杀毒软件使用的病毒扫描方法和上图基本上都是一致的。
第三节 “石器时代”的反病毒
第四节 “视窗”的挑战
关于视窗的诞生,还有很多有趣的故事,很象一出农夫和蛇的戏剧,当比尔盖茨还远远没有取得今天的市场地位的时候,微软就像一只冬眠的蛇一样等待机会,而那个可怜的农夫当然就是计算机业的老大IBM了。为了开发图形界面软件,当时的IBM和微软决定联合进行开发,他们的项目名称是一个叫做OS/2的操作系统,最早是为了配合IBM推出的新一代IBM 个人电脑:PS/2,OS/2设计的基础是80286,这是第一个重大技术失策,因为80286很快就被80386取代了,另外一个重大失策是选择了微软作为合作伙伴,微软在和IBM虚以委蛇的时候,全力投入了自己的图形界面操作系统视窗3。0,视窗1。0和2。0都很不成功,被一家名字叫作“后甲板”(Quarterdeck)公司的“DesqView”,另外一个图形界面打得头破血流,但是比尔。盖茨的坚韧不拔是任何人都无法相比的,通过对OS/2虚以委蛇,全力进行视窗3。0的开发,视窗3。0终于获得了成功。(还记得微软DOS的竞争者DRDOS吗,很不幸的是,DesqView这个竞争者和DRDOS一样,现在成了免费软件,在网上你可以找到它的可执行程序和源代码,也许这就是和微软作对的必然下场吧,没有市场、没有收入,最后只能开放源代码,免费。DesqView可以在下面的站点找到:clarkson。edu/~vryhofab/wserv/freedv/)。
我记得最早微软的视窗3。0和视窗3。1开始流行的时候,还是1993年左右吧,我还在南京大学写关于某种原子内电子轨道磁矩的毕业论文,记得当时要计算一个49阶的矩阵,本来想做一篇非常酷的毕业设计,为我的计算做一个非常漂亮的演示,于是就想到了当时刚刚开始流行的视窗。
那时候视窗环境下应用程序非常少,最主要的原因是开发Window程序极为困难。基本上,开发Windows3。0/3。1环境下的程序是所有程序员的恶梦。微软的SDK之难用,连最坚强的学习者都有一种要哭出来的感觉(包括我在内),记得微软出了一套Windows3。0 SDK的手册,南大图书馆里有这本书,除了爱因斯坦的《广义相对论》以外,我觉得整个图书馆里面就是这本书最令人头疼了。后来陆陆续续又出了一些关于视窗环境下程序开发的一些书籍,所有类似的书本上面,第一段话必定是告诉你现在你处于一个全新的领域,你要做的第一件事情就是改变自己的思路。。。然后是一堆新的名词和概念,什么消息、什么队列、什么窗口、什么句柄啊,最可怕的就是句柄这个东西了,直到今天我还没有搞清楚到底什么是句柄,是个把手吗,能用手握吗?。
幸运的是,后来有了可视化的BASIC语言(Visual BASIC)和Delphi这两种革命性的开发工具,开发视窗程序一下子简单的难以置信。可视化的BASIC语言应该是提出了一种全新的开发方式,直接可以画出界面,然后就可以执行了,在我的印象中,微软很少能够开发出什么突破性的技术,V