一种私有网络协议迭代逆向分析方法、装置及服务器与流程

文档序号:15625019发布日期:2018-10-09 22:46阅读:278来源:国知局

本发明涉及网络协议分析技术领域,具体涉及一种私有网络协议迭代逆向分析方法、装置及服务器。



背景技术:

网络协议是为网络应用数据交换而建立的通信规则、标准和约定,也可以是进行信息处理进程的既定规程,描述网络协议的规则组成或功能机制被称为协议规范或规格,协议规范或规格内容部分或全部不为公众所知的网络协议即称为私有协议。

在不依赖协议规范等详细描述的情形下,掌握私有协议传递网络信息的规律和特点,获知私有协议的格式特征并实现对私有协议报文的准确分类,是实现对应用私有协议进行信息传播行为进行有效监管,建立安全、可控的网络运行环境的重要基础工作。

随着物联网数据在网络通信传输数据中的占比不断提高,以及智能设备不断发展,用于设备之间信息交互的二进制私有协议得到广泛应用,因此,二进制私有协议成为协议逆向分析领域的重点。

二进制私有协议,以比特为最小字段单位定义,呈现二进制比特的特点,缺乏文本编码信息,甚至字节长度信息,协议先验信息更为匮乏,现有技术中,对二进制私有协议的逆向分析方法主要依赖人工推导或手工分析,耗费巨大的人力物力,且效率低,逆向分析周期长。

因此,如何提供一种私有网络协议迭代逆向分析方法,对二进制私有协议进行逆向分析,降低人工参与程度,节省人力物力,提高逆向分析效率,缩短逆向分析周期,成为目前急待解决的关键问题之一。



技术实现要素:

有鉴于此,本发明实施例提供一种私有网络协议迭代逆向分析方法、装置及服务器,对二进制私有协议进行逆向分析,降低人工参与程度,节省人力物力,提高逆向分析效率,缩短逆向分析周期。

为实现上述目的,本发明实施例提供如下技术方案:

第一方面,本发明申请提供的私有网络协议迭代逆向分析方法,包括:

确定多个目标协议报文;

分别提取各目标协议报文中与报文格式类型相关的信息,生成多个样本文件;

运用聚类算法,将各样本文件分类,且一样本文件分类对应一格式类型;

确定各格式类型的样本文件的报文格式特征,得到各格式类型的报文格式特征,一格式类型的报文格式特征指示该格式类型的样本文件在预定位置字节存储预定字节信息;

汇总所述各格式类型的报文格式特征,筛选得到基于所述样本文件得到的多个目标报文格式特征;

根据所述多个目标报文格式特征,对各样本文件进行分类,以将与同一所述目标报文格式特征匹配成功的样本文件分为一类。

可选的,本发明申请提供私有网络协议迭代逆向分析方法,还包括:

若存在未匹配成功的样本文件,计算已匹配成功的样本文件的数量与样本文件总量的比值,得到当前的匹配覆盖率;

计算所述当前的匹配覆盖率与上一次的匹配覆盖率之差,得到当前的匹配覆盖率差值,其中,首次匹配后所得匹配覆盖率记为该次匹配后的所述匹配覆盖率差值;

判定所述当前的匹配覆盖率差值是否大于增幅限值,所述增幅限值表征所述匹配覆盖率差值的最小值;

若所述当前的匹配覆盖率差值大于所述增幅限值,重复的根据基于未匹配成功的样本文件得到的多个目标报文格式特征,对所述未匹配成功的样本文件进行分类,直至重新计算的当前匹配覆盖率差值大于所述增幅限值;

若所述当前的匹配覆盖率差值不大于所述增幅限制,则汇总并筛选历次迭代得到的目标报文格式特征,得到格式特征集;

根据所述格式特征集中的多个目标报文格式特征,对各样本文件进行分类,以将与所述格式特征集中同一目标报文格式特征匹配成功的样本文件分为一类。

可选的,所述确定多个目标协议报文,包括:

将目标协议数据包拆分为多个独立的报文;

剔除无效报文和类型已知的报文;

将剩余的多个报文分别作为目标协议报文。

可选的,所述分别提取各目标协议报文中与报文格式类型相关的信息,生成多个样本文件,包括:

提取每个所述目标协议报文自首字节起预设数量的字节内容,将所得预设数量的字节内容存储为样本文件。

可选的,所述确定各格式类型的样本文件的报文格式特征,包括:

分别求取各格式类型样本文件的频繁k项集;

分别保留各格式类型样本文件的频繁k项集中存在相等关系的多个频繁k项集中的一项;

分别删除各格式类型样本文件的频繁k项集中存在包含关系的多个频繁k项集中的子集;

分别将各格式类型样本文件剩余的频繁k项集建立组合,并分别将所述组合对应的设置为各格式类型样本文件的报文格式特征。

可选的,所述筛选得到基于所述样本文件得到的多个目标报文格式特征,包括:

删除所述报文格式特征中特征元素少于预设限值的频繁k项集;

保留所述报文格式特征中存在相等关系的多个频繁k项集中的一项;

删除所述报文格式特征中存在包含关系的多个频繁k项集中的超集;

合并所述报文格式特征中存在交叉关系的多个频繁k项集的非交叉频繁项为一频繁k项集;

将最终保留的多个频繁k项集分别设置为目标报文格式特征。

可选的,所述根据所述多个目标报文格式特征,对各样本文件进行分类,包括:

将每个样本文件分别与各所述目标报文格式特征进行匹配;

若判定当前进行匹配的样本文件与一所述目标报文格式特征匹配成功,则将当前进行匹配的样本文件划分至与该所述目标报文格式特征对应的类别。

可选的,所述判定当前进行匹配的样本文件与一所述目标报文格式特征匹配成功,包括

获取当前目标报文格式特征中记载的位置信息和字节信息;

查找当前需要匹配的样本文件与所述位置信息对应的字节中存储的字节信息;

判断当前需要匹配的样本文件的字节信息与当前目标报文格式特征中记载的字节信息是否一致;

如果当前需要匹配的样本文件的字节信息与当前目标报文格式特征中记载的字节信息一致,则判定匹配成功。

第二方面,本发明申请提供一种私有网络协议迭代逆向分析装置,包括:

第一确定单元,用于确定多个目标协议报文;

生成单元,用于分别提取各目标协议报文中与报文格式类型相关的信息,生成多个样本文件;

第一分类单元,用于运用聚类算法,将各样本文件分类,且一样本文件分类对应一格式类型;

第二确定单元,用于确定各格式类型的样本文件的报文格式特征,得到各格式类型的报文格式特征,一格式类型的报文格式特征指示该格式类型的样本文件在预定位置字节存储预定字节信息;

筛选单元,用于汇总所述各格式类型的报文格式特征,筛选得到基于所述样本文件得到的多个目标报文格式特征;

第二分类单元,用于根据所述多个目标报文格式特征,对各样本文件进行分类,以将与同一所述目标报文格式特征匹配成功的样本文件分为一类。

第三方面,本发明申请提供一种服务器,包括:存储器和处理器;所述存储器存储有适于所述处理器执行的程序,以实现第一方面任一项所述的私有网络协议迭代逆向分析方法的步骤。

基于上述技术方案,本发明申请提供的私有网络协议迭代逆向分析方法,在确定需要进行逆向分析的目标协议之后,首先确定该目标协议的多个报文,并进一步提取目标协议报文中与报文格式类型相关的信息,与目标协议报文对应的生成多个样本文件,然后应用聚类算法,对各个样本文件进行分类,之后确定各格式类型的样本文件的报文格式特征,得到各格式类型的报文格式特征,再进一步汇总得到的报文格式特征,筛选得到多个以报文中各字节所处预定位置以及该字节中存储的预定字节信息为主要内容的目标报文格式特征,并根据得到的报文格式特征对样本文件进行分类,将与同一目标报文格式特征匹配成功的样本文件分为一类,由于样本文件与目标协议报文是一一对应的关系,因此,实现对样本文件的分类,即等同于对目标协议报文的分类,通过本发明申请提供的私有网络协议迭代逆向分析方法,可以分析得到协议规范未知的网络协议的报文格式特征,并应用这些报文格式特征对所捕获的报文进行分类,本发明申请提供的方法可实现对协议规范未知的二进制协议进行逆向分析,降低人工参与程度,节省人力物力,提高逆向分析效率,缩短逆向分析周期,此外,本发明申请提供的私有网络协议迭代逆向分析方法,对实现对应用私有协议进行信息传播行为进行有效监管,建立安全、可控的网络运行环境具有重要意义。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例提供的私有网络协议迭代逆向分析方法的第一流程图;

图2为本发明实施例提供的私有网络协议迭代逆向分析方法中应用apriori算法确定各格式类型的报文格式特征的流程图;

图3为本发明实施例提供的私有网络协议迭代逆向分析方法中报文格式特征的第一存储格式示意图;

图4为本发明实施例提供的私有网络协议迭代逆向分析方法中报文格式特征的第二存储格式示意图;

图5为本发明实施例提供的私有网络协议迭代逆向分析方法中筛选得到多个目标报文格式特征的流程图;

图6为本发明实施例提供的私有网络协议迭代逆向分析方法中样本文件与目标报文格式特征的匹配过程示意图;

图7为本发明实施例提供的私有网络协议迭代逆向分析方法的第二流程图;

图8为本发明实施例提供的私有网络协议迭代逆向分析方法的一种应用示例的流程图;

图9为应用本发明实施例提供的私有网络协议迭代逆向分析方法进行逆向分析的第一过程示意图;

图10为应用本发明实施例提供的私有网络协议迭代逆向分析方法进行逆向分析的第二过程示意图;

图11为应用本发明实施例提供的私有网络协议迭代逆向分析方法进行逆向分析的第三过程示意图;

图12为应用本发明实施例提供的私有网络协议迭代逆向分析方法进行逆向分析的第四过程示意图;

图13为应用本发明实施例提供的私有网络协议迭代逆向分析方法进行逆向分析的第一结果示意图;

图14为应用本发明实施例提供的私有网络协议迭代逆向分析方法进行逆向分析的第二结果示意图;

图15为应用本发明实施例提供的私有网络协议迭代逆向分析方法进行逆向分析的第三结果示意图;

图16为应用本发明实施例提供的私有网络协议迭代逆向分析方法进行逆向分析的第四结果示意图;

图17为应用本发明实施例提供的私有网络协议迭代逆向分析方法进行逆向分析的第五结果示意图

图18为本发明实施例提供的私有网络协议迭代逆向分析装置的第一结构框图;

图19为本发明实施例提供的私有网络协议迭代逆向分析装置的第二结构框图;

图20为本发明实施例提供的一种服务器的结构框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1为本发明实施例提供的私有网络协议迭代逆向分析方法的第一流程图,该方法可应用于电子设备,该电子设备可选如笔记本电脑、pc(个人计算机)、平板电脑等具有数据处理能力,能够运行不同应用软件的电子设备,显然,该电子设备在某些情况下也可选用网络侧的服务器实现;参照图1,本发明实施例提供的私有网络协议迭代逆向分析方法,可以包括:

步骤s100,确定多个目标协议报文。

在选定需要进行协议逆向分析的私有协议作为目标协议之后,首先要确定作为基础数据使用的目标协议报文,实际操作中,可以通过wireshark(wireshark是一个网络封包分析软件,可用于捕获网络封包,并尽可能显示出最为详细的网络封包资料)等网络监控软件捕获传输网络中目标协议的数据包,采用的捕获软件不同或者因为目标协议的协议规范差异,捕获的数据包格式不尽相同,因此在获得目标协议的数据包之后,要将数据包处理为独立的报文,以独立的报文作为本发明申请实施例的基础原始数据。

在将数据包拆分为独立的报文之后,需要进一步剔除诸多报文之中包括的无效报文和格式类型已知的报文,可选的,无效报文包括字节内容全部为0,全部为1和全部为32(十进制表示)的报文;格式类型已知的报文包括ftp(filetransferprotocol,文件传输协议)报文、http(hypertexttransferprotocol超文本传输协议)报文等典型格式报文。

在经过上述步骤处理后,最终保留下来的每一条报文均可以作为本发明申请实施例中用于逆向分析目标协议格式特征的目标协议报文,由于网络协议在传递信息时会产生大量的报文,因此经过上述步骤处理后,最终可得到多个目标协议报文。

需要说明的是,本发明申请实施例所指目标协议,可以是单一的协议规格未知的私有协议,也可以是多个协议规范未知的私有协议,因此,相应的,作为本发明申请实施例基础数据使用的目标协议报文可以是来源与同一目标协议,也可以是来源于多个不同的目标协议。

步骤s110,分别提取各目标协议报文中与报文格式类型相关的信息,生成多个样本文件。

针对每一条目标协议报文,提取目标协议报文中记载的与报文格式类型相关的信息内容,将所提取的信息内容生成样本文件,所得多个样本文件将作为后续步骤的基础数据。

可选的,由于在现有网络协议框架模式下,公知协议或者私有协议的报文构成格式基本类似,对于任何网络协议的报文而言,体现报文格式类型的内容都集中布置在报文的前部,因此,在网络协议逆向的过程中,只需要提取从报文第一位字节开始一定长度范围内的字节的内容即可,而不必针对报文的全部内容进行分析,进一步的,针对报文内容进行计算的复杂度随提取报文字节的数量的增加成指数增长,因此,合理提取报文的长度,是进行高效计算的重要前提,一般而言,可以提取自报文首字节起40-135个字节的内容,作为逆向分析的对象,在提取每一条目标协议报文的预设长度的字节内容后,分别将提取得到的字节内容存储为目标文件,作为后续步骤的分析对象,可以想到的,在生成目标文件的过程中,每一条目标协议报文对应得到一条样本文件。

可选的,在得到多个样本文件后,可以将所得样本文件的内容统一存储在以.mat作为文件后缀的文件中(可以称为mat文件),mat文件以矩阵形式存储样本文件,矩阵的一行代表一条样本文件,进一步的,mat文件还可用于将后续步骤中未能成功分类的样本文件放到一起。

步骤s120,应用聚类算法,将各样本文件分类。

本步骤采用常用的聚类算法,k-means聚类算法,获得各样本文件进行分类,每一类别的样本文件对应一种报文格式类型,经过聚类算法分类后,可以得到多个类别的样本文件,可选的,可将每一类别的样本文件称为报文簇。k-means算法是基于距离的聚类算法,采用距离作为相似性的评价标准,当两个对象的距离越近,其相似性就越大,把距离相近的报文聚到一起,对于本发明申请而言,可以认为是把报文格式相似的样本文件放到一起。本步骤以各样本文件存储的二进制字节信息为分析对象,可以实现对各样本文件的模糊分类,这种分类方式是基于报文格式类型进行的,并不基于报文的格式特征,因此不能通过聚类算法对样本文件进行精确分类,但通过聚类算法分类后的样本文件,各个类别中的大多数样本文件是属于同一格式类型的,只不过报文格式类型的具体内容还不可知,即报文的格式特征还不可知,因此,应用聚类算法对各样本文件进行分类,得到多个类别,或者说得到多个报文簇后,任一簇内的样本文件类别是相对单一的,是相对纯净的报文簇,可以为后续分析操作提供良好的数据基础。

可选的,实现本步骤可以通过调用sklearn软件中sklearn.cluster的k-means算法来实现,sklearn是python的科学计算库,提供各种聚类算法可供选择。进一步的,需要调用的子函数包括clf=k_means(n_clusters=t).clf.fit(data),该子函数可以实现调用k_means类,用该类中的fit函数将混合报文列表data分簇,其中,t是输入参数,表示报文簇的个数;data是fit函数中的参数,可以是各样本文件的混合数据集,比如,可以是记载各样本文件内容的mat文件。

步骤s130,确定各格式类型的样本文件的报文格式特征,得到各格式类型的报文格式特征。

为确定各格式类型的样本文件的报文格式特征,本发明申请采用以数据关联规则为分析对象的数据挖掘算法,对各个格式类型的样本文件进行报文格式特征的挖掘,为便于描述,下面将属于同一格式类型的样本文件称为报文簇。

可选的,本发明申请选用apriori算法挖掘各报文簇的报文格式特征,apriori算法是一种挖掘关联规则的频繁项集算法,其核心思想是通过候选集生成和情节的向下封闭检测两个阶段来挖掘频繁项集,该算法已经被广泛的应用到商业、网络安全等各个领域。

为便于理解应用apriori算法进行各报文簇报文格式特征挖掘的过程,首先对涉及到的相关定义进行解释,具体如下:

含位置信息的字符:由字符和字符在样本文件中的位置两部分构成,样本文件中第n个字节以及该字节中存储的字节信息用chan→posn来表示,chan是第n个字节中存储的字符,posn代表该字符在样本文件中的位置,简记为cn。

相等:对任意两个含位置信息的字符cn和cm,若chan=cham且posn=posm,则称cn和cm相等。

k项集:由k个含位置信息的字符组成的集合,记为

支持度:k项集在报文簇内所有样本文件中出现的频率,假设在一报文簇中一共包含n个样本文件,在n个样本文件中包含ik的样本文件的个数为x,则支持度定义为:

sup(ik)=x/n

频繁k项集:支持度大于最小支持度阈值minsupport的k项集称为频繁k项集,用l(k)来表示,

频繁k项集的集合:把l(k)构成的集合称为频繁k项集的集合,用lk表示;用|lk|表示频繁k项集的个数。

帧向量:将频繁1项集中各个含有位置信息的字符按该字符在样本文件中位置的先后进行排序,定义第i个样本文件的帧向量定义为:

其中,若第i样本文件中存在字符chak,且其位置为posk,则其特征对应的值为k,否则为空。

参见图2,本发明实施例提供的私有网络协议迭代逆向分析方法中应用apriori算法确定各类型报文的报文格式特征的流程图,在传统apriori算法基础上引入帧向量概念,通过引入帧向量概念,实现对传统算法的简化,降低运算数据的维度,提高算法的执行效率,并进一步提高逆向分析的效率,利用改进的apriori算法对第v个报文簇进行报文格式特征提取操作的具体步骤如下:

①、提取频繁1项集。获取各样本文件中包含位置信息的字符,并统计各包含位置信息的字符在报文簇内所有样本文件中出现的次数,根据设定的最小支持度阈值minsupport,保留出现次数大于最小支持度阈值的项集作为频繁1项集。

②、构建样本文件特征向量表。将频繁1项集与报文簇内各样本文件对比,针对每条样本文件构建帧向量,然后将所有的帧向量组合生成帧向量表。

假设有五条待处理的样本文件,频繁1项集中包含六个筛选后得到的包含位置信息的字符,分别由c1-c6表示,且其位置关系为pos1≤pos2≤pos3≤pos4≤pos5≤pos6,posi(i∈z,0≤i≤6),则建立帧向量表,如表1所示:

表1

其中,表中的五行数据分别为五条样本文件对应的帧向量。

③、令k=1,将l1中的元素保存到lk中

④、连接:若|lk|≥2,对lk执行连接操作,得到ak+1,ak+1是候选k+1项集的集合。连接操作的具体方法如下:从lk中任取若满足对所有m<k均有是可连接的,连接产生新的项集

⑤、剪枝:从集合ak+1中删除小于最小支持度阈值的k+1项集,得到lk+1,并将lk+1保存到lk+1中;

⑥、若lk+1不为空集,则k=k+1,转步骤④,否则转步骤⑦;

⑦、对lk中的元素完成去冗余操作:

如果频繁k项集的集合lk中存在两个频繁k项集相等,即任一频繁k项集中所有的含有位置信息的字符在另一频繁k项集中均存在相等的含有位置信息的字符,且两个频繁k项集中含有位置信息的字符的数量相等,亦即对任意满足对1≤m≤k,有则从频繁k项集的集合l中删除保留存在相等关系的频繁k项集中的一项,当频繁k项集的集合lk中存在两个以上的频繁k项集相等时,执行相同操作,仅保留多个频繁k项集中的一项;

如果两个频繁项集是包含关系,即对(其中t<k),满足对任意m≤t有则从l中删除如果存在两个以上的频繁k项集存在包含关系,执行相同操作,将多个频繁k项集中的子集删除。保留超集,可以实现保留不同长度的格式特征,以使最终提取的格式特征更加全面。

经过以上步骤,将第v个报文簇剩余的频繁k项集建立组合,所得组合即为该格式类型样本文件的报文格式特征,亦即该格式类型的报文格式特征。

分别对各报文簇(也就是各格式类型的样本文件)执行上述操作,即可得到各格式类型的报文格式特征。

本步骤针对协议规范未知的二进制私有协议的特点,以协议报文的字节位置信息以及各字节中存储的字节内容为研究对象,对于任一报文格式类型,确定该格式类型的样本文件在预定位置字节中存储预定字节信息,并将此内容作为该格式类型的报文格式特征。

比如,对于某一格式类型,其报文格式特征可以表述为:在第一位字节中固定存储数值27,在第四位字节中固定存储数值56。

需要说明的是,各格式类型的报文格式特征是以频繁k项集的集合的形式体现的,集合中每个频繁k项集均称为该格式类型的报文格式特征,即对于任一格式类型,可以包括多个报文格式特征,也可以仅包括一个报文格式特征。

作为一种可选的存储方式,可以将各格式类型的各报文格式特征单独存储于文本文档中,可选的,可选用以.txt为后缀的纯文本文档。参见图3,本发明实施例提供的私有网络协议迭代逆向分析方法中报文格式特征的第一存储格式示意图,各报文格式特征在文档中的存储形式可以为:第一行表示频繁项的值(即字节中存储的预定字节信息,为十进制数),第二行表示频繁项在样本文件中的相对位置(即样本文件中的预定位置,为十进制数),第三行为频繁项的值对应的十六进制数。行内各数据间以一个空格隔开,每行数据末尾仍存在一个空格。

进一步的,为便于数据的调用与分析,还可以将所有报文格式特征存储于同一文档中,参见图4,本发明实施例提供的私有网络协议迭代逆向分析方法中报文格式特征的第二存储格式示意图,在存储有所有报文格式特征的文档中,大写字母a、b、c、d表示频繁项的值,是十进制数;小写字母a、b、c、d表示频繁项在样本文件中的相对位置。

步骤s140,汇总各格式类型的报文格式特征,筛选得到多个目标报文格式特征。

在得到各格式类型的报文格式特征后,需要进行进一步处理,以获得能够体现未知规范的私有协议的报文格式特征。

可选的,参见图5,本发明实施例提供的私有网络协议迭代逆向分析方法中筛选得到多个目标报文格式特征的流程图,如图所示,筛选过程主要包括以下步骤:

步骤s1400,汇总各格式类型的报文格式特征。

对经过前述步骤处理得到的各格式类型的报文格式特征进行汇总,将所有报文格式特征汇总在一起,可选的,由于每一格式类型的报文格式特征均是以频繁k项集的形式体现的,因此可以选择数据集的形式对各报文格式特征进行汇总,即汇总得到一频繁k项集的集合。

步骤s1401,判断是否存在相等的频繁k项集。

判断汇总后的报文格式特征中是否存在相等的频繁k项集,如果判定存在相等的频繁k项集,则执行步骤s1402,否则执行步骤s1403。

可选的,判定任意多个频繁k项集是否相等的方式可以如图1中步骤s130所示,此处不再赘述。

步骤s1402,保留存在相等关系的多个频繁k项集中的一项。

对于存在相等关系的多个频繁k项集,保留其中一项,其余重复项删除。

步骤s1403,判断是否存在频繁项少于预设限值的频繁k项集。

判断是否存在频繁项少于预设限值的频繁k项集,若是,则执行步骤s1404,若否,则执行步骤s1405。

需要说明的是,此处所指频繁项即为前述含有位置信息的字符,所述预设限值,根据经验人为指定,预设限值的选取,将在一定程度上影响最终得到的报文格式特征的数量。

可选的,可以逐一获取每个频繁k项集中频繁项的数量,并与预设限值进行比对,从而判断是否存在频繁项少于预设限值的频繁k项集。

步骤s1404,删除频繁项少于预设限值的频繁k项集。

如果判定某一报文格式特征中含有的频繁项的数量少于预设限值,则将该报文格式特征删除。

步骤s1405,判断频繁k项集之间是否存在包含关系。

判断多个频繁k项集之间是否存在包含关系,若是,则执行步骤s1406,若否,则执行步骤s1407。

可选的,判定任意多个频繁k项集之间是否存在包含关系的方式可以如图1中步骤s130所示,此处不再赘述。

步骤s1406,删除存在包含关系的多个频繁k项集中的超集。

如果判定任意多个频繁k项集之间存在包含关系,则将其中的超集删除,保留子集,去除超集中不必要的频繁项,可以使分类结果更加准确。

步骤s1407,合并报文格式特征中存在交叉关系的多个频繁k项集的非交叉频繁项为一频繁k项集。

如果多个频繁k项集之间存在交叉关系,即各个频繁k项集内存在与其他频繁k项集相同的频繁项,且这些相同的频繁项仅为各频繁k项集内所有频繁项的一部分。对于存在交叉项的多个频繁k项集,删除存在交叉的部分,然后将多个频繁k项集中删除交叉部分后剩余的部分合并为一个频繁k项集。

经过上述步骤处理后保留下的多个频繁k项集,即为目标报文格式特征,且一个频繁k项集对应一个目标报文格式特征。

需要说明的是,对于各格式类型的报文格式特征的筛选操作,不限于本实施例给出的筛选顺序,各操作步骤之间的顺序是可变的,任何能够达到筛选目的,得到目标报文格式特征的操作顺序都是可选的。

步骤s150,根据所述多个目标报文格式特征,对各样本文件进行分类。

在基于样本文件得到多个目标报文格式特征后,便可以根据各目标报文格式特征对样本文件进行分类。

具体的,参见图6,本发明实施例提供的私有网络协议迭代逆向分析方法中样本文件与目标报文格式特征的匹配过程示意图,将每个样本文件分别与各报文格式特征进行匹配,如果当前匹配的样本文件与第t个目标报文格式特征匹配成功,则将该样本文件划分为第t个目标报文格式特征对应的类别,可选的,可以称该分类为特征t报文库,当前样本文件匹配成功后,将不再与第(t+1)个目标报文格式特征进行匹配,进一步的,选取下一样本文件,重新与各个目标报文格式特征进行匹配,直至所有的样本文件均进行了匹配操作,将匹配成功的样本文件按目标报文格式特征进行分类,并将未能与任一目标报文格式特征匹配成功的样本文件汇总。

可选的,样本文件与目标报文格式特征进行匹配的方法可以为:

选取任一目标报文格式特征作为匹配对象,获取该目标报文格式特征记载的位置信息和字节信息,其中,位置信息表示某一字节在报文中所处的位置,或者可以理解为某一字节在报文中自首字节起的偏移量,字节信息表示在该字节中存储的内容,可以是数值,或者是字符,因此,目标报文格式特征可以理解为一个矢量,该矢量包含偏移量和值两个特征。

然后,查找待匹配样本文件中与当前作为匹配对象的目标报文格式特征的位置信息相对应的字节中存储的字节信息,如果查找待匹配样本文件所得字节信息与作为匹配对象的目标报文格式特征记载的字节信息一致,则认为当前样本文件与当前作为匹配对象的目标报文格式特征匹配成功。

需要说明的是,对于任一目标报文格式特征,都是以频繁k项集的形式体现的,因此在目标报文格式特征中存在至少一个带有位置信息的字符,当目标报文格式特征中存在多个带有位置信息的字符时,样本文件与该目标报文格式特征进行匹配时,需对每一带有位置信息的字符进行匹配,只有与所有带有位置信息的字符均匹配成功时,才能认为样本文件与该目标报文格式特征匹配成功。

还需要说明的是,在采用本发明申请提供的方法进行协议逆向分析的开始阶段,对获取的目标协议报文进行了关键信息的提取操作,并将从每一条目标协议报文中提取的关键信息存储为样本文件,且样本文件与目标协议报文是一一对应设置的,因此,根据目标报文格式特征对样本文件进行分类,可以等价的看作是对目标协议报文的分类,对样本文件分类,同样可以达到对规范未知的网络协议进行监控的目的;进一步的,样本文件所记载的信息是从目标协议报文中提取出来的与报文格式类型相关的信息,舍弃的内容是具体的报文内容,与报文格式类型无关,因此,根据目标报文格式特征对样本文件进行分类,可以满足对规范未知的网络协议进行逆向分析,并实现对网络协议进行监控的最终目的。

采用本发明申请实施例提供的私有网络协议迭代逆向分析方法,以网络协议报文中的字节信息为分析对象,可以实现自动化提取二进制网络协议的报文格式特征,并根据提取的报文格式特征对网络协议的报文进行分类,降低人工参与程度,节省人力物力,提高逆向分析效率,缩短逆向分析周期,进一步的,对实现对应用私有协议进行信息传播行为进行有效监管,建立安全、可控的网络运行环境具有重要意义。

二进制私有协议,以比特为最小字段单位定义,呈现二进制比特的特点,缺乏文本编码信息,甚至字节长度信息,协议先验信息更为匮乏,相较于其他网络协议,对二进制私有协议进行逆向分析的操作难度更大,因此,在实际应用中,对于规范未知的二进制网络协议,在根据基于样本文件得到的多个目标报文格式特征,对样本文件进行分类的操作进行一次之后,往往会存在不能够实现分类的样本文件,进一步的,包含在未分类的样本文件中的目标报文格式特征自然也就得不到充分的挖掘,对规范未知的二进制网络协议进行逆向分析的效果并不理想,因此,在存在未匹配成功的样本文件的前提下,本发明申请实施例提供一种优选的私有网络协议迭代逆向分析方法,参见图7,本发明实施例提供的私有网络协议迭代逆向分析方法的第二流程图,在图1所示实施例的基础上,本发明申请实施例提供的私有网络协议迭代逆向分析方法,还可以包括:

步骤s200,计算已匹配成功的样本文件的数量与样本文件总量的比值,得到当前的匹配覆盖率。

统计当前已匹配成功的样本文件的总数量,计算当前已匹配成功的样本文件的总数量与样本文件的总数量的比值,作为当前迭代后得到的匹配覆盖率,匹配覆盖率直观上体现已匹配成功,并完成分类的样本文件的比例,进一步的,还可以体现出已挖掘出的目标报文格式特征的比例,匹配覆盖率的值越大,说明对目标协议的报文格式特征的挖掘越全面,逆向分析的效果越好。

需要说明的是,在实际操作中,可能需要进行多次迭代操作,此步骤所指已匹配成功的样本文件是指包含当前次匹配操作以及当前次匹配操作之前,所有已匹配成功的样本文件。比如,当前次匹配为首次匹配,那么已匹配成功的样本文件即为一次匹配操作中匹配成功的样本文件的总量,如果当前次匹配为第三次匹配操作,那么已匹配成功的样本文件则应为三次匹配操作后,已匹配成功的样本文件的总量。

步骤s210,计算当前的匹配覆盖率与上一次的匹配覆盖率之差,得到当前的匹配覆盖率差值。

得到当前的匹配覆盖率之后,计算当前的匹配覆盖率与上一次的匹配覆盖率之差,即可得到当前的匹配覆盖率差值。

需要说明的是,如果当前匹配为首次匹配操作,那么将首次匹配的匹配覆盖率记为当前的匹配覆盖率差值,可以理解为首次匹配操作之前的匹配覆盖率为0。

步骤s220,判断当前的匹配覆盖率差值是否大于增幅限值。

理论上,依据图1所示实施例对样本文件进行分类,在每次迭代后,都会得到新的目标报文格式特征,进一步的会使得能够成功分类的样本文件的数量有所增加,但在实际应用中,必须考虑到私有网络协议迭代逆向分析的执行效率,以及对网络协议进行逆向分析的时间成本,因此,要预设表征匹配覆盖率差值的最小值的增幅限值,增幅限值同样可以理解为当前匹配覆盖率相对于上一次迭代得到的匹配覆盖率的最小增幅,如果当前匹配覆盖率差值大于预设的增幅限值,即说明还有进行下一次迭代操作的必要性,如果当前匹配覆盖率差值不大于预设的增幅限值,即说明继续进行迭代操作的时间成本甚至其他成本与所取得的分析效果已不成比例,没有进行下一次迭代操作的必要性。

若当前的匹配覆盖率差值不大于增幅限值,则执行步骤s230,若当前的匹配覆盖率差值大于增幅限值,则针对未匹配成功的样本文件,返回执行图1所示实施例中步骤s120及后续步骤。

步骤s230,汇总并筛选历次迭代得到的目标报文格式特征,得到格式特征集。

每一次迭代操作后,都可以根据未匹配成功的样本文件得到的多个目标报文格式特征,在判定可以结束迭代操作后,需要将历次迭代所得到的目标报文格式特征进行汇总,然后进行筛选,将筛选后保留的多个目标报文格式特征组合为格式特征集。

可选的,对历次迭代得到的多个目标报文格式特征的筛选操作可以如图1所示实施例中步骤s140所示,此处不再赘述。

步骤s240,根据格式特征集中的多个目标报文格式特征,对各样本文件进行分类。

在得到格式特征集之后,即可根据格式特征集中的目标报文格式特征对所有样本文件进行最终的分类。

可选的,根据格式特征集中的目标报文格式特征对所有样本文件进行分类的操作可以如图1所示实施例中步骤s150所示,此处不再赘述。

采用本发明申请实施例提供的私有网络协议迭代逆向分析方法,预设增幅限值,通过考核匹配覆盖率的增幅来限定迭代的次数,并通过多次迭代充分挖掘目标协议的报文格式特征,最终所得格式特征集中的报文格式特征充分体现出目标协议的规格特点,进一步的,依据所得格式特征集中的报文格式特征可实现对样本文件进行更为准确的分类。

可选的,图8为本发明实施例提供的私有网络协议迭代逆向分析方法的一种应用示例的流程图,图8所示的应用示例给出了在dos(diskoperationsystem,磁盘操作系统)环境下,运用给发明申请给出的私有网络协议迭代逆向分析方法,对未知私有协议进行逆向分析,将未知私有协议报文准确分类,并得到私有协议报文格式特征的步骤,该应用过程可以包括:

步骤s300,打开dos界面,进入程序所在的文件夹。

进入dos界面后,根据预先设定的实现本发明申请提供的逆向分析方法的可执行程序的存储路径,进入程序所在的文件夹。

步骤s310,输入程序运行指令。

可选的,该可执行程序可命名为feature_mining.py,参见图9,应用本发明实施例提供的私有网络协议迭代逆向分析方法进行逆向分析的第一过程示意图,在dos界面中运行程序feature_mining.py。

步骤s320,根据提示信息输入mat文件的存放路径。

在‘pleaseinputmatfilepath:’后面光标所在的位置输入要进行特征挖掘的原始数据,也就是上述经过预处理未知私有协议的报文得到的多个样本文件,样本文件存储在以.mat为文件后缀的文件中,并且.mat文件由两部分构成,a1_new记录了数据的内容,a1_length记录了每条数据的长度。mat文件的命名可以为a1.mat。

步骤s330,根据提示信息输入增幅限值。

在‘pleaseinputlowerlimitofincreasingcoverageratioaftereachiteration:’后面光标所在的位置输入每次循环迭代后所能容忍的最小的匹配覆盖率差值,即增幅限值,根据运行经验,该值的取值范围在0~1之间,比如可以如图所示,取0.05。

输入增幅限值后,点击回车键,即可启动逆向分析过程,参见图10,应用本发明实施例提供的私有网络协议迭代逆向分析方法进行逆向分析的第二过程示意图,图10示出了程序运行过程中某一时刻的运行进度,从图10中可以看出,dos界面会显示no.i-j-kcluster,记录了目前程序的运行进度,其中i表示本次循环迭代聚类之后得到i个簇,j表示目前程序正在对第j个簇进行特征挖掘,k表示目前是第k次迭代循环。

进一步,参见图11,应用本发明实施例提供的私有网络协议迭代逆向分析方法进行逆向分析的第三过程示意图,在每次循环结束之后dos界面会记录本次迭代循环所使用的时间,原始数据的数量totalnum,即前述样本文件的总量,以及经过本次循环迭代仍未得到分类的样本文件的数据量leavenum,coverage记录了已分类数据量占数据总量的比重,即匹配覆盖率。

步骤s340,程序运行出现“programisover!!!”,程序运行完毕。

可选的,参见图12,应用本发明实施例提供的私有网络协议迭代逆向分析方法进行逆向分析的第四过程示意图,dos界面出现‘programisover!!!’时代表程序执行完毕,dos界面的末尾记录了程序运行的总时间和最终剩余的未能进行分类的样本文件的数量,以及到目前可分类样本文件在总数据量中所占的比重。

进一步,参见图13至图17,应用本发明实施例提供的私有网络协议迭代逆向分析方法进行逆向分析的第一至第五结果示意图,各图中分别示出了不同文件路径下存放的不同文件内容。

参见图13,应用本发明实施例提供的私有网络协议迭代逆向分析方法进行逆向分析的第一结果示意图,程序运行的结果保存在存放mat文件的文件夹中,标号为1,2,3的文件夹表示各次循环迭代的结果保存在对应序号的文件夹中,all_fea是中间的一个过度文件夹,conclusion文件夹保存了所有循环迭代最终的结果。

参见图14,应用本发明实施例提供的私有网络协议迭代逆向分析方法进行逆向分析的第二结果示意图,以1,2,3数字命名的文件夹中均包含三部分内容:文件名为answer的文件中保存了本次循环迭代挖掘到的特征;mat文件是本次循环迭代处理的数据;bxc.txt和bxl.txt分别记录聚类之后第x个簇的数据,和第x个簇中各个数据的对应长度。

参见图15,应用本发明实施例提供的私有网络协议迭代逆向分析方法进行逆向分析的第三结果示意图,文件名为answer的文件夹中包含三部分内容:all-fea.txt记录了没有经过汇总、筛选处理的原始特征;all-fea-over.txt记录了经过汇总、筛选处理之后特征;cn.txt记录了第n条特征的相关信息。

参见图16,应用本发明实施例提供的私有网络协议迭代逆向分析方法进行逆向分析的第四结果示意图,cn.txt的第一行是特征的内容,用十进制数来表示;第二行是特征的对应位置;第三行是特征的十六进制表示。

参见图17,应用本发明实施例提供的私有网络协议迭代逆向分析方法进行逆向分析的第五结果示意图,文件名为conclusion的文件夹中记录了最终挖掘到的特征,同样包含三部分内容:leave.mat保存剩余的未分类数据;

all-fea-over.txt记录了经过汇总、筛选处理之后特征;cn.txt记录的第n条特征的相关信息。

下面对本申请提供的私有网络协议迭代逆向分析装置进行介绍,下文描述的私有网络协议迭代逆向分析装置可以认为是为实现本申请提供的私有网络协议迭代逆向分析方法,在中央设备中需设置的功能模块架构;下文描述内容可与上文相互参照。

图18为本发明实施例提供的私有网络协议迭代逆向分析装置的第一结构框图,参照图18,该装置可以包括:

第一确定单元1,用于确定多个目标协议报文;

生成单元2,用于分别提取各目标协议报文中与报文格式类型相关的信息,生成多个样本文件;

第一分类单元3,用于运用聚类算法,将各样本文件分类,且一样本文件分类对应一格式类型;

第二确定单元4,用于确定各格式类型的样本文件的报文格式特征,得到各格式类型的报文格式特征,一格式类型的报文格式特征指示该格式类型的样本文件在预定位置字节存储预定字节信息;

第一筛选单元5,用于汇总所述各格式类型的报文格式特征,筛选得到基于所述样本文件得到的多个目标报文格式特征;

第二分类单元6,用于根据所述多个目标报文格式特征,对各样本文件进行分类,以将与同一所述目标报文格式特征匹配成功的样本文件分为一类。

可选的,第一确定单元1,用于确定多个目标协议报文,具体包括:

将目标协议数据包拆分为多个独立的报文;

剔除无效报文和类型已知的报文;

将剩余的多个报文分别作为目标协议报文。

可选的,生成单元2,用于分别提取各目标协议报文中与报文格式类型相关的信息,生成多个样本文件,具体包括:

提取每个所述目标协议报文自首字节起预设数量的字节内容,将所得预设数量的字节内容存储为样本文件。

可选的,第二确定单元4,用于确定各格式类型的样本文件的报文格式特征,得到各格式类型的报文格式特征,一格式类型的报文格式特征指示该格式类型的样本文件在预定位置字节存储预定字节信息,具体包括:

分别求取各格式类型样本文件的频繁k项集;

分别保留各格式类型样本文件的频繁k项集中存在相等关系的多个频繁k项集中的一项;

分别删除各格式类型样本文件的频繁k项集中存在包含关系的多个频繁k项集中的子集;

分别将各格式类型样本文件剩余的频繁k项集建立组合,并分别将所述组合对应的设置为各格式类型样本文件的报文格式特征。

可选的,当筛选单元5用于筛选得到基于所述样本文件得到的多个目标报文格式特征时,具体包括:

删除所述报文格式特征中特征元素少于预设限值的频繁k项集;

保留所述报文格式特征中存在相等关系的多个频繁k项集中的一项;

删除所述报文格式特征中存在包含关系的多个频繁k项集中的超集;

合并所述报文格式特征中存在交叉关系的多个频繁k项集的非交叉频繁项为一频繁k项集;

将最终保留的多个频繁k项集分别设置为目标报文格式特征。

可选的,第二分类单元6用于根据所述多个目标报文格式特征,对各样本文件进行分类时,具体包括:

将每个样本文件分别与各所述目标报文格式特征进行匹配;

若判定当前进行匹配的样本文件与一所述目标报文格式特征匹配成功,则将当前进行匹配的样本文件划分至与该所述目标报文格式特征对应的类别。

可选的,当第二分类单元6用于判定当前进行匹配的样本文件与一所述目标报文格式特征匹配成功时,具体包括:

获取当前目标报文格式特征中记载的位置信息和字节信息;

查找当前需要匹配的样本文件与所述位置信息对应的字节中存储的字节信息;

判断当前需要匹配的样本文件的字节信息与当前目标报文格式特征中记载的字节信息是否一致;

如果当前需要匹配的样本文件的字节信息与当前目标报文格式特征中记载的字节信息一致,则判定匹配成功。

进一步,参见图19,本发明实施例提供的私有网络协议迭代逆向分析装置的第二结构框图,本发明实施例提供的私有网络协议迭代逆向分析装置,还包括:

第一计算单元7,用于若存在未匹配成功的样本文件,计算已匹配成功的样本文件的数量与样本文件总量的比值,得到当前的匹配覆盖率;

第二计算单元8,用于计算所述当前的匹配覆盖率与上一次的匹配覆盖率之差,得到当前的匹配覆盖率差值,其中,首次匹配后所得匹配覆盖率记为该次匹配后的所述匹配覆盖率差值;

判断单元9,用于判定所述当前的匹配覆盖率差值是否大于增幅限值,所述增幅限值表征所述匹配覆盖率差值的最小值;

返回单元10,用于若所述当前的匹配覆盖率差值大于所述增幅限值,重复的根据基于未匹配成功的样本文件得到的多个目标报文格式特征,对所述未匹配成功的样本文件进行分类,直至重新计算的当前匹配覆盖率差值大于所述增幅限值;

第二筛选单元11,用于若所述当前的匹配覆盖率差值不大于所述增幅限制,则汇总并筛选历次迭代得到的目标报文格式特征,得到格式特征集;

第三分类单元12,用于根据所述格式特征集中的多个目标报文格式特征,对各样本文件进行分类,以将与所述格式特征集中同一目标报文格式特征匹配成功的样本文件分为一类。

图20为本发明实施例提供的服务器的结构框图,参见图20所示,可以包括:至少一个处理器100,至少一个通信接口200,至少一个存储器300和至少一个通信总线400;

在本发明实施例中,处理器100、通信接口200、存储器300、通信总线400的数量为至少一个,且处理器100、通信接口200、存储器300通过通信总线400完成相互间的通信;显然,图20所示的处理器100、通信接口200、存储器300和通信总线400所示的通信连接示意仅是可选的;

可选的,通信接口200可以为通信模块的接口,如gsm模块的接口;

处理器100可能是一个中央处理器cpu,或者是特定集成电路asic(applicationspecificintegratedcircuit),或者是被配置成实施本发明实施例的一个或多个集成电路。

存储器300,存储有应用程序,可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。

其中,处理器100具体用于执行存储器内的应用程序,以实现上述所述的私有网络协议迭代逆向分析方法的任一实施例。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的核心思想或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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