论文部分内容阅读
私有协议是因商业保护等原因未公开技术规范的一类协议。协议逆向是在协议规范未知的条件下,通过对协议实体的报文序列或指令序列进行监控和分析,获取协议规范的过程。私有协议逆向在无线网络对抗、恶意软件分析、漏洞挖掘和网络管理等方面发挥着重要的作用,受到越来越多的关注。以工业控制、自动驾驶为代表的大规模物联网业务已成为未来网络的三大主流业务种类之一,鉴于机器到机器通信的特殊需求,此类业务广泛采用面向比特自定义的通信协议。因此,随着物联网迅猛发展,二进制私有协议逆向已经成为未来协议安全领域迫切需要解决的问题之一。面向比特定义的二进制协议往往以离散报文序列的形式出现,无法通过协议交互过程提取流属性特征;同时对协议的识别只能以报文为颗粒度,相比于以流为颗粒度的协议识别,难度更大。为提高网络传输效率,二进制协议通常使用自定义字符集,以比特为单位定义字段,相比于面向字符定义的协议,在无定界符等先验信息的条件下字段边界的确定尤其困难。此外,二进制协议报文状态类型不等价于格式类型,状态类型取决于状态相关字段,因而协议状态机推断需要基于状态相关字段。由此可见,二进制私有协议的逆向面临众多特有问题,目前已成为协议逆向领域的研究难点之一。本文重点研究二进制私有协议逆向问题,分别从协议识别,格式规范提取和行为规范提取三个方面展开,主要工作和创新点如下:1.针对二进制协议面向比特定义,报文维度过高,传统聚类算法聚类簇数和聚类中心难以确定的问题,提出一种基于改进主成分分析和密度峰值的二进制私有协议报文聚类算法。提出基于信息增量确定降维维度的主成分分析算法,在去除冗余的同时保留了原始数据特征;提出基于距离指数加权的密度峰值聚类算法自动选取聚类中心,有效提高了聚类中心和其它报文的区分度。通过在AIS、ARP、DNS、ICMP和SMB协议报文构成的三个数据集上测试,本算法对二进制协议报文具有较好的聚类效果,纯度和F值均在80%以上,与K-means、DBSCAN等经典聚类算法相比,F值平均提升约10个百分点。2.针对二进制协议字段定义灵活,字段偏移量难以准确确定的问题,提出一种基于最佳路径搜索的二进制私有协议格式关键词边界确定算法。提出基于迭代n-gram-position的格式关键词边界提取算法,有效解决了n-gram算法中n值不易确定和固定偏移位置格式关键词边界提取的问题;定义了频繁项边界命中率和左右分支信息熵为基础的分支度量,以关键词和非关键词的n-gram-position取值变化率存在差异为基础构造约束条件,提出基于最佳路径搜索的格式关键词边界选择算法,实现了对格式关键词的联合最优定界。通过在AIS1、AIS18、ICMP00、ICMP03和Net Bios五种不同类型协议报文数据集上测试,本算法的F值均在83%以上,与VDV(Variance of the Distribution of Variances)和Auto Re Engine经典算法相比,F值平均提升约8个百分点。3.针对二进制协议报文状态类型不等价于格式类型,通过聚类很难区分不同状态类型报文的问题,提出一种基于状态相关字段的二进制私有协议状态机推断算法。提出基于最长公共子序列距离的状态相关字段识别算法,有效刻画了协议会话的行为逻辑相似性;提出基于邻接表的初始状态机构建算法,克服了传统基于APTA(Augmented Prefix Tree Acceptor)树构造初始状态机,规模庞大,操作过多的问题;提出基于概率统计的异常会话去除和基于出度、入度的相似状态合并算法,有效降低了协议状态机的规模。通过在TCP和SMB协议数据集上测试,本算法能够有效推断二进制私有协议状态机,准确率和召回率均在90%以上。4.私有协议数据智能分析系统设计与实现。分析了系统应用需求,设计了软件架构,支持数据库数据导入导出、性能指标统计、结果的图形化展示以及菜单式用户操作等功能。初步实现了核心算法,包括协议关键词特征提取、协议报文聚类、协议字段格式提取、协议状态机推断,并对系统不同模块分别进行了功能和性能测试。