Proj THUDBFuzz Paper Reading: AutoFuzz: Automated Network Protocol Fuzzing Framework

Abstract

AutoFuzz: smart, man-in-the-middle, sme-deterministic network protocol fuzzing framework.
方法:

  1. 建立客户端-服务器之间的交流FSA
  2. 学习消息语法,语法中包含域和简单类型信息(learns individual message syntax, including fields and probable types)
  3. 使用FSA引导来fuzz客户端或者服务器

实验:
对多个FTP实现进行了Fuzzing

1. Intro

P1: 网络协议带来严重安全问题
P2:
dumb fuzzer: 对目标的通讯协议没有任何先验知识,随机发送输入,例如ProxyFuzz。缺点:效率较低
smart fuzzer: 明白协议的状态机,消息语法和能够填入的域的类型。缺点:需要人力改编
P3: Previous Work
2:Network Protocol Analysis Using Bioinformatics Algorithms
4:Prospex: Protocol Specification Extraction
5: A Model-based Approach to Security Flaw Detection of Network Protocol Implementation
5能够通过对协议实现的了解,从历史会话中合成抽象行为模型(给定许多network traces,算法会构建加上最小化生成一个FSA)。其主要特点是消极合成+削减部分FSA状态。(passive synthesis + partial FSA reduction)。FSA的建构关键是abstraction function,abstraction function能够将类似的信息映射到某个特殊的抽象表示上。测试人员需要提供两个函数,一个将输入映射为输入结构体,另一个将输出映射为输出结构体。
4则是通过自动抽取协议规范来建构FSA和信息类型的。
这几项研究都没有公开源码以供后来者研究。

P4:
AutoFuzz用户端服务端都能做,但是本文将其局限在服务端。
步骤:

  1. 通过历史会话,抽取网络协议规范
  2. 使用5相同的方法构建FSA
  3. 使用2相同的方法获取消息中域的类型

本文提出新概念: GMS(Generic Message Sequence),Fuzzing functions能够在GMS上进行操作,这样就无需像5一样提供protocal specific fuzzing functions。
cluster则是相似的GMS的集合。

2. Framework Overview

2.1 主要组件

  1. GUI: 允许用户控制fuzzer行为
  2. Proxy Server: 记录修改application level traffic
  3. 协议标准Extractor: 抽取网络协议状态
  4. Fuzzing Engine: 包括确定性和随机性两个阶段。确定性将预先编写好的数据放入GMS,不确定性的随机略过静态或者变量相关的数据域,在FSA上做随机transitions,在GMS上注入随机数据。

3. Generic Message Sequence Construction

  1. 使用聚类技术将类似的(intput或者output)messages聚合起来
  2. 在每个cluster上使用sequence aligment algo
  3. 为每个cluster生成GMS
  4. 将协议FSA中每个transition都和对应的GMS联系起来。

4. Fuzzing Algo

AutoFuzz中有一些已经定义好的可以后期拓展的fuzzing functions。

posted @ 2021-09-11 15:05  雪溯  阅读(96)  评论(0编辑  收藏  举报