FUZZ初学笔记(一)

安全漏洞发觉方法:

  1.白盒测试:
    为源代码评审,这种方法也可以在自动化工具的辅助下完成,源代码分析工具一般可以分为三类:
       1.1.1,编译时检查器:这种工具通常与编译器记成子啊一起,但是主要查找与安全性有关的问题而不是应用程序的功能问题
       1.1.2,源代码浏览器:这种工具是专门设计用于辅助人工检查和评审源代码的软件工具,这类工具允许评审者执行代码的高级搜索,枚举代码,以及在代码的交叉引用位置之间进行导航
       1.1.3,自动源代码审核工具:这种工具用于扫描源代码以及自动识别可能的关注区域,同大多数安全性工具一样,源代码自动审核工具也有开源的自由软件解决方案,除此之外这类工具更倾向于关注具体的编程语言,因此如果目标原件使用大量不同的编程语言的话,可能语言多种源代码自动审核工具

    1.2,白盒测试的优缺点:
      1.2.1,优点:覆盖能力(优于白盒测试能获得所有的源代码,因此代码评审允许完全的覆盖)
      1.2.2,缺点:复杂性(源码分析工具是不完善的,有可能报告出伪问题)
               可用性不高(window下软件基本不开源,所以一般只能适用于UNIX下)

   2.黑盒测试:
     黑盒测试以为这只能了解外部观察到的东西。作为终端用户,可以控制输入,从一个黑盒子的一端提供输入,从盒子的另一端出输出结果,但是不知道被控目标的内部工作细节。
    2.1.1,人工测试:在没有自动化工具辅佐的情况下通过人工测试应用程序来查找漏洞,着通常并不是一个可行的方法(耗费的人力物力将会很大)
    2.1.2,扫除技术:(使用函数进行穷举(比如windows应用编程接口API提供的一个函数CreateProcess))
    2.2,自动测试或模糊测试:模糊测试在很大程度上是一种强制性的技术,因此它缺乏“优雅性”,它的目标是简单加有效(直接把能想到的数据丢进去跑,也可以使用脚本构造数据,所以,这个过程将会很缓慢,如果你选择的model不对,那将会是一场无止境的等待)
    2.3,黑盒测试的优缺点:
       2.3.1,优点:可用性(不用在知道源码的情况下进行测试,并且如果选对了方向,一般是可以出结果的)
                             可重现性(就相当于c++中的类或者模板,只要我们创建了一个试用的model,那么针对相同类型的只要更改参数基本就可以重新使用)
                             简单性(它能够在不十分了解应用程序内部细节的情况下执行)
       2.3.2,缺点:覆盖能力(如何确定测试何时结束以及测试的有效性程度)
                             理解力(黑盒测试最适合哪些安全漏洞由一个单独的输入向量所引起的场景,然而复杂的攻击需要多种攻击向量,其中一些攻击将目标应用程序直入一种脆弱的状态,其他攻击向量进一步触发漏洞,此类攻击需要深刻理解应用程序的底层逻辑,并且典型地徐璈通过人工代码评审和RCE(Reverse Compile Enginering 逆向编译工程)才能发现漏洞)
  3.灰盒测试:
    灰盒测试的定义是在白盒测试和黑盒分析之间浮动的,我们给它们下的定义是:首先它包括了黑盒测试审核,此外还包括了通过RE获得结果,在汇编代码层次上进行安全评估而不是在源代码上进行安全评估,这种安全评估一般称为二进制审核
    3.1.1,二进制审核:RCE通常与二进制审核这个词汇被当成同义词而使用,RCE的最终目标是决定一个编译后得带的二进制程序的底层功能,其中有很多二进制分析工具,下面一一罗列出下载地址,大家可自行查阅资料和官方文档:
ollydbg
http://www.openrec.org/forums/posts/4
http://www.microsoft.com/whdc/devtools/debugging/default.mspx
http://www.openrec.org/downloads/browse/OllyDbg_Plugins
http://www.gnu.org/osftware/gdb/gbd.html
还有一些自动化二进制审核工具:
        
  3.2,灰盒测试的优缺点:
     3.2.1,优点:可用性(同黑盒)
                           覆盖(同黑盒)
     3.2.2,缺点:复杂性(RCE是一个专业的技能,因此它需要的资源有可能不可用,从而导致这种方法无法使用)

你可能感兴趣的:(漏洞挖掘)