CN104753934B - 将未知协议多通信方数据流分离为点对点数据流的方法 - Google Patents

将未知协议多通信方数据流分离为点对点数据流的方法 Download PDF

Info

Publication number
CN104753934B
CN104753934B CN201510126647.3A CN201510126647A CN104753934B CN 104753934 B CN104753934 B CN 104753934B CN 201510126647 A CN201510126647 A CN 201510126647A CN 104753934 B CN104753934 B CN 104753934B
Authority
CN
China
Prior art keywords
row
point
data frame
character
cluster
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201510126647.3A
Other languages
English (en)
Other versions
CN104753934A (zh
Inventor
郝玉洁
周洪川
刘渊
张凤荔
张俊娇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
University of Electronic Science and Technology of China
Original Assignee
University of Electronic Science and Technology of China
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by University of Electronic Science and Technology of China filed Critical University of Electronic Science and Technology of China
Priority to CN201510126647.3A priority Critical patent/CN104753934B/zh
Publication of CN104753934A publication Critical patent/CN104753934A/zh
Application granted granted Critical
Publication of CN104753934B publication Critical patent/CN104753934B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/08Protocols for interworking; Protocol conversion

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种将未知协议多通信方数据流分离为点对点数据流的方法,它包括以下步骤:S1:将混合未知多协议数据流分为单协议数据帧:采用聚类算法将混合未知多协议数据流分为单协议数据帧,并用评估算法确定所得到的类簇是比较可信的单协议数据帧;S2:将分割好的单协议数据帧按地址分为点对点数据帧:通过寻找具有“地址特征”的列队来组成地址对候选集,然后通过对地址对候选集进行拼接,得到最后的地址对。本发明将基于熵值的类簇评估方法用到了协议聚类的评估中,并且提出了一种简单有效的寻找未知协议地址信息的方法,效果很好。

Description

将未知协议多通信方数据流分离为点对点数据流的方法
技术领域
本发明涉及一种将未知协议多通信方数据流分离为点对点数据流的方法。
背景技术
在当前信息战场景下,被敌方通过进口器件或特种木马进行窃密的威胁日益严峻,此类窃密其途径通常是通过无线通信方式发送涉密信息,且这种通信所采用的协议均为非常规的专用未知协议,而现有的防范措施基本只针对已知协议,大多采用基于端口映射或静态特征匹配等方法,无法对该类窃密渠道进行监测和检测。本课题针对上述问题,拟提出一种基于数据报指纹关系的未知协议发现方法,为该类窃密渠道的监测手段奠定技术基础。
发明内容
本发明的目的在于克服现有技术的不足,提供一种将未知协议多通信方数据流分离为点对点数据流的方法,提出了一种简单有效的寻找未知协议地址信息的方法,此方法的前提是得到了单协议数据帧。
本发明的目的是通过以下技术方案来实现的:将未知协议多通信方数据流分离为点对点数据流的方法,它包括以下步骤:
S1:将混合未知多协议数据流分为单协议数据帧:采用聚类算法将混合未知多协议数据流分为单协议数据帧,并用评估算法确定所得到的类簇是比较可信的单协议数据帧;
S2:将分割好的单协议数据帧按地址分为点对点数据帧:通过寻找具有“地址特征”的列队来组成地址对候选集,然后通过对地址对候选集进行拼接,得到最后的地址对。
所述的S1包括以下子步骤:
S11:计算所输入的未知协议数据帧的种类数的近似值K,并且得到经过处理的数据帧;
S12:使用K-means算法指定K值进行聚类,得到n个类簇;
S13:使用基于熵的类簇评估算法进行评估每一个类簇的好坏,确定出可信的单协议数据帧。
所述的S1还包括以下子步骤:
S14:将聚类效果好的类簇放入结果集中,提取该类的指纹信息,并存入指纹库;
S15:将聚类效果好的类簇加上类标识进行机器学习,建立分类模型,使用分类模型进行分类。
所述的S11包括以下子步骤:
S1101:将输入数据构成二维矩阵,一个字节作为最小处理单元;
S1102:遍历所有字节,计算出每一列中出现频率最高的字符,并分别表示为a1,a2,a3,…,am;同时计算出这些字符在哪些行出现,并分别由集合S1,S2,S3,…Sm表示,即a1为第一列出现频率最高的字符,S1为第一列中出现字符a1的所有行的行号的集合;
S1103:将出现频率大于liminal%的字符以及出现频率小于low_liminal%的字符剔除,设有i个字符符合要求,则对m的值进行更新:令m=m-i;所述的liminal%和low_liminal%为频率最小阈值和频率最大阈值;
S1104:找出集合S1到Sm中,元素个数最大的集合,设为Smax;
S1105:定义一个新的集合R,所述的集合R的元素为集合S,并将集合Smax加入集合R;
S1106:取uniterate的值从50到99,遍历集合S1到Sm,根据遍历到的集合与集合R中所有的集合的交集率,做不同的处理:
(1)若遍历到的集合Sx与集合R中所有的集合的交集率低于uniterate%,则将Sx加入集合R;
(2)若遍历到的集合Sx与集合R中所有的集合的交集率高于或等于uniterate%,则取Smax和Sx的交集作为Smax;
所述的uniterate%为交集率阈值;
S1107:求出R中所有元素的并集,即为筛选出来的数据帧;
S1108:将筛选出来的数据帧从输入数据帧中除去,对剩余的数据帧数量进行判断:
(1)如果剩余的数据帧数量仍比较大,再次做为输入样本计算这些数据帧的K值,即返回步骤S1101;
(2)否则,进入步骤S1109;
S1109:得出对应的K值,以uniterate的值为X轴,K值为Y轴作曲线;
S1110:取K值变化比较平缓的最大uniterate区间,计算在此区间内的K的平均值,即为所求的协议种类数的近似值K。
所述的S12包括以下子步骤:
S1201:将步骤S11得到的经过处理的数据帧和簇的近似值K输入;
S1202:随机选择K个数据对象作为初始聚类中心;
S1203:根据簇中对象的平均值,将每个对象赋给最类似的簇;
S1204:更新簇的平均值,即重新计算每个对象簇中对象的平均值;
S1205:判断聚类准则函数是否收敛即计算聚类准则函数E值是否变化:
(1)若聚类准则函数未收敛即聚类准则函数E值仍在变化,则返回步骤S1203;
(2)若聚类准则函数收敛即聚类准则函数E值没有在变化,则输出K个簇。
所述的S13包括以下子步骤:
S1301:将步骤S11得到的经过处理的数据帧转换为列二维矩阵,每一个元素为一个字节;
遍历所有字节,计算出每一列中的字符的种类表示为a1,a2,a3,…,ax,同时计算出a1到ax中,每个字节出现的概率
S1302:遍历所有字节,计算出每一列中出现频率最高的字符,并分别表示为a1,a2,a3,…,am;同时计算出这些字符在哪些行出现,并分别由集合S1,S2,S3,…Sm表示,即a1为第一列出现频率最高的字符,S1为第一列中出现字符a1的所有行的行号的集合;并将出现的次数除以总行数就得到该字节出现的频率Pi;
S1303:计算每一列的熵值H,由于有m列则有m个熵值,计算公式如下:
式中,m为一列中字符的种类数,Pi为第i中字符出现的概率,对数以2为底;
S1304:以列号为X轴,该列的熵值为Y轴做图,分析聚类结果的好坏:
设定一个评估阈值low_entropy,当越多的列熵值小于low_entropy,聚类效果就越好。
所述的S2包括以下子步骤:
S21:将步骤S1得到的单协议数据帧输入,并转化为二维数组;
S22:在数据帧中的寻找符合以下条件这些列:在这些列中,出现字符的种类数大于1小于K,K作为可变参数,默认值为256;
S23:循环处理从步骤S22中寻找到的每一列,挑选出符合以下条件的列到集合R:
在其中一个列中,有超过w%的字符在另外一个列中的不同位置也出现了,并且在所述的另外一个列中,有超过w%的字符在所述的其中一个列中的不同位置也出现了,则将这两列加入集合R;所述的w作为可变参数,默认值为60;
S24:集合R中得到的列为地址列的候选集,若集合R中不止两列,则将相邻的列进行拼接操作;
S25:取w的值从10到90,分别计算出相应的地址对;
S26:对比分析得到的地址对,找出最优解。
所述的S12采用weka工具中的k-means聚类算法进行聚类,包括以下子步骤:
(1)数据预处理:在将二进制数据流处理成十六进制时,用空格符将每个字节隔开以方便计算,再聚类前使用weka自带的StringToWordVector工具,将每个字节作为一个属性,一个字节有256种形态,因此有256个属性;过滤所有数据帧,对于每条数据帧,如果出现某个字节,对应的属性值就置为1,没出现的字节就置为0,一条数据帧对应一个实例;
(2)使用weka实现了的simplemeans聚类算法进行聚类,指定k值为以上求得的值,聚类出来的结果,就是每种单一的协议类型。
本发明的有益效果是:
对于每一步来说,具有以下优点:
(1)使用本发明提出的计算混合协议种类数的方法,能够有效的计算出协议种类数的近似值K,这个接下来使用的聚类算法提供很好的参数。
(2)从k-means的聚类效果看,使用聚类的方法也能够有效的将不同的协议区分开,k-means算法需要指定不同的随机种子来计算结果的平均值,因为k-means的聚类效果与初始点的选择有很大关系。根据聚类的结果得到的类簇还是比较准的,效果不错。
(3)本发明提出的使用熵值来判断一个聚类的类簇的好坏,也有比较好的效果,因为一列的熵值代表了这一列的信息混杂度,如果是同类型的协议帧,按照我们的初始假设,协议存在类型标识,并且类型标识会在同样的位置出现,那么一定存在某列,使得这一列的熵值很小(接近0)。
(4)本发明提出的寻找未知单协议数据帧中的地址位置原理简单,效果也较好。
对于本发明的整体来说,具有以下优点:
(1)提出了一种计算混合协议K的近似值的方法。
(2)将基于熵值的类簇评估方法用到了协议聚类的评估中。由于我们假定协议存在类型标识,并且类型标识会在同样的位置出现,在将输入的二进制流处理为二维矩阵的情况下,使用这种方法对协议帧的评估是非常直观和有效的。
(3)提出了一种简单有效的寻找未知协议地址信息的方法,此方法的前提假设是由前面的方法得到了单协议数据帧,效果不错。
附图说明
图1为本发明流程图;
图2为实施例2中不同uniterate时的K值变化的示意图;
图3为实施例2中随机种子设为10的结果示意图;
图4为实施例2中随机种子设为5的结果示意图;
图5为实施例2中随机种子设为15的结果示意图;
图6为2000条单协议数据帧每列的熵值图;
图7为2500条多协议混合数据帧每列的熵值图。
具体实施方式
下面结合附图进一步详细描述本发明的技术方案:
假设:
(1)每一种协议都具有协议标识,且同种协议的标识会在相同位置会出现;
(2)不同种协议的协议标识可能出现在不同位置,也可能出现在相同位置;
(3)协议标识的长度不定(假设不少于1字节),可能是1字节、2字节、3字节…;
(4)不同协议的数据帧数量不同,有的多,有的少,甚至有的协议数据帧只有一条。
实施例1为本发明的具体算法实现:
对于步骤S11,
数据输入:n行m列的混合未知协议数据帧。
算法目标:尽可能的准确的算出协议的种类数k。
其具体的算法实现:
(1)定义最小处理单元对象:OneByte,属性有:
(2)建立OneByte的n行、m列的二维数组,将输入的数据帧的每一个字节的内容赋给OneByte对象的oneByte域,并且记录该字节所在的行和列。
(3)循环遍历OneByte二维数组,按列统计,统计每一列中每个字节出现的次数以及哪些行出现过该字节。将出现的次数记录下来,记为num,将出现过的行加入到OneByte的alist集合中,这样就得到了每个字节在那一列中出现的次数以及出现过该字节的数据帧的行号,出现次数num除以n就得到该字节出现的频率frequence。
(4)找出每一列中,出现频率最高的OneByte对象,从第0列到第m-1一共有m个,同时对这m个对象进行筛选,将出现频率(num/n)小于low_liminal和大于或等于liminal的对象去掉,这样就得到了出现频率在[low_liminal,liminal)之间的OneByte对象,每一个对象都有一个alist集合,存放着哪些列出现过该对象。
(5)用S代表alist集合,找出alist集合中个数最多的那一个,即为Smax。
(6)用R代表结果集存放S,先将Smax加入结果集,用Si遍历其他所有的alist集合,计算Si与Smax的交集率rate,计算公式如下:
rate=(Smax与Si交集的个数)/(Smax中元素个数);
(7)判断rate,如果rate值小于设定值uniterate,则将Si加入集合R;如果rate值大于等于设定值uniterate,则将Si与Smax求交集,并将新的交集赋给Smax。
(8)结果集R中的元素个数,即为要求的一次k值。
设置uniterate值从50到99变化,分别求出k值,以uniterate的值为X轴,K值为Y轴作曲线。取K值变化比较平缓的最大uniterate区间,计算在此区间内的K的平均值,即为所求的协议种类数的近似值。
对于步骤S12的具体算法实现:
当由以上方法确定K值后,使用weka工具中的k-means聚类算法进行聚类,操作流程如下:
(1)数据预处理:在将二进制数据流处理成十六进制时,用空格符将每个字节隔开以方便计算,再聚类前使用weka自带的StringToWordVector工具,将每个字节作为一个属性,一个字节有256种形态,因此有256个属性。过滤所以数据帧,对于每条数据帧,如果出现某个字节,对应的属性值就置为1,没出现的字节就置为0,一条数据帧对应一个实例;比如,某实例出现了ff,那么该实例的ff属性就设为1。
(2)使用weka实现了的simplemeans聚类算法进行聚类,指定k值为以上求得的值。聚类出来的结果,就是每种单一的协议类型。
对于步骤S13的具体算法实现:
在使用K-means算法对未知协议进行聚类后,对于带有类标签的类别,我们可以知道聚类结果的好坏,但对于完全没有先验知识的类,需要用一种衡量类簇好坏的方法。
此算法的计算步骤如下:
(1)将输入数据帧转换为二维矩阵(n行,m列),每一个元素为一个字节,遍历所有字节,计算出每一列中的字符的种类表示为a1,a2,a3,…,ax,同时计算出a1到ax中,每个字节出现的概率,具体实现按照步骤S11中的计算方法的第1、2、3步执行。
(2)计算每一列的熵值H,共有m列则有m个熵值,计算公式如下:
其中,m为一列中字符的种类数,Pi为第i种字符出现的概率,对数以2为底。
(3)以列号为X轴,该列的熵值为Y轴做图,分析聚类结果的好坏。
熵值的大小代表了信息混杂程度的大小,在数据帧量很大的情况下,如果是同一种协议的数据帧,那么总有那么一列或几列的熵值接近0;如果是多种协议混合的,熵值接近0的列几乎不会有。因此可以用计算熵值的方法来评估未知协议聚类的好坏,标准就是:设定一个阈值low_entropy=0.05,越多的列熵值小于low_entropy,聚类效果就越好。
对于步骤S2的具体算法实现:
(1)数据输入:将切分好帧的二进制数据帧转换为对应的十六进制格式,以2个字节作为处理单元,构成一个具有n行,m列的二维矩阵,每个元素就是2个字节所对应的十六进制字符,用字符串表示。
(2)定义最小处理单元对象:TwoByte,属性有:
(3)建立TwoByte的n行、m列的二维数组,将输入的数据帧的每二个字节的内容赋给TwoByte对象的twoByte域,并且记录该字符串所在的行和列。
(4)循环遍历TwoByte二维数组,按列统计,统计每一列中每个字符串出现的次数以及哪些行出现过该字符串。将出现的次数赋值给TwoByte的num域,将出现过该字符串的行加入到TwoByte的alist集合中。这样就得到了每个字符串在那一列中出现的次数以及出现过该字节的数据帧的行号。
(5)设定阈值min_numOfperLine(默认1)和max_numOfperLine(默认256),筛选出列的字符串种类数大于min_numOfperLine且小于max_numOfperLine的列作为下一步的输入。
(6)假设以上得到S列,循环处理每一列,设定阈值w%(默认60%)以及结果集R,挑选出这样的列对到集合R:
在Si列中,有超过w%的字符在Sj列中的不同位置也出现了,并且在Sj列中,有超过w%的字符在Si列中的不同位置也出现了。则将Si,Sj加入集合R。
(7)集合R中得到的地址对即为要求的候选地址所在的列。如果集合R中不止2列,则相邻的列进行拼接。
(8)为更准确的找到地址所在的位置,将w%的值设为从50到95,对比分析R中的地址对,找出最优解。
实施例2为具体的实验验证:
对于步骤S11,协议种类数计算实验:
(1)数据输入:Tcpdump中的27种协议,每一种取100条数据帧,不够100条的全部取;每一条数据帧取前68字节;将所得的协议混合起来作为输入。
(2)对可设置变量取值:liminal,low_liminal,uniterate。Liminal设为95,low_liminal设为10;uniterate最小值为50,最大值为99;
实验结果:
实验uniterate取50到99记录对应的K值,以下是liminal=95;low_liminal=10;uniterate=99的实验简要结果(一次实验):
帧最大长度为:68;
帧总数:2509;
列统计器个数:68;
候选结果集中集合个数:62;
结果集中集合个数:27;
字节:00;出现次数:2379;频率:0.9481865;出现的行数:未显示。
字节:10;出现次数:1172;频率:0.46711838;出现的行数:未显示。
字节:7b;出现次数:700;频率:0.2789956;出现的行数:未显示。
字节:38;出现次数:700;频率:0.2789956;出现的行数:未显示。
字节:46;出现次数:700;频率:0.2789956;出现的行数:未显示。
字节:33;出现次数:700;频率:0.2789956;出现的行数:未显示。
字节:10;出现次数:1415;频率:0.56396973;出现的行数:未显示。
字节:7b;出现次数:810;频率:0.32283777;出现的行数:未显示。
字节:38;出现次数:810;频率:0.32283777;出现的行数:未显示。
字节:46;出现次数:810;频率:0.32283777;出现的行数:未显示。
字节:33;出现次数:810;频率:0.32283777;出现的行数:未显示。
字节:08;出现次数:2279;频率:0.90833;出现的行数:未显示。
字节:45;出现次数:2179;频率:0.8684735;出现的行数:未显示。
字节:40;出现次数:1368;频率:0.5452371;出现的行数:未显示。
字节:80;出现次数:589;频率:0.23475488;出现的行数:未显示。
字节:06;出现次数:1340;频率:0.53407735;出现的行数:未显示。
字节:ac;出现次数:1635;频率:0.65165406;出现的行数:未显示。
字节:10;出现次数:1635;频率:0.65165406;出现的行数:未显示。
字节:70;出现次数:995;频率:0.39657235;出现的行数:未显示。
字节:64;出现次数:589;频率:0.23475488;出现的行数:未显示。
字节:ac;出现次数:1566;频率:0.6241531;出现的行数:未显示。
字节:10;出现次数:1566;频率:0.6241531;出现的行数:未显示。
字节:70;出现次数:764;频率:0.3045038;出现的行数:未显示。
字节:64;出现次数:556;频率:0.22160223;出现的行数:未显示。
字节:50;出现次数:1323;频率:0.5273017;出现的行数:未显示。
字节:18;出现次数:1143;频率:0.45556;出现的行数:未显示。
字节:43;出现次数:275;频率:0.109605424;出现的行数:未显示。
结果分析:
将liminal=95;low_liminal=10;uniterate的值设定为从50到99的结果如下表
序号 1 2 3 4 5 6 7 8 9 10 11
uniterate 50 55 60 65 70 75 80 85 90 95 99
K 6 6 12 16 16 19 25 25 25 27 27
不同uniterate时的K值变化的示意图如图2所示:
根据上表中的数据,取相对最大平滑区间(80-99)的平均值:
K=(25+25+25+27+27)/5=25.8
因此,k值取26。
对于步骤S12,k-means聚类实验:
数据输入:
Tcpdump中的27种协议,每一种取100条数据帧,不够100条的全部取;每一条数据帧取前68字节;将所得的协议混合起来,每条数据帧后面做上协议类型标记,用于weka的Classes to clusters evaluation功能评估聚类效果的好坏。
操作步骤:
1、用weka打开arff格式文件。
2、使用StringToWordVector过滤器处理文本属性StringToVector的WordCount参数设为flase,其他使用默认的参数设置。处理后数据流的每一个字节表示一个属性,一共有256个属性,属性值为1或0,1表示该属性有,0表示没有。
3、选择weka中的simplemeans聚类算法进行聚类,选中Classes to clustersevaluation,算法的K值设为26,随机种子seed设为5,10,15计算平均值。
随机种子设为10的结果如图3所示,随机种子设为5的结果如图4所示,随机种子设为15的结果如图5所示。
聚类的总体错误的分类实例数分别为40.5%,38.1%,33.32%,平均值为37.2%。也就是有62.8%的正确率。
对于步骤S13,聚类效果评估实验:
设计以下2个实验,一个是使用2000条单协议数据帧作为输入,另一个是使用2500条多协议混合的数据帧作为数据,然后将得到的熵值进行对比分析判断聚类类簇的好坏。
(1)2000条单协议每一列的熵值计算如下:
列号 熵值 列号 熵值 列号 熵值
1 1.73797 15 0 29 2.923939
2 2.579031 16 0 30 3.635007
3 3.253605 17 0 31 4.842482
4 3.443339 18 0 32 5.652463
5 3.573282 19 0 33 0.677264
6 3.781037 20 0 34 2.003118
7 0.739385 21 0 35 3.112292
8 2.533421 22 1.30097 36 3.222453
9 3.2976 23 0.739385 37 3.317778
10 3.568274 24 2.533421 38 3.374964
11 3.77027 25 3.2976 39 2.923939
12 4.031571 26 3.568274 40 3.635007
13 0 27 3.77027 41 4.83754
14 0 28 4.031571 42 5.654962
2000条单协议数据帧每列的熵值图如图6所示。
(2)2500条多协议混合数据帧每列的熵值计算如下:
列号 熵值 列号 熵值 列号 熵值
1 1.749679 15 0.948731 29 4.242668
2 2.424071 16 1.81334 30 5.41643
3 3.554995 17 1.89479 31 3.047061
4 3.774774 18 7.744579 32 3.279877
5 3.774774 19 8.850714 33 4.820877
6 3.774774 20 8.691174 34 5.511736
7 0.860268 21 1.665774 35 3.738378
8 1.945346 22 0.504124 36 6.786242
9 2.811111 23 3.906183 37 4.319735
10 3.117158 24 2.521798 38 7.148305
11 3.117158 25 9.487966 39 5.022653
12 3.117158 26 9.803289 40 7.954479
13 0.745415 27 2.879997 41 8.894831
14 0.745415 28 3.184749 42 9.403014
2500条多协议混合数据帧每列的熵值图如图7所示。
从实验结果可以看出:
(1)协议混合的熵值最小为0.504124,最大为9.803289,而且小于设定阈值low_entropy的的列没有;
(2)单协议熵最小为0,最大为5.654962,而且各个列的值均较小,小于low_entropy的列有9列;熵值为0的,说明该列只有一种字符。
由于熵值的大小代表了信息混杂程度的大小,在数据帧量很大的情况下,如果是同一种协议的数据帧,那么总有那么一列或几列的熵值接近0;如果是多种协议混合的,熵值接近0的列几乎不会有。因此可以用计算熵值的方法来评估未知协议聚类的好坏,标准就是:越多的列熵值越小,聚类效果就越好。
对于步骤S2,寻找协议位置信息实验:
为验证本算法的有效性,实验分别使用了2000条arp数据帧和10000条tcp数据帧分别进行了验证,以下是实验结果。
(1)2000条arp数据帧地址位置确定实验:
数据输入:2000条arp数据帧,取前42字节(数据帧最短为42字节),2字节作为最小处理单元,一共有21列。
实验结果:min_numOfperLine=1,max_numOfperLine=256,w%从50到95的结果如下表(列号从0开始):
从上表的拼接地址对可以看出,列号从0开始,程序中的1 2,4 5,12 13,17 18为地址列。对应于输入数据的列为:2 3 4 5,8 9 10 11,24 25 26 27,34 35 36 37为地址列。
结果分析:
由上表的结果可以看出,arp数据帧为地址的列有:2 3 4 5,8 9 10 11,24 25 2627,34 35 36 37。
分析arp数据帧结构,验证实验结果是否正确:
如下是2条arp数据帧,根据arp数据帧的格式可以很容易知道,第0 1 2 3 4 5列是目地MAC地址,第6 7 8 9 10 11 列是源MAC地址,第22 23 24 25 26 27为源MAC地址,第28 29 30 31为发送方IP地址列,第32 33 34 35 36 37 为目的MAC地址列,第38 39 40 41为接收方IP地址列。
ff ff ff ff ff ff 00 10 5a 9c b2 54 08 06 00 01 08 00 06 04 00 01 0010 5a 9c b2 54 ac 10 70 64 00 00 00 00 00 00 ac 10 70 14
00 10 5a 9c b2 54 00 c0 4f a3 57 db 08 06 00 01 08 00 06 04 00 02 00c0 4f a3 57 db ac 10 70 14 00 10 5a 9c b2 54 ac 10 70 64
结论:将算法找出的地址列与输入数据真是的地址列进行比较,虽然没有把所有的地址列都找出来,但是对于每一个地址断,都找出了2/3的列,这些列也可以作为将数据帧分离为点对点的依据。
(2)10000条TCP数据帧地址位置确定实验
数据输入:10000条TCP数据帧,取前60字节(数据帧最短为60字节),2字节作为最小处理单元,一共有30列。
实验结果:min_numOfperLine=1,max_numOfperLine=256,w%从50到95的结果如下表:
从上表的拼接地址对可以看出,程序中的0 1 2,3 4 5 ,13 14,15 16为地址列。对应于输入数据的列为:0 1 2 3 4 5,6 7 8 9 10 11,26 27 28 29,30 31 32 33为地址列。
如下是2条tcp数据帧,根据tcp数据帧的格式可以很容易知道,第0 1 2 3 4 5列是目地MAC地址,第6 7 8 9 10 11 列是源MAC地址,第26 27 28 29为发送方IP地址列,第38 39 40 41为接收方IP地址列。
00 10 7b 38 46 33 00 10 5a 9c b2 54 08 00 45 00 00 2c 7c 00 40 00 8006 81 24 ac 10 70 64 ce fb 12 37 04 18 00 50 00 05 00 94 00 00 00 00 60 02 2000 75 7e 00 00 02 04 05 b4 05 b4
00 10 5a 9c b2 54 00 10 7b 38 46 33 08 00 45 00 00 2c 4b 0a 00 00 3f06 33 1b ce fb 12 37 ac 10 70 64 00 50 04 18 46 74 b0 bf 00 05 00 95 60 12 7fe0 1e 59 00 00 02 04 05 b4 00 00
结论:将算法找出的地址列与输入数据真是的地址列进行比较,算法所找出的列正好全部是tcp数据帧的地址列,这些列可以作为将数据帧分离为点对点的依据。

Claims (7)

1.将未知协议多通信方数据流分离为点对点数据流的方法,其特征在于:它包括以下步骤:
S1:将混合未知多协议数据流分为单协议数据帧:采用聚类算法将混合未知多协议数据流分为单协议数据帧,并用评估算法确定所得到的类簇是可信的单协议数据帧;
S2:将单协议数据帧按地址分为点对点数据帧:通过寻找具有“地址特征”的列队来组成地址对候选集,然后通过对地址对候选集进行拼接,得到最后的地址对;
所述的S2包括以下子步骤:
S21:将步骤S1得到的单协议数据帧输入,并转化为二维数组;
S22:在数据帧中的寻找符合以下条件这些列:在这些列中,出现字符的种类数大于1小于K,K作为可变参数,默认值为256;
S23:循环处理从步骤S22中寻找到的每一列,挑选出符合以下条件的列到集合R:
在其中一个列中,有超过w%的字符在另外一个列中的不同位置也出现了,并且在所述的另外一个列中,有超过w%的字符在所述的其中一个列中的不同位置也出现了,则将这两列加入集合R;所述的w作为可变参数,默认值为60;
S24:集合R中得到的列为地址列的候选集,若集合R中不止两列,则将相邻的列进行拼接操作;
S25:取w的值从10到90,分别计算出相应的地址对;
S26:对比分析得到的地址对,找出最优解。
2.根据权利要求1所述的将未知多协议多通信方数据流分离为点对点数据流的方法,其特征在于:所述的S1包括以下子步骤:
S11:计算所输入的未知多协议数据帧的种类数的近似值K,并且得到经过处理的数据帧;
S12:使用K-means算法指定K值进行聚类,得到n个类簇;
S13:使用基于熵的类簇评估算法进行评估每一个类簇的好坏,确定出可信的单协议数据帧。
3.根据权利要求2所述的将未知协议多通信方数据流分离为点对点数据流的方法,其特征在于:所述的S1还包括以下子步骤:
S14:将聚类效果好的类簇放入结果集中,提取该类簇的指纹信息,并存入指纹库;
S15:将聚类效果好的类簇加上类标识进行机器学习,建立分类模型,使用分类模型进行分类。
4.根据权利要求2所述的将未知协议多通信方数据流分离为点对点数据流的方法,其特征在于:所述的S11包括以下子步骤:
S1101:将输入数据构成二维矩阵,一个字节作为最小处理单元;
S1102:遍历所有字节,计算出每一列中出现频率最高的字符,并分别表示为a1,a2,a3,…,am;同时计算出这些字符在哪些行出现,并分别由集合S1,S2,S3,…Sm表示,即a1为第一列出现频率最高的字符,S1为第一列中出现字符a1的所有行的行号的集合;
S1103:将出现频率大于liminal%的字符以及出现频率小于low_liminal%的字符剔除,设有i个字符符合要求,则对m的值进行更新:令m=m-i;所述的liminal%和low_liminal%分别为频率最小阈值和频率最大阈值;
S1104:找出集合S1到Sm中,元素个数最大的集合,设为Smax;
S1105:定义一个新的集合R,将集合Smax加入集合R;
S1106:取uniterate的值从50到99,遍历集合S1到Sm,根据遍历到的集合与集合R中所有的集合的交集率,做不同的处理:
(1)若遍历到的集合Sx与集合R中所有的集合的交集率低于uniterate%,则将Sx加入集合R,所述Sx为S1到Sm中的一个,x为序号;
(2)若遍历到的集合Sx与集合R中所有的集合的交集率高于或等于uniterate%,则取Smax和Sx的交集作为Smax;
所述的uniterate%为交集率阈值;
S1107:求出R中所有元素的并集,即为筛选出来的数据帧;
S1108:将筛选出来的数据帧从输入数据帧中除去,对剩余的数据帧数量进行判断:
(1)如果剩余的数据帧数量仍比较大,再次做为输入样本计算这些数据帧的K值,即返回步骤S1101;
(2)否则,进入步骤S1109;
S1109:得出对应的K值,以uniterate的值为X轴,K值为Y轴作曲线;
S1110:取K值变化比较平缓的最大uniterate区间,计算在此区间内的K的平均值,即为所求的协议种类数的近似值K。
5.根据权利要求2所述的将未知协议多通信方数据流分离为点对点数据流的方法,其特征在于:所述的S12包括以下子步骤:
S1201:将步骤S11得到的经过处理的数据帧和簇的近似值K输入;
S1202:随机选择K个数据对象作为初始聚类中心;
S1203:根据簇中对象的平均值,将每个对象赋给最类似的簇;
S1204:更新簇的平均值,即重新计算每个对象簇中对象的平均值;
S1205:判断聚类准则函数是否收敛即计算聚类准则函数E值是否变化:
(1)若聚类准则函数未收敛即聚类准则函数E值仍在变化,则返回步骤S1203;
(2)若聚类准则函数收敛即聚类准则函数E值没有在变化,则输出n个簇。
6.根据权利要求2所述的将未知协议多通信方数据流分离为点对点数据流的方法,其特征在于:所述的S13包括以下子步骤:
S1301:将步骤S11得到的经过处理的数据帧转换为列二维矩阵,每一个元素为一个字节;遍历所有字节,计算出每一列中的字符的种类表示为a1,a2,a3,…,ax,同时计算出a1到ax中,每个字节出现的概率
S1302:遍历所有字节,计算出每一列中出现频率最高的字符,并分别表示为a1,a2,a3,…,am;同时计算出这些字符在哪些行出现,并分别由集合S1,S2,S3,…Sm表示,即a1为第一列出现频率最高的字符,S1为第一列中出现字符a1的所有行的行号的集合;并将出现的次数除以总行数就得到该字节出现的频率Pi;
S1303:计算每一列的熵值H,由于有m列则有m个熵值,计算公式如下:
<mrow> <mi>H</mi> <mo>=</mo> <mo>-</mo> <munderover> <mo>&amp;Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>m</mi> </munderover> <msub> <mi>P</mi> <mi>i</mi> </msub> <msub> <mi>lbP</mi> <mi>i</mi> </msub> <mo>;</mo> </mrow>
式中,m为一列中字符的种类数,Pi为第i种字符出现的概率,对数以2为底;
S1304:以列号为X轴,该列的熵值为Y轴做图,分析聚类结果的好坏:
设定一个评估阈值low_entropy,当越多的列熵值小于low_entropy,聚类效果就越好。
7.根据权利要求2所述的将未知协议多通信方数据流分离为点对点数据流的方法,其特征在于:所述的S12采用weka工具中的k-means聚类算法进行聚类,包括以下子步骤:
(1)数据预处理:在将二进制数据流处理成十六进制时,用空格符将每个字节隔开以方便计算,再聚类前使用weka自带的StringToWordVector工具,将每个字节作为一个属性,一个字节有256种形态,因此有256个属性;过滤所有数据帧,对于每条数据帧,如果出现某个字节,对应的属性值就置为1,没出现的字节就置为0,一条数据帧对应一个实例;
(2)使用weka实现了的simplemeans聚类算法进行聚类,指定K值为S11的近似值K,聚类出来的结果,就是每种单一的协议类型。
CN201510126647.3A 2015-03-23 2015-03-23 将未知协议多通信方数据流分离为点对点数据流的方法 Expired - Fee Related CN104753934B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510126647.3A CN104753934B (zh) 2015-03-23 2015-03-23 将未知协议多通信方数据流分离为点对点数据流的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510126647.3A CN104753934B (zh) 2015-03-23 2015-03-23 将未知协议多通信方数据流分离为点对点数据流的方法

Publications (2)

Publication Number Publication Date
CN104753934A CN104753934A (zh) 2015-07-01
CN104753934B true CN104753934B (zh) 2018-01-19

Family

ID=53593038

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510126647.3A Expired - Fee Related CN104753934B (zh) 2015-03-23 2015-03-23 将未知协议多通信方数据流分离为点对点数据流的方法

Country Status (1)

Country Link
CN (1) CN104753934B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105827603A (zh) * 2016-03-14 2016-08-03 中国人民解放军信息工程大学 未明协议特征库建立方法、未明报文分类方法及相关装置
CN106934420B (zh) * 2017-03-16 2020-11-27 郑杰 网络消息识别过程中K-means算法的k值确定方法及安全设备
CN114722961A (zh) * 2022-04-20 2022-07-08 重庆邮电大学 一种零知识下二进制协议的混合数据帧聚类方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101022408A (zh) * 2007-02-01 2007-08-22 华为技术有限公司 传输点对点报文的方法以及传输汇聚节点
CN102299863A (zh) * 2011-09-27 2011-12-28 北京网康科技有限公司 一种网络流量聚类的方法及其设备
CN103297427A (zh) * 2013-05-21 2013-09-11 中国科学院信息工程研究所 一种未知网络协议识别方法及系统
CN104159232A (zh) * 2014-09-01 2014-11-19 电子科技大学 二进制消息数据的协议格式识别方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7080063B2 (en) * 2002-05-10 2006-07-18 Oracle International Corporation Probabilistic model generation
US8346772B2 (en) * 2010-09-16 2013-01-01 International Business Machines Corporation Systems and methods for interactive clustering

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101022408A (zh) * 2007-02-01 2007-08-22 华为技术有限公司 传输点对点报文的方法以及传输汇聚节点
CN102299863A (zh) * 2011-09-27 2011-12-28 北京网康科技有限公司 一种网络流量聚类的方法及其设备
CN103297427A (zh) * 2013-05-21 2013-09-11 中国科学院信息工程研究所 一种未知网络协议识别方法及系统
CN104159232A (zh) * 2014-09-01 2014-11-19 电子科技大学 二进制消息数据的协议格式识别方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Rumor Riding: An Anonymity Approach for Decentralized Peer to Peer Systems;Imran Memon et al.;《Wireless Personal Communications》;20140617;全文 *
The discrepancies caused by different cluster merging algorithms in fully polarimetric SAR classification;li liu et al.;《IEEE Xplore》;20130408;全文 *
基于K-MEANS聚类的分支定界算法在网络异常检测中的应用;张凤荔等;《计算机科学》;20120430;全文 *
基于二位熵分量的K均值攻击效果评估;戴方芳等;《北京邮电大学学报》;20140228;全文 *

Also Published As

Publication number Publication date
CN104753934A (zh) 2015-07-01

Similar Documents

Publication Publication Date Title
CN110011931B (zh) 一种加密流量类别检测方法及系统
KR102387725B1 (ko) 멀웨어 호스트 넷플로우 분석 시스템 및 방법
CN104244035B (zh) 基于多层聚类的网络视频流分类方法
Zhang et al. Robust network traffic classification
CN110519298B (zh) 一种基于机器学习的Tor流量识别方法及装置
US6970462B1 (en) Method for high speed packet classification
EP3343869B1 (en) A method for modeling attack patterns in honeypots
CN110213227A (zh) 一种网络数据流检测方法及装置
CN106960153B (zh) 病毒的类型识别方法及装置
CN104753934B (zh) 将未知协议多通信方数据流分离为点对点数据流的方法
Dowoo et al. PcapGAN: Packet capture file generator by style-based generative adversarial networks
CN113821793B (zh) 基于图卷积神经网络的多阶段攻击场景构建方法及系统
CN112800424A (zh) 一种基于随机森林的僵尸网络恶意流量监测方法
CN104767736A (zh) 将未知单协议数据流分离为不同类型的数据帧的方法
CN116915450A (zh) 基于多步网络攻击识别和场景重构的拓扑剪枝优化方法
Lin et al. Machine learning with variational autoencoder for imbalanced datasets in intrusion detection
CN104767739B (zh) 将未知多协议混合数据帧分离为单协议数据帧的方法
CN106933919A (zh) 数据表的连接方法及装置
CN110336798A (zh) 一种基于dpi的报文匹配过滤方法及其装置
CN113114691B (zh) 一种网络入侵检测方法、系统、设备和可读存储介质
CN114338600A (zh) 一种设备指纹的推选方法、装置、电子设备和介质
CN111708921B (zh) 一种号码选择的方法、装置、设备和存储介质
Wang et al. Bitstream protocol classification mechanism based on feature extraction
Banton et al. Intrusion detection using extremely limited data based on SDN
CN116886637B (zh) 一种基于图积分的单特征加密流检测方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180119

Termination date: 20190323

CF01 Termination of patent right due to non-payment of annual fee