您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 《软件安全》-漏洞挖掘与模糊测试
软件安全软件安全北京邮电大学信息安全中心北京邮电大学信息安全中心北京邮电大学信息安全中心北京邮电大学信息安全中心张淼张淼张淼张淼zhangmiao@bupt.edu.cn第五讲第五讲第五讲第五讲漏洞挖掘与模糊测试漏洞挖掘与模糊测试漏洞挖掘与模糊测试漏洞挖掘与模糊测试第五讲第五讲第五讲第五讲漏洞挖掘与模糊测试漏洞挖掘与模糊测试漏洞挖掘与模糊测试漏洞挖掘与模糊测试漏洞挖掘技术简介简单的fuzzing演示文件类型漏洞挖掘FTP漏洞挖掘一一一一、、、、漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介一一一一、、、、漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介简单的fuzzing演示文件类型漏洞挖掘FTP漏洞挖掘一一一一、、、、漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介一一一一、、、、漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介作为攻击者,除了精通各种漏洞利用技术之外,要想实施有效的攻击,还必须掌握一些未公布的0day漏洞;作为安全专家,他们的本质工作就是抢在攻击者之前尽可能多地挖掘出软件中的漏洞。那么,面对着二进制级别的软件,怎样才能在错综复杂的逻辑中找到真正的漏洞呢?一一一一、、、、漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介一一一一、、、、漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介工业界目前普遍采用的是进行Fuzz测试,与基于功能性的测试有所不同,Fuzz的主要目的是”崩溃crash”,”中断break”,”销毁destroy”。一一一一、、、、漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介一一一一、、、、漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介Fuzz的测试用例往往是带有攻击性的畸形数据,用以触发各种类型的漏洞。我们可以把Fuzz理解成为一种能自动进行”roughattack”尝试的工具。之所以说它是”roughattack”,是因为Fuzz往往可以触发一个缓冲区溢出的漏洞,但却不能实现有效的exploit。测试人员需要实时地捕捉目标程序抛出的异常、发生的崩溃和寄存器等信息,综合判断这些错误是不是真正的可利用漏洞一一一一、、、、漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介一一一一、、、、漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介Fuzz技术的思想就是利用“暴力”来实现对目标程序的自动化测试,然后监视检查其最后的结果,如果符合某种情况就认为程序可能存在某种漏洞或者问题。这里的“暴力”并不是说我们通常说得武力,而是说利用不断地向目标程序发送或者传递不同格式的数据来测试目标程序的反应。一一一一、、、、漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介一一一一、、、、漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介Fuzz的测试优点是很少出现误报,能够迅速地找到真正的漏洞;缺点是Fuzz永远不能保证系统里已经没漏洞。即使我们用Fuzz找到了100个严重的漏洞,系统中仍然可能存在第101个漏洞一一一一、、、、漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介一一一一、、、、漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介攻击者非常热衷于工具,因为软件系统的安全性并不是他们关心的事情,他们只要找到漏洞就可以了。但是对于研究安全问题的学者则不同,他们更关心如何能够检测出所有的漏洞(尽管不可能)。因此,学术界偏向于对源代码进行静态分析,直接在程序的逻辑上寻找漏洞。一一一一、、、、漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介一一一一、、、、漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介静态分析这一方面的方法和理论有很多,比如数据流分析、类型验证系统、边界检验系统、状态机系统等。静态代码分析技术的缺点是经常会产生大量的误报—如果分析工具一次产生了上千个漏洞警告,几乎没有人愿意一个一个地去排查。由于黑客们一般情况下是得不到源代码的,所以使用白盒测试方法的以QA工程师居多。一一一一、、、、漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介一一一一、、、、漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介漏洞挖掘技术简介动态测试技术与静态代码审计的对比动态测试技术动态测试技术动态测试技术动态测试技术静态代码审计静态代码审计静态代码审计静态代码审计主要技术Fuzz等黑盒测试数据流分析、类型验证系统、边界检验系统、状态机系统等主要应用人群攻击者学者、QA工程师优点快捷,准确检测出的漏洞数量多缺点不能发现系统里全部(或者大部分)漏洞实现静态代码分析工具相当困难二二二二、、、、简单的简单的简单的简单的fuzzing演示演示演示演示二二二二、、、、简单的简单的简单的简单的fuzzing演示演示演示演示漏洞挖掘技术简介简单的fuzzing演示文件类型漏洞挖掘FTP漏洞挖掘二二二二、、、、简单的简单的简单的简单的fuzzing演示演示演示演示二二二二、、、、简单的简单的简单的简单的fuzzing演示演示演示演示我们在发现一些溢出漏洞的时候,往往是不断地给目标程序输入不同长度的字符串变量来测试目标程序是不是存在溢出漏洞的。二二二二、、、、简单的简单的简单的简单的fuzzing演示演示演示演示二二二二、、、、简单的简单的简单的简单的fuzzing演示演示演示演示现在我们有一个名为overflow的exe文件,我们给它指定的参数为a,然后逐步加长参数的长度。我们这样做的话,会发现如下的效果:二二二二、、、、简单的简单的简单的简单的fuzzing演示演示演示演示二二二二、、、、简单的简单的简单的简单的fuzzing演示演示演示演示二二二二、、、、简单的简单的简单的简单的fuzzing演示演示演示演示二二二二、、、、简单的简单的简单的简单的fuzzing演示演示演示演示假如要是这样一点一点累加,却不知道什么时候才能有所反应,我们难免会不耐烦,这样我们就需要做一个自动化的工具,这也就是简单的fuzz雏形。我们看一下程序的关键代码。二二二二、、、、简单的简单的简单的简单的fuzzing演示演示演示演示二二二二、、、、简单的简单的简单的简单的fuzzing演示演示演示演示for(inti=380;i470;i=i+2){testbuf=newchar[i];memset(testbuf,0,i);memset(testbuf,'c',i);memcpy(buf,testbuf,i);//printf(%s\n,buf);ShellExecute(NULL,open,argv[1],buf,NULL,SW_NORMAL);deletetestbuf;}二二二二、、、、简单的简单的简单的简单的fuzzing演示演示演示演示二二二二、、、、简单的简单的简单的简单的fuzzing演示演示演示演示上述的程序就是不断地调用我们指定的程序,并且将参数逐渐增加,会不会产生溢出漏洞呢?我们来看看运行程序后的结果。二二二二、、、、简单的简单的简单的简单的fuzzing演示演示演示演示二二二二、、、、简单的简单的简单的简单的fuzzing演示演示演示演示二二二二、、、、简单的简单的简单的简单的fuzzing演示演示演示演示二二二二、、、、简单的简单的简单的简单的fuzzing演示演示演示演示我们从上面的演示程序可以发现,再不断地增加输入参数的字符串长度时,出现了错误的提示,说明程序很有可能出现了缓冲区溢出的漏洞,这就是简单的fuzzing的原理的演示我们大可不必这样自己来写这么丑陋的程序进行fuzz而去使用现成的fuzz工具,也叫做fuzzer。这会使我们的效率事半功倍。三三三三、、、、文件类型漏洞挖掘文件类型漏洞挖掘文件类型漏洞挖掘文件类型漏洞挖掘三三三三、、、、文件类型漏洞挖掘文件类型漏洞挖掘文件类型漏洞挖掘文件类型漏洞挖掘漏洞挖掘技术简介简单的fuzzing演示文件类型漏洞挖掘FTP漏洞挖掘三三三三、、、、文件类型漏洞挖掘文件类型漏洞挖掘文件类型漏洞挖掘文件类型漏洞挖掘—文件格式文件格式文件格式文件格式Fuzz的基的基的基的基本方法本方法本方法本方法三三三三、、、、文件类型漏洞挖掘文件类型漏洞挖掘文件类型漏洞挖掘文件类型漏洞挖掘—文件格式文件格式文件格式文件格式Fuzz的基的基的基的基本方法本方法本方法本方法不管IE还是OFFICE,它们都有一个共同点,那就是用文件作为程序的主要输入。从本质上来说,这些软件都是按照事先约定好的数据结构对文件中不同的数据域进行解析,以决定用什么颜色、在什么位置显示这些数据。三三三三、、、、文件类型漏洞挖掘文件类型漏洞挖掘文件类型漏洞挖掘文件类型漏洞挖掘—文件格式文件格式文件格式文件格式Fuzz的基的基的基的基本方法本方法本方法本方法三三三三、、、、文件类型漏洞挖掘文件类型漏洞挖掘文件类型漏洞挖掘文件类型漏洞挖掘—文件格式文件格式文件格式文件格式Fuzz的基的基的基的基本方法本方法本方法本方法假如我们习惯了这样的思维,也就是假设他们所使用的文件是严格遵守软件规定的数据格式的。因为用Word生成的doc文件一般不会存在什么非法数据。但是!!攻击者往往会在约定的数据格式进行稍许修改,观察软件在解析这种“畸形文件”时是否会发生错误,缓冲区是否会溢出等。三三三三、、、、文件类型漏洞挖掘文件类型漏洞挖掘文件类型漏洞挖掘文件类型漏洞挖掘—文件格式文件格式文件格式文件格式Fuzz的基的基的基的基本方法本方法本方法本方法三三三三、、、、文件类型漏洞挖掘文件类型漏洞挖掘文件类型漏洞挖掘文件类型漏洞挖掘—文件格式文件格式文件格式文件格式Fuzz的基的基的基的基本方法本方法本方法本方法文件格式Fuzz就是利用这种“畸形文件”测试软件的方法。我们可以在网上找到很多FileFuzz的工具。一个FileFuzz工具通常包括以下几个步骤:(1)以一个正常的文件模板作为基础,按照一定规则产生一批畸形文件。(2)将畸形文件逐一送入软件进行解析,并监视软件是否会抛出异常。三三三三、、、、文件类型漏洞挖掘文件类型漏洞挖掘文件类型漏洞挖掘文件类型漏洞挖掘—文件格式文件格式文件格式文件格式Fuzz的基的基的基的基本方法本方法本方法本方法三三三三、、、、文件类型漏洞挖掘文件类型漏洞挖掘文件类型漏洞挖掘文件类型漏洞挖掘—文件格式文件格式文件格式文件格式Fuzz的基的基的基的基本方法本方法本方法本方法一个FileFuzz工具通常包括以下几个步骤:(3)记录软件产生的错误信息,如寄存器状态、栈状态等。(4)用日志或其他UI形式向测试人员展示异常信息,以进一步鉴定这些错误是否能被利用。三三三三、、、、文件类型漏洞挖掘文件类型漏洞挖掘文件类型漏洞挖掘文件类型漏洞挖掘—文件格式文件格式文件格式文件格式Fuzz的基的基的基的基本方法本方法本方法本方法三三三三、、、、文件类型漏洞挖掘文件类型漏洞挖掘文件类型漏洞挖掘文件类型漏洞挖掘—文件格式文件格式文件格式文件格式Fuzz的基的基的基的基本方法本方法本方法本方法文件模板畸形文件1畸形文件2畸形文件3。。。畸形文件n生成畸形文件传入待测软件待测软件解析捕获异常事件异常事件1异常事件2。。。异常事件n正常运行深入分析三三三三、、、、文件类型漏洞挖掘文件类型漏洞挖掘文件类型漏洞挖掘文件类型漏洞挖掘—BlindFuzz和和和和SmartFuzz三三三三、、、、文件类型漏洞挖掘文件类型漏洞挖掘文件类型漏洞挖掘文件类型漏洞挖掘—BlindFuzz和和和和SmartFuzzBlindFuzz即通常所说的“盲测”,就是在随机位置插入随机的数据以生成畸形文件。然而现代软件往往使用非常复杂的私有数据结构。例如PPT、word、excel、mp3、RMVB、PDF、jpg、ZIP压缩包,加壳的PE文件。数据结构越复杂,解析逻辑越复杂,就越容易出现漏洞。复杂的
本文标题:《软件安全》-漏洞挖掘与模糊测试
链接地址:https://www.777doc.com/doc-5247101 .html