一种基于动态污点分析的Modbus协议漏洞挖掘方法技术

技术编号:29464957 阅读:49 留言:0更新日期:2021-07-27 17:51
本发明专利技术属于动态污点分析技术领域,具体涉及一种基于动态污点分析的Modbus协议漏洞挖掘方法。本发明专利技术解决了目前模糊测试效率较低的问题,使用动态污点分析技术设计出一种Modbus协议关键字段定位方法,通过对Modbus协议中关键字段进行定位,与模糊测试技术相结合,可以使模糊测试生成的测试用例更具有针对性,进而有效的提高针对Modbus协议进行漏洞挖掘的效率。

【技术实现步骤摘要】
一种基于动态污点分析的Modbus协议漏洞挖掘方法
本专利技术属于动态污点分析
,具体涉及一种基于动态污点分析的Modbus协议漏洞挖掘方法。
技术介绍
由于工控系统通讯协议最初只从使用需求的角度出发,在协议的安全性上并没有做过多设计,这就造成工控协议会很容易被找到漏洞,成为了攻击者的攻击手段,使工控系统的安全防护受到了巨大的威胁。同时,目前广泛用于工控协议漏洞挖掘的模糊测试技术,目前存在盲目生成测试用例、数据变异方法不够复杂,以及代码覆盖率较低三个问题,因此会导致模糊测试的效率不高。
技术实现思路
本专利技术的目的在于解决目前模糊测试效率较低的问题,提供一种基于动态污点分析的Modbus协议漏洞挖掘方法。本专利技术的目的通过如下技术方案来实现:包括以下步骤:步骤1:配置好工控协议通信环境,使工控协议进行正常通信;对通信报文进行抓取,并将部分正常通信报文进行变异处理;所述的对正常通信报文进行变异处理的方法具体为:以正常工控协议格式为模板,根据变异方法,将协议中的字段替换为变异数据,利用协议生成器,逐一生成大量的变异后的协议;所述的变异数据包括字节域数据变异元素和数据域变异元素;所述的字节域数据变异元素是把协议中各字段的字节特征作为单位,把其中的特殊字节数据从各字段所要求的取值范围中提取出来,并分为数值边界值变异元素、格式化字符变异元素以及特殊值变异元素,作为变异元素生成变异后的协议报文;所述的字节域数据变异元素分为数值边界值变异元素、格式化字符变异元素以及特殊值变异元素;所述的数值边界值变异元素是将协议中的字节值修改为字节的边界值;所述的格式化字符变异元素是将协议中各个字节的数值修改为特殊的字符;所述的特殊值变异元素包含的是在协议的取值范围中,将数值边界值变异元素以及格式化字符变异元素去除,剩下的可以取值的元素;所述的数据域变异元素是通过以数据域长度的不同,将不同功能类型码f的长度值进行分类,确定生成的变异协议中数据域的长度,再利用不同类型的字节变异元素来填充数据域中的字节值;数据域变异元素分为空指针变异元素、功能区的缓冲区溢出变异元素、协议的缓冲区变异元素;所述的空指针变异元素的取值范围表示为[0,Min(f)],Min(f)表示功能类型码f对应的数据域的最小长度;所述的功能区的缓冲区溢出变异元素的取值范围是[Max(f),Max(all)],Max(f)表示功能类型码f对应的数据域的最大长度,Max(all)表示工控协议中所有的功能类型码中数据域的最大长度;所述的协议的缓冲区变异元素的取值范围是[Max(all),+∞);步骤2:对正常通信报文和变异报文分别进行污点源数据标记;通过采取细粒度大小,以Modbus协议中各个字节作为污点标记单位,一个字节被标记为一个污点源数据TaintData;以一个三元组的形式对每一个污点数据进行描述,三元组中包含协议通信报文序号PID、协议字段编号PFID、字段偏移位置FOP,污点源数据表示为:TaintData=<PID,PFID,FOP>其中,PID是通信报文作为污点数据的唯一序号;FOP是对工控协议结构中各个字段进行编号;FOP是污点源数据在各个字段中的字节偏移量;步骤3:将完成污点源数据标记后的正常通信报文和变异报文分别发送到协议服务器中;步骤4:协议服务器对正常通信报文和变异报文的污点源数据标记进行识别,获得当前污点源的操作数执行的指令类型;依据指定的细粒度污点传播规则,进行污点传播;步骤5:判断当前操作数的污染情况;如果当前操作数仍保持被污染状态,则根据当前危险函数的污染状态,更新危险函数的调用状态信息,返回步骤4;如果当前操作数的污染情况被消除,则结束。本专利技术还可以包括:所述的步骤4中指令类型包括赋值复制指令、算数计算指令以及特殊指令,特殊指令中又包含清零指令和单操作数指令;将所有的指令操作过程,抽象为一个映射过程F,表示为:F(INS):Y=f(X)其中,INS被定义为程序中的指令集合{insi};X被定义为指令中源操作数的集合{xi};Y被定义为指令中目的操作数的集合{yi};f被定义为指令的运算方式;针对污点传播规则来说,也同样将其看作是一个映射关系,表示为公式:Ft(INS):Yt=ft(Xt)其中,Xt被定义为指令的源操作数当前存在的污点的集合{xti};Yt被定义为被传递的指令目的操作数的污点集合{ytj};对于其中任意取值的i和j对应的xti以及ytj,分别表示为指令的源操作数集合、指令的目的操作数集合中当前的污点状态;xt1=0表示指令中第一个源操作数不是污点数据,yt1=1表示指令运算后,第一个目的操作数被传播为污点数据;根据复制规则进行污点传播的赋值复制指令包括:mov、cmov、movsz、repmovs、replpds;赋值复制指令mov对应的映射过程为公式:F(movdest,src):dest=src赋值复制指令mov的污点传播规则为公式:Ft(movdest,src):destt=srct依据计算规则进行污点传播的算数计算指令包括:add、inc、div、mul;算数计算指令add对应的映射过程为公式:F(adddest,src):dest=dest+src算数计算指令add的污点传播规则为公式:其中,dest0与dest1是为了将源操作数和目的操作数集合中的元素区分开;需要指定特殊污点传播规则的特殊指令包括sub、movsd、push、pop、call、ret;当sub指令的源操作数和目的操作数是同一个数据,进行相减操作后,得出的结果为0,是个常数,这时对于污点传播过程来说,需要将源操作数的污点状态漂白,运算结果不再带有污点属性;movsd指令的污点传播规则按照复制规则进行传播,规则为公式:Ft(movsd):[dest]t=[src]t。本专利技术的有益效果在于:本专利技术解决了目前模糊测试效率较低的问题,使用动态污点分析技术设计出一种Modbus协议关键字段定位方法,通过对Modbus协议中关键字段进行定位,与模糊测试技术相结合,可以使模糊测试生成的测试用例更具有针对性,进而有效的提高针对Modbus协议进行漏洞挖掘的效率。附图说明图1为本专利技术的整体框架图。具体实施方式下面结合附图对本专利技术做进一步描述。本专利技术涉及了动态污点分析技术,通过对Modbus协议中关键字段进行定位,与模糊测试技术相结合,进而有效的提高针对Modbus协议进行漏洞挖掘的效率。本专利技术描述的是一种基于动态污点分析的Modbus协议漏洞挖掘方法。本专利技术的目的是解决目前模糊测试效率较低的问题,使用动态污点分析技术设计出一种Modbus协议关键字段定位方法,可以使模糊测试生成的测试用例更具有针对性,从而提高漏洞挖掘的效率。1、工本文档来自技高网...

【技术保护点】
1.一种基于动态污点分析的Modbus协议漏洞挖掘方法,其特征在于,包括以下步骤:/n步骤1:配置好工控协议通信环境,使工控协议进行正常通信;对通信报文进行抓取,并将部分正常通信报文进行变异处理;/n所述的对正常通信报文进行变异处理的方法具体为:以正常工控协议格式为模板,根据变异方法,将协议中的字段替换为变异数据,利用协议生成器,逐一生成大量的变异后的协议;所述的变异数据包括字节域数据变异元素和数据域变异元素;/n所述的字节域数据变异元素是把协议中各字段的字节特征作为单位,把其中的特殊字节数据从各字段所要求的取值范围中提取出来,并分为数值边界值变异元素、格式化字符变异元素以及特殊值变异元素,作为变异元素生成变异后的协议报文;所述的字节域数据变异元素分为数值边界值变异元素、格式化字符变异元素以及特殊值变异元素;/n所述的数值边界值变异元素是将协议中的字节值修改为字节的边界值;所述的格式化字符变异元素是将协议中各个字节的数值修改为特殊的字符;所述的特殊值变异元素包含的是在协议的取值范围中,将数值边界值变异元素以及格式化字符变异元素去除,剩下的可以取值的元素;/n所述的数据域变异元素是通过以数据域长度的不同,将不同功能类型码f的长度值进行分类,确定生成的变异协议中数据域的长度,再利用不同类型的字节变异元素来填充数据域中的字节值;数据域变异元素分为空指针变异元素、功能区的缓冲区溢出变异元素、协议的缓冲区变异元素;/n所述的空指针变异元素的取值范围表示为[0,Min(f)],Min(f)表示功能类型码f对应的数据域的最小长度;所述的功能区的缓冲区溢出变异元素的取值范围是[Max(f),Max(all)],Max(f)表示功能类型码f对应的数据域的最大长度,Max(all)表示工控协议中所有的功能类型码中数据域的最大长度;所述的协议的缓冲区变异元素的取值范围是[Max(all),+∞);/n步骤2:对正常通信报文和变异报文分别进行污点源数据标记;/n通过采取细粒度大小,以Modbus协议中各个字节作为污点标记单位,一个字节被标记为一个污点源数据TaintData;以一个三元组的形式对每一个污点数据进行描述,三元组中包含协议通信报文序号PID、协议字段编号PFID、字段偏移位置FOP,污点源数据表示为:/nTaintData=<PID,PFID,FOP>/n其中,PID是通信报文作为污点数据的唯一序号;FOP是对工控协议结构中各个字段进行编号;FOP是污点源数据在各个字段中的字节偏移量;/n步骤3:将完成污点源数据标记后的正常通信报文和变异报文分别发送到协议服务器中;/n步骤4:协议服务器对正常通信报文和变异报文的污点源数据标记进行识别,获得当前污点源的操作数执行的指令类型;依据指定的细粒度污点传播规则,进行污点传播;/n步骤5:判断当前操作数的污染情况;如果当前操作数仍保持被污染状态,则根据当前危险函数的污染状态,更新危险函数的调用状态信息,返回步骤4;如果当前操作数的污染情况被消除,则结束。/n...

【技术特征摘要】
1.一种基于动态污点分析的Modbus协议漏洞挖掘方法,其特征在于,包括以下步骤:
步骤1:配置好工控协议通信环境,使工控协议进行正常通信;对通信报文进行抓取,并将部分正常通信报文进行变异处理;
所述的对正常通信报文进行变异处理的方法具体为:以正常工控协议格式为模板,根据变异方法,将协议中的字段替换为变异数据,利用协议生成器,逐一生成大量的变异后的协议;所述的变异数据包括字节域数据变异元素和数据域变异元素;
所述的字节域数据变异元素是把协议中各字段的字节特征作为单位,把其中的特殊字节数据从各字段所要求的取值范围中提取出来,并分为数值边界值变异元素、格式化字符变异元素以及特殊值变异元素,作为变异元素生成变异后的协议报文;所述的字节域数据变异元素分为数值边界值变异元素、格式化字符变异元素以及特殊值变异元素;
所述的数值边界值变异元素是将协议中的字节值修改为字节的边界值;所述的格式化字符变异元素是将协议中各个字节的数值修改为特殊的字符;所述的特殊值变异元素包含的是在协议的取值范围中,将数值边界值变异元素以及格式化字符变异元素去除,剩下的可以取值的元素;
所述的数据域变异元素是通过以数据域长度的不同,将不同功能类型码f的长度值进行分类,确定生成的变异协议中数据域的长度,再利用不同类型的字节变异元素来填充数据域中的字节值;数据域变异元素分为空指针变异元素、功能区的缓冲区溢出变异元素、协议的缓冲区变异元素;
所述的空指针变异元素的取值范围表示为[0,Min(f)],Min(f)表示功能类型码f对应的数据域的最小长度;所述的功能区的缓冲区溢出变异元素的取值范围是[Max(f),Max(all)],Max(f)表示功能类型码f对应的数据域的最大长度,Max(all)表示工控协议中所有的功能类型码中数据域的最大长度;所述的协议的缓冲区变异元素的取值范围是[Max(all),+∞);
步骤2:对正常通信报文和变异报文分别进行污点源数据标记;
通过采取细粒度大小,以Modbus协议中各个字节作为污点标记单位,一个字节被标记为一个污点源数据TaintData;以一个三元组的形式对每一个污点数据进行描述,三元组中包含协议通信报文序号PID、协议字段编号PFID、字段偏移位置FOP,污点源数据表示为:
TaintData=<PID,PFID,FOP>
其中,PID是通信报文作为污点数据的唯一序号;FOP是对工控协议结构中各个字段进行编号;FOP是污点源数据在各个字段中的字节偏移量;
步骤3:将完成污点源数据标记后的正常通信报文和变异报文分别发送到协议服务器中;
步骤4:协议服务器对正常通信报文和变异报文的污点源...

【专利技术属性】
技术研发人员:田健彤
申请(专利权)人:哈尔滨工程大学
类型:发明
国别省市:黑龙江;23

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1