一种针对混淆kcp协议加密流量的检测方法
技术领域
1.本发明涉及网络安全技术领域的信息处理技术领域,具体是一种基于kcp协议加密代理通道检测方法。
背景技术:
2.kcp是一个基于udp传输协议的快速可靠协议,能以比tcp浪费10%-20%的带宽的代价,换取平均延迟降低30%-40%,且最大延迟降低三部的传输效果。
3.kcp协议主要提供加速、降延时、可靠传输、拥塞控制的功能,所以在网络传输中受到广泛应用。
4.混淆kcp协议是基于kcp协议而实现的流式传输协议,由kcp协议修改而来,可以按顺序传输任意的数据流,其可用作为http的承载协议,为其提供安全服务。现有的数据包流量分析等技术均无法实现对混淆kcp协议流量进行识别,已经无法满足网络监管者的监管需求,因此急需研究新的甄别方法。
技术实现要素:
5.本发明的目的在于提供一种针对混淆kcp协议加密代理通道检测方法,用以实现kcp混淆加密代理通道的有效检测。
6.实现本发明目的的技术解决方案为:一种针对混淆kcp协议加密流量的检测方法,包括以下步骤:
7.步骤1:捕获udp混合流量,基于libpcap网络库对udp混合流量进行分流处理,并逐条发送udp数据流量信息至缓存队列;
8.步骤2:逐条读取缓存队列udp流量信息,基于dpi技术对负载数据包信息做伪装与混淆协议检测,得到疑似混淆kcp流量信息;
9.步骤3:提取可疑上行流量负载长度信息,检验疑似混淆kcp流量的通讯行为;
10.步骤4:提取可疑上行流量负载数据信息,检验疑似混淆kcp流量心跳行为,得到最终判定为混淆kcp协议流量。
11.步骤5:收集kcp协议流量四元组、协议和时间信息,收集为一条命中记录。
12.本发明与现有技术相比,其显著优点:(1)能够有效对混淆kcp协议流量进行识别与检测(2)基于dpi技术的流量分析在现实网络环境应用性较强,很好的抵御现实网络环境的不稳定因素(3)本发明已经部分部署在边境监控审查系统平台中,具有对大量数据的分析能力,且检全率和准确率均在90%以上。
附图说明
13.图1为本发明针对kcp混淆协议加密流量的检测方法的流程示意图。
14.图2为实施例中特征计算基于数据包个数与分类结果准确率关系图。
具体实施方式
15.本发明一种针对混淆kcp协议加密代理通道检测方法,具体包括以下步骤:
16.步骤1:基于libpcap网络库,根据源地址、目的地址、源端口、目的端口、协议五元组以及时间信息对udp混合流量进行分流处理,得到分流后udp数据流信息,并逐流发送至缓存队列。
17.步骤2:逐条读取缓存队列udp流量信息,提取数据负载包负载信息,识别伪装应用类型;提取数据包负载信息,过滤应用协议字段,提取伪装层之后第1-22字节负载信息,检测kcp协议规范性,若不符合kcp协议格式,则进一步识别负载内容是否为混淆kcp协议填充规则,从而筛选出疑似混淆kcp协议;提取伪装层和混淆层之后的数据负载,计算负载信息熵值,检验数据随机性,筛选出数据层经过随机加密的流量信息。
18.步骤3:提取udp上行流量前若干个负载包的负载长度信息,并对其进行预处理,过滤其中的重传包,增添其中的缺漏包,得到最终的上行负载长度序列,验证其kcp混淆协议请求周期性规律。检测方法需考虑存在一定容错率,错误情况可能有:(1)同组负载长度序列可能出现一次倒序;(2)其中一组丢失其中一个长度值;(3)其中一组增加一个新的长度值。
19.步骤4:过滤kcp流量上行负载包周期请求部分,根据kcp混淆协议信息第5、9个字节填充是否一致,获得心跳包负载信息,检测心跳包负载信息,过滤掉心跳包有数据信息的kcp流量,比较相邻心跳包负载信息内容,筛选出存在相邻心跳包负载内容一致的kcp流量,最终得到可疑混淆kcp协议加密代理流量。
20.步骤5:收集可疑混淆kcp协议加密代理流量信息,保存其四元组加时间信息为一条命中记录存入数据库。
21.作为一种优选实施方式,步骤1中,基于五元组以及时间戳对udp混合流量分流,并按照方向、上下行负载包数量、负载量等信息进行分类。
22.作为一种优选实施方式,步骤2中,针对若干数据包伪装应用类型数据进行应用协议关联,验证伪装应用协议合法性;提取协议层负载信息第1-22字节后,检测kcp协议规范性,进一步判断是否为混淆kcp协议填充信息,应识别第7、11、15、19字节和第8、12、16、20字节和第9、13、17、21字节和第10、14、18、22字节是否一致。
23.作为一种优选实施方式,步骤3中,提取上行负载包长度大于22字节,数量不少于20个,作为长度特征向量,验证不通过则适当延长检测负载包数量再次验证,检测到负载序列循环,则周期值“+1”且单期误差值清零,检测到漏包、多包现象,则单期误差值“+1”。
24.作为一种优选实施方式,步骤4中,提取心跳包数量不低于5个,验证完整心跳包负载信心,检测心跳特征的同时确保无数据负载,在将相邻心跳包负载信息关联。
25.下面结合说明书附图对本发明作进一步说明。
26.图1为本发明针对混淆kcp协议加密流量的检测方法的流程示意图。如图1所示,该检测方法包括以下步骤:
27.步骤1:使用wireshark流量捕获器捕获kcp混淆协议流量和非kcp混淆协议流量。
28.步骤2:基于libpcap网络库,根据源地址、目的地址、源端口、目的端口、协议五元组以及时间信息组成元信息{源ip+目的ip+源端口+目的端口+协议+建立时间+结束时间},对udp混合流量进行分流处理,得到分流后udp数据流信息,并逐流发送至缓存队列,根据方
向、上下行总传输数据量、以及传输数据包数量信息对数据流分类。
29.步骤3:基于pthread构建生产者-消费者模型,将udp分流信息数据缓存至队列,通过消费线程逐一读取udp数据流信息。udp数据流信息通过链表结构存储,链表头节点存储数据流五元组等流信息。
30.步骤4:提取数据负载包负载信息中的伪装应用字段,识别伪装应用类型,提取kcp流量第1-4个字节组成负载序列(fi,pi)=[(fi,p1),(fi,p2),(fi,p3),(fi,p4)],识别应用类型是否为utp、srtp、wireguard应用类型;提取kcp流量第1-13个字节组成负载序列(fi,pi)=[(fi,p1),(fi,p2),
…
,(fi,p
13
)],识别应用类型是否为weixin-video、dtls应用类型,针对若干数据包伪装应用类型数据进行应用协议关联,验证伪装应用协议合法性。
[0031]
步骤5:提取数据负载信息中的kcp协议字段,检测kcp协议字段的合法性,提取伪装层之后第1-22字节负载信息,分别以第7、11、15、19个字节、第8、12、16、20个字节、第9、13、17、21个字节和第10、14、18、22个字节为四组信息(fi,li)=[(fi,l1),(fi,l2),(fi,l3),(fi,l4)],分别检验四组数据的重叠度,针对前三组数据序列验证其字段一致性,第四组数据验证其字段相似性。
[0032]
步骤6:数据信息随机性检测,提取伪装层和混淆层之后的数据负载,计算负载信息熵,检验数据随机性。
[0033]
步骤7:提取kcp上行流量前若干个负载包的负载长度信息,并对其进行预处理,筛选其中的重传包,增添其中的缺漏包,得到最终的上行负载长度序列(fi,li)=[(fi,l1),(fi,l2),(fi,l3),
…
],检验是否有周期为2-7,周期次数为3-5次的负载长度规律变化。
[0034]
步骤8:过滤kcp流量上行负载包长度循环部分,根据kcp混淆协议信息第5、9个字节填充是否一致,获得心跳包负载信息,检测心跳包负载信息,过滤掉心跳包有数据信息的kcp流量,比较相邻心跳包负载信息内容,筛选出存在相邻心跳包负载内容一致的kcp流量,提取心跳包数量不低于5个,验证完整心跳包负载信心,检测心跳特征的同时确保无数据负载,在将相邻心跳包负载信息关联,最终得到可疑混淆kcp协议加密代理流量。
[0035]
为了验证本发明方案的有效性,进行如下仿真实验。
[0036]
本实施例中针对混淆kcp协议加密流量检测方法,首先捕获混淆kcp协议流量和非混淆kcp协议流量,在针对其负载信息、长度、心跳行为进行检测,具体流程如下:
[0037]
步骤1:捕获kcp混淆协议流量和非kcp混淆协议流量,选取正常utp、srtp、weixin-video、dtls、wireguard以及其他正常应用协议流量作为反向样本。
[0038]
步骤2:基于libpcap网络库,根据源地址、目的地址、源端口、目的端口、协议五元组以及时间信息对udp混合流量进行分流处理,得到分流后udp数据流信息,并逐流发送至缓存队列,根据方向、上下行流量数据信息对数据流分类。
[0039]
步骤3:读取生产者-消费者队列中的数据流信息,进行流量识别。
[0040]
步骤4:识别伪装应用类型,提取kcp流量第1-4个字节组成负载序列(fi,pi)=[(fi,p1),(fi,p2),(fi,p3),(fi,p4)],识别应用类型是否为utp、srtp、wireguard应用类型;提取kcp流量第1-13个字节组成负载序列(fi,pi)=[(fi,p1),(fi,p2),
…
,(fi,p
13
)],识别应用类型是否为weixin-video、dtls应用类型。
[0041]
步骤5:识别kcp混淆填充字段,提取伪装层之后第1-22字节负载信息,分别以第7、11、15、19个字节、第8、12、16、20个字节、第9、13、17、21个字节和第10、14、18、22个字节为四
组信息(fi,li)=[(fi,l1),(fi,l2),(fi,l3),(fi,l4)],分别检验四组数据的重叠度。
[0042]
步骤6:数据信息随机性检测,提取伪装层和混淆层之后的数据负载,计算负载熵值,检验数据随机性。
[0043]
步骤7:提取kcp上行流量前若干个负载包的负载长度信息,并对其进行预处理,筛选其中的重传包,增添其中的缺漏包,得到最终的上行负载长度序列(fi,li)=[(fi,l1),(fi,l2),(fi,l3),
…
],若负载循环周期为1,循环n(3≤n≤5)次,则提取上行第1、2、3、
……
、n个负载包长度为长度序列,判断其长度值是否一致;若负载循环周期为2,循环n(3≤n≤5)次,则提取上行第1、3、5、
……
、2(k-1)+1(k=1、2、
……
、n)个负载包长度为长度序列,判断其长度值是否一致;若负载循环周期为3,循环n(3≤n≤5)次,则提取上行第1、3、5、
……
、3(k-1)+1(k=1、2、
……
、n)个负载包长度为长度序列,判断其长度值是否一致;若负载循环周期为4,循环n(3≤n≤5)次,则提取上行第1、3、5、
……
、4(k-1)+1(k=1、2、
……
、n)个负载包长度为长度序列,判断其长度值是否一致;若负载循环周期为5,循环n(3≤n≤5)次,则提取上行第1、3、5、
……
、5(k-1)+1(k=1、2、
……
、n)个负载包长度为长度序列,判断其长度值是否一致;若负载循环周期为6,循环n(3≤n≤5)次,则提取上行第1、3、5、
……
、6(k-1)+1(k=1、2、
……
、n)个负载包长度为长度序列,判断其长度值是否一致;若负载循环周期为7,循环n(3≤n≤5)次,则提取上行第1、3、5、
……
、7(k-1)+1(k=1、2、
……
、n)个负载包长度为长度序列,判断其长度值是否一致。
[0044]
步骤8:过滤kcp流量上行负载包长度循环部分,根据kcp混淆协议信息第5、9个字节填充是否一致,获得心跳包负载信息,检测心跳包负载信息,过滤掉心跳包有数据信息的kcp流量,比较相邻心跳包负载信息内容,筛选出存在相邻心跳包负载内容一致的kcp流量,最终得到可疑混淆kcp协议加密代理流量。
[0045]
本实施例中设定提取上行负载包长度序列包个数为n≥20,其检验效果如图2所示,纵轴上的数值代表分类准确率,在n从15到30的过程中,其负载长度周期规律性检验得到准确率的结果,可见本发明在检测混淆kcp协议加密流量具有良好的效果。
技术特征:
1.一种针对混淆kcp协议加密流量的检测方法,其特征在于,包括以下步骤:步骤1:捕获udp混合流量,基于libpcap网络库对udp混合流量进行分流处理,并逐条发送udp数据流量信息至缓存队列;步骤2:逐条读取缓存队列udp流量信息,基于dpi技术对负载数据包信息做伪装与混淆协议检测,得到疑似混淆kcp流量信息;步骤3:提取可疑上行流量负载长度信息,检验疑似混淆kcp流量的通讯行为;步骤4:提取可疑上行流量负载数据信息,检验疑似混淆kcp流量心跳行为,得到最终判定为混淆kcp协议流量。步骤5:收集kcp协议流量四元组、协议和时间信息,收集为一条命中记录。2.根据权利要求1所述的针对混淆kcp协议加密流量的检测方法,其特征在于:步骤1中,基于libpcap网络库,根据源地址、目的地址、源端口、目的端口、协议五元组以及时间信息对混合udp流量进行分流处理,得到分流后udp数据流信息,并逐流发送至缓存队列。3.根据权利要求1所述的针对混淆kcp协议加密流量的检测方法,其特征在于,步骤2具体步骤包括:步骤2-1:提取数据包负载信息中应用协议字段,识别udp流量伪装应用类型;步骤2-2:提取数据包负载信息中kcp协议字段,检测kcp协议字段规范性,判断是否是混淆kcp协议填充信息;步骤2-3:提取数据负载信息中数据内容,对负载值进行随机性检测,判断数据包负载是否被加密随机化。4.根据权利要求3所述的针对混淆kcp协议加密流量的检测方法,其特征在于,步骤2-1所述具体伪装的应用类型包括:基于udp传输的应用类型bt下载utp协议、视频通话srtp协议、微信视频wechat-video协议、dtls 1.2数据包dtls协议和wireguard vpn数据包wireguard协议。5.根据权利要求3或4所述的针对混淆kcp协议加密流量的检测方法,识别伪装应用类型,其特征在于,所述伪装应用类型的识别方法具体包括:若伪装成utp应用类型,伪装字段为应用层负载第1-4个字节,上行应用层负载第1-4字节序列用16进制表示为[x1,y1,0x01,0x00],其中x1、y1为同一条流上行的固定字段;下行应用层负载第1-4字节序列用16进制表示为[x2,y2,0x01,0x00],其中x2、y2为同一条流上行的固定字段;若伪装成srtp应用类型,伪装字段为应用层负载第1-4个字节,表示数据包的顺序,按上行和下行区分,逐包递增1;若伪装成wechat-video即微信视频应用类型,伪装字段为应用层负载第1-13个字节,上行应用层负载第1-13字节序列用16进制表示为[0xa1,0x08,0x00,0x00,x1,y1,0x00,0x10,0x11,0x18,0x30,0x22,0x30],其中x1、y1两字节组成的字段值为自增序列表示上行数据包顺序,每次增加值为1;下行应用层负载第1-13字节序列用16进制表示为[0xa1,0x08,0x00,0x00,x2,y2,0x00,0x10,0x11,0x18,0x30,0x22,0x30],其中x2、y2两字节组成的字段值为自增序列表示下行数据包顺序,每次增加值为1;若伪装成dtls即dtls 1.2数据包应用类型,伪装字段为应用层负载第1-13个字节,上行应用层负载第1-13字节序列用16进制表示为[0x17,0xfe,0xfd,m1,n1,0x00,0x00,0x00,
0x00,x1,y1,0x00,z1],其中m1、n1为同一条流上行的固定字段,x1、y1两字节组成的字段值表示上行数据包顺序,每次增值为1,z1字节未知;下行应用层负载第1-13字节序列用16进制表示为[0x17,0xfe,0xfd,m2,n2,0x00,0x00,0x00,0x00,x2,y2,0x00,z2],其中m2、n2为同一条流下行的固定字段,x2、y2两字节组成的字段值表示下行数据包顺序,每次增值为1,z2字节未知;若伪装成wireguard即wireguard数据包,伪装字段为应用层负载第1-4个字节,用16进制表示为[0x04,0x00,0x00,0x00]。6.根据权利要求3所述的针对混淆kcp协议加密流量的检测方法,其特征在于,步骤2-2所述检测kcp协议规范性,具体包括:过滤伪装应用字段信息,提取kcp协议前22字节信息,检测第5和第9个字节内容差值是否小于或等于1,并检测第7-22字节内容是否以4为周期高度重合,若是则为混淆kcp协议流量,否则为正常kcp协议流量;步骤2-2-1:提取第7、11、15、19字节内容,检测是否一致,若一致,继续检测流程,否则,判断该条流不是混淆kcp协议流量;步骤2-2-2:提取第8、12、16、20字节内容,检测是否一致,若一致,继续检测流程,否则,判断该条流不是混淆kcp协议流量;步骤2-2-3:提取第9、13、17、21字节内容,检测是否一致,若一致,继续检测流程,否则,判断该条流不是混淆kcp协议流量;步骤2-2-4:提取第10、14、18、22字节内容,检测是否差值在5以内,若是,继续检测流程,否则,判断该条流不是混淆kcp协议流量。7.根据权利要求3所述的针对混淆kcp协议加密流量的检测方法,其特征在于,步骤2-3所述检测数据负载值的随机性具体包括:步骤2-3-1:过滤传输层负载中kcp协议部分和伪装应用类型信息部分,提取数据部分负载信息;步骤2-3-2:计算负载信息熵,检测其数据的随机性,判断是否为加密数据;假设负载信息一共有m个字符,字符x出现的次数为n(x),每个字符出现的概率为n(x)/m,负载信息熵计算公式如下:8.根据权利要求1所述的针对混淆kcp协议加密流量的检测方法,其特征在于,步骤3包括:检测上行数据包的负载长度序列是否存在周期性变化,若周期为4,组数为3,则第1、5、9或第2、6、10或第3、7、11或第4、8、12负载长度一致。9.根据权利要求1所述的针对混淆kcp协议加密流量的检测方法,其特征在于,步骤4所述检测心跳行为包括:步骤4-1:在流量逐包分析的过程中,对流量负载信息做逐包识别,筛选出心跳包,并记录前5个心跳包负载信息;步骤4-2:针对记录的前5个心跳包负载信息,检测相邻心跳包负载信息的一致性。10.根据权利要求9所述的针对混淆kcp协议加密流量的检测方法,其特征在于,步骤4-1所述识别心跳包具体包括:步骤4-1-1:过滤数据包负载信息伪装应用字段信息后,检测kcp混淆协议部分第5和第
9字节差值是否为1,若为1,则标记为可疑心跳包,否则舍弃;步骤4-1-2:检测可疑心跳包负载信息,判断除kcp混淆字段外是否含有加密数据部分,若没有,则标记为心跳包,记录心跳包信息,否则舍弃。
技术总结
本发明公开了一种针对混淆KCP协议加密流量的检测方法。该方法包括:基于五元组和时间信息对UDP混合流量做分流处理、基于DPI深度报文解析技术针对UDP流量提取数据包负载信息识别伪装应用类型和KCP混淆协议信息字段、提取上行流量前20个负载包序列检验KCP混淆协议通讯机制、提取流量数据传输中的心跳包利用负载信息验证心跳行为特征。本发明采用UDP数据流的多特征检测,能够有效实现混淆KCP协议加密代理通道的检测。代理通道的检测。代理通道的检测。
技术研发人员:钱友文 刘光杰 刘伟伟
受保护的技术使用者:南京理工大学
技术研发日:2020.11.04
技术公布日:2022/5/25
转载请注明原文地址:https://tc.8miu.com/read-25960.html