漏洞挖掘理论与技术综述_第1页
漏洞挖掘理论与技术综述_第2页
漏洞挖掘理论与技术综述_第3页
漏洞挖掘理论与技术综述_第4页
漏洞挖掘理论与技术综述_第5页
已阅读5页,还剩61页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

漏洞挖掘理论与技术内容提要3常见的漏洞挖掘技术1漏洞挖掘技术的概述2漏洞挖掘技术的分类引言3据统计,近年来漏洞数量呈现上升趋势新漏洞从公布到被利用的时间越来越短黑客们善于挖掘并利用尚未公布的漏洞,发起病毒攻击,或出售漏洞资料,满足经济目的。相对于黑客,安全研究者们在漏洞研究方面显得相对被动和滞后。因此,应该加大对漏洞挖掘的研究力度,以便对各类漏洞采取更为主动合理的处理方式。网络安全已成为人们日益关注的重要问题漏洞挖掘概述4系统中存在的一些功能性或安全性的逻辑缺陷,包括一切导致威胁、损坏计算机系统安全性的所有因素,是计算机系统在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷和不足。漏洞?漏洞挖掘概述5漏洞的研究主要分为漏洞挖掘与漏洞分析两部分漏洞挖掘技术:对未知漏洞的探索,综合应用各种技术和工具,尽可能地找出软件中的潜在漏洞;漏洞分析技术:对已发现漏洞的细节进行深入分析,为漏洞利用、补救等处理措施作铺垫。

6国内外多个安全组织及个人都从事漏洞的研究漏洞发布机构是CVE(CommonVulnerabilitiesandExposures)和CERT(ComputerEmergencyResponseTeam)。国外eEye、LSD等组织也对最新的漏洞进行及时跟踪分析,并给出相应的漏洞解决方案。国内安全研究组织的代表:绿盟科技、启明星辰等单位。漏洞挖掘概述漏洞挖掘技术分类7根据分析对象的不同,漏洞挖掘技术可以分为基于源码的漏洞挖掘技术基于目标代码的漏洞挖掘技术

常见的漏洞挖掘分析技术8常见漏洞挖掘技术:手工测试技术(manualtesting)Fuzzing技术、比对和二进制比对技术(DiffandBinDiff)、静态分析技术(staticanalysis)、动态分析技术(runtimeanalysis)……

常见的漏洞挖掘分析技术9手工测试通过客户端或服务器访问目标服务,手工向目标程序发送特殊的数据,包括有效的和无效的输入,观察目标的状态、对各种输入的反应,根据结果来发现问题的漏洞检测技术优点:不需要额外的辅助工具,可由测试者独立完成,实现起来比较简单缺点:高度依赖于测试者,需要测试者对目标比较了解应用:Web应用程序、浏览器及其他需要用户交互的程序

常见的漏洞挖掘分析技术10Fuzzing技术一种基于缺陷注入的自动软件测试技术利用黑盒测试的思想,使用大量半有效的数据作为应用程序的输入,以程序是否出现异常为标志,来发现应用程序中可能存在的安全漏洞Fuzzing技术是利用Fuzzer工具通过完全随机的或精心构造一定的输入来实现的。

常见的漏洞挖掘分析技术11Fuzzing技术12

常见的漏洞挖掘分析技术Fuzzing技术根据应用对象主要可分为两类:文件格式的Fuzzing:针对图像格式、文档格式等协议的Fuzzing,主要针对RPC协议和HTTP协议等

常见的漏洞挖掘分析技术13Fuzzing测试通常以大小相关的部分、字符串、标志字符串开始或结束的二进制块等为重点,使用边界值附近的值对目标进行测试Fuzzing技术可以用于检测多种安全漏洞:缓冲区溢出漏洞、整型溢出漏洞、格式化串漏洞、竞争条件漏洞、SQL注入、跨站点脚本、远程命令执行、文件系统攻击、信息泄露等

常见的漏洞挖掘分析技术14Fuzzing作为一项动态的软件漏洞挖掘技术具备如下优点:其测试目标是二进制可执行代码,比基于源代码的白盒测试方法适用范围更广泛;Fuzzing是动态实际执行的,不存在静态分析技术中存在的大量的误报问题;Fuzzing原理简单,没有大量的理论推导和公式计算,不存在符号执行技术中的路径状态爆炸问题;Fuzzing自动化程度高,不需要逆向工程过程中大量的人工参与。

常见的漏洞挖掘分析技术15Fuzzing缺点:黑盒测试的全部缺点,不通用,构造测试周期长等问题

常见的漏洞挖掘分析技术16

研究工作1989—2002年间的Fuzzing技术本质上是随机测试技术,测试数据多数是随机产生的畸形数据。难以深入测试软件,代码覆盖率低,会遗漏很多漏洞后来,Fuzzing测试呈现出两个不同的发展方向,即基于知识的Fuzzing技术和基于软件测试技术的Fuzzing技术。

常见的漏洞挖掘分析技术17

基于知识的Fuzzing技术基于生成技术(generation-based)的测试用例构造技术:基于网络协议知识或者文件格式知识构造测试用例优点:该技术构造的测试用例的半有效性高,代码覆盖率高缺点:前期需要大量的人工分析来获取知识,使得难以实现高度自动化,效率偏低代表工具有SPIKE

常见的漏洞挖掘分析技术18

基于知识的Fuzzing技术基于生成技术(generation-based)的测试用例构造技术:基于网络协议知识或者文件格式知识构造测试用例优点:该技术构造的测试用例的半有效性高,代码覆盖率高缺点:前期需要大量的人工分析来获取知识,使得难以实现高度自动化,效率偏低代表工具有SPIKE

常见的漏洞挖掘分析技术19

基于知识的Fuzzing技术基于变异技术的测试用例构造技术:基于正常的样本数据(如样本文件、网络数据包),根据一定的漏洞知识(如构造易触发漏洞的畸形数据方法等)变异其中的部分数据来生成测试用例,优点:该技术实现起来简单,自动化程度高缺点:由于未考虑到各个数据元素的类型、语义和各个数据元素之间的约束关系,各数值的待测空间大以及生成测试用例的半有效性低,该技术效率低,挖掘效果不稳定,代表工具有FileFuzz。

常见的漏洞挖掘分析技术20

基于知识的Fuzzing技术Peach工具则把两种构造技术融合起来,其测试用例生成策略是利用协议或者结构知识对样本数据进行分析,基于分析的结果和漏洞知识再对样本数据进行有效的变异。通过知识和样本文件互相弥补来提高测试用例的半有效性,漏洞挖掘效果好基于少量的知识实现粗粒度的Fuzzing测试,基于丰富的知识实现细粒度的Fuzzing测试,测试用例构造技术灵活、高效、自动化程度高

常见的漏洞挖掘分析技术21基于软件测试技术的Fuzzing技术:通过把静态分析技术、符号执行技术、具体执行技术等多种技术与Fuzzing技术相结合,从而在达到一个较高的代码覆盖率的测试基础上进行Fuzzing测试。优点:通过借助软件测试中的技术使Fuzzing技术得到一个不错的代码覆盖率缺点:无法克服符号执行中的状态爆炸问题,无法突破应用程序中的验证或检查进行更为深入的Fuzzing测试;采用了类似于穷搜索的思路,而且每次执行都需要复杂的符号运算,效率低。

常见的漏洞挖掘分析技术22二进制比对技术(补丁比对技术)挖掘“已知”的漏洞,在一定意义上可被认为是一种漏洞分析技术由于安全公告中一般都不指明漏洞的确切位置和成因,使得漏洞的有效利用比较困难。但漏洞一般都有相应的补丁,所以可以通过比较补丁前后的二进制文件,确定漏洞的位置和成因

常见的漏洞挖掘分析技术23二进制比对技术(补丁比对技术)二进制字节比较:适用于若干字节变化的比较反汇编后的文本比较:缺乏对程序逻辑的理解,没有语义分析,适用于小文件和少量的变化基于指令相似性的图形化比较:发现文件中一些非结构化的变化,如缓冲区大小的改变等,图形化显示较直观不足:受编译器优化的影响较大,且不能在两个文件中自动发现大量比较的起始点结构化二进制比较:注重二进制可执行文件在结构上的变化,一定程度上消除了编译器优化对分析二进制文件所带来的影响不能发现非结构的变化

常见的漏洞挖掘分析技术24常用的补丁比对工具IDefense公司发布的IDACompareTheeEyeDigitalSecurity发布的BinaryDiffingSuite(EBDS)SabreSecurity的BinDiffNCNIPC于2007年12月发布了NIPCBinaryDiffer(NBD)补丁比对工具,大大的扩充了经典算法中简易签名

常见的漏洞挖掘分析技术25静态分析通过词法、语法、语义分析检测程序中潜在的安全问题,发现安全漏洞,无需执行程序基本思想:对程序源程序的文本进行静态扫描分析,以便发现缺陷或漏洞静态分析重点检查函数调用及返回状态,特别是未进行边界检查或边界检查不正确的函数调用(如strcpy,strcat等可能造成缓冲区溢出的函数)、由用户提供输入的函数、在用户缓冲区进行指针运算的程序等

常见的漏洞挖掘分析技术26静态分析传统的静态分析方法:Manualcodeinspection

需要花费大量的时间,且要求检查员有关于待检测的漏洞先验知识使用静态分析工具执行静态分析。然而,静态分析工具没有使静态分析完全自动化,其输出仍然需要人来验证和评估

常见的漏洞挖掘分析技术27根据目标类型,静态分析可分为源代码扫

描和反汇编扫描源代码扫描针对开放源代码的程序,检测程序中不符合安全规则的文件结构、命名规则、函数、堆栈指针等,发现程序中可能隐含的安全缺陷要求:熟练掌握编程语言,并预先定义出不安全代码的审查规则,通过表达式匹配的方法检查源代码由于程序运行时是动态变化的,若不考虑函数调用的参数和调用环境,不对源代码进行词法分析和语法分析就没有办法准确的把握程序的语义,不能发现程序动态运行中的安全漏洞

常见的漏洞挖掘分析技术28根据目标类型,静态分析可分为源代码扫

描和反汇编扫描反汇编扫描需要有丰富的经验,可使用辅助工具来帮助简化这个过程。但不可能有一种完全自动的工具来完成这个过程。优点:从理论上讲,不管多么复杂的问题总是可以通过反汇编来解决的。缺点:费时费力,对人员的技术水平要求高,同样不能检测到程序动态运行过程中产生的安全漏洞

常见的漏洞挖掘分析技术29静态分析优势:高效快速,能够很快完成对源代码的检查检查者不需要了解程序的实现方式,非常适合自动化的程序源程序缓冲区溢出检查能够较全面的覆盖系统代码,减少了漏报

常见的漏洞挖掘分析技术30静态分析缺陷根据Rice定理,任何关于程序的nontrivial问题均可以化简为停机问题,因此确定程序中是否还有漏洞和挖掘程序中的所有可能漏洞问题是不可判定的,即有些漏洞没有办法采用静态分析方法挖掘。存在很大的局限性,不断扩充的特征库或词典,造成了检测的结果集大、误报率高;

由于存在误报(falsepositive)和漏报(falsenegative),结果并不精确,有时不具指导意义静态分析方法,重点是分析代码的“特征”,而不关心程序的功能,不会有针对功能及程序结构的分析检查

常见的漏洞挖掘分析技术31静态分析研究工作Unix实用程序grep:最简单直接的静态分析方法grepisbasedonthemethodofstringmatchinganddoesnotunderstandanythingabouttheprogramitscansItisarmedwithalistofgoodsearchstringsandsoitcanexposemanycodeproblems.基于词法分析:IST4andRATspre-processandtokenizesourcefilesmatchtheresultingtokenstreamagainstalibraryofvulnerableconstructsproducenumbersoffalsepositivebecausetheyalsodonotunderstandthetargetcode’ssemantics.Butanywaytheyarebetterthanmethodsofstringmatching

常见的漏洞挖掘分析技术32静态分析研究工作SWORD4JimplementalgorithmMARCOtocheckifjavaprogramscannedviolatessecuritypoliciesofSBAC(StackBasedAccessControl).modelthestackinspectionmechanismoncomputedcallgraphGmapseachnodeofGtoasetofprivilegeswithdata-flowalgorithmpropagatesasetofprivilegesnecessaryforcurrentoperationbackwardinG,untilafixedpointisreached.

常见的漏洞挖掘分析技术33静态分析研究工作AlgorithmESPEchecksRBAC(RoleBasedAccessControl)program’spositionswhereRBACsecuritypoliciesareviolatedbydata-flowanalysisComputethecallgraphGMapeachnodeofGtoalogicalparadigm

consistedofrolesCheckwhethercurrentrolemakesthecorrespondingnode’slogicalparadigmtrue

常见的漏洞挖掘分析技术34静态分析可以用于分析信息流,验证信息流的完整性和机密性

基本思想:静态地检查程序中变量之间的信息流是否与变量的安全标签一致

Hammer等人基于PDGs(程序依赖图,ProgramDependenceGraphs)和不干涉,即低安全性的程序行为不会受到任何高安全性数据的影响,提出了一种信息流的静态分析算法基本思想:如果信息流是安全的,则对于程序中的任意语句s,s的静态后向切片只能包含比s的安全标签更低的语句

常见的漏洞挖掘分析技术35静态分析研究工作FrameCisasetofcollaborativeanalyzers.ItspansabstractsyntaxtreedependingonCIntermediateLanguageCIL,performsvalueanalysisforeachprogramvariablebasedonabstractinterpretation,verifyattributesbyautomatictheoremprovers,dividesprograminto

smallpartswithprogramslicingandsoon.OtherinterestingapproachesincludeESP(alarge-scalepropertyverificationapproach)andmodelcheckerssuchasBLAST.

常见的漏洞挖掘分析技术36静态分析研究工作rulematchingdata-flowanalysiscontrol-flowanalysisprogramdependenceanalysisinformation-flowanalysisstaticsliceabstractinterpretationmodelcheckingtheoremprovers

常见的漏洞挖掘分析技术37动态分析技术在调试器中运行目标程序,通过观察执行过程中程序的运行状态、内存使用状况以及寄存器的值等以发现潜在问题,寻找漏洞从代码流和数据流两方面入手:通过设置断点动态跟踪目标程序代码流,以检测有缺陷的函数调用及其参数;对数据流进行双向分析,通过构造特殊数据触发潜在错误并对结果进行分析借助调试器工具:SoftIce、OllyDbg、WinDbg等常见动态分析方法有输入追踪测试法、堆栈比较法、故障注入分析法等

常见的漏洞挖掘分析技术38输入追踪测试输入点是指用户提供的数据提交给程序的地方,是软件中最有可能产生漏洞的地方确定代码的输入点:借助静态分析工具:IDAPro可以利用动态调试工具在输入点设置断点并单步追踪程序,调试时记录每个输入和代码路径。手工判断所有的输入点需花费很多时间,但却可能发现软件中处理用户提供的数据的代码位置,从而发现软件中的漏洞。

常见的漏洞挖掘分析技术39堆栈比较法以正常状态执行被测试程序,记录下可能存在缓冲区溢出漏洞的函数观察运行前后堆栈的映像,通过对堆栈映象的比较,从而发现并确定缓冲区溢出错误。比如,Linux系统中的ptrace和pstack等系统命令,能对程序执行过程进行动态跟踪和记录

常见的漏洞挖掘分析技术40堆栈比较法ptrace系统调用提供的跟踪功能使父进程可以对自己的子进程进行监督和控制。例如,父进程可以读写用户空间中或系统中的数据,向它们发送软中断和命令它们中止。主要被用来实现断点调试功能。pstack则是用来输出当前进程的堆栈信息,通过pstackPID命令可以导出当前进程的堆栈信息,配合ptrace,便可以方便地纪录程序执行过程中的堆栈状况

常见的漏洞挖掘分析技术41故障注入分析使用工具在疑似漏洞处注入错误的字符串,诱导程序溢出,并记录堆栈情况,从而能够进一步分析和确认缓冲区溢出漏洞

常见的漏洞挖掘分析技术42故障注入分析常见工具故障注入式安全测试工具FIST(FaultInjectionSecurityTool):ReliableSoftwareTechnologies公司在1998年根据自适应脆弱性分析法实现的软件安全测试评估系统。自动化对C及C++的源程序进行白箱测试(White-Box)的安全性分析。分析过文件传输服务器(FTPserver)、全球WEB服务器(WWWserver)、邮件服务器(POP3server)等多种服务器

常见的漏洞挖掘分析技术43故障注入分析常见工具Libsafe开源,设计用来保护缓冲溢出和格式字符串攻击者的程序,由Avayalabs开发维护某些环境下,执行可以绕过libsafe程序的检查,Libsafe对格式类型没有实现检查而导致问题产生,C库中的格式字符串类型"%`n"和"%ln"在Libsafe中没有实现安全检查,可以导致利用这些格式字符串类型来绕过Libsafe对格式字符串攻击的保护LibverifyStackShield

常见的漏洞挖掘分析技术44动态分析特点准确率高:在程序运行时检查,找到的漏洞即为程序错误针对性强:能够有针对性的对目标系统进行检查,从而能够准确的确定目标系统相应功能或模块的系统表现无需源代码:与黑盒测试相似,黑盒测试人员在没有软件系统源代码的情况下,通过观察系统的输入和输出分析来分析系统,并对系统进行各种检查,验证系统是否有错误

常见的漏洞挖掘分析技术45动态分析技术的局限性不容易找到分析点:需针对系统运行时的状态进行预判,否则运行时的数据及指令均为二进制信息,会使分析无从下手,但找到缓冲区的分析点非常困难需要熟悉目标系统:只有熟悉目标系统,才能够有针对性的进行分析判断,也使得动态分析进展会比较慢,而且分析的门槛高分析环境要与目标最终环境一致:如果分析环境与目标最终环境不一致,则分析的结果可能会出现偏差技术复杂对分析人员要求高:复杂,耗时耗力,对分析人员的要求高,难以实现自动化发现

常见的漏洞挖掘分析技术46动态分析技术常用工具:Spike开源的安全漏洞动态分析的开发框架提供了各种各样的构造函数,方便用户开发、构造新的分析工具,如s_binary可以构造二进制数据,s_string可以构造字符串,s_unistring可以构造UNICODE字符串用其分析出Windows的SMB和RPC的缓冲区溢出漏洞该工具特别适合网络程序的远程的动态分析,可以很方便的构造新的协议类型数据,用来探测网络程序,找到程序的漏洞

常见的漏洞挖掘分析技术47渗透测试通过模拟恶意用户的攻击并评估攻击是否成功,从而评估系统的安全性。由软件供应商雇佣的测试人员进行的渗透测试通常被视为软件发布之前的最终测试

常见的漏洞挖掘分析技术48根据供应商提供的信息量,渗透测试可以分为以下3类:黑箱渗透测试:假设没有待测试的基础设施的先验知识,在开始分析之前,测试人员必须首先确定系统的位置和范围。黑盒渗透测试模拟来自不熟悉系统的人的攻击白箱渗透测试:提供给测试人员关于待测试的基础设施的全部知识,包括网络图,源代码,IP寻址信息,白箱渗透测试模拟了“内部工作”期间或敏感信息“泄漏”后可能发生的情况,攻击者可以访问源代码、网络布局,甚至可能还可以访问一些密码

常见的漏洞挖掘分析技术49根据供应商提供的信息量,渗透测试可以分为以下3类:灰箱渗透测试:在黑箱渗透和白箱渗透之间有一些变种,通常被称为灰箱渗透测试

当决定进行渗透测试时,软件供应商选择哪一个取决于供应商的目标

常见的漏洞挖掘分析技术50渗透测试包括两个过程:供应商计划测试和测试人员执行测试供应商计划测试:建立在风险分析和威胁建模的基础上威胁建模:可以使用STRIDE,其结果以威胁树的形式表示根据前面分析的威胁,制定测试计划,通常包括渗透测试类型、时间表、工具、问题报告的要求等

常见的漏洞挖掘分析技术51渗透测试包括两个过程:供应商计划测试和测试人员执行测试测试人员执行测试:建议使用PTES(渗透测试执行标准

,PenetrationTestingExecution

Standard)PTES包含7步:Pre-engagementInteractionsIntelligenceGatheringThreatModelingVulnerabilityAnalysis;ExploitationPostExploitationReporting

常见的漏洞挖掘分析技术52渗透测试包括两个过程:供应商计划测试和测试人员执行测试测试人员执行测试:提交的报告不应该仅仅指出目标软件中是否存在漏洞。报告应该包含更多的细节信息,通常包括复制步骤、严重程度、利用场景和利用代码样本。这样的报告有利于供应商评估目标的安全风险,制定新的发布计划。

常见的漏洞挖掘分析技术53漏洞挖掘模型(VulnerabilityDiscoveryModels,VDMs)研究工作由于VDMs是从SRMs派生出来的,许多VDMs本质上是将SRMs应用于漏洞发现,而不是新模型。E.Rescorla将线性漏洞挖掘模型(LVD)和指数Goel-Okumoto模型应用于NVD(NationalvulnerabilityDatabase)的漏洞数据ER.Gopalakrishna等人关注讨论VDMs的理论和实践需求A.Ozment测试了几个应用于漏洞挖掘的SRMs的拟合度和预测准确性

常见的漏洞挖掘分析技术54漏洞挖掘模型(VulnerabilityDiscoveryModels,VDMs)研究工作此外,还有专门为漏洞挖掘设计的模型AME(Alhazmi-MalaiyaEffort-basedmodel)其基本假设是漏洞检测器的Effort与目标系统的用户数量相关,实验表明,AME对Win98、WinNT4、Apache和IIS具有可接受的x平方分布拟合优度

AML(Alhazmi-MalaiyaLogisticmodel):一个S型的、基于时间的漏洞挖掘逻辑模型

常见的漏洞挖掘分析技术55漏洞挖掘模型(VulnerabilityDiscoveryModels,VDMs)研究工作此外,还有专门为漏洞挖掘设计的模型AML假定漏洞发现分三个阶段进行:a.学习阶段:探测器研究新发布的软件,并没有报告许多漏洞。对应于s形的最初的平坦部分b.线性期:探测器已经熟悉了该软件,报告的漏洞数量直线增长。对应于s形的陡峭部分c.饱和阶段。用户迁移到较新的软件版本,检测器的兴趣降低,报告的漏洞数量减少

常见的漏洞挖掘分析技术56漏洞挖掘模型(VulnerabilityDiscoveryModels,VDMs)研究工作此外,还有专门为漏洞挖掘设计的模型实验表明,AML对来自5个Windows操作系统和2个Linux操作系统的漏洞数据具有可接受的拟合优度。O.Alhazmi等人引入了漏洞密度,抛弃了AML产生的一些极端估计,命名为AML-C

常见的漏洞挖掘分析技术57漏洞挖掘模型(VulnerabilityDiscoveryModels,VDMs)研究工作一些研究人员已经将他们的重点放在评估VDMsSung-WhanWoo等人通过将AME和AML

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论