发明名称 一种基于动态污点分析进行消息语义解析的方法
摘要 本发明公开了一种基于动态污点分析进行消息语义解析的方法。其步骤包括1)设置隔离环境;2)利用动态分析,监控软件的函数调用行为;3)利用动态污点分析进行污点源设置,明确污点分析的源数据;4)观察并记录污点传播过程;5)对目标数据进行污点确认。本发明方法基于隔离机制,通过动态分析监控软件的函数调用行为,并在动态分析中进行动态污点分析,观察污点在软件调用序列中的传播过程,利用污点的传播和函数参数的语义对网络交互中产生的消息进行语义解析,明确消息中每一个字段的语义。
申请公布号 CN102521543B 申请公布日期 2014.03.26
申请号 CN201110437004.2 申请日期 2011.12.23
申请人 中国人民解放军国防科学技术大学 发明人 张博锋;吴逸伦;赖志权;乔林波;唐勇;张怡
分类号 G06F21/53(2013.01)I;H04L29/06(2006.01)I 主分类号 G06F21/53(2013.01)I
代理机构 湖南省国防科技工业局专利中心 43102 代理人 冯青
主权项 一种基于动态污点分析进行消息语义解析的方法,其特征在于,包括以下步骤:1)设置隔离环境;隔离环境的设置方法是:(1.1)在宿主操作系统中安装虚拟机监视器;(1.2)在隔离环境中建立网络互联;2)利用动态分析,监控软件的函数调用行为;监控方法如下:(2.1)在隔离环境中运行软件,利用虚拟机监视器监视软件执行的每一条指令,利用指令提供的信息获取软件的函数调用行为;获取函数调用行为的具体过程为:(2.1.1)虚拟机监视器监听软件运行过程中执行的call指令;(2.1.2)提取call指令的参数,将call指令的参数同API函数或者系统函数在内存中的入口地址进行匹配;(2.1.3)根据匹配结果判断软件是否调用了某个外部函数,如果匹配结果相同,则说明软件通过call指令调用了相应的外部函数;(2.2)利用劫持机制在软件调用外部函数的时刻植入监控代码,其中监控代码是利用虚拟机监视器提供的编程接口编写的用于完成监控功能的代码;监控代码的植入具体分为下面两个部分:(2.2.1)在确认软件利用call指令调用外部函数时,虚拟机监视器暂停虚拟操作系统,转而执行获取输入参数的监控代码;(2.2.2)在虚拟操作系统函数执行完毕后,虚拟机监视器暂停虚拟操作系统,开始执行获取输出参数和返回值的监控代码;3)利用动态污点分析进行污点源设置,明确污点分析的源数据;污点源的选取具体包括:(3.1)对于接收消息而言,在软件完成消息接收后,将整个接收缓冲区设置为污点源;对于接收缓冲区的设置如下:(3.1.1)在软件执行完接收函数后,利用监控代码,提取接收函数的参数,通过参数获取接收缓冲区在内存中的位置和区间;(3.1.2)将接收缓冲区的每一个字节都赋予一个确定的标识,这些标识用于区分不同的源数据;(3.2)对于发送消息而言,污点源的选取在软件调用发送函数之前就必须完成;对于发送消息相关污点源的选取如下:(3.2.1)选定函数中具有确定语义的参数;许多函数的参数具有明确的语义,可以用于表征某一块数据的语义信息,因此需要从函数中挑选出具有明确语义的参数;(3.2.2)当软件调用函数时,分析函数的参数是否携带确定语义;(3.2.3)若参数语义明确,则将参数在内存或者寄存器中的数据设置为污点源;(3.2.4)所有的输入参数、输出参数以及返回值均可作为污点源被成功设置;4)观察并记录污点传播过程;观察并记录污点传播过程的方法如下:(4.1)动态污点分析通过分析转移指令,DMA操作,算术操作以及查表指令完成对污点的传播;(4.2)软件在执行过程中伴随着多次的函数调用,在每次函数调用时,判断函数的参数是否已经被污染;(4.3)对于未被污染的参数,不做任何操作;(4.4)对于被污染的参数,利用污点标识,查找到对应污点源,并将被污染的参数信息,函数信息及其对应的污点标识信息做成结点;(4.5)将具有相同污点标识的结点根据函数的调用顺序记录下来,对于有多个污点标识的结点而言,在记录时需要将结点按照污点标识分裂成多个具有单一标识的结点;(4.6)被污染的参数,将作为新的污点源参与到动态污点分析中;5)对目标数据进行污点确认,具体包括:(5.1)对于接收消息而言,在将接收缓冲区设置污点源并观察污点在内存中的传播后,查看每一个字节的污点源对应的结点,如果某一个结点具有足够的语义来表征污点源,则将结点的赋予该污点源;(5.2)对于发送消息而言,目标数据为发送缓冲区的数据;发送消息的污点确认具体如下:(5.2.1)在软件调用发送函数之前,污点源设置和污点传播过程必须执行完毕;(5.2.2)当软件调用发送函数后,利用监控代码获取函数的参数,并根据参数锁定发送缓冲区的位置和区间;(5.2.3)判断发送缓冲区中每一个字节是否被污染;(5.2.4)利用发送消息语义解析算法进行污点确认。
地址 410073 湖南省长沙市砚瓦池正街47号国防科学技术大学