- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于数据流研究网络协议逆向解析技术
基于数据流研究网络协议逆向解析技术
摘要:
对未知网络协议进行逆向解析在网络安全应用中具有重要的意义。现有的协议逆向解析方法大都存在无法处理加密协议和无法获取协议字段语义信息的问题。针对这一问题,提出并实现了一种基于数据流分析的网络协议解析技术。该技术依托动态二进制插桩平台Pin下编写的数据流记录插件,以基于数据关联性分析的数据流跟踪技术为基础,对软件使用的网络通信协议进行解析,获取协议的格式信息,以及各个协议字段的语义。实验结果证明,该技术能够正确解析出软件通信的协议格式,并提取出各个字段所对应的程序行为语义,尤其对于加密协议有不错的解析效果,达到了解析网络协议的目的。
关键词:
数据流分析;网络协议逆向;加密协议解析;动态二进制插桩;协议字段语义
0引言
随着互联网的发展和网络应用的普及,网络通信已经成为各种软件系统的重要功能。如何通过软件逆向分析的方法分析软件网络行为、解析软件使用的通信协议,是现阶段网络安全领域的一大热点,也是软件安全性分析、网络安全策略制定等工作的重要内容[1]。
协议逆向解析是指采用逆向分析的思想,解析出目标网络应用程序所使用的协议格式,以及各个协议字段所对应的程序语义信息,其在漏洞挖掘、网络入侵检测、网络管理、指纹生成、应用程序会话重放等网络安全领域具有十分重要的应用价值[2]。
现阶段对于协议逆向解析已经取得了一些研究成果。Cui等[3]提出了一种通过观察网络数据流中不同协议字段的出现次数,推断协议字段结构的方法。由于这种方法不考虑具体协议内容,因此分析效果依赖于样本数据流中字段重复出现的次数和每次出现的形式是否一致。Ma等[4]通过对网络流量的内容进行统计建模,识别和区分流量对应的不同协议;但该方法只能用于识别协议类型,无法解析具体的协议结构。Small等[5]则设计并实现了利用自然语言处理和字符串对齐算法对网络数据流进行学习,自动地对收到的网络请求进行应答的方法;该方法能够根据数据内容的排列模式从样本数据中选择类似的会话用于自动应答,但无法分析具体协议语法和语义。这类基于统计分析的方法需要大量的网络数据作为分析样本,同时无法处理混淆、加密流量,更无法获取协议字段的语义信息。
基于上述研究现状,结合解析网络协议的目的,本文提出了一种基于数据流分析[6]的网络协议解析技术,以解决加密网络协议的逆向解析问题。数据流分析技术关心的是数据在程序执行过程中的传播路径,通过动态污点跟踪的方法,分析污点数据在内存中的读写情况,达到分析软件行为的目的。这种方法在保证分析效率的前提下,能够有效应对协议格式加密、软件加壳、代码混淆等情形。
1基于Pin的动态数据流记录
本文将协议逆向解析的工作划分为数据流记录、数据流分析和网络协议逆向解析三个阶段。
要进行数据流分析,首先要获得程序的动态数据流信息。由于程序在动态运行期间,实际执行到的指令条数往往能够达到千万甚至亿数量级,规模庞大,因此如何提高记录效率是数据流信息记录的关键。
动态二进制插桩平台Pin[7]在效率和可扩展性两方面有着独特的优势,因此,本文结合条件插桩、延迟写入、代码缓存刷新等技术,设计并实现了一款基于Pin的动态数据流记录插件,可高效准确地记录用户指定程序片段在执行期间的数据流信息,并生成含有指令地址、指令机器码、内存、寄存器和指令属性等信息的二进制文件,再对这些文件进一步加工处理合并,最终生成具有统一格式的指令信息二进制文件。
2基于数据关联性分析的数据流跟踪
传统的数据流跟踪过程需要事先指明污点源[8],且一次分析仅能获得与污点源相关的少量信息,污点源变更后又要重新分析,而整个分析过程涉及到污点传播分析、污点管理[9]等很多复杂的工作,因此会造成严重的时间浪费。为避免此问题,本文将传统的数据流跟踪划分为数据关联性分析和数据流跟踪两个阶段。
2.1数据关联性分析
数据关联性分析处理所有程序执行期间使用过的内存和寄存器信息,并最终生成一张全局性的数据关联图,该图能够标识出不同层次间和层次内的数据关联性信息。数据关联性分析过程中涉及到污点传播分析和污点管理,因此用时较长,但仅需执行一次,待数据关联图生成完毕,后续的数据流跟踪只需在数据关联图基础上进行。当污点源发生改变后,无需重复污点传播分析等耗时过程,可大大缩短分析时间,提高分析效率。
该方法首先将函数指令划分为一个个独立的区域,在此基础上进行数据关联性分析,具体过程描述如下。
2.2数据流跟踪
数据流跟踪分为正向跟踪和反向跟踪两种。由2.1节可知,本文数据流跟踪建立在数据关联图基础之上,而并不以原始的程序轨迹信息作为输入。对程序从网络获取的数据进行正向跟踪,可以分析得到程序对获取
文档评论(0)