模糊测试-强制性安全漏洞发掘学习笔记

漏洞挖掘有三种方法:白盒代码审计、灰盒逆向工程、黑盒测试。其中黑盒的Fuzz测试是效率最高的一种,能够快速验证大量潜在的安全威胁。
Fuzz测试,也叫做“模糊测试”,是一种挖掘软件安全漏洞、检测软件健壮性的黑盒测试,它通过向软件输入非法的字段,观测被测试软件是否异常而实现。Fuzz测试的概念非常容易理解,如果我们构造非法的报文并且通过测试工具打入被测设备,那么这就是一个Fuzz测试的测试例执行,大多数测试工程师肯定都尝试过这种测试手段。
对于网络协议漏洞挖掘来说,Fuzz测试也就意味着打入各种异常报文,然后观察设备是否有异常。

白盒测试:用源代码审计工具审计源代码(windows不开源不存在这一说)
测
黑盒测试:模糊测试时不需要注意应用程序工作的内部细节,向程序抛出自动化的输入
在这里插入图片描述在这里插入图片描述灰盒测试:也就是逆向了(二进制审核)
在这里插入图片描述在这里插入图片描述模糊测试:把所有能够想象的到的都抛给目标,然后监听结果
模糊测试又分两类:基于生成的模糊器与基于变异的模糊器
基于生成的模糊器:通过堆目标协议和文件格式建立模的方法从头开始产生测试用例
在这里插入图片描述在这里插入图片描述
基于变异的模糊器:对已有数据样本变异技术创建测试用例

在这里插入图片描述在这里插入图片描述在这里插入图片描述
模糊测试过程:
1 选择目标: 如果目标是应用程序,可以看看应用程序的厂商,如果厂商往年没有爆出啥漏洞,就可以溜了,反之干他就完事了,嗯很猥琐。
2 识别输入:包阔一切能向程序输入数据的行为(环境变量,输入输出,路径,消息头等等…)
3 生成模糊数据:不管是变异数据还是基于已有数据动态生成,这些决策取决于目标应用以及数据格式
4 执行模糊测试数据:把数据发过去,例如打开文件,直接输入。
5 监视异常:看见程序崩了就可以乐了(还没完)

6 确定利用性:程序崩溃不代表一定有漏洞 需要具体去分析,但确实有相当一部分漏洞和程序的崩溃有关系,你如果能够稳定触发崩溃,就要去分析崩溃现场,是因为什么崩的,然后再看有没有利用空间 如果可以利用的话,那就是一个漏洞

模糊测试的局限性:书中说了几个 我贴个最重要的
在这里插入图片描述模糊器类型分为远程和本地:
本地
命令行模糊器:当一个应用程序需要处理命令行参数,比如输入

环境变量模糊器:当一个应用程序需要处理用户环境变量的值
文件格式模糊器:当一个应用程序需要处理文件

远程
网络协议模糊器和web应用模糊器和内存模糊器(不解释是我不会)
模糊测试框架:其实就是一个通用的模糊器或者库
在这里插入图片描述在这里插入图片描述在这里插入图片描述协议部分
在这里插入图片描述在这里插入图片描述一个模糊器应该有的需求:
1 记录好日志,比如模糊器工作中途的信息
2 可重用性:如果我要开发文件格式的模糊器,那么一些文件格式可重用的特征,可以写多个构件用来改变测试集合用来测试其他文件格式
3 不要忘记完全充分覆盖所需要的逻辑环拆分是呈指数规模递增的,通俗一点就是把能够抛向目标程序的玩意都抛给程序
4 代码覆盖率:如何开始?从哪里结束?

5 错误检测:例如内存从哪里开始被破坏的
6 资源和时间约束:哪些技术是可以实现的,哪些技术是活在梦里

windows上的文件格式模糊测试
文件格式漏洞的描述:
加粗样式在这里插入图片描述filefuzz的开发过程
在这里插入图片描述书中其他的部分只是大概扫了一下,写个总结:此书注重理论,对我这种fuzz小白来说很友好。

猜你喜欢

转载自blog.csdn.net/qq_43045569/article/details/105045970