云环境下逆向数据分析的意义及国内外研究现状1.逆向工程逆向工程(又称逆向技术),是一种产品设计技术再现过程,即对一项目标产品进行逆向分析及研究,从而演绎并得出该产品的处理流程、组织结构、功能特性及技术规格等设计要素,以制作出功能相近,但又不完全一样的产品。逆向工程源于商业及军事领域中的硬件分析。其主要目的是在不能轻易获得必要的生产信息的情况下,直接从成品分析,推导出产品的设计原理。产生动机1.接口设计。由于互操作性,逆向工程被用来找出系统之间的协作协议。2.军事或商业机密。窃取敌人或竞争对手的最新研究或产品原型。3.改善文档。当原有的文档有不充分处,又当系统被更新而原设计人员不在时,逆向工程被用来获取所需数据,以补充说明或了解系统的最新状态。4.软件升级或更新。出于功能、合规、安全等需求更改,逆向工程被用来了解现有或遗留软件系统,以评估更新或移植系统所需的工作。5.制造没有许可/未授权的副本。6.学术/学习目的。7.去除复制保护和伪装的登录权限。8.文件丢失:采取逆向工程的情况往往是在某一个特殊设备的文件已经丢失了(或者根本就没有),同时又找不到工程的负责人。完整的系统时常需要基于陈旧的系统上进行再设计,这就意味着想要集成原有的功能进行项目的唯一方法,便是采用逆向工程的方法,分析已有的碎片进行再设计。9.产品分析:用于调查产品的运作方式,部件构成,估计预算,识别潜在的侵权行为。方法实现1.分析通过信息交换所得的观察。最常用于协议逆向工程,涉及使用总线分析器和数据包嗅探器。在接入计算机总线或网络的连接,并成功截取通信数据后,可以对总线或网络行为进行分析,以制造出拥有相同行为的通信实现。此法特别适用于设备驱动程序的逆向工程。有时,由硬件制造商特意所做的工具,如JTAG端口或各种调试工具,也有助于嵌入式系统的逆向工程。对于微软的Windows系统,受欢迎的底层调试器有SoftICE。2.反汇编,即使用反汇编器,把程序的原始机器码,翻译成较便于阅读理解的汇编代码。这适用于任何的计算机程序,对不熟悉机器码的人特别有用。3.反编译,即使用反编译器,尝试从程序的机器码或字节码,重现高级语言形式的源代码。2.未知协议逆向分析的研究意义未知协议逆向分析是在不清楚目标协议的规范的前提下,逋过逆向工程跟踪解析协议通信过程的指令级和函数级操作来重构协议的规范,从而解析出未知协议的语法结构和行为语义,是当前网络安全研宄的一个热点和重点。(1)未知协议逆向分析成为网络信息安全研究和防御的重要手段在日常生活和工作中,网络通信协议在计算机网络和分布式系统的应用是不可替代的,比如在电子商务领域、通信领域、交通领域、金融领域、应急服务领域、电力调度领域等。在这过程中,未知协议不断的出现和衍生,伴随而来的是大量的网络安全问题的出现。比如,某知名网站客户个人信息泄露、某产品系统被非法入侵、某网站被黑客攻击等。未知协议逆向分析对入侵检测、漏洞挖掘、网络流量分析、网络安全策略的制定等起着至关重要的作用。(2)未知协议逆向分析为其他安全检测产品提供了基础a)入侵检测系统(IDS)是逋过某种设备监听网络上传输的原始流量,对捕获的网络数据包进行分析处理,再从分析的结果中提取有用的信息,最后,为了达到识别攻击事件的目的,需要通过比较已知攻击特征和正常网络行为特征来识别。b)入侵防御系统(IPS)同样也是通过监视网络设备的传输情况,对网络行为判断是否为攻击行为,是否会对网络、数据造成危害的恶意行为,从而到达对网络行为进行检测和防御的目的,使用者能及时应对网络异常状况,并以最大限度的降低网络处理资源的开销,是一种侧重于风险控制的安全产品。C)防火墙是由服务访问规则、验证工具、包过滤和应用网关4个部分组成的在内网与外网之间、专用网与公共网之间根据特定的访问规则建立起的一种过滤防护技术,存在软件防火墙和硬件防火墙两种形式。以上几个安全产品都涉及到网络数据包行为分析,对未知网络协议数据的分析是不可避免的,未知网络协议逆向分析技术为IDS,IPS,Firewall等安全产品分析网络数据提供了技术支持,也是对网络流量险情检测能力的一种补强。3.未知协议逆向分析的国内外研究现状近年来,国内外网络安全工作者、研究机构在未知协议逆向分析领域开展了大量的研究工作,并取得了丰硕的成果。当前协议逆向分析的方法主要有两种:基于网络报文序列采样匹配的静态分析方法和基于协议数据在应用程序执行时监控其指令序列轨迹的动态分析方法。其中,静态分析方法是以未知协议的网络报文序列为分析对象,釆样其网络数据为样本,通过概率匹配算法统计其流量出现的频率和特征来识别未知协议的格式,特点简单、易实现、不需要协议解析终端,因此通用性更强,但缺点是采样量的大小是制约协议识别准确率高低的重要因素,同时不同的协议因为实现标准的差异,有些甚至是非标准的、混滑加密的私有通信协议,单纯的利用概率匹配网络协议流量很难达到识别未知协议的语法格式和字段语义的目的,已有的研宄成果具有代表性的有PI,Discovere产等,采用的方法包括:通过统计网络数据流中不同协议字段的出现频率,利用某种推演算法识别协议字段结构的方法;通过对网络流量的内容统计分析后进行建模,最后针对不同网络流量对应的协议类型进行识别和区分的方法还有通过处理自然语言和字符串对齐算法对网络数据流进行主动学习,并能对接收到的网络请求进行自动地应答,最后达到识别未知协议的目的动态分析方法是在目标协议数据在应用程序被处理过程中动态跟踪其指令流的轨迹来解析协议的格式,与静态分析方法相比,该方法能获得污点源被应用程序处理过程中的指令级污点扩散轨迹和函数级语义信息,对解析协议语法格式更加准确、识别协议字段语义具有明显的优势,主要研宄成果有:Polyglot,AutoFonnat等。3.1基于网络报文序列采样匹配的方法国外提出对未知协议逆向分析釆用网络报文序列釆样匹配分析的方法较早,最为典型的是Beddoe于2004年启动的PI项目(protocolin-formationproject)。PI项目的核心方法是把生物信息学的序列比对算法应用到对网络报文序列集进行比对分析,其具体分析流程如图1-1所示:图1-1PI的分析流程图3.2基于协议数据在应用程序执行时监控其指令序列轨迹的方法Lin等人提出了基于污点数据分析的协议字段间结构识别方案AutoFormat,该方案的特点是结合了污点数据解析的上下文环境,在污点跟踪过程中,记录所有与污点源扩散相关的操作指令和对应的函数调用的地址。协议字段间存在不同的约束关系,AutoFormat分别通过判断字段间的偏移地址范围是否有重叠推断字段间的包含关系,通过两个字段间的上下文环境是否相同推断字段间的并列关系以及通过判断指令子序列的调用顺序来识别字段间的顺序关系。AutoFormat对简单的报文协议是可行的,但是针对具有复杂结构的网络协议就无法有效的识别。因此,Tupni基于Polyglot与AutoFormat设计理念的基础上,通过重点监控复杂结构污点源的控制流指令特征和与平台相关的API调用情况,来获得未知语义类型的符号谓词约束,最后以BNF的形式输出协议逆向的结果。JCaballero等人于2007年提出动态监控污来逆向分析的思想,并设计出了原型系统Polyglot。Wondracek等人在Polyglot的基础上提出了另外一种新的方案,即综合多次逆向解析结果的基础上,将格式相同的报文进行信息融合,进而达到提取更准确的协议报文结构。出于网络传输隐蔽性的考虑,越来越多的未知协议采用了加密技术对报文进行了加密保护,面对这种情况,Wang等人提出了基于缓存区数据生命周期分析的解密报文识别方案FeFormat,该方案可行性依据是:一般情况报文解密过程通常独立于执行过程,并且在解密过程中算术指令与比特位操作指令的数量要明显多于执行过程中的,通过监控和捕获解密报文缓冲区数据以后,就把密文解析转化为明文解析了。但是,也存在对报文解密和执行交替进行的情况,Dispatcher沿用了ReFormat中判断报文解密特征的思想,同时针对编码函数级指令做到全路径监控(包括加/解密函数、混淆函数、解压缩函数以及hash函数等),这样即使有多个加密过程与解析过程交替,协议分析识别率也会很高,此外,Dispatcher提出了对输入和输出两个方向的报文进行识别的思想,实现了对协议正反两个方向的报文逆向分析,对提高报文识别率有很大的帮助。综述:未知协议逆向分析是本课题的主要研究内容和研究基础。未知协议逆向分析的目的,是在未获得目标协议规范的前提下,通过逆向模拟重构协议的通信过程来解析未知协议的语法结构和字段语义,其对软件安全性分析、入侵检测、指纹生成、应用程序会话重放、流量控制、漏洞挖掘、网络安全策略的制定等起着至关重要的作用。设计一个自动化程度高,逆向解析准确率高,动态分析与静态分析结合的未知协议识别方法是本课题所解决的关键问题之一。