论文部分内容阅读
网络协议逆向分析常被应用于软件安全缺陷分析、网络数据包重放、业务逻辑漏洞挖掘、网络安全策略制定等场景中,研究移动应用网络业务协议的逆向分析技术对于移动安全有着重要意义。现有的协议逆向分析技术包括依赖于网络报文样本序列比对的静态分析方法,以及对应用程序执行指令序列进行获取的动态分析方法。移动应用中私有业务协议作为网络协议的一种,其协议格式简单,并且通常经过加密、哈希、压缩等方式处理,无法简单地通过报文序列分析来获取其字段含义。另外在移动应用开发过程中,开发者会采取代码混淆、代码动态生成等安全保护措施,使得通过数据流追踪、指令插桩等技术手段难以对应用在执行过程中的指令序列进行准确获取。基于上述分析,本文提出了移动应用私有业务协议逆向分析方法,该方法可以弥补当前技术的局限性。论文主要工作如下:(1)分析移动应用在协议生成过程中为保障协议安全性而采取的技术手段,包括数据加密方式、密钥管理方式、身份认证等,总结出其中可能产生安全漏洞的关键点,提出一套基于逆向分析结果的协议安全性检测方案。(2)对Android平台下的逆向分析技术进行研究,提出了基于字段回溯的协议逆向分析方法,该方法以协议字段为起点,对控制流图进行反向的可达性分析,解决了协议逆向分析时因数据源不明确,导致代码位置无法准确定位的问题。相较于正向的函数调用分析,该方法减少了因代码混淆而产生的无用函数分支,使得分析结果更加明确。(3)基于JDWP协议实现动态调试器,并结合静态分析结果进行指令级的动态数据获取。相较于动态调试框架,该方法可移植性强,能够实现指令级的数据获取。本文将该方法与静态分析结果相结合,在面对应用采用代码混淆或是动态代码生成等安全策略时,弥补了静态分析无法完整提取函数序列的缺陷。(4)为验证方法的有效性,设计并实现了移动应用协议逆向分析系统,对总体设计与技术方案进行了详细介绍,并对其中各个功能模块的实现进行了描述。实验选取大量不同类型应用进行协议逆向分析,实验结果表明,本文提出的方法能够对不同应用的协议字段生成方式进行获取,最后依据协议安全性检测方案对应用中存在的安全威胁进行了分析。