论文部分内容阅读
随着Internet的迅猛发展,基于计算机网络的应用逐步渗透到人类社会各个领域。网络协议,特别是密码协议作为整个计算机网络的基本技术支撑,其自身的可用性、可靠性与安全性显得尤为重要,因此协议自动逆向工程相关研究近年来逐渐成为人们的研究热点和主要方向。协议模型是协议逆向工程的一个重要目标,抽象描述了应用程序的动态网络行为,在协议安全性分析、协议程序验证、协议指纹识别等方面都具有重要应用价值。本文以解决协议模型逆向提取为根本目标,针对逆向分析实践中存在协议消息域字段及其语义难以准确推断,加密网络数据流难以解析,协议时序逻辑及其状态转换关系难以推理,复杂网络应用程序代码难以分析等难点技术问题,提出了一套构建于程序动态二进制分析基础之上的协议模型逆向提取方法,主要研究如何根据网络应用程序的动态执行过程逆向获取协议消息格式、协议模型、协议规范等问题,并在此基础上研究了一种协议模型指导下的协议偏离挖掘方法,提出了一种基于协议偏离的程序指纹自动提取与识别方法。本文主要贡献与创新点包括以下几个方面的内容:(1)深入而广泛地综述了协议逆向工程及程序动态二进制分析技术领域的研究现状与最新进展。针对当前协议验证、程序网络行为分析、协议漏洞挖掘等问题,从网络流分析与主机分析两个层面对协议逆向工程技术进行了介绍,并对现有方案与机制进行了分类,归纳总结各种方法的优缺点及应用范围,从而明确了论文的主要工作。针对本课题的重要技术支撑——程序动态二进制分析技术的相关理论进行了深入研究,描述了污点传播分析、动态二进制插桩DBI等关键技术的原理,同时还介绍并总结了各类动态二进制分析平台的优缺点。(2)提出了一套基于程序动态二进制分析的消息格式逆向解析方法。加密网络数据流分析与协议消息域字段的识别及域语义推理一直是协议逆向工程所面临的技术挑战,根本原因在于逆向分析方法自身,以及协议信息难以逆向获取等固有因素。本文结合主机加解密行为语义知识,提出了一种在函数级与指令级语义层面上的消息域语义属性逆向推理方法,以及一种基于库函数调用级与指令级的混合污点分析技术,解决库函数调用级污点分析技术分析精度不高、应用范围窄,以及指令级污点分析技术语义获取困难等问题;并在此基础上提出了一种能够逆向解析密码协议加密消息格式的方法,解决了目前基于网络流的协议逆向分析技术无法分析加密消息的问题。(3)提出了一种基于协议网络行为消息交互图挖掘的分布式多角色协议模型逆向推断技术。协议模型抽象描述了网络应用程序的动态网络行为,然而对于现代网络协议,特别是以密码学机制为基础的安全协议,往往具有复杂的协议时序逻辑及状态转换,因此从网络应用程序中逆向恢复协议模型具有相当的难度和挑战。本文应用状态机相关理论与方法,提出了一种基于协议网络行为消息交互图挖掘的分布式多角色协议模型逆向推断技术,能够在协议交互过程中存在多个角色主体参与会话的情形下,逆向提取密码协议应用程序的协议模型,并在此基础上提出了一种从协议状态机模型到形式化协议规范描述的转换算法,能够根据高级协议描述语言的相关定义,自动地将逆向提取到的协议模型描述为形式化的协议规范。(4)提出了一种在协议模型指导下的协议偏离自动挖掘方法。协议偏离描述了协议各版本实现程序在实际网络行为上的差异。鉴于协议偏离在协议实现程序验证、协议指纹提取等领域的应用价值,本文提出了一种在协议模型指导下的协议实现偏离自动挖掘方法。该方法通过对被测协议实现程序执行一系列的主动迭代测试来不断发掘协议各版本实现程序中所存在的偏离,并在此过程中不断调准逆向推理的协议模型,实现提高逆向分析精度的目的。(5)提出了一种基于协议偏离的程序协议指纹自动提取与识别方法。针对传统协议指纹提取存在耗费大量时间和人力的问题,本文结合协议偏离的特点,首次提出了程序协议指纹自动提取与识别方法,其关键思想在于通过观察网络应用程序的消息处理动态执行过程来提取协议特征,因此能够用于对密码协议通信程序的协议指纹识别。以协议偏离会话流层面与协议偏离响应消息层面为切入点,在协议指纹自动提取方法上,论文首先结合协议会话流特征的TPFSM描述以及协议偏离响应消息的特点,提出了协议特征提取方法;其次对协议指纹库的构造与优化进行了研究。在协议指纹自动识别方法上,论文首先提出了会话流编码以及SHINGLE(连续节点序列样本)的概念,然后在会话流层面提出了基于SHINGLE的会话流特征匹配算法以及基于正则表达式的消息特征匹配方法。本文研究是对协议逆向工程技术领域的一次有益实践与探索,研究成果对于未来继续开拓协议程序验证、程序网络行为分析、协议漏洞挖掘等应用领域具有重要的理论价值与实践意义,对完善与发展网络安全领域起到了积极推动作用。