EasyFuzzer 1.7简介
EasyFuzzer1.7在今日2015-1-6(小寒)发布
在1.6的版本上,1.7版本主要添加了如下三个功能。
个别畸形样本在运行的时候并不会让程序造成崩溃,而是因一些逻辑错误导致无法正常运行。具体表现为消耗系统大量内存。这也算一种拒绝服务漏洞。可是该类漏洞并不能被传统的fuzzer所捕获。内存启发式监控功能可以解决这个问题。如果在fuzzing的时候开启了内存启发式监控,设置我们要监控的极限值,这样在fuzz的时候如果内存量低于我们设置的极限值,我们的EasyFuzzer就会报警,并且记录当前样本的ID。方便我们后续进行详细分析。
注意:参数数据是剩余内存,而不是已消耗内存。
下图表示设置剩余内存数值。根据你机器的内存和被挖掘的程序内存消耗量自行设置。
下图表示在测试的时候 内存小于80% 因此被记录下来。右侧进度条表示内存的剩余量。
在前面的EasyFuzzer只支持19种常用的异常类型的监控。更多的非常用异常无法监控。在此版本我们增加了自定义异常类型。只要我们输入异常码即可。多个异常码请连续输入。末尾不需要加“H”。一共支持20个自定义异常码。
例如,我们要输入如下4个异常码。
C0000010
C0000011
C0000012
C0000013
只需要按照上图样式输入,点击确定即可。
在我们fuzz的时候,经常由于要挖掘软件的设计,会报一些正常情况的“异常”。愚蠢的FUZZER往往会捕获这些异常。之前可以根据异常种类来忽略他们,但是这个功能并不能很好的解决实际问题。因为很多正常的“异常”和异常的“异常”,他们的异常码是一样的。
那颗该怎么办呢?根据寄存器数值忽略异常功能就可以解决这个问题。
当EasyFuzzer捕获异常后,会把异常信息保存在指定路径中(WIN7 WIN8系统需要以管理员权限打开程序),这个日志有程序异常时各寄存器的信息。很多误报的异常,这些信息都是有共性的,可以根据这些信息来过滤这些我们不想要的异常。
该功能具体如下:
支持15个指定寄存器的定值异常。其中
EAX EBX ECX EDX ESI EDI ESP EBP FLG 9个寄存器每一个寄存器可以设置一个异常值。
而EIP寄存器可以设置6个异常值。因为我们在监控异常的时候,用的更多的还是EIP寄存器。
这就解决问题了吗?没有。有时候同一个异常,根据不同的poc样本崩溃数据往往是不同的,有时候这些数据在一个范围内变化。如某异常可以导致EIP在00401000-004010CC处变化。这样我们定值异常就不能解决该问题了。
因此,我们还支持指定寄存器的范围内异常。支持数量为2。支持的寄存器根据我们的需要去填写。如下例子
例1 要求忽略EIP为00401000--004010CC的异常
例2 忽略EAX=22222222-33333333范围 或者ESP在 44444444-55555555范围内的异常
除此之外,该功能还可以用于如下用途
对一个程序挖掘漏洞,发现一个漏洞后要挖掘第二个漏洞,可是第一个漏洞由于还没有修补,会带来大量的异常影响我们正常去FUZZ,这样就可以把第一个漏洞的异常信息特征加进去,这样就可成功去挖掘第二个漏洞了。