一种DoH服务标识方法及装置

文档序号:26751048发布日期:2021-09-25 02:30阅读:339来源:国知局
一种DoH服务标识方法及装置
一种doh服务标识方法及装置
技术领域
1.本发明涉及计算机领域,尤其涉及一种doh服务标识方法及装置。


背景技术:

2.域名系统(服务)协议(domain name system,简称dns)是一种分布式网络目录服务,主要用于域名与ip地址的相互映射。但是,dns协议在设计之初没有考虑隐私安全问题,采用明文传输。这导致客户端与服务器链路间的中间人可以看到、记录甚至修改用户的dns往返数据包,对用户隐私安全造成较大威胁。
3.国际互联网工程任务组(the internet engineering task force,简称ietf)是全球互联网最具权威的技术标准化组织。2018年10月,ietf发布doh(dns

over

https)协议规范文档rfc8484。doh是一个安全化的域名解析方案,其意义在于以加密的https协议进行dns解析请求和应答,避免原始dns协议中dns往返报文被窃听或者修改的问题,来达到保护用户隐私的目的。
4.doh与https共享端口443,该端口将doh查询与其他https流量混合在一起,并采用了加密技术,因此给doh流量识别和doh服务端标识工作带来了困难。


技术实现要素:

5.为解决上述问题,本发明提供一种doh服务标识方法及装置,从加密流量中发现并标识doh服务器,测绘doh服务部署情况,为用户提供doh服务端选择。
6.为达到上述目的,本发明采用如下技术方案:
7.一种doh服务标识方法,其步骤包括:
8.1)从待检测加密流量中提取被动流量及服务端口信息,收集被动流量中dns数据包,并依据所述dns数据包,构建一个ip解析域名的反向解析系统,其中被动流量包括:dns被动流量和ssl/tls被动流量;
9.2)提取ssl/tls被动流量的数据流特征,并将数据流特征输入一doh流量分类器,得到doh流量;
10.3)获取doh流量的服务端ip,并结合ip解析域名的反向解析系统,得到一或多个doh服务端域名;
11.4)获取常用doh服务端路径,并根据doh服务端域名、服务端口信息及常用doh服务端路径,对每一doh服务端域名构造一或多个doh请求;
12.5)将各doh请求发送至相应的doh服务端域名,对正确响应的doh服务端域名进行标识;其中,通过以下步骤训练doh流量分类器
13.a)获取包括若干doh流量数据的流量数据集,并根据doh流量的数据信息重构数据流,得到若干样本流量;
14.b)提取各样本流量的样本数据流特征,并对样本数据流特征进行单分类机器学习训练,得到doh流量分类器。
15.进一步地,通过以下策略获取ip解析域名的反向解析系统:
16.1)通过dns数据包中的相关字段,提取的请求域名与响应地址,并依据请求域名与响应地址,获取相应的服务端ip与服务端域名,构建ip解析域名的反向解析系统,其中所述相关字段包括:a字段或/和aaaa字段;
17.2)对于每个待反向映射的ip,在第三方库中查询对应的服务端域名,其中第三方库包括:ipip或站长之家。
18.进一步地,通过以下步骤得到数据流特征:
19.1)提取ssl/tls被动流量的数据信息,所述数据信息包括:数据包的协议、源ip、源端口、目的ip、目的端口和偏移字段;
20.2)依据数据信息将ssl/tls被动流量切分为数据流;
21.3)提取数据流的特征。
22.进一步地,数据流特征包括报文载荷大小序列、数据流报文方向序列、总报文数和总报文载荷大小。
23.进一步地,获取服务端ip的方法包括:基于端口判断、基于握手包判断或基于单向累计报文数判断。
24.进一步地,通过以下步骤获取常用doh服务端路径:
25.1)获取公开的doh服务器,得到doh服务器列表;
26.2)利用doh服务器列表中的服务器,构建已知doh服务标识资源库,其中所述已知doh服务标识资源库中的信息包括样本服务端ip、样本服务端域名、样本服务端口信息和样本服务端路径;
27.3)将doh服务器列表中任意一服务器使用过的doh服务端路径,视为常用doh服务端路径。
28.进一步地,所述单分类机器学习的算法包括:自编码器算法、单分类支持向量机算法或单分类对抗神经网络算法。
29.进一步地,对正确响应的doh服务端域名进行标识的标识信息包括:doh服务端ip、doh服务端域名、doh服务端口信息和doh服务端路径。
30.进一步地,对于正确响应的doh服务端域名,将相应doh请求的doh服务端ip、doh服务端域名、doh服务端口信息及doh服务端路径写入已知doh服务标识资源库。
31.一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述所述的方法。
32.一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机以执行上述所述的方法。
33.与现有技术相比,本发明具有以下优势:
34.1)本发明结合机器学习方法,在真实环境的加密流量中识别出doh流量,解决真实环境中doh流量与普通https流量混淆无法区分的问题。
35.2)本发明采用单分类机器学习方法来训练doh流量分类器,无需构造非doh流量样本,克服了常规方法中训练集负样本缺失问题。
36.3)本发明采用主动验证方式,保证doh服务端标识的正确性。
37.4)本发明构建反向dns解析系统,在系统规模较小以保证可行性的前提下,有较高
的解析覆盖率。
38.5)本发明有完整的反馈机制,可随着系统部署周期的增加而不断提升识别正确率。
附图说明
39.图1为本发明的doh服务端标识方法流程图。
具体实施方式
40.为使本发明的目的、原理、技术方案和优点更加清晰明白,以下将结合具体实施例,并参照附图对本发明做详细的说明。
41.本发明的doh服务端标识方法,过程分为在线和离线两个阶段。离线阶段,从加密流量中提取加密流量特征,结合单分类机器学习方法构建识别doh流量的分类器。在线阶段,将分类器应用于加密流量,例如网关,在加密流量中识别出doh流量。接着对这些doh流量的服务端ip进行反向解析,得到ip对应的域名信息。最后,结合域名信息验证流量分类的正确性。如验证成功,则说明成功发现doh服务端,进而可以对该服务端进行标识。对于成功验证的doh流量,将这些流量加入到加密流量数据集,以期望训练得到更优的分类器。具体步骤包括:
42.1)获取公共doh服务器列表,对列表中的doh服务器进行标识;
43.2)获取访问doh服务器的真实流量,构建流量分类数据集,预处理数据集以得到流量分类有效特征;
44.3)利用构建的数据集,结合单分类机器学习方法训练分类器进行流量分类,发现新的doh服务端;
45.4)构建域名反向解析系统,获取doh流量服务端ip对应反向解析,得到服务端域名等信息;
46.5)验证发现的doh服务端,标识验证成功的doh服务端;
47.6)根据验证结果进行系统反馈。
48.具体地,图1所示为本发明提供的doh服务端标识方法的流程图,该方法基于加密流量特征,结合单分类机器学习方法识别出doh流量,再结合域名反向解析系统,构建若干doh请求,验证分类正确性,如流量识别正确,则说明成功发现doh服务端,即可对这个新发现的doh服务端进行标识,主要步骤包括:
49.(一)构建doh服务标识资源库
50.可以通过在主流搜索引擎、知名doh协议项目中搜索公开的doh服务器列表。结合rfc8484的建议信息,例如常用端口(tcp 443端口),常用服务端路径(/dns

query),对于搜索到的doh服务器列表,主动访问验证有效性。然后,整合doh服务器列表提供的信息,访问doh服务器产生流量中挖掘的信息,构建已知doh服务标识资源库。资源库信息包括服务端ip、服务端域名、服务端口、服务端路径、服务端地理位置等。其中,服务器地址信息可以通过ip定位技术、第三库(如fofa、站长之家、zoomeye)查询等方式获得。
51.(二)构建doh流量数据集
52.对于doh流量数据集,需要获取访问doh服务器的真实流量,可以通过主动或被动
两种方式获取。
53.1)主动多点测量:通过地理位置分布广泛的测量节点,主动发起doh请求,捕获doh流量。测量点需要对国家、运营商等形成较为全面的覆盖,测量环境需要覆盖windows、linux、mac os等多种主流操作系统,覆盖firefox、chrome等多种主流浏览器。
54.2)被动测量:在大型网关中获取ssl/tls被动流量。利用现有的doh服务标识资源库中ip、域名、端口等信息,在被动流量中找到与现有已知doh服务器通信的流量。
55.(三)对数据集进行预处理,得到流量特征
56.对于步骤(二)中获取到的加密流量数据集,根据数据包的五元组(协议、源ip、源端口、目的ip、目的端口)和偏移字段等信息将流量重组为数据流。以数据流为单位提取特征。主要特征包括数据流报文载荷大小序列、数据流报文方向序列、总报文数、总报文载荷大小等等。
57.(四)训练分类器
58.根据步骤(三)中的得到的各种特征,构建特征模型。基于特征模型,进行针对doh流量的二分类。分类算法可以使用包括自编码器算法、单分类支持向量机算法、单分类对抗神经网络算法及其变体在内的单分类机器学习方法。
59.(五)将分类器应用到大规模被动流量
60.在大规模被动流量出入口处部署分类器,例如运营商网关、国家网关、骨干网路由器。对这些被动流量进行和步骤(三)相同的预处理,再将预处理得到的特征信息输入到步骤(四)中训练好的分类器中。最后根据分类器结果得到可能的doh流量。
61.(六)构建域名反向解析系统
62.在后续步骤(七)中,需要使用到服务器域名信息。但在被动doh流量中只能获得ip、端口、sni等信息,无法直接得到服务器域名信息。因此考虑构建一个域名反向解析系统。将ip地址映射到域名的技术称为域名反向解析。常用的反向解析工具如nslookup。但是,由于互联网中域名总数规模巨大,使得域名反向解析不易实现。通常,只有极小部分ip地址拥有反向解析记录,例如1.1.1.1。还可以通过第三方库(如fofa、站长之家、zoomeye等)api查询ip地址对应域名。
63.下面详细阐述自建反向解析系统可行性。本发明的反向解析系统需要能够反向解析被动流量中所有被分类为doh流量的ip,现有的反向解析工具不能满足需求。于是,需要自己构建一个反向解析系统。通过收集被动流量中包含a记录的dns数据包,提取请求域名和响应地址,构建一个ip到域名的反向解析系统。反向解析系统的输入是流量服务端ip,输出则是服务端ip对应的一个或若干个域名。
64.这种方法构建的反向解析系统能生效的理由如下。首先是覆盖率问题,客户端在向服务端发起请求时,一般需要先解析服务端域名。如果客户端与服务端通信的流量会经过该被动流量出入口,那么客户端发起的对服务端域名的dns解析请求一般也会经过网关。并且,在使用doh服务之前需要解析doh服务器域名,而这部分域名的解析通常是明文,因此构建的反向解析系统能够覆盖doh服务端ip逆向解析。然后是系统规模问题。该被动流量出入口的流量仅由一个地区用户产生,因此涉及的域名数量规模较小,使得生成的反向解析库规模能够接受,反向解析成为可能。
65.(七)主动验证分类准确性
66.对于分类得到的doh流量,在本地构造doh请求发往服务端。如果得到服务端的正确响应,则说明我们的分类结果是正确的。构造doh请求需要三个关键参数:服务端域名、服务器路径以及服务端口。
67.由于ssl证书通常只对域名进行签发,很少对ip地址进行签发,所以往往无法直接利用ip地址构造doh请求,需要知道服务端的域名再构造doh请求。先判断doh流量的源ip地址和目的ip地址代表的身份(服务端or客户端),判断方法包括基于端口判断,基于握手包判断,基于单向累计报文数判断等。然后对服务端ip进行逆向解析,得到服务端域名。
68.通过分析已经收集到的doh服务器列表和rfc8484的建议信息,doh服务端路径一般包括:/dns

query、/resolve、/family

filter、/query、/doh、/ads等几种路径。
69.而服务端口信息则能从数据流中提取,一般是常用的443端口。
70.对于以上三个参数,组合构造若干个(域名数*路径数*端口数)doh请求,请求报文头部为https://server:port/path,而content

type和accept字段都设置为“application/dns

message”,doh协议规范文档rfc8484要求所有doh服务器必须支持“application/dns

message”返回类型,请求内容则是完整的dns数据包,该dns数据包在符合dns报文规范提前下可任意构建。对于某条doh流量的ip地址,该ip地址一般会反向解析出多个域名,再结合常用服务端口、服务端路径,一般会产生近100条doh请求。为减少验证所需的时间,可以采用多线程方式,同时发送多条doh请求。
71.如果有一条doh请求收到正确响应,则说明该条doh流量分类结果正确,也即成功发现了一个doh服务端。将该服务端的服务端ip,服务端域名,服务端口,服务端路径,服务端地理位置等信息加入doh服务标识资源库。
72.(八)反馈模块
73.对于步骤(七)中成功验证的doh服务器。将正确分类的流量加入步骤(二)中数据集的doh流量部分,丰富doh流量数据集,以期望后续能在步骤(四)中训练出更准确的分类器。
74.下文进行举实例说明:
75.实施例1
76.在地理位置分布广泛的测量点搭建流量数据集捕获环境。模拟用户使用浏览器访问互联网,并结合已有doh服务标志库配置浏览器使用doh服务。同时,捕获浏览器访互联网时产生的流量作为数据集。根据流量的服务端ip地址将doh流量分离。分离出的doh流量作为数据集。
77.对流量数据集进行预处理,基于数据包的五元组(协议、源ip、源端口、目的ip、目的端口)和偏移字段等信息将流量切分为数据流,以流为单位提取特征。提取数据流的报文载荷大小序列特征输入至单分类支持向量机学习器进行训练。最后得到一个检测doh流量的分类器。
78.将分类器应用于大型网关流量出入口。在网关的被动流量中过滤得到tls/ssl流量。接着提取tls/ssl流量的报文载荷大小序列特征输入已有的分类器,分类得到所有可能的doh流量。
79.同时,在网关捕获包含a记录的dns流量,提取a记录字段和请求域名字段,构建一个从a记录到请求域名字段的映射表,也即反向解析系统。其中,记录代表ip地址,请求域名
字段则代表域名。
80.下面详细阐述自建反向解析系统可行性。本发明的反向解析系统需要能够反向解析被动流量中所有被分类为doh流量的ip,现有的反向解析工具不能满足需求。于是,需要自己构建一个反向解析系统。通过收集被动流量中的所有dns数据包,提取请求域名和类型记录如(a、aaaa、cname)等字段信息,构建一个ip到域名的反向解析系统。
81.这种方法构建的反向解析系统能生效的理由如下。首先是覆盖率问题,客户端在向服务端发起请求时,一般需要先解析服务端域名。如果客户端与服务端通信的流量会经过该被动流量出入口,那么客户端发起的对服务端域名的dns解析请求一般也会经过我们的网关。并且,在使用doh服务之前需要解析doh服务器域名,而这部分域名的解析通常是明文。然后是系统规模问题。该被动流量出入口的流量仅由一个地区用户产生,因此涉及的域名数量规模较小,使反向解析成为可能。
82.对于分类得到的doh流量,根据端口判断服务端ip地址,端口大的即为服务端。提取流量服务端ip、服务端口信息,反向解析ip地址得到服务端域名。利用服务端域名、ip、端口和常用doh服务端路径(/dns

query、/resolve、/family

filter)构造一系列doh请求。如果某一条收到正确响应,则说明分类结果正确,成功发现一个doh服务端。使用站长之家查询服务端ip地址的地理位置。
83.最后将该条doh请求的域名、ip、服务端路径、服务端口、服务端地理位置等信息作为一个条目加入doh服务端标识资源库。
84.实施例2
85.在某网关镜像流量中提取出大量tcp\ssl流量。利用已有doh服务标志库,分离其中doh流量构成数据集。
86.对流量数据集进行预处理,基于数据包的五元组(协议、源ip、源端口、目的ip、目的端口)和偏移字段等信息将流量切分为数据流,以流为单位提取特征。提取数据流的报文方向序列特征输入至自编码器进行训练。最后得到一个检测doh流量的分类器。
87.将分类器应用于网关流量出入口。在网关的被动流量中过滤得到tls/ssl流量。接着提取tls/ssl流量的报文载荷大小序列特征输入已有的分类器,分类得到所有可能的doh流量。
88.提取分类为doh流量的服务端ip、服务端口,通常发起sever hello的为服务端。在fofa中搜索该服务端ip地址,得到该ip的所有对应域名,同时记录ip地址所在地理位置。
89.提取doh流量、服务端ip、服务端口信息,fofa搜索ip地址得到服务端域名。利用服务端域名、ip、端口和常用doh服务端路径(/dns

query、/resolve、/family

filter)构造doh请求一系列请求。如果某一条收到正确响应,则说明分类结果正确,成功发现一个doh服务端。
90.最后将该条doh请求的域名、ip、服务端路径、服务端口、服务端地理位置等信息作为一个条目加入doh服务端标识资源库。
91.以上所述实施例仅为更好的说明本发明的目的、原理、技术方案和有益效果。所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1