前言:想要写出一篇引人入胜的文章?我们特意为您整理了0day应用下的计算机安全论文范文,希望能给你带来灵感和参考,敬请阅读。
一、何谓“0day”
0day是指那些没有公开因而也没有补丁的漏洞。也就是通常所说的“未公开漏洞”。0day无外乎破解的意思;最早的破解是专门针对软件的,叫做WAREZ,后来才发展到游戏,音乐,影视等其他内容的。0day中的0表示zero,早期的0day表示在软件发行后的24小时内就出现破解版本,现在我们已经引申了这个含义,只要是在软件或者其他东西后,在最短时间内出现相关破解的,都可以叫0day。0day是一个统称,所有的破解都可以叫0day。0day可以分为服务器和客户端。服务器端则主要包含了HTTPD,FTPD,IMAPD等等。客户端则是主要包括了IE,Firefox,Word,AcrobatReader,WinRAR,Realplayer,Winamp,等等。使用0day的人主要可以分为以下几类:各国情报机关,在和平时期可以通过各种0day漏洞来获取各种信息,战时除了获取情报外还可以通过0day漏洞展开各种网络攻击;第二类人是黑客,他们的一部分仅仅是进行研究,而另外的一部分利用0day漏洞的目的就不言而喻了,而且有很多0day漏洞都是黑客所发现的;第三类是渗透测试人员,利用0day漏洞来测试网络的安全程度;最后就是蠕虫病毒也可能利用0day。使用0day漏洞的主要原因可以分为以下几种:有效,很多已经公布出来的漏洞由于各种原因,已经不再有效;逃避入侵检测;很酷,很有趣等等。
二、挖掘0day的方法
作为攻击者,除了需要精通各种漏洞利用技术之外,想要实施有效的攻击,就必须掌握一些没有公布的0day漏洞。而作为安全专家,他们的本职工作就是在抢在攻击者之前发现更多的未公布漏洞。因此,不管是攻击者还是安全专家,都需要精通漏洞挖掘。漏洞挖掘的方法主要有源代码审核、二进制审核、Fuzzing这三种。源代码审核虽然很重要,但是却非常的耗费时间,同时还需要具有一定的经验作为基础,否则所取得的效果则会不尽如人意,而且它有一个先决条件就是必须有代码。对于一些开源的软件或者是共享代码的软件而言,更容易通过这种方式发现漏洞。现在流行的源代码审核软件有FlawFinder、RATS、ITS4、SPLINT、CodeScan等。二进制审核需要有良好的汇编功底,二进制审核也需要提供源代码,并将源代码进行反汇编。而将二进制文件被转换成人可读的形式,这样的代码就可以被评审以查找其中可能包含漏洞之处,这在很大程度上与源代码的评审是类似的。Fuzzing是一种基于缺陷注入的自动软件测试技术。通过编写fuzzer工具向目标程序提供某种形式的输入并观察其响应来发现问题,这种输入可以是完全随机的或精心构造的。Fuzzing测试通常以大小相关的部分、字符串、标志字符串开始或结束的二进制块等为重点,使用边界值附近的值对目标进行测试。Fuzzing测试使用的是带有攻击性的用例,测试人员需要实时地捕捉目标程序所抛出的异常、发生的崩溃和寄存器等信息,综合判断这些错误是不是真正的可利用的漏洞。这种方法最早是有BartonMiller、LarsFredriksen和BryanSo在异常偶然的情况下想到的。它的优点是有效、很少出现误报,能够快速的找到真正的漏洞,而且这种方法不论是针对开源的软件或者是非开源的软件都同样适用。它的缺点是永远不能保证系统里面已经没有漏洞。
三、0day的获取
简单而言0day的获取主要有以下的几种方式:地下交换,这种方式一般包括了IRC、非公开论坛等方式;自己动手,丰衣足食,具有一定能力与工具的人并非需要从他人手中获取;第三种是黑市,从黑市上花巨额的代价获取;第四种是漏洞共享俱乐部比如Immunity,$50,000-100,000/年,有一些公司在其网站上对各种漏洞进行明码标价;购买商业渗透工具,例如CANVAS、CoreImpact(?)……等等;此外还可以通过一定的途径获取公开的0day信息,例如漏洞库Securityfocus(Symantec),ISSX-FORCEdatabase,OVSDB,NSFOCUS(最好的中文漏洞库之一),Secunia,SecurityTracker,Securiteam,CVE(CommonVulnerabilitiesandExposure,通用漏洞披露)等等。
四、0day的防御
0Day防护是否真的存在?同时我们该如何抵御0day攻击呢?是通过IDS,还是IPS,还是启发式安全软件?如果IDS本身就存在0day又怎么办呢?面对这些问题我们也只能尽我们的最大努力。首先是进行第三方评估,这一点对于对于那些厂商和大型的企业用户来说尤为重要,只有通过第三方的评估才能够最大限度的发现0day。其次是必须注意防火墙对于客户端的0day基本上无能为力,所以不能太过于依赖于防火墙。然后是部署网络时时应假设至少有一个0day在流传,或者被你的竞争对手所掌握。只有这样才能够做好应对策略,以避免当收到0day攻击时出现手忙脚乱的情况。