一种基于n-gram多特征的流量载荷类型检测方法

文档序号:10515274阅读:576来源:国知局
一种基于n-gram多特征的流量载荷类型检测方法
【专利摘要】本发明公开了一种基于n?gram多特征的流量载荷类型检测方法。本方法为:1)读取样本网络流的数据包,根据该数据包的按五元组标记其所属的样本网络流;然后计算该样本网络流五元组的哈希值作为键,如果哈希表中不存在该项,则将该哈希值作为新的键并分配一结构体作为键值Value,插入哈希表中;如果存在该键,则在哈希表中获得对应的结构体,将该数据包的载荷数据保存到该结构体中;2)对每一结构体中的载荷数据进行n?gram子串分割,生成该样本网络流的特征向量;3)根据特征向量训练得到一分类模型;4)对于待分类的网络流,生成该网络流的特征向量,然后利用该分类模型判断该网络流的类型。本发明大大提高了检测效率。
【专利说明】
-种基于n-gram多特征的流量载荷类型检测方法
技术领域
[0001] 本发明属于网络流量信息安全领域,设及一种对流量按其载荷类型进行检测的方 法,能够应用于提高网络服务质量、优化网络带宽分配、加强网络安全管理等方面。
【背景技术】
[0002] 随着互联网的普及和网络技术的快速发展,网络流量呈现爆炸式增长,如何高效 地网络带宽规划、网络入侵检测与防御W及流量计费,是当前网络服务提供商和网络管理 者所面临的挑战。网络流量分类技术能够按照网络应用类型或协议类型对流量进行分类, 可为上述亟需解决的问题提供重要的技术支撑。
[0003] 目前已有的网络流量分类技术,主要是将网络流量分类到具体的网络应用和网络 协议,方法有4种:基于端口的流量分类方法、基于有效负载的流量分类方法、基于主机行为 模式的流量分类方法W及基于机器学习的流量分类方法。
[0004] (1)基于端口的流量分类方法
[0005] 能够用于高速实时流量分类,但是由于随机端口 W及端口伪装技术的滥用,该方 法已逐渐失效。
[0006] (2)基于有效负载的流量分类方法
[0007] 在实际工程中应用最为广泛,主要得益于快速准确的类字符串指纹匹配算法。但 是由于应用协议指纹的提取只能针对已知的非加密网络应用,因此无法处理加密流量或者 其它未知网络应用的流量。
[000引(3)基于主机行为模式的流量分类方法
[0009] 该方法具有很强的理论意义,不依赖协议特征,不需要对数据包进行解析,通过主 机交互的行为信息来识别网络流量,由于模型较为复杂难W保证实时性要求,并且无法精 细化识别出应用类型。
[0010] (4)基于机器学习的流量分类方法
[0011] 假设对于给定的网络应用,流的行为统计特征(流间隔、单包字节长度、相邻包时 间间隔等)具有唯一性,可W基于此类特征分类不同网络应用流量。但缺点是很难找出有效 的特征对网络应用或协议产生的流量进行准确的分类,而且分类过程耗费资源较多,应用 于在线环境有一定困难。
[0012] 针对未知应用流量和加密流量的分析和识别问题,提出了对流量载荷类型进行识 别与分类,方法主要有W下巧中:
[0013] (1)基于假设检验的分类方法
[0014] 该方法主要针对的是加密流量的识别,利用加密数据的随机性特点,对网络报文 逐一实施累积和检验,根据报文长度将结果进行加权综合,无需解密操作,也无需匹配特定 内容,实现了对加密流量的普适识别.可动态调整报文的检测数量,W达到时延和准确率的 统一。缺点是无法应用于其他载荷类型的识别,且容易误识别压缩类型的网络流量。
[0015] (2)基于流行为特征的分类方法
[0016] 由于特定加密协议在连接建立阶段交互的报文,内容相似,格式固定,往往具有特 定的流量特征,如报文长度、报文到达时间等。利用运些特定流量特征,借助于机器学习的 方法可实现对特定加密协议的识别。但是由于加密操作通常不会明显改变报文的长度和到 达时间,运使得大部分业务数据使用明文传输和使用加密传输时具有相同的流量特征。一 些算法声称能够识别加密流量,本质上是识别经加密传输的业务。例如P2P软件经明文传输 和经加密传输数据时,其流量特征相同。无论是否加密传输,运些算法都能够识别其为P2P 业务。但是,运些算法无法识别其业务流量是否加密。
[0017] (3)基于载荷赌值等统计特征的分类方法
[0018] 目前已有很多研究者将赌值特征应用于载荷类型的分类,并结合机器学习 SVM等 方法,将载荷类型分类为文本、加密、二进制等类型,但是W往的运类方法采用了较为单一 统计特征来刻画不同的载荷类型,并且忽略了子串频数分布的"长尾效应",导致整体分类 平均准确率仅在86%左右,个别类别的准确甚至低于80%,难W满足实际需求。

【发明内容】

[0019]针对上述已有方法存在的问题,本发明公开了一种基于n-gram多特征的流量载荷 类型(文本、音频、视频、图片、可执行文件、压缩、加密等)检测方法。
[0020] 首先给出本
【发明内容】
设及的部分定义:
[0021] (1)定义l:n-gram连续子串集合指的是W长度为η的滑动窗口分割原串得到的子 串集合,运里的原串指的是载荷内容;
[0022] 例如,原串为"alAcccde妃',η = 2时,滑动窗口如图1,得到2-gram子串集合:
[0023] S2= {ab,t)b,bc,cc,cc,cd,de,ef ,fg}
[0024] (2)定义2:高频连续子串集合指的是对n-gram连续子串集合去重,并统计各个子 串的频数,由频数超过阔值k的子串所构成的集合;
[002引例如,η = 2,k = 1时,高频连续子串集合,即超过阔值1的2-gram连续子串集合为:
[0026] S ' 2,1 = {ab, t)b, be, CC, cd, de, ef, f g}
[0027] (3)定义3:连续相同字符子串集合指的是由形如"bb","ccc"运样仅包含一种字符 的连续子串所构成的集合;
[0028] 本发明具体步骤包括:
[0029] (1)初始化参数:Payload结构体置0,Payload结构体中包括分别缓存对应网络流 已经接收的载荷数据payloadjxiff,pa^oatbuff中接收的载荷数据长度payloatlen和 已经处理的数据包数pkt_num;Payload_ft结构体置0,用于保存对每条网络流提取的载荷 特征;设置方法全局参数max_payload_len,表示接收每条流载荷数据的最大长度;设置 min_payload_len,表示用于提取载荷特征的最小数据长度;设置heatlen,表示数据包协 议头估计的长度;设置max_packet_num,表示用于采集载荷特征的最大包数;设置最大高频 子串频数阔值K,设置最大n-gram最大窗口长度阔值N; train_f lag初始置为true,表示先进 入分类模型的训练阶段,在模型训练完成后置为化Ise,进入在线分类阶段;
[0030] Payload 结构体为:
[0034] (2)设置train_flag为化ue,进入模型的训练阶段,输入已知载荷类型的样本网络 流量;
[0035] (3)读取数据包并进行流重组:读取网络流量中的数据包,按五元组(源IP、目的 IP、源端口、目的端口、TCP/UDP)标记该数据包所属的网络流,计算该网络流五元组的哈希 值,作为键Key,在哈希表中查找,如果不存在该项,则W该哈希值作为新的键Key,为该网络 流分配一新的化yload结构体作为键值Value,插入哈希表中;如果哈希表中存在该项,则进 行步骤4);
[0036] (4)根据数据包的五元组计算得到的哈希值作为键Key,在哈希表中获得对应的 Payload结构体,跳过数据包开始位置head_len长度后,将之后的载荷数据保存进化yload 中,并将该流已处理数据包数pkt_num加1,直至达到max_payload_len长度,转入步骤(5); 如果当前处理的数据包数超过max_packe t_num,且pa}d oad_l en不小于min_pa}d oad_l en则 转入步骤(5);如果当前处理的数据包是该流最后一个数据包,且payloa^len不小于min_ pa}doad_len,则转入步骤(5),如果该网络流处理完毕后的pa}doad_len小于min_payload_ len,则不对该流进行后续特征提取,并将该流移除哈希表;继续执行步骤(3);
[0037] (5)若train_flag为true,则执行步骤(6),否则执行步骤(9);
[0038] (6)对流的载荷数据进行n-gram子串分割,取[1,N]间各个不同值η作为滑动窗口 大小,分割原载荷数据,得到n-gram连续子串集合W及形如"bb","CCC"运样仅包含一种字 符的连续相同字符子串集合;
[0039] (7)统计n-gram连续子串集合中各项的频数,取[1,Κ]间各个不同值k作为频数阔 值,过滤n-gram连续子串集合,得到高频连续子串集合;
[0040] (8)对步骤(6)中得到连续相同字符子串集合和步骤(7)中的高频连续子串集合提 取如下统计特征,完成后转入步骤(10):
[0041] (8.1)提取高频连续子串集合的统计特征:频数超过阔值k的不同元素种数mn,k、元 素巧大频数mfn,k、均值meann,k、方差dn,k、f曰息贿hn,k;
[0042 ] (8.2)提取连续相同字符子串集合的统计特征:连续相同字符子串的数量sc_num、 连续相同字符子串的种数sc_diff_num、最大连续相同字符子串的长度sc_max_len、连续相 同字符子串的平均长度sc_mean_len;
[0043] (9)根据步骤(11)中分类特征集,对流载荷数据进行n-gram子串分割,并提取对应 特征,构造每条流的特征向量;转入步骤(10);
[0044] (10)对除信息赌W外的其他特征均进行取对数处理,如方差特征山,1对数处理后 为log(di,i),将步骤(8)各个特征表示成该流的特征向量;
[0045] (11)若化ain_flag为化ue,并且数据包尚未读完,则转入步骤(3),如果数据包已 读完则标识各流特征向量的载荷类型,并利用卡方检验和信息增益的方法对所有样本网络 流的特征向量计算得分并排序,按从前往后的顺序,依次选择排在两种方法前10的特征作 为分类特征集(共选择10个特征)作为对应网络流的分类特征集,转入步骤(12);若train, flag为false则转入步骤(13);
[0046] (12)利用C4.5决策树作为分类模型,用步骤(11)中的分类特征集构造训练样本, 得到C4.5分类模型;对C4.5分类模型中的分类规则,转换成IF-ELSE规则;转入步骤(14);
[0047] (13)根据步骤(12)中的IF-化SE规则,判断特征向量的对应的载荷类型,输出网络 流的载荷类型,转入步骤(3);
[004引(14)设置train_flag为化Ise,输入需要分类的网络流量,转入步骤(3)。
[0049] 与已公开的方法相比,本发明具有如下优点:
[0050] (1)只需要提取网络流前若干包的载荷特征信息,分类速度较快且只需要使用每 条流少量的载荷内容,占用内存较小;
[0051] (2)支持对多种载荷类型进行分类,包括文本、音频、视频、图片、可执行文件、压 缩、加密等;
[0052] (3)对载荷内容进行n-gram分割,并在利用阔值筛选后的高频子串集合上提取有 效特征,相比已有方法具有更高的分类准确率和召回率;
[0053] (4)具有灵活的参数设置,可W设置提取特征的载荷内容的长度、数据包头部长 度、载荷最小长度等,在性能和分类效果之间做出平衡;
[0054] (5)可W根据给定的载荷类型及已有数据集,调整所使用的特征集合,获得更好的 分类效果。
【附图说明】
[0055] 图1为长度为2的滑动窗口;
[0056] 图2为基于n-gram的载荷特征提取示意图;
[0057] 图3为基于n-gram多特征的流量分类流程图。
【具体实施方式】
[0058] 下面,结合具体的实施例对本发明进行详细说明。图2是对载荷数据进行n-gram特 征提取的示意图,对应步骤(6)至步骤(10),图3是基于n-gram多特征的载荷类型分类方法 流程图。
[0059] (1)初始化参数:Payload结构体置0,用于缓存已经接收的载荷数据payloacL buff,接收的数据长度payload_len和已经处理的数据包数pkt_num;Payload_ft结构体置 0,用于保存提取的载荷特征;设置max_payload_len,表示接收每条流载荷数据的最大长 度;设置min_pay load_l en,表示用于提取载荷特征的最小数据长度;设置head_len,表示数 据包协议头估计的长度;设置max_packet_num,表示用于采集载荷特征的最大包数;设置最 大高频子串频数阔值K,设置最大n-gram最大窗口长度阔值N;化ain_flag置为化ue,表示需 要进行分类模型的训练;
[0060] (2)输入已知载荷类型的样本网络流量,设置train_f lag为true;
[0061] (3)读取数据包并进行流重组,按五元组(源IP、目的IP、源端口、目的端口、TCP/ UDP)标记每条网络流,对每条新网络流W五元组的哈希值作为Key,化yload结构体作为 化lue,插入化shMap中;
[0062] (4)逐个处理每个数据包,计算数据包的五元组的哈希值,从化shMap中获得 Pay load结构体,g兆过head_len将剩余的载荷数据保存进化y load中,并将该流已处理数据 包数地t_num加1,直至达到max_pay 1 oad_len长度,转入步骤(5);如果当前处理的数据包数 超过max_packet_num,且payload_len不小于min_payload_len则转入步骤巧);如果当前处 理的数据包是该流最后一个数据包或达到流重组超时时间,且payloacLlen不小于min_ 口曰5^1〇日(1_16]1,则转入步骤(;5),如果9日5^1〇日(1_16]1小于111;[]1_9日71〇日(1_16]1,则不对该流进行后 续特征提取,并将该流移除化shMap;继续执行步骤(3);
[0063] (5)若train_flag为true,则执行步骤(6),否则执行步骤(9);
[0064] (6)对流的载荷数据B进行n-gram子串分割,取[1,N]间各个不同值η作为滑动窗口 大小,分割原载荷数据,得到n-gram连续子串集合Sn= {si,S2,S3,. . .,si,. . .,SL-n+i},L表示 载荷数据B的长度;同时得到形如"bb","ccc"运样仅包含一种字符的连续相同字符子串集 合;
[0065] 举例如下:
[0066] 原串为"alAcccdefg",n = 2时,滑动窗口如图1,得到2-gram子串集合:
[0067] S2= {ab,t)b,bc,cc,cc,cd,de,ef ,fg};
[0068] (7)统计n-gram连续子串集合Sn中各项的频数,取[1,Κ]间各个不同值k作为频数 阔值,过滤n-gram连续子串集合,得到高频连续子串集合S ' η, k;
[0069] S n,k 二{s l,k,S 2,k,S 3,k,...,S m,k},k二1,2,3,...,Κ
[0070] k表示给定的频数阔值,m表示频数不小于阔值k的不重复元素的个数;
[0071]
用|s'i,k|表示元素 S'i,k的频数,|S'n,k|表示集合S'n,k中所有元素的总频数,贝U
[0072] 例如,载荷内容为"a化cccdefg",取n = 2,可W划分成2-gram连续子串集合S2 = (ab,bb,bc,cc,cc,cd,de,ef,fg};
[0073] 当k = l时,得到S'2,l={ab,t)b,bc,cc,cd,de,ef,fg},|S'2,l|=9;
[0074] 当4 = 2时,得到5'2,2=山。},|5'2,2|=2;
[0075] (8)对步骤(6)中得到连续相同字符子串集合和步骤(7)中的高频连续子串集合提 取如下统计特征,完成后转入步骤(10):
[0076] (8.1)提取高频连续子串集合的统计特征:
[0077] 频数超过阔值k的不同元素种数:mn,k=m;
[0078] 元素最大频数:mfn,k=max( I s'i,k| ),i = l,2, . . .,m,反映了频数分布的峰值;
[0079] 均隹
反映了连续字符集合Sn的各元素频数大小的平均水平;
[0080] 方差
反映了数据偏离均值的分散程度;
[0081] 信息赌
I反映了系统的混乱程度,它与元素个数和每个元 素的频数大小都相关;
[0082 ] (8.2)提取连续相同字符子串集合的统计特征:
[0083] 连续相同字符子串的数量sc_mim:所有连续相同字符子串出现的总数;
[0084] 连续相同字符子串的种数sc_diff_num:所有出现过的不同种类(构成子串的字符 不同或者子串长度不同)的连续相同字符子串的数量;
[0085] 最大连续相同字符子串的长度sc_max_len:出现过的连续相同字符子串的最大长 度;
[0086] 连续相同字符子串的平均长度sc_mean_len:出现过的所有连续相同字符子串的 总长度除Wsc_mim得到的结果;
[0087] (9)根据步骤(11)中分类特征集,对流载荷数据进行n-gram子串分割,并提取对应 特征,转入步骤(10);
[0088] (10)对除信息赌W外的其他特征均进行取对数处理,如方差特征山,1对数处理后 为log (di, 1 ),将各个特征表示成每条流的特征向量:
[0089] (sc_num, . . . ,sc_mean_len,mi,i,...山,1, . . . ,mn'k, . . . ,hn'k)
[0090] 其中,n = l,2,3. . .,N,k = l,2,3,. . .,Κ;
[0091] (11)若化ain_flag为化ue,并且数据包尚未读完,则转入步骤(3),如果数据包已 读完则标识各流特征向量的载荷类型,并利用卡方检验和信息增益的方法综合选择排在前 10的特征作为分类特征集,转入步骤(12);若train_flag为化Ise则转入步骤(13);
[0092] (12)利用C4.5决策树作为分类模型,用步骤(11)中的分类特征集构造训练样本, 得到C4.5分类模型;对C4.5分类模型中的分类规则,转换成IF-ELSE规则;转入步骤(14); [0093 ] (13)根据步骤(12)中的IF-ELSE规则,判断特征向量的对应的载荷类型,输出网络 流的载荷类型,转入步骤(3);
[0094] (14)设置train_flag为化Ise,输入需要分类的网络流量,转入步骤(3)。
【主权项】
1. 一种基于n-gram多特征的流量载荷类型检测方法,其步骤为: 1) 读取所选已知载荷类型的各样本网络流的数据包,根据该数据包的按五元组标记其 所属的样本网络流;然后计算该样本网络流五元组的哈希值作为键Key,根据该键Key在哈 希表中查找,如果不存在该项,则将该哈希值作为新的键Key,为该样本网络流分配一 Payload结构体作为键值Value,插入哈希表中;如果存在该键Key,则在哈希表中获得对应 的Pay load结构体,将该数据包的载荷数据保存到该Pay load结构体中; 2) 对步骤1)得到的每一Pay load结构体:对Pay load结构体中的载荷数据进行n-gram子 串分割,得到该Pay load结构体对应样本网络流的连续相同字符子串集合和n-gram连续子 串集合,然后统计该n-gram连续子串集合中各项的频数,得到一高频连续子串集合;然后从 该连续相同字符子串集合、高频连续子串集合中提取该样本网络流的统计特征,生成该样 本网络流的特征向量; 3) 根据步骤2)得到的特征向量,训练得到一分类模型; 4) 对于待分类的网络流,生成该网络流的特征向量,然后利用该分类模型判断该网络 流的类型。2. 如权利要求1所述的方法,其特征在于,该Pay load结构体中包括用于存储已接收载 荷数据的字段payload_buff、已接收的载荷数据长度的字段payload_len和数据包数pkt_ num〇3. 如权利要求1或2所述的方法,其特征在于,步骤1)中,将该数据包的载荷数据保存到 该Pay load结构体时,将该Pay load结构体的已处理数据包数pkt_num加1。4. 如权利要求3所述的方法,其特征在于,如果该Payload结构体的载荷数据长度 pay 1 oad_len达到设定的最大长度max_pay 1 oad_len,转入步骤2)。5. 如权利要求3所述的方法,其特征在于,如果该Pay load结构体已接收的数据包数超 过设定的最大包数max_packet_num,且payload_len不小于设定的最小数据长度min_ payload_len则转入步骤2)。6. 如权利要求3所述的方法,其特征在于,如果该Pay load结构体当前处理的数据包是 对应样本网络流最后一个数据包或达到设定的流重组超时时间,且payl〇ad_len不小于设 定的最小数据长度min_payload_len,则转入步骤2)。7. 如权利要求3所述的方法,其特征在于,如果该Pay load结构体对应的样本网络流处 理完毕后的payload_len小于设定的最小数据长度min_payload_len,则将该样本网络流移 除哈希表。8. 如权利要求1所述的方法,其特征在于,对Pay load结构体中的载荷数据进行n-gram 子串分割的方法为:取[1,N]间各个不同值η作为滑动窗口大小,分割原载荷数据,得到n-gram连续子串集合以及连续相同字符子串集合。9. 如权利要求1所述的方法,其特征在于,从高频连续子串集合中提取的统计特征包 括:频数超过阈值k的不同元素种数mn, k、元素最大频数mf n, k、均值meann, k、方差dn, k、信息熵 hn,k;从连续相同字符子串集合中提取的统计特征包括:连续相同字符子串的数量sc_num、 连续相同字符子串的种数sc_diff_num、最大连续相同字符子串的长度 SC_maX_len、连续相 同字符子串的平均长度sc_mean_len。10. 如权利要求1所述的方法,其特征在于,训练得到该分类模型的方法为:首先利用卡 方检验和信息增益的方法对各样本网络流的特征向量计算得分并排序,为各样本网络流选 取若干特征作为对应样本网络流的分类特征集;然后利用决策树作为分类模型,用该分类 特征集构造训练样本,得到分类模型。
【文档编号】H04L12/26GK105871619SQ201610240406
【公开日】2016年8月17日
【申请日】2016年4月18日
【发明人】庹宇鹏, 张永铮, 常鹏
【申请人】中国科学院信息工程研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1