本发明属于网络信息安全防护等领域,具体涉及一种加密恶意流量检测确认方法。
背景技术:
在互联网、物联网以及工业互联网的发展和演化中,网络流量加密日益被广泛接受和采用,成为一项重要的网络通信安全保护机制。如谷歌公司利用chrome浏览器进行统计,截止2020年1月,互联网web应用中加密网络流量所占的比例已经超过90%。在工业互联网中,网络流量数据加密更被设计为一项基本原则,并体现于几乎所有的工业互联网实际应用中。但网络流量加密技术是一把双刃剑,在保护正常用户网络通信安全的同时,也可以被攻击者所利用以隐藏攻击特征,从而躲避检测。例如,著名的勒索软件wannacry使用加密匿名通信连接至c&c(commandandcontrol)服务器,进而隐藏通信内容和服务器地址。在物联网恶意软件linux.dofloo中,利用aes算法加密其网络通信内容,导致网络监控系统无法检测出恶意网络行为。加密恶意流量(包含恶意内容或执行恶意行为的加密流量)给当前的网络管理和网络安全防护带来巨大挑战。
为应对此挑战,现有研究提出多种基于机器学习的加密恶意流量检测方法。但若直接部署应用于实际的网络中,现有方法需克服一个关键难题,即:如何消除或大幅度减少误报。以美国coloradoboulder大学校园网络为例,该网络中共包含33000余名学生和7000余名教职工,每小时产生大约1千万条tls加密流量。若检测系统的误报率为0.01%,则每小时产生1000条误报,一天则多达24000条。若这些误报均由人工分析排除,将是非常艰难的工作。因此在实际网络中直接部署现有方法,一种典型结果将是检测系统每天产生大量告警信息,而这些告警无法及时确认和应对,从而导致系统形同虚设,无法真正发挥作用。
技术实现要素:
本发明的目的是提供一种加密恶意流量检测确认方法,在保护数据隐私的前提下,通过对机器学习等算法产生的检测结果进行自动确认,大幅度减少误报。
为达到以上目的,本发明提供一种加密恶意流量检测确认方法,包括以下步骤:
步骤a,用户终端从系统中提取加密网络流量对应的密钥以及计算加密网络流量的hash值;
步骤b,检测端在网络中监视用户终端和应用服务器间的加密通信,并使用机器学习等算法判断加密网络流量是否为恶意;
步骤c,检测端若判断当前加密网络流量为恶意流量,则通知用户终端对应的流量可能为恶意加密流量,并发送可疑流量报文至用户终端以请求执行特征安全匹配;
步骤d,用户终端和检测端执行特征安全匹配;
步骤e,用户终端将匹配结果发送至检测端,检测端根据匹配结果确认当前加密网络流量是否为恶意流量。
作为本发明的进一步技术方案,所述步骤a的具体步骤如下:
步骤a-1,用户终端识别本机发出的加密网络流量;
步骤a-2,用户终端从内存或文件中提取加密网络流量对应的会话密钥k;
步骤a-3,用户终端计算加密网络流量对应的hash值h;
步骤a-4,用户终端将<h,k>值保存t时间,时间超时后删除<h,k>值。
作为本发明的进一步技术方案,所述步骤c的具体内容如下:
步骤c-1,检测端通知用户终端对应的流量可能为恶意加密流量;
步骤c-2,检测端将可疑流量的全部内容发送至用户终端;
步骤c-3,检测端请求执行特征安全匹配。
作为本发明的进一步技术方案,所述步骤d中具体内容如下:
步骤d-1,用户终端判断接收到的pcap文件中的网络流量是否由自己发出;
步骤d-2,若不为自己发出,发送错误告警信息,并断开网络连接;
步骤d-3,若为自己发出,用户终端发送同意消息,同意执行特征安全匹配;
步骤d-4,用户终端进行流量解密和流量内容分割;
步骤d-5,检测端执行入侵检测规则内容分割;
步骤d-6,用户终端和检测端执行隐私保护集合交集协议,执行特征安全匹配。
作为本发明的进一步技术方案,所述步骤d-4的具体内容如下,
步骤d-4-1,设定大小为c的滑动窗口;
步骤d-4-2,从流内容的起始处读取窗口内所有内容,加入集合s_u;
步骤d-4-3,将窗口后移一个字节,读取窗口内所有内容,加入集合s_u;
步骤d-4-4,重复步骤(4-4-3)直至窗口内容长度小于c。
作为本发明的进一步技术方案,所述步骤d-5的具体内容如下,
步骤d-5-1,将特征字段内容转换为十六进制编码;
步骤d-5-2,计算特征字段内容长度h,若h小于设定的阈值c,忽略该特征字段内容;若h大于等于c,则将其分割
步骤d-5-3,将分割后的内容加入集合s_d中。
作为本发明的进一步技术方案,所述步骤d-6的具体内容如下,
步骤d-6-1,用户终端对集合s_u的每一元素,利用sha256算法计算其hash值,形成新的集合h_su;
步骤d-6-2,检测端对集合s_d的每一元素,利用sha256算法计算其hash值,形成新的集合h_sd;
步骤d-6-3,检测端将集合h_sd发送至用户终端;
步骤d-6-4,用户终端对集合h_su和h_sd取交集,并对交集中的每一元素,从集合s_u中取出对应的原始内容,将原始内容放入集合i_ud中;
步骤d-6-5,对于集合i_ud中的每一元素x,用户终端确定其在流内容中的起始位置l(x),从而获得匹配结果{<x,l(x)>},加入集合r_ud中。
作为本发明的进一步技术方案,所述步骤e的具体内容如下,
步骤e-1,用户终端将集合r_ud发送至检测端;
步骤e-2,检测端对集合r_ud,依据l(x)值从小到大的顺序对所有元素进行排序;
步骤e-3,检测端合并集合r_ud中的元素,即如果l(xi) c=l(xi 1),串联xi和xi 1的内容,作为新的元素xj,其中,xj=xi||xi 1,l(xj)=l(xi);
步骤e-4,检测端将<xj,l(xj)>加入集合r_ud中,同时删除<xi,l(xi)>和<xi 1,l(xi 1)>的值;
步骤e-5,重复步骤(e-3)和(e-4),直至r_ud中所有元素均无法合并;
步骤e-6,将r_ud中的x值作为特征匹配字段内容,将l(x)作为距离字段内容,在入侵检测库中同所有的规则的内容字段和位置信息进行比对,若比对成功,则表明加密网络流量为恶意流量,否则为误报。
本发明与现有技术相比,具有以下技术效果:加密恶意流量的检测由检测端(如网络中部署的入侵检测系统等)和用户终端(如电脑、手机、物联网设备等)合作完成;检测端可以根据实际需求采用任意的机器学习算法,同时,检测端配备购买或定制的入侵检测规则库(如etproruleset等),用于对机器学习算法判别为恶意的加密流量进行确认。用户终端和检测端通过运行安全两方计算协议来完成入侵检测规则和网络流量内容的安全匹配。若流量内容与检测规则中的特征不匹配,则为误报;若匹配;对应的规则可作为检测判断依据。特征安全匹配过程并不泄露用户网络流量和入侵检测规则库的具体内容,从而实现数据隐私保护。
附图说明
图1为本发明的流程图。
图2为本发明解密后的流量内容图。
图3为本发明入侵检测规则内容图。
具体实施方式
下面结合附图1-3对本发明的技术方案做进一步的详细说明:
本发明提出了一种加密恶意流量检测确认方法,包括以下步骤:
步骤a,用户终端从系统中提取加密网络流量对应的密钥以及计算加密网络流量的hash值,具体步骤如下:
步骤a-1,用户终端识别本机发出的加密网络流量;
步骤a-2,用户终端从内存或文件中提取加密网络流量对应的会话密钥k;
步骤a-3,用户终端计算加密网络流量对应的hash值h;
步骤a-4,用户终端将<h,k>值保存t时间,时间超时后删除<h,k>值。
步骤b,检测端在网络中监视用户终端和应用服务器间的加密通信,并使用机器学习等算法判断加密网络流量是否为恶意;
步骤c,检测端若判断当前加密网络流量为恶意流量,则通知用户终端对应的流量可能为恶意加密流量,并发送可疑流量报文至用户终端以请求执行特征安全匹配,具体内容如下:
步骤c-1,检测端通知用户终端对应的流量可能为恶意加密流量;
步骤c-2,检测端将可疑流量的全部内容发送至用户终端;
步骤c-3,检测端请求执行特征安全匹配。
步骤d,用户终端和检测端执行特征安全匹配;具体内容如下:
步骤d-1,用户终端判断接收到的pcap文件中的网络流量是否由自己发出;
步骤d-2,若不为自己发出,发送错误告警信息,并断开网络连接;
步骤d-3,若为自己发出,用户终端发送同意消息,同意执行特征安全匹配;
步骤d-4,用户终端进行流量解密和流量内容分割;具体内容如下,
步骤d-4-1,设定大小为c的滑动窗口;
步骤d-4-2,从流内容的起始处读取窗口内所有内容,加入集合s_u;
步骤d-4-3,将窗口后移一个字节,读取窗口内所有内容,加入集合s_u;
步骤d-4-4,重复步骤(4-4-3)直至窗口内容长度小于c。
步骤d-5,检测端执行入侵检测规则内容分割;具体内容如下,
步骤d-5-1,将特征字段内容转换为十六进制编码;
步骤d-5-2,计算特征字段内容长度h,若h小于设定的阈值c,忽略该特征字段内容;若h大于等于c,则将其分割
步骤d-5-3,将分割后的内容加入集合s_d中。
步骤d-6,用户终端和检测端执行隐私保护集合交集协议,执行特征安全匹配,具体内容如下,
步骤d-6-1,用户终端对集合s_u的每一元素,利用sha256算法计算其hash值,形成新的集合h_su;
步骤d-6-2,检测端对集合s_d的每一元素,利用sha256算法计算其hash值,形成新的集合h_sd;
步骤d-6-3,检测端将集合h_sd发送至用户终端;
步骤d-6-4,用户终端对集合h_su和h_sd取交集,并对交集中的每一元素,从集合s_u中取出对应的原始内容,将原始内容放入集合i_ud中;
步骤d-6-5,对于集合i_ud中的每一元素x,用户终端确定其在流内容中的起始位置l(x),从而获得匹配结果{<x,l(x)>},加入集合r_ud中。
步骤e,用户终端将匹配结果发送至检测端,检测端根据匹配结果确认当前加密网络流量是否为恶意流量,具体内容如下,
步骤e-1,用户终端将集合r_ud发送至检测端;
步骤e-2,检测端对集合r_ud,依据l(x)值从小到大的顺序对所有元素进行排序;
步骤e-3,检测端合并集合r_ud中的元素,即如果l(xi) c=l(xi 1),串联xi和xi 1的内容,作为新的元素xj,其中,xj=xi||xi 1,l(xj)=l(xi);
步骤e-4,检测端将<xj,l(xj)>加入集合r_ud中,同时删除<xi,l(xi)>和<xi 1,l(xi 1)>的值;
步骤e-5,重复步骤(e-3)和(e-4),直至r_ud中所有元素均无法合并;
步骤e-6,将r_ud中的x值作为特征匹配字段内容,将l(x)作为距离字段内容,在入侵检测库中同所有的规则的内容字段和位置信息进行比对,若比对成功,则表明加密网络流量为恶意流量,否则为误报。
本发明中,在步骤a-1中,用户终端可以利用tls、ssh、ipsec等网络安全协议的头部字段特征或机器学习方法实现加密网络流量的识别;在步骤a-2中,用户终端可以从sslkeylogfile文件中提取加密网络流量的会话密钥;可以从内存中执行关键词匹配提取会话密钥,如匹配\x35\x6c\x73\x73(?=(\x02\x00|[\x00\x03]\x03)\x00\x00(.{4}.{8}.{4})(.{48}))识别windows的schannel密钥;可以设置本地中间人代理,如mitmproxy,获得会话密钥;在步骤a-3中,用户终端针对加密网络流量的前n个数据报文,利用sha256等哈希算法计算该报文内容的hash值h,并将该值作为加密网络流量的hash值;在步骤a-4中,可以根据实际网络环境和应用配置t的值,如可将t设置为10分钟以支持大多数网络应用。
在步骤b中,检测端所使用的机器学习算法可以为任意机器学习算法,如支持向量机、随机森林、深度学习等。
在步骤c-1中,检测端发送特定消息至用户终端。发送的特定消息内容可以为“notification:amaliciousflow”;在步骤c-2中,检测端可以将可疑流量报文保存为pcap文件,并发送特定消息和pcap文件至用户终端。发送的特定消息内容可以为“notification:apcapfile”;在步骤c-3中,检测端发送特定消息至用户终端请求执行特征安全匹配。发送的特定消息内容可以为“notification:securematchingrequest”。
在步骤d-4-2中,从流内容的起始处读取窗口内所有内容,加入集合s_u。即将解密后的流内容视为十六进制串,第一个字节即为流内容的起始处。
检测时,检测端利用随机森林算法判断加密流量f为恶意流量。检测端通知用户终端,并将流量f的原始报文发送至用户终端。用户终端利用密钥k对f进行解密,解密后的内容如图2所示。检测端拥有的入侵检测规则如图3所示。检测端和用户终端执行特征安全匹配。
检测端对入侵检测规则内容进行分割,即图3中的content字段内容“0100ffff1111”进行分割。令c=3,分割后形成的集合s_d为{0100ff,ff1111}。
用户终端对解密后的流内容进行分割。需要注意的是,用户终端对解密后的流内容采用滑动窗口机制进行分割。令c=3,分割后形成的集合s_u为{485454,545450,54502f,…,0100ff,ff1111,…,0d0a43}。
检测端采用sah256算法对集合s_d中的元素计算hash值,形成集合h_sd,h_sd内容为:
{402b880ffa4b046ee7d9e4df74a6be32b259b66fcf9e27d5c9bdd2c1f1019000,5508521b30de027e0d9a25fb2cf01585d5f2977843a5b3cd2d6641e3e8e973f8}。
用户终端采用sah256算法对集合s_u中的元素计算hash值,形成集合h_su,h_su内容为:
{b37bb4679156ba241f298a5005cc743f0230aff147d161076a08b3af3c2c70f7,74d69954b34a9f72383500e331ba0e5522741678cf437b069be90cef54258b3f,52d585092dc822562527b3bbeaf7abc472daf10deaffe1abd9cef6f98f117a80,…,402b880ffa4b046ee7d9e4df74a6be32b259b66fcf9e27d5c9bdd2c1f1019000,5508521b30de027e0d9a25fb2cf01585d5f2977843a5b3cd2d6641e3e8e973f8,…,4093192b51e5097104ff721744c34abb92af2fc115858727b2b5b165119e263c}。
检测端将集合h_sd发送至用户终端,用户终端求解h_sd和h_su的交集,交集为:
{402b880ffa4b046ee7d9e4df74a6be32b259b66fcf9e27d5c9bdd2c1f1019000,5508521b30de027e0d9a25fb2cf01585d5f2977843a5b3cd2d6641e3e8e973f8}。
用户终端在结合s_u中确定交集的原始内容,即{0100ff,ff1111};然后在图2所示的解密后的流内容中确定0100ff和ff1111的起始位置;在图2中,0100ff分别为第128、129、130个字节,因而0100ff的起始位置为128,ff1111的起始位置是131。
用户终端将集合r_ud{<0100ff,128>,<ff1111,131>}发送至检测端。
检测端合并集合r_ud中的元素,由于128 3=131,最终得到{<0100ffff1111,128>}。
检测端将r_ud中的元素同图2的入侵检测规则进行比对,0100ffff1111同内容字段(content)相同,128大于位置字段(depth)的要求10,因而匹配成功。该流量被确认为恶意流量。
在特征安全匹配过程中,检测端和用户终端交换的均为hash值,无法得知对应的明文内容,从而保护了双方的数据隐私。
以上,仅为本发明中的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉该技术的人在本发明所揭露的技术范围内,可理解想到的变换或替换,都应涵盖在本发明的包含范围之内,因此,本发明的保护范围应该以权利要求书的保护范围为准。
1.一种加密恶意流量检测确认方法,其特征在于,包括以下步骤:
步骤a,用户终端从系统中提取加密网络流量对应的密钥以及计算加密网络流量的hash值;
步骤b,检测端在网络中监视用户终端和应用服务器间的加密通信,并使用机器学习等算法判断加密网络流量是否为恶意;
步骤c,检测端若判断当前加密网络流量为恶意流量,则通知用户终端对应的流量可能为恶意加密流量,并发送可疑流量报文至用户终端以请求执行特征安全匹配;
步骤d,用户终端和检测端执行特征安全匹配;
步骤e,用户终端将匹配结果发送至检测端,检测端根据匹配结果确认当前加密网络流量是否为恶意流量。
2.根据权利要求1所述的一种加密恶意流量检测确认方法,其特征在于:所述步骤a的具体步骤如下:
步骤a-1,用户终端识别本机发出的加密网络流量;
步骤a-2,用户终端从内存或文件中提取加密网络流量对应的会话密钥k;
步骤a-3,用户终端计算加密网络流量对应的hash值h;
步骤a-4,用户终端将<h,k>值保存t时间,时间超时后删除<h,k>值。
3.根据权利要求2所述的一种加密恶意流量检测确认方法,其特征在于:所述步骤c的具体内容如下:
步骤c-1,检测端通知用户终端对应的流量可能为恶意加密流量;
步骤c-2,检测端将可疑流量的全部内容发送至用户终端;
步骤c-3,检测端请求执行特征安全匹配。
4.根据权利要求3所述的一种加密恶意流量检测确认方法,其特征在于:所述步骤d中具体内容如下:
步骤d-1,用户终端判断接收到的pcap文件中的网络流量是否由自己发出;
步骤d-2,若不为自己发出,发送错误告警信息,并断开网络连接;
步骤d-3,若为自己发出,用户终端发送同意消息,同意执行特征安全匹配;
步骤d-4,用户终端进行流量解密和流量内容分割;
步骤d-5,检测端执行入侵检测规则内容分割;
步骤d-6,用户终端和检测端执行隐私保护集合交集协议,执行特征安全匹配。
5.根据权利要求4所述的一种加密恶意流量检测确认方法,其特征在于:所述步骤d-4的具体内容如下,
步骤d-4-1,设定大小为c的滑动窗口;
步骤d-4-2,从流内容的起始处读取窗口内所有内容,加入集合s_u;
步骤d-4-3,将窗口后移一个字节,读取窗口内所有内容,加入集合s_u;
步骤d-4-4,重复步骤(4-4-3)直至窗口内容长度小于c。
6.根据权利要求5所述的一种加密恶意流量检测确认方法,其特征在于:
所述步骤d-5的具体内容如下,
步骤d-5-1,将特征字段内容转换为十六进制编码;
步骤d-5-2,计算特征字段内容长度h,若h小于设定的阈值c,忽略该特征字段内容;若h大于等于c,则将其分割
步骤d-5-3,将分割后的内容加入集合s_d中。
7.根据权利要求6所述的一种加密恶意流量检测确认方法,其特征在于:
所述步骤d-6的具体内容如下,
步骤d-6-1,用户终端对集合s_u的每一元素,利用sha256算法计算其hash值,形成新的集合h_su;
步骤d-6-2,检测端对集合s_d的每一元素,利用sha256算法计算其hash值,形成新的集合h_sd;
步骤d-6-3,检测端将集合h_sd发送至用户终端;
步骤d-6-4,用户终端对集合h_su和h_sd取交集,并对交集中的每一元素,从集合s_u中取出对应的原始内容,将原始内容放入集合i_ud中;
步骤d-6-5,对于集合i_ud中的每一元素x,用户终端确定其在流内容中的起始位置l(x),从而获得匹配结果{<x,l(x)>},加入集合r_ud中。
8.根据权利要求7所述的一种加密恶意流量检测确认方法,其特征在于:所述步骤e的具体内容如下,
步骤e-1,用户终端将集合r_ud发送至检测端;
步骤e-2,检测端对集合r_ud,依据l(x)值从小到大的顺序对所有元素进行排序;
步骤e-3,检测端合并集合r_ud中的元素,即如果l(xi) c=l(xi 1),串联xi和xi 1的内容,作为新的元素xj,其中,xj=xi||xi 1,l(xj)=l(xi);
步骤e-4,检测端将<xj,l(xj)>加入集合r_ud中,同时删除<xi,l(xi)>和<xi 1,l(xi 1)>的值;
步骤e-5,重复步骤(e-3)和(e-4),直至r_ud中所有元素均无法合并;
步骤e-6,将r_ud中的x值作为特征匹配字段内容,将l(x)作为距离字段内容,在入侵检测库中同所有的规则的内容字段和位置信息进行比对,若比对成功,则表明加密网络流量为恶意流量,否则为误报。
技术总结