一种基于增量学习的快速工控协议格式逆向推断方法与流程

文档序号:15567515发布日期:2018-09-29 03:41阅读:538来源:国知局

本发明涉及协议格式逆向推断方法技术领域,尤其涉及一种基于增量学习的快速工控协议格式逆向推断方法。



背景技术:

工业控制系统(industrialcontrolsystem,ics),简称工控系统,是由计算机设备与工业过程控制部件组成的自动控制系统,广泛应用于电力、水处理、石油与天然气、化工、交通运输、制造业等行业,是国家关键基础设施运行的“大脑”和“中枢”。随着计算机和网络技术的飞速发展,工控系统的网络化和信息化,在极大地推动了工业生产效率的同时,也使工控系统接口越来越开放,带来了不少安全隐患。为了挖掘工控协议中潜在的漏洞,一种有效的方法是对工控协议进行模糊测试。

模糊测试又称fuzzing测试,它使用大量半有效的数据作为目标程序的输入,通过监控程序出现的异常来发现潜在的漏洞。工控协议模糊测试主要分为三个部分,分别为协议逆向分析、测试用例生成和异常监测,其中协议逆向分析是后续测试用例生成的前提和依据。协议自动逆向技术的实现可以显著减少人工分析的工作量,提高对私有协议的分析效率,并使对网络安全事件的快速自动响应成为可能。在协议逆向工程领域,国内外已进行了较为深入的研究。根据分析对象的不同,现有的协议逆向技术大致分为基于网络流量(networktrace)的分析方法分析和基于指令执行序列(executiontrace)的分析方法。

基于网络流量的分析方法以嗅探得到的网络数据流为分析对象,其可行性在于以下两点:

(1)单个报文样本的数据流为报文格式的一个实例,同一报文格式对应的多个报文样本具有相似性;

(2)会话是协议实体之间的完整交互过程,协议实体在一次会话中的状态转换序列是协议状态机的一个子集。

同一会话内报文的时序关系,包含了部分协议状态转换的信息。目前对基于网络流量的协议逆向方法的主要采用序列比对算法来实现,其具体流程主要包括以下几步:首先,通过needleman-wunsch等序列比对算法计算报文字节序列之间的相对距离,获得距离矩阵;其次,采用非加权成对群算术平均(upgma,unweightedpairgroupmethodwitharithmeticmean)等方法,根据序列顺序构建系统树;最后,采用渐进比对算法遍历系统树实现多序列比对。由于实际应用中的网络报文具有序列长、数量多的特点,而且分析的时间复杂度往往与报文数量及报文长度成指数关系,因此实现多序列精确匹配需要耗费大量时间和计算资源,在报文数量较多时难以在较短时间内。

为此,通过增量式的学习方法来降低分析样本的数量,加快分析速度,同时保证分析的准确性具有非常重要的作用。



技术实现要素:

本发明的目的就在于为了解决上述问题而提供一种基于增量学习的快速工控协议格式逆向推断方法。

本发明通过以下技术方案来实现上述目的:

本发明包括以下步骤:

步骤s1,判断要进行协议逆向分析的样本数据集的大小,如果样本数据集中的报文数目超过了1000个,那么首先构建三个集合,分别为handledpackets、handlingpackets和unhandledpackets,其中handledpackets集合存储的是已经通过序列比对算法处理好的报文,handlingpackets集合存储的是正在进行序列比对处理的报文,unhandledpackets集合存储的是尚未处理好的报文,在初始状态下,所有样本数据集的报文都置于unhandledpackets集合中,并按照时间戳的先后顺序对报文按序排列,而handledpackets和handlingpackets集合初始为空,然后转入步骤s2;

步骤s2,提取unhandledpackets集合的前1000个报文,将它们从unhandledpackets集合移动到handlingpackets集合中,采用needleman-wunsch序列比对算法对handlingpackets中的报文进行分析,并得到多个分析后的消息类型,然后转入步骤s3;

步骤s3,在unhandledpackets集合非空的条件下,如果某个消息类型中所属的报文数目只有一个,则该消息类型创建失败,删除该消息类型,并将该报文保留在handlingpackets集合中,对于其他消息类型的报文,将它们全部从handlingpackets集合移动到handledpackets集合,然后转入步骤s4,否则如果unhandledpackets集合为空,则终止程序的运行;

步骤s4,从unhandledpackets集合中按序逐个选择报文,并将每个报文与生成的消息类型进行匹配,如果匹配成功,将该报文添加到该消息类型中,并将该报文从unhandledpackets集合移动到handledpackets集合,而如果匹配不成功,则将该报文移动到handlingpackets集合中,直至handlingpackets集合的报文数目达到1000个或unhandledpackets集合中不再有报文,然后转入步骤s5;

步骤s5,采用needleman-wunsch序列比对算法对handlingpackets中的报文进行分析,并得到多个分析后的消息类型,然后返回步骤s3。

本发明的有益效果在于:

本发明提供一种基于增量学习的快速工控协议格式逆向推断方法,实能快速推断协议的格式和语法,通过增量式的序列比对方法极大地减少协议逆向分析过程中的计算复杂度,从而能在较短时间内推断出协议的格式和语法,能保持较高的分析准确度,ipri方法在对协议进行逆向分析时采用了目前国际上较为认可和流行的needleman-wunsch序列比对算法,该算法通过相似度计分、最优回溯等步骤能较为准确地推断协议的格式和语法,保证了分析结果的准确性。

附图说明

图1是本发明所述一种基于增量学习的快速工控协议格式逆向推断方法的流程示意图。

具体实施方式

下面结合附图对本发明作进一步说明:

如图1所示:本发明包括以下步骤:

步骤s1,判断要进行协议逆向分析的样本数据集的大小,如果样本数据集中的报文数目超过了1000个,那么首先构建三个集合,分别为handledpackets、handlingpackets和unhandledpackets,其中handledpackets集合存储的是已经通过序列比对算法处理好的报文,handlingpackets集合存储的是正在进行序列比对处理的报文,unhandledpackets集合存储的是尚未处理好的报文,在初始状态下,所有样本数据集的报文都置于unhandledpackets集合中,并按照时间戳的先后顺序对报文按序排列,而handledpackets和handlingpackets集合初始为空,然后转入步骤s2;

步骤s2,提取unhandledpackets集合的前1000个报文,将它们从unhandledpackets集合移动到handlingpackets集合中,采用needleman-wunsch序列比对算法对handlingpackets中的报文进行分析,并得到多个分析后的消息类型,然后转入步骤s3;

步骤s3,在unhandledpackets集合非空的条件下,如果某个消息类型中所属的报文数目只有一个,则该消息类型创建失败,删除该消息类型,并将该报文保留在handlingpackets集合中,对于其他消息类型的报文,将它们全部从handlingpackets集合移动到handledpackets集合,然后转入步骤s4,否则如果unhandledpackets集合为空,则终止程序的运行;

步骤s4,从unhandledpackets集合中按序逐个选择报文,并将每个报文与生成的消息类型进行匹配,如果匹配成功,将该报文添加到该消息类型中,并将该报文从unhandledpackets集合移动到handledpackets集合,而如果匹配不成功,则将该报文移动到handlingpackets集合中,直至handlingpackets集合的报文数目达到1000个或unhandledpackets集合中不再有报文,然后转入步骤s5;

步骤s5,采用needleman-wunsch序列比对算法对handlingpackets中的报文进行分析,并得到多个分析后的消息类型,然后返回步骤s3。

实施例一:

本发明所需的运行环境为一台intel-windows架构的pc机以及格式为pcap类型的样本数据集,该样本数据集可采用wireshark等工具通过抓包的方式获得,且样本数据集中的报文都与待分析的工控协议有关。

运行本发明提供的增量式工控协议格式逆向推断方法的pc机系统配置如下:在intel-windows架构的pc机上安装并运行基于本发明的ipri软件,该pc机硬件的主频2.5ghz及以上的core八核cpu的pc机,内存≥4gb,硬盘500gb,运行windows7操作系统。

如图1所示,开始于步骤s101,程序读取pcap文件并建立三个报文集合handledpackets、handlingpackets和unhandledpackets,然后转s102;

在步骤s102中,判断unhandledpackets集合中的报文数是否超过1000,如果超过转s103,否则转s104;

在步骤s103中,将unhandledpackets集合中的前1000个报文移动到handlingpackets集合,然后转s105;

在步骤s104中,采用needleman-wunsch序列比对算法对handlingpackets集合中的报文进行逆向分析,得到结果后退出程序;

在步骤s105中,采用needleman-wunsch序列比对算法对handlingpackets集合中的报文进行逆向分析并生成消息类型,然后转s106;

在步骤s106中,保留拥有报文数目超过两个的消息类型,并将这些消息类型所拥有的报文从handlingpackets集合移动到handledpackets集合,同时删除其他消息类型,然后转s107;

在步骤s107中,判断unhandledpackets集合是否为空,如果为空则转s104,否则转s108;

在步骤s108中,选择unhandledpackets集合中的第一个报文,并将其与已经生成的消息类型进行比对,然后转s109;

在步骤s109中,判断报文是否与某个消息类型比对成功,如果成功则转s110,否则转s111;

在步骤s110中,将该报文划归到比对成功的消息类型中,并将报文从unhandledpackets集合移动到handledpackets集合,然后转回s107;

在步骤s111中,将该报文从unhandledpackets集合移动到handlingpackets集合,然后转s112;

在步骤s112中,判断handlingpackets集合中的报文是否达到1000,如果达到转回s105,否则转回s107。

综上所述,本发明提供一种基于增量学习的快速工控协议格式逆向推断方法,实能快速推断协议的格式和语法,通过增量式的序列比对方法极大地减少协议逆向分析过程中的计算复杂度,从而能在较短时间内推断出协议的格式和语法,能保持较高的分析准确度,ipri方法在对协议进行逆向分析时采用了目前国际上较为认可和流行的needleman-wunsch序列比对算法,该算法通过相似度计分、最优回溯等步骤能较为准确地推断协议的格式和语法,保证了分析结果的准确性。

本领域技术人员不脱离本发明的实质和精神,可以有多种变形方案实现本发明,以上所述仅为本发明较佳可行的实施例而已,并非因此局限本发明的权利范围,凡运用本发明说明书及附图内容所作的等效结构变化,均包含于本发明的权利范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1