Scapy TCP-running fuzz

截至到今天,分别基于socket和scapy的fuzz小脚本基本成型,可以顺利的跑起来并且可以不间断的做效率较低的协议fuzz测试,当然,协议是S7.

最终还是采取了日志记录整个fuzz过程的方式,大致过程如下:

scapy_fuzz流程图.png

图画的有点儿粗糙,基本上就是这样的一个流程,在发送畸形数据包之后,因为数据格式错误,所以接收到RST包,因此不断的重新握手,发送伪造的数据包.

  • 为什么用日志文件?

因为在执行过程中如果能对每次的返回数据进行分析是最好的选择,但是目前从实现看来先通过scapy的sniff模块,进行嗅探之后,直接从buffer中将flags/load等信息直接记录到文件中,当设备报错之后,我们可以从日志文件中直接找到出现文件的点以及是什么数据内容造成了设备的异常.

  • 能不能跑得更快?

这也是我在想的问题,这样看起来,需要时间来进行fuzz测试,但是如果能提高速度,那么效率提起来之后,设备的承受能力已经是否有问题很快就可以得出结论.所以,在考虑多线程或者多进程可能会有帮助?

  • wireshark抓包过程出现伪重放

因为自己在循环的过程中,五元组数据中的端口没有重新随机一次,所以wireshark会识别为伪重放,但是并不影响设备的正常响应,所以解决办法也很简单的.

  • 测试效率–提高速度
  • 并发并行–两个进程
  • 数据包格式–更有针对性
  • 是否还有更好的方式解决问题?

终于能跑一晚上试试水了,不会写代码真的是硬伤.

fuzz初步成功第一个晚上测试运行.png