利索能及
我要发布
收藏
专利号: 2018100404840
申请人: 中南民族大学
专利类型:发明专利
专利状态:已下证
更新日期:2026-06-16
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种安全协议消息构造方法,其特征在于:首先建立消息构造模型,然后基于函数迹进行协议消息构造;

所述建立消息构造模型,首先设fun()函数是通过函数钩子方法监控的JavaScript函数,arg为fun()函数对应的参数,argm为修改之后的参数,Sg是fun()函数修改参数重新执行后得到的输出值,Tn为协议消息中的消息cell,M为原始协议消息,Mg为构造后得到的协议消息;则所述模型的工作流程包括以下子步骤:步骤A1:用argm替换掉fun(arg)中的参数arg得到参数修改后的函数fun(argm);

步骤A2:重新执行fun(argm)得到新的函数输出Sg,Sg用来替代消息cell中对应位置的消息块cell_Tn,n=1,2,3...,N;

步骤A3:在消息M中定位到需要被替换的消息块cell_Tn;然后得到新的消息Mg,该Mg消息就是得到的构造消息;

所述基于函数迹进行协议消息构造,具体实现包括以下子步骤:

步骤B1:对使用函数钩子方法得到的函数迹进行解析,得到函数名funname与函数参数arg的栈结构;

步骤B2:修改相应函数参数得到新的函数输出,调用栈结构中的函数参数arg和函数名funname,修改arg得到argm,然后重新执行funname对应的函数得到新的函数输出Sg;

步骤B3:在拦截的客户端协议消息M中,定位需要被替换的消息块cell_Tn,接着从M消息中删除Tn,然后把步骤B2中得到的Sg值嵌入到原Tn所在位置,便得到新的消息Mg,该消息即构造消息;该消息被发往安全协议服务器端。

2.根据权利要求1所述的安全协议消息构造方法,其特征在于,步骤B1中所述对使用函数钩子方法得到的函数迹进行解析,具体实现包括以下子步骤:步骤B1.1:将通过函数钩子方法获得的安全函数的函数迹保存在日志文件中;

步骤B1.2:对该日志文件进行遍历,直到该文件的结束;把读取的函数迹按照函数名、函数输入及函数输出的形式表示成相应的安全函数迹—APIi;

步骤B1.3:若得到的函数函数迹不空,则将其存入到建立的栈结构中,直到把所有函数返回值不空的函数迹存入栈中。

3.根据权利要求1所述的安全协议消息构造方法,其特征在于,步骤B3的具体实现包括以下子步骤:步骤B3.1:获得一条协议消息;

在安全协议客户端输入特定的输入数据,客户端必将产生一条完整的协议消息;在其被发送过程中,使用中间人代理Proxy拦截该条消息,由此便获得一条完整的协议消息;

步骤B3.2:对协议消息进行解析划分得到消息cell;

在协议消息中,包含协议消息字符最多的一段称为协议消息段,记为集合P,消息块中最小的单元称为协议消息cell,记为集合T;协议消息段中由一个或多个协议消息cell组成的协议消息部分,且该部分所包含的协议消息字符或协议消息cell在数量上比协议消息段少,该部分消息称为协议消息块,记为集合B,且T∈B∈P,在获得协议消息后,对该消息进行cell解析划分操作,定位出协议消息中需要被替换的消息块cell_Tn,即在协议消息中识别出消息中的结束符、分界符及连接符,以得到协议消息具体cell分块;

步骤B3.3:被替换协议消息cell的定位与安全函数输出的重构;

首先,定位需要被替换消息cell在协议消息中的位置,对该位置进行标记,并移除该位置的协议消息cell块;然后,从使用函数钩子方法得到的函数迹进行解析结果中调用函数及其参数,并修改其参数,重新运行该函数便得到新的函数输出;最后,使用得到的函数输出来替代被定位需要替代协议消息cell,由此便得到新的协议消息,该消息即为构造协议消息。

4.根据权利要求3所述的安全协议消息构造方法,其特征在于:步骤B3.2中所述的在获得协议消息后,对该消息进行cell解析划分操作,是以某个协议消息符号在协议消息中出现的次数为基础进行协议消息的cell解析;具体实现包括以下子步骤:步骤B3.2.1:对安全协议客户端实施进行扫描,识别出该实施中所包含的特殊协议消息符号,并对每个符号出现的次数进行统计;

步骤B3.2.2:将在协议消息中出现的协议消息符按照其出现的次数进行降序排列,并依次将出现次数多的协议符号周边的消息块段分开,便得到协议消息段P;

步骤B3.2.3:在每个协议消息段中再通过对出现次数多的消息符进行识别,便得到协议消息块B;

步骤B3.2.4:继续对B中出现次数相对多地协议消息符进行识别及消息块解析,直到所有消息块均为协议消息最小单元,由此便完成协议消息的cell解析。

5.根据权利要求3所述的安全协议消息构造方法,其特征在于:步骤B3.3中,在构造协议消息之前需要完成对协议消息中需要被替换消息cell的定位,而被替换协议消息cell的定位分为被钩函数的输出直接作为协议消息cell和被钩函数的输出经过变换处理后组成协议消息cell两种情况;

所述被钩函数的输出直接作为协议消息cell,具体实现过程是:首先使用被钩函数的最终输出与已完成分块cell解析的协议消息进行逐cell序列匹配,并对匹配成功的协议消息cell做标记;然后,把匹配成功的协议消息cell从协议消息中移除;最后,使用重构的被钩函数输出替代被移除的协议消息cell位置,协议消息构造完成;

所述被钩函数的输出经过变换处理后构成协议消息cell,具体实现过程是:从函数迹解析部分调用被钩函数及其参数,并对其参数进行修改,重新运行该函数后得到新的输出值;然后,把该输出值作为输入传入函数调用关系的下一个函数,重新执行该函数得到新的输出值,再把该输出作为调用关系的下一个函数输入,并得到其输出,以此规则迭代,直到函数调用关系的最后一个函数;最后,用最后一个函数的输出值替代协议消息中需要被替换消息cell块,得到新的协议消息,即为协议构造消息。

6.根据权利要求5所述的安全协议消息构造方法,其特征在于:步骤B3.3中,当被钩函数的输出直接作为协议消息cell,前提是需要先定位协议消息中需要被替换的协议消息cell;首先,从函数迹解析结果调用被钩函数及其原始函数参数;然后,执行该函数便得到函数输出,再使用该输出与协议划分解析后的消息cell块进行序列匹配,并对匹配位置进行标记,处于标记位置的协议消息cell即需要被替换的协议消息块。

7.根据权利要求5所述的安全协议消息构造方法,其特征在于:步骤B3.3中,当被钩函数的输出经过变换处理后构成协议消息cell,前提是需要先定位协议消息中需要被替换的协议消息cell;首先,扫描安全协议客户端实施生成协议消息代码,从被钩函数向下查找处理其输出的函数方法,以此得到从被钩函数向下的函数调用关系;然后,通过从函数迹部分调用被钩函数及其参数,执行其后得到被钩函数的输出,根据得到的函数调用,得到调用关系最后一个函数的输出;最后,将该函数输出与已完成cell解析的协议消息进行序列匹配,同时,并记录匹配后的协议消息cell位置。