CN114844704B - 基于可编程交换机的实时dns隧道检测方法及相关设备 - Google Patents
基于可编程交换机的实时dns隧道检测方法及相关设备 Download PDFInfo
- Publication number
- CN114844704B CN114844704B CN202210482202.9A CN202210482202A CN114844704B CN 114844704 B CN114844704 B CN 114844704B CN 202210482202 A CN202210482202 A CN 202210482202A CN 114844704 B CN114844704 B CN 114844704B
- Authority
- CN
- China
- Prior art keywords
- domain name
- dns
- data plane
- hash value
- hash
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
- H04L63/0236—Filtering by address, protocol, port number or service, e.g. IP-address or URL
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了基于可编程交换机的实时DNS隧道检测方法及相关设备,所述方法包括:数据平面对DNS数据包采用循环增量解析的方式进行解析、哈希和特征统计处理,得到DNS域名、第一哈希值和域名特征;根据第一哈希值查询预设的黑白名单,若在黑白名单中均查询不到且分类结果为正常,则根据划分表将DNS域名均划分为主域名和子域名;对不同子域名的第一哈希值进行哈希运算得到不同子域名的第二哈希值;对第二哈希值的个数进行统计,若超过预设阈值则将DNS域名视为隧道流量并上报至控制平面,以便控制平面更新黑名单后滤除隧道流量。通过循环增量解析任意长度域名并将决策树模型以流表的形式部署在数据平面,实现对DNS隧道的全面检测。
Description
技术领域
本发明涉及数据网络安全技术领域,特别涉及一种基于可编程交换机的实时DNS隧道检测方法及相关设备。
背景技术
DNS隧道,即利用DNS请求和响应来承载经过编码或加密的数据内容,攻击者需要接管某个域名的NS服务器,使得对该域名的所有 子域 解析请求最终到达该台NS服务器上,最终,一条通信信道将在受控机器和攻击者的NS服务器之间建立(中间可能经过更多的NS节点),信道的建立、维持和通信基于DNS查询的请求和响应。现如今DNS隧道攻击是网络安全中不可忽视的安全问题。已有的检测和防御方案通常聚焦于使用离线数据优化检测模型,忽略了实际部署,且难以应对多样的DNS隧道攻击。
因而现有技术还有待改进和提高。
发明内容
本发明的主要目的在于提供一种基于可编程交换机的实时DNS隧道检测方法及相关设备,旨在解决现有技术中无法检测并防范各种基于DNS隧道的网络攻击的问题。
为了达到上述目的,本发明采取了以下技术方案:
一种基于可编程交换机的实时DNS隧道检测方法,所述基于可编程交换机的实时DNS隧道检测方法包括以下步骤:
数据平面对输入的DNS数据包采用循环增量解析的方式进行解析、哈希和特征统计处理,得到带有多个标签的DNS域名、第一哈希值和域名特征;
所述数据平面根据所述第一哈希值查询预设的黑白名单,若查询所述第一哈希值在黑名单中,则将所述DNS数据包进行丢弃,若查询所述第一哈希值在白名单中,则将所述DNS数据包转发到第一预设端口;
所述数据平面根据所述域名特征查询分类表,得到所述DNS数据包对应的分类结果,并进行异常情况判断,若所述分类结果为异常,则将所述DNS数据包丢弃;
若所述分类结果为正常且所述数据平面在所述黑白名单中查询不到所述第一哈希值,则根据查询到的划分表,将每一个所述DNS域名均划分为主域名和子域名;
所述数据平面对所述主域名的不同子域名的第一哈希值再次进行哈希运算,得到所述主域名的不同子域名的第二哈希值;
所述数据平面对所述主域名的不同子域名的第二哈希值的个数进行统计,若统计到的不同子域名的数量超过预设阈值,则将所述DNS域名视为隧道流量,并将所述主域名上报至控制平面;
所述控制平面将对应的所述DNS域名更新到所述数据平面的黑名单中,以便滤除所述隧道流量。
所述基于可编程交换机的实时DNS隧道检测方法中,所述基于可编程交换机的实时DNS隧道检测方法还包括:
所述控制平面维护所述黑白名单,并同步更改所述黑白名单;
所述控制平面记录所述主域名和所述子域名,并同步更改所述划分表;
所述控制平面预先使用相关数据训练决策树模型,得到经过训练后的决策树模型,并将经过训练后的决策树模型中的分类规则转化为流表规则,得到所述流表。
所述基于可编程交换机的实时DNS隧道检测方法中,所述数据平面对输入的DNS数据包采用循环增量解析的方式进行解析、哈希和特征统计处理,得到带有多个标签的DNS域名、第一哈希值和域名特征的步骤具体包括:
所述数据平面配置第二预设端口的回环属性后,利用解析器对输入的所述DNS数据包进行解析,得到带有多个标签的所述DNS域名;
所述数据平面利用第一哈希函数对所述DNS域名的标签进行哈希运算,得到所述DNS域名的所述第一哈希值;
所述数据平面使用匹配动作表对所述DNS域名的特征进行统计,得到所述域名特征。
所述基于可编程交换机的实时DNS隧道检测方法中,所述数据平面根据所述第一哈希值查询预设的黑白名单,若查询所述第一哈希值在黑名单中,则将所述DNS数据包进行丢弃,若查询所述第一哈希值在白名单中,则将所述DNS数据包转发到第一预设端口的步骤具体包括:
所述数据平面将所述第一哈希值与预设的黑白名单中的匹配项分别进行匹配,若匹配到所述黑名单中的匹配项,则将所述DNS数据包进行丢弃,若匹配到所述白名单中的匹配项,则将所述DNS数据包转发到所述第一预设端口。
所述基于可编程交换机的实时DNS隧道检测方法中,所述数据平面根据所述域名特征查询分类表,得到所述DNS数据包对应的分类结果,并进行异常情况判断,若所述分类结果为异常,则将所述DNS数据包丢弃的步骤具体包括:
所述数据平面控制经过训练后的决策树模型转换得到所述分类表;
所述数据平面根据所述域名特征查询所述分类表,得到所述DNS数据包对应的分类结果;
所述数据平面判断所述分类结果是否异常,若所述分类结果为异常,则将所述DNS数据包丢弃。
所述基于可编程交换机的实时DNS隧道检测方法中,所述若所述分类结果为正常且所述数据平面在所述黑白名单中查询不到所述第一哈希值,则根据查询到的划分表,将每一个所述DNS域名均划分为主域名和子域名的步骤具体包括:
若所述数据平面判断所述分类结果为正常且在所述黑白名单中查询不到所述第一哈希值,则通过查询划分表中的流表,将每一个所述DNS域名均划分为主域名和子域名。
所述基于可编程交换机的实时DNS隧道检测方法中,所述数据平面对所述主域名的不同子域名的第一哈希值再次进行哈希运算,得到所述主域名的不同子域名的第二哈希值的步骤具体包括:
所述数据平面利用第二哈希函数对所述主域名的第一哈希值和所述主域名的不同子域名的第一哈希值分别进行哈希运算,对应得到所述主域名的第二哈希值和所述主域名的不同子域名的第二哈希值。
所述基于可编程交换机的实时DNS隧道检测方法中,所述数据平面对所述主域名的不同子域名的第二哈希值的个数进行统计,若统计到的不同子域名的数量超过预设阈值,则将所述DNS域名视为隧道流量,并将所述主域名上报至控制平面的步骤包括:
所述数据平面统计在固定的时间范围内所述主域名的不同子域名的第二哈希值的个数,得到不同子域名的数量,并判断是否大于所述预设阈值;
若所述数据平面判断不同子域名的数量超过所述预设阈值,则将所述DNS域名视为隧道流量,并将所述主域名上报至所述控制平面中的控制器。
所述基于可编程交换机的实时DNS隧道检测方法中,所述控制平面将对应的所述DNS域名更新到所述数据平面的黑名单中,以便滤除所述隧道流量步骤包括:
所述控制器将对应的所述主域名更新到所述数据平面的黑名单中,以便滤除所述隧道流量。
所述基于可编程交换机的实时DNS隧道检测方法中,所述域名特征包括:域名总字符数、大写字符的数量、数字字符的数量和标签的数量。
所述基于可编程交换机的实时DNS隧道检测方法中,第一哈希值为标签哈希值,由对所述DNS域名的标签进行哈希运算得到;第二哈希值由对所述标签哈希值进行二次哈希运算得到。
所述基于可编程交换机的实时DNS隧道检测方法中,所述第一哈希函数与所述第二哈希函数为同一哈希函数,区别为各自的哈希种子不同。
一种基于可编程交换机的实时DNS隧道检测***,所述基于可编程交换机的实时DNS隧道检测***包括:数据平面和控制平面;所述数据平面用于对输入的DNS数据包采用循环增量解析的方式进行解析、哈希和特征统计处理,得到带有多个标签的DNS域名、第一哈希值和域名特征;
所述数据平面用于根据所述第一哈希值查询预设的黑白名单,若查询所述第一哈希值在黑名单中,则将所述DNS数据包进行丢弃,若查询所述第一哈希值在白名单中,则将所述DNS数据包转发到第一预设端口;
所述数据平面用于根据所述域名特征,查询由经过训练后的决策树模型转换得到的分类表,得到所述DNS数据包对应的分类结果,并进行异常情况判断,若所述分类结果为异常,则将所述DNS数据包丢弃;
所述数据平面用于在所述分类结果为正常且所述黑白名单中查询不到所述第一哈希值时,根据查询到的划分表,将每一个所述DNS域名均划分为主域名和子域名;
所述数据平面用于对所述主域名的不同子域名的第一哈希值分别进行哈希运算,得到所述主域名的不同子域名的第二哈希值;
所述数据平面用于对所述主域名的不同子域名的第二哈希值的个数进行统计,若统计到的不同子域名的数量超过预设阈值,则将所述DNS域名视为隧道流量,并将所述主域名上报至控制平面;
所述控制平面用于将对应的所述DNS域名更新到所述数据平面的黑名单中,以便滤除所述隧道流量。
一种计算机可读存储介质,所述计算机可读存储介质存储有基于可编程交换机的实时DNS隧道检测程序,所述基于可编程交换机的实时DNS隧道检测程序被处理器执行时实现如上所述的基于可编程交换机的实时DNS隧道检测方法的步骤。
相较于现有技术,本发明提供的一种基于可编程交换机的实时DNS隧道检测方法及相关设备,所述方法包括以下步骤:数据平面对输入的DNS数据包采用循环增量解析的方式进行解析、哈希和特征统计处理,得到带有多个标签的DNS域名、第一哈希值和域名特征;然后查询第一哈希值是否在预设的黑白名单,若查询第一哈希值在黑名单中,则将DNS数据包进行丢弃,若查询第一哈希值在白名单中,则将DNS数据包转发到第一预设端口;接着根据域名特征,查询由经过训练后的决策树模型转换得到的分类表,并对得到的DNS数据包对应的分类结果进行判断是否为异常,若为异常,则将DNS数据包丢弃;若当分类结果为正常且查询到第一哈希值均不在黑白名单中,则根据查询到的划分表将每一个DNS域名均划分为主域名和子域名;再者对主域名的不同子域名的第一哈希值再次进行哈希运算,得到主域名的不同子域名的第二哈希值;最后对不同子域名的第二哈希值的个数进行统计,若统计到的不同子域名的数量超过预设阈值,则将DNS域名视为隧道流量,并将主域名上报至控制平面;控制平面将对应的DNS域名更新到数据平面的黑名单中,以便滤除隧道流量。通过采用循环增量解析的方式对任意长度域名进行解析,并将决策树模型以流表的形式部署在数据平面,实现对DNS隧道的全面检测。
附图说明
图1为本发明提供的基于可编程交换机的实时DNS隧道检测方法的较佳实施例的主要流程图;
图2为本发明提供的基于可编程交换机的实时DNS隧道检测方法的较佳实施例中步骤S100的流程图;
图3为本发明提供的基于可编程交换机的实时DNS隧道检测方法的较佳实施例中步骤S300的流程图;
图4为本发明提供的基于可编程交换机的实时DNS隧道检测方法的较佳实施例中步骤S600的流程图;
图5为本发明提供的基于可编程交换机的实时DNS隧道检测方法的较佳实施例的部分流程图;
图6为本发明提供的基于可编程交换机的实时DNS隧道检测***的原理框图;
图7为本发明提供的基于可编程交换机的实时DNS隧道检测***的框架图。
具体实施方式
为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
为了方便理解本申请实施例,首先在此介绍本发明实施例涉及到的相关要素:
作为互联网关键的基础解析服务,域名***(Domain Name System,DNS)是一种将域名和IP地址相互映射的具有层次结构的分布式数据库***。DNS将IP地址转换为便于理解和记忆的域名,便于用户访问互联网中各种资源。但是,为了保证用户体验,防火墙等网络基础防御措施一般不会对DNS数据进行过滤,这为攻击者提供了秘密通信的手段。攻击者就可在受控的主机和伪装的域名服务器之间建立DNS隧道,绕过网络安全机制,利用DNS数据包中的可定义字段秘密传递信息。其中,“可定义字段”指DNS数据包中的QNAME、RDATA、RawUDP等字段。DNS隧道可以被用于数据泄露、远程命令控制(Command and Control,C\&C)以及绕过连接登陆等恶意行为,进一步可造成僵尸网络(Botnet)、远程木马(RemoteAccess Trojan,RAT)、高级持续性威胁(Advanced Persistent Threat,APT)和勒索软件等网络攻击。
并且,基于DNS隧道的开源工具日趋成熟,未来可能会有更多的DNS隧道工具威胁着网络空间安全。因此,无论是在学术界还是在工业界,对DNS隧道检测技术的研究都是势在必行和不可避免的。检测利用合法服务的DNS隧道通常需要对大量良性流量进行分析。已有方案通常将流量镜像到专用的网络安全中间件或是应用程序中,针对DNS数据包或是整体流量提取相关特征,进而通过基于规则或是基于模型的分类器来检测DNS隧道攻击。虽然合适的特征提取和模型调整可以带来高精度的检测,但急剧增长的网络流量、多样的DNS隧道攻击以及对检测实时性的需求对方案的实际部署构成了诸多挑战:
首先是如何应对急剧增长的网络流量和网络带宽。目前部分互联网服务供应商中流量聚合点的网络带宽已经达到了百Gbps,许多网络设备供应商和网络标准化组织也正在拥抱400Gbps带宽的时代。然而,目前许多的DNS隧道检测模块部署在服务器上,即使充分利用服务器上的资源,实时的检测速率也很难在单个服务器内达到百Gbps。可编程交换机为弥合这一差距提供了前所未有的机会,可编程交换机是一种新兴的网络技术,可在不影响性能的情况下提供硬件可编程性。一台可编程交换机可以轻松地以线速处理多达Tbps 的流量,其吞吐量比高度优化的服务器高几个数量级。
其次是如何保证检测的通用性。部分DNS隧道检测方案虽然已经成功将一些功能模块下放到可编程数据平面,但DNS数据包具有独特属性,DNS数据包中的DNS域名属于可变长字段,域名中每一级标签长度不超过63个字符,域名整体长度不超过255个字符,这对在数据平面进行域名解析带来了重大挑战。目前尚无方案能够支持任意长度DNS域名的解析。此外,为保证对数据包的线性处理,可编程交换机存在诸多处理限制和内存限制,实现在交换机流水线中的方案需要足够精简高效。目前数据平面的DNS隧道检测方案比较单一,往往只能针对小部分的隧道攻击进行防范,适用范围有限。且需要控制平面和数据平面之间及进行频繁的通信交互,增加了对恶意活动进行响应的延迟。
最后是如何保证检测的实时性和精度。与传统的基于规则的检测方案相比,基于机器学***面可以保障处理大规模网络流量的实时性,但如何在保证精度的同时将相关机器学***面部署到数据平面仍是一个挑战。
本申请将可编程交换机和机器学***面的多次流水线处理实现对任意长度域名的解析,在数据平面提取包级别的域名特征,同时统计域名流量相关的特征,并将决策树模型通过流表的形式部署在数据平面,进而实现对DNS隧道的全面检测。本申请中的方案可以保护敏感用户信息的隐私,以线速高效运行,并允许网络运维人员动态管理网络流量,可根据相关域对数据包进行速率限制、丢包或标记等行为。
本发明为了提出一种基于可编程交换机的实时DNS隧道检测***,用于监控数据平面的网络安全,可实时地检测和防范利用DNS协议进行的数据泄露,命令控制以及随机子域名攻击等恶意行为。实现该***需要解决以下三点挑战:
1.如何在数据平面解析变长域名:DNS作为应用层协议,报文格式虽然固定,但其中的查询域名字段长度不固定,最长可以到达255个字符。P4可编程交换机对包头的解析一般在可编程交换机的解析器中以状态机的形式进行,但解析器主要用于解析固定长度的包头,且受限于解析器资源,无法在一次交换机流水线的处理中完成对任意长度域名的解析和存储。
2.如何将机器学习模型部署到交换机:机器学习模型往往运行在服务器中,即使是专用的模型加速器,每次推理也需要数十微秒到毫秒。而每个数据包通过可编程交换机的延迟在纳秒级。机器学习模型部署到网络设备内可以大幅提升处理速率,减少网络负载。但目前的可编程交换机支持的运算种类有限,不支持乘除法等复杂运算和浮点数,如何在保证精度的前提下,将机器学习模型与交换机内部逻辑进行适配是一个挑战。
3.如何全面检测复杂多样的DNS隧道攻击:实际的网络场景中DNS隧道的流量模式复杂多样,高级的DNS隧道技术可以混淆包级别的特征,构造与合法域名相似特征的域名请求,从而使报文级别的检测失效。因此需要在数据平面收集DNS流量特征,而可编程交换机资源有限,流表项内存和寄存器内存总量固定,且存在读写限制,如何使用有限的内存动态维护DNS流量特征也对数据平面处理构成了挑战。
本申请通过以下三点解决了上述挑战:1.循环增量解析域名:在可编程数据平面循环处理DNS数据包,将每一级域名信息封装到包头中,进行增量更新,从而实现对任意长度域名的解析;2. 数据平面机器学***面流表项的算法,将训练生成的决策树模型通过匹配动作表的形式部署在可编程交换机中,可对数据包进行线速的网内分类(此处网内分类指直接使用负责数据包处理的设备进行流量分类,即使用可编程交换机对数据包是否为异常进行判断),且支持模型的动态更新;3. 统计检测:利用交换机硬件中有限的存储资源,基于多重哈希(多重哈希指在一次哈希的基础上进行多次的哈希操作,将输入映射到多个位置),实现有效的数据结构,从而可以按域名统计流量特征,进而基于统计特征检测恶意的域名。
为了解决上述现有技术问题,具体地,本发明提供了一种基于可编程交换机的实时DNS隧道检测方法及相关设备。本发明中通过首先采用循环增量解析的方式对任意长度的DNS域名进行解析,从而精准且快速解析DNS数据包中的DNS域名、标签、第一哈希值和域名特征等数据,然后,查询第一哈希值是否在预设的黑白名单,以及根据域名特征查询由经过训练后的决策树模型转换得到的分类表,然后对分类结果进行判断是否为异常,并对不在黑白名单中且分类结果为正常的第一哈希值对应的DNS数据包进行域名划分,得到主域名的不同子域名的第一哈希值,再者,对主域名的不同子域名的第一哈希值再次进行哈希运算(多重哈希),以便统计得到的第二哈希值的个数后与预设阈值比较,最后,根据比较结果来确定所述DNS数据包是否为DNS隧道流量,从而实现在有限的内存空间内高精度的统计不同域名在时间窗口内的流量特征,本发明中通过将决策树模型以流表的形式部署在数据平面,从而可以纳秒的速率对DNS数据包进行实时的分类,真正地实现对DNS隧道的全面检测和对应处理。
下面通过具体示例性的实施例对基于可编程交换机的实时DNS隧道检测方法设计方案进行描述,需要说明的是,下列实施例只用于对发明的技术方案进行解释说明,并不做具体限定:
请参阅图1,本发明提供的一种基于可编程交换机的实时DNS隧道检测方法,所述基于可编程交换机的实时DNS隧道检测方法包括以下步骤:
S100、数据平面对输入的DNS数据包采用循环增量解析的方式进行解析、哈希和特征统计处理,得到带有多个标签的DNS域名、第一哈希值和域名特征;其中,所述域名特征包括:域名总字符数、大写字符的数量、数字字符的数量和标签的数量。
具体地,当所述DNS数据包输入到(可编程)交换机中时,所述交换机中的所述数据平面先对所述DNS数据包进行解析操作,得到带有多个标签的DNS域名,然后对所述DNS域名中的标签(二进制数据)进行哈希运算得到所述第一哈希值,再对所述DNS域名的四个特征(域名总字符数、大写字符的数量、数字字符的数量和标签的数量)进行统计,得到所述域名特征,以便后续进一步地处理;但是由于交换机上的单次流水线的处理能力有限,上述解析、哈希和特征统计等处理步骤无法在单次完成,因此需要采用循环增量解析的方式进行重循环操作,即将所述DNS数据包重新发送到流水线进行处理。其中,所述数据平面是指交换机具体处理数据包的硬件流水线。
进一步地,请参阅图2,S100、所述数据平面对输入的DNS数据包采用循环增量解析的方式进行解析、哈希和特征统计处理,得到带有多个标签的DNS域名、第一哈希值和域名特征的步骤具体包括:
S110、所述数据平面配置第二预设端口的回环属性后,利用解析器对输入的所述DNS数据包进行解析,得到带有多个标签的所述DNS域名;
S120、所述数据平面利用第一哈希函数对所述DNS域名的标签进行哈希运算,得到所述DNS域名的所述第一哈希值;
S130、所述数据平面使用匹配动作表对所述DNS域名的特征进行统计,得到所述域名特征。
其中,第一哈希值为标签哈希值,由对所述DNS域名的标签进行哈希运算得到。
具体地,为了成功解析出所述DNS域名,首先需要了解DNS数据包是如何对域名进行编码。DNS数据包的包头具有固定的格式和字段,其中所述DNS域名存储在DNS数据包的“问题”字段中,该字段将所述DNS域名划分为多个标签,标签之间使用英文句号连接。例如“www.example.com”的标签分别是“www”,“example”和“com”。在DNS数据包的“问题”字段中,每个所述DNS域名标签最前面是一个8比特字节,匹配项为标签以字符数为单位的长度。最后一级便签末尾会附加8比特字节值0x00,表示所述DNS域名后面无更多的标签。因此,所述DNS域名“www.example.com”将被编码为“(0x03)www(0x07)example(0x03)com(0x00)”。
在所述解析器中,对于每一级标签,可以先解析出表示标签长度的8比特字节前缀,后续可根据不同的长度值转移到不同的解析状态机。例如对于所述DNS域名“www.example.com”,解析器首先读取0x03八位字节值,转换到下一个状态,将接下来的三个字节读入一个宽度为三字节的变量中。之后解析器继续读取八位字节0x07并转换到解析宽度为六字节的状态中。同理,所述解析器再读取八位字节0x03并转换到解析宽度为三字节的状态中。最后,所述解析器读取到末尾的0x00,跳出对所述DNS域名的解析过程。
由于受限于所述DNS域名在所述DNS数据包中的存储格式,所述DNS域名中每一级标签长度不超过63个字符,所述DNS域名整体长度不超过255个字符。从理论上来讲,可以依据上述过程完成对任意标签数量和标签长度的所述DNS域名的解析。然而在实际中,可编程交换机存在几点硬件限制:第一、解析器解析得到的变量存储在包头向量(Packet HeaderVector,PHV)中,而PHV中容器数量有限,不足以存储255个字符;第二、解析器器每种条件转换需要消耗独立的状态机资源,而状态机的数量有限,不足以支持长度较大的所述DNS域名解析带来的过多状态;第三、在后续的交换机流水线的匹配动作表中,若对过长的所述DNS域名变量进行匹配,TCAM(TCAM (ternary content addressable memory)是一种三态内容寻址存储器,主要用于快速查找ACL和路由等表项)和SRAM(静态随机存取存储器(StaticRandom-Access Memory,SRAM)是随机存取存储器的一种)的容量不能满足需求。
所以,正常情况下,每个所述DNS数据包通过交换机流水线一次,不能重复或向后移动到流水线的某一个阶段,这一定程度上限制了交换机对所述DNS数据包可进行的操作数量以及多次访问交换机内部数据结构的能力。
但是,本发明的所述数据平面中,通过配置第二预设端口(特定预设端口)的回环属性,对解析、哈希和特征统计等处理步骤进行重循环操作,从而将所述DNS数据包重新发送到流水线进行处理,多次对输入的DNS数据包进行解析、哈希和特征统计等处理操作,有效地提升了交换机对所述DNS数据包可进行的操作数量以及多次访问交换机内部数据结构的能力,那么分步操作如下:首先,所述数据平面中的所述解析器对输入的所述DNS数据包进行解析,得到带有多个标签(二进制数据)的所述DNS域名;然后,利用第一哈希函数对所述DNS域名的标签进行哈希运算,得到所述DNS域名的所述第一哈希值(所述标签哈希值),即对所述DNS域名中的每个标签进行计算,例如www.example.com中共3个标签,则分别对“www”,“example”和“com”的二进制数据进行哈希运算,得到所述DNS域名的所述第一哈希值;再者,使用匹配动作表对所述DNS域名的特征进行统计,得到所述域名特征,即通过匹配动作表对所述DNS域名的标签的每个字节进行匹配,获取所述DNS域名对应的字符统计特征(所述域名特征,包括域名总字符数、大写字符的数量、数字字符的数量和标签的数量)。
但是,受限于可编程交换机的计算能力:可编程交换机只支持简单的加减法和移位运算,不支持除法和浮点数,因此本申请中从多个特征中最终选择4个可在所述数据平面进行提取的域名相关的特征:域名总字符数、大写字符的数量、数字字符的数量和标签的数量。
而获得大写字符和数字字符的计数值需要遍历所述DNS域名中的所有字符。由于一个处理单元内部的多个匹配动作表(match-action table)可以并行执行,所以可以在数据平面使用多个所述匹配动作表同时匹配多个字符进行统计。而DNS数据包中的域名使用ASCII编码,因此,需要对每个字符使用一个匹配动作表来匹配其对应的ASCII值。如果计数值在0x41-0x5a(a-z)范围内,则更新大写字符的计数值,即当匹配动作表匹配到对应的字符区间时,通过执行相应的函数操作将计数值对应的变量加一;同理,如果计数值在0x30-0x39(0-9)范围内,则更新数字字符的计数值,而在获取得到大写字符的数量和数字字符的数量之后,同时也获取得到了域名总字符数,所述标签的数量的获取与大写字符的数量和数字字符的数量获取同理,从而完成对所述域名特征的统计。
本发明中通过采用在数据平面的重循环操作(循环增量解析的方式),可将所述DNS数据包从流水线出口回环到流水线的入口,从而对所述DNS数据包进行多次的处理;重循环是可编程交换机的一个特性,通过配置端口的属性可以将从此端口出的数据包重新发送到交换机的入端口队列进行处理。虽然重循环的次数没有限制,但是过多的数据包进行循环将降低交换机的带宽,而通过在交换机中进行条件判断,可以及时将所述DNS数据包跳出循环,例如当包头中含有特定字段时即可跳出循环,并进行正常的转发操作。DNS数据包每一次经过流水线,进行一级标签的解析,并将标签的统计信息封装到自定义的包头中,重新发回流水线,再进行下一级标签的解析。为完全解析每一级DNS域名,在PHV中使用长度为63的包头数组(Header Stack)实现对任意长度的标签进行存储。而在解析器中,首先读取八位字节的标签长度并将其赋值给解析计数器,并通过逐字节解析标签,同时递减计数器,直到计数器为0。在解析得到完整标签后,在后续交换机的流水线处理中,可以通过匹配动作表对标签的每个字节进行匹配,获取域名对应的字符统计特征,最后在自定义的包头中增量更新每一级域名的解析特征,从而实现对任意长度域名的解析。
进一步地,请继续参阅图1,S200、所述数据平面根据所述第一哈希值查询预设的黑白名单,若查询所述第一哈希值在黑名单中,则将所述DNS数据包进行丢弃,若查询所述第一哈希值在白名单中,则将所述DNS数据包转发到第一预设端口;
具体地,根据对所述DNS域名的标签进行哈希运算后得到的所述第一哈希值,查询预先设计的黑白名单,若查询到所述第一哈希值在黑名单中,则将所述DNS数据包进行丢弃或发送到控制器,若查询到所述第一哈希值在白名单中,则将所述DNS数据包转发到第一预设端口(特定预设端口),从而实现对所述DNS数据包进行高效检测和相应处理,有效地滤除了所述DNS隧道流量。
进一步地,S200、所述数据平面根据所述第一哈希值查询预设的黑白名单,若查询所述第一哈希值在黑名单中,则将所述DNS数据包进行丢弃,若查询所述第一哈希值在白名单中,则将所述DNS数据包转发到第一预设端口的步骤具体包括:
S210、所述数据平面将所述第一哈希值与预设的黑白名单中的匹配项分别进行匹配,若匹配到所述黑名单中的匹配项,则将所述DNS数据包进行丢弃,若匹配到所述白名单中的匹配项,则将所述DNS数据包转发到所述第一预设端口。
具体地,本发明中为了方便、有效地过滤数据平面的攻击流量,预先设计了所述黑白名单,
将所述黑名单部署为所述数据平面中一个匹配动作表,表的匹配项是DNS域名的各个标签的哈希值,通过根据所述第一哈希值查询所述匹配项,利用掩码匹配(只匹配二进制数据中的指定位置,而不是全部匹配)的方式,将匹配到相同的所述标签的第一哈希值所对应的DNS域名划分到所述黑名单中,并将所对应的所述DNS数据包进行丢弃,同理,将所述白名单部署为所述数据平面中另一个匹配动作表,表的匹配项是DNS域名的各个标签的哈希值,通过根据所述第一哈希值查询所述匹配项,利用掩码匹配(只匹配二进制数据中的指定位置,而不是全部匹配)的方式,将匹配到相同的所述标签的第一哈希值所对应的域名划分到所述白名单中,并将对应的所述DNS数据包转发到第一预设端口,使得一些公开的良性域名的DNS流量(DNS数据包)可以直接被交换机转发,而无需进一步处理,有效地减少了可编程交换机的开销;通过掩码匹配的方式进行动作表匹配,既可以对某一个主域名下所有的DNS流量进行过滤,也可以对特定子域名的DNS流量进行过滤。
进一步地,请继续参阅图1,S300、所述数据平面根据所述域名特征查询分类表,得到所述DNS数据包对应的分类结果,并进行异常情况判断,若所述分类结果为异常,则将所述DNS数据包丢弃;
具体地,在得到所述域名特征后,根据所述域名特征查询所述分类表,得到所述DNS数据包对应的分类结果,将判断为异常的所述分类结果所对应的所述DNS数据包进行丢弃,实现了根据所述DNS数据包对应的分类结果,滤除异常的所述DNS隧道流量。
进一步地,请参阅图3,S300、所述数据平面根据所述域名特征查询分类表,得到所述DNS数据包对应的分类结果,并进行异常情况判断,若所述分类结果为异常,则将所述DNS数据包丢弃的步骤具体包括:
S310、所述数据平面控制经过训练后的决策树模型转换得到所述分类表;
S320、所述数据平面根据所述域名特征查询所述分类表,得到所述DNS数据包对应的分类结果;
S330、所述数据平面判断所述分类结果是否异常,若所述分类结果为异常,则将所述DNS数据包丢弃。
具体地,在使用所述匹配动作表对所述DNS域名的特征进行统计得到所述域名特征后,根据所述域名特征,查询由经过训练后的决策树模型转换得到的分类表,即查询已经部署到所述数据平面中的经过训练后的决策树模型,得到所述DNS数据包对应的分类结果,并进行异常情况判断,如:正常为“1”,异常为“0”,当所述分类结果为“0”时,则说明所述分类结果为异常,即表明当前DNS域名为恶意的,此时就将所述DNS数据包丢弃,而当所述分类结果为“1”时,则说明所述分类结果为正常,此时就将所述DNS数据包进行下一步操作,从而实现了根据查询分类表的方式得到分类结果,并将判断为异常的分类结果所对应的所述DNS数据包丢弃,能够有效地滤除所述DNS隧道流量。
对于部分DNS隧道攻击,其生成的DNS域名和正常域名存在显著的差异,所以可以基于DNS域名的字符特征进行检测。本发明中通过首先针对每个DNS请求报文,从中提取出DNS域名相关的特征,之后使用决策树模型进行检测(查询由经过训练后的决策树模型转换得到的分类表),得到所述DNS数据包对应的分类结果,并根据所述分类结果是否异常的情况,分别进行相应地处理,能够快速地将异常的分类结果所对应的所述DNS数据包直接丢弃,从而可实现包粒度的实时攻击检测,有效地实现了对DNS隧道流量的过滤,其中,此处包粒度的检测指对每个DNS数据包,仅从包头中提取出域名的字符特征,从而能够利用有限的处理资源对DNS隧道攻击进行高效地检测。
本申请中的所述DNS数据包对应的分类结果的准确度是基于决策树模型的好坏的,而对于一个训练好的决策树模型,其分类是一个顺序行的决策过程:从树的根部开始,每个节点对所述域名特征中一个特征进行取值范围的判断,依据判断结果从两个分支子节点中选择一个,重复此过程,直到到达代表分类结果的叶子节点(一棵树当中没有子结点(即度为0)的结点称为叶子结点,简称“叶子”; 叶子是指出度为0的结点,又称为终端结点 )。
本申请中根据所述域名特征查询所述分类表的目的在于识别出异常的DNS流量,因此使用二分类模型,分类结果为正常或是异常。而在数据平面可以模拟决策树的分类过程,对决策树的每一层需要比较的特征进行分支判断,得到结果后进入下一个阶段特征判断,但问题在于前后的判断结果存在数据依赖性,决策树每一层的特征比较需要划分到数据平面的不同处理单元中进行,而目前可编程交换机能支持的处理单元有限,一般每条流水线具有12-20个处理单元,这一定程度上限制了决策树的深度和精度。
进一步地,请继续参阅图1,S400、若所述分类结果为正常且所述数据平面在所述黑白名单中查询不到所述第一哈希值,则根据查询到的划分表,将每一个所述DNS域名均划分为主域名和子域名。
具体地,若所述数据平面判断所述分类结果为正常且在所述黑白名单中查询不到所述第一哈希值,则进一步地将每一个相应的所述DNS域名划分为主域名和子域名。
进一步地,所述若所述分类结果为正常且所述数据平面在所述黑白名单中查询不到所述第一哈希值,则根据查询到的划分表,将每一个所述DNS域名均划分为主域名和子域名的步骤具体包括:
S410、若所述数据平面判断所述分类结果为正常且在所述黑白名单中查询不到所述第一哈希值,则通过查询划分表中的流表,将每一个所述DNS域名均划分为主域名和子域名;其中,所述匹配动作表和所述分类表均是以所述流表的形式实现地。
具体地,若所述数据平面判断所述分类结果为正常且在所述黑白名单中查询不到所述第一哈希值,则通过查询划分表中的流表,将每一个所述DNS域名均划分为主域名和子域名,而对于一个完整的域名,将主域名定义为可以识别站点的部分,而子域定义为除去主域名后的标签;而DNS隧道攻击通常会固定主域名,将数据嵌入到子域名中,所以为了能够检测异常的主域名,首先需要从DNS域名中分离出主域名和子域名;而通常主域的长度是2或3,因此可以将域名前3个标签的哈希值映射到相应的主域名。具体地说,在数据平面中使用一个流表来匹配前3个标签的哈希值,并通过对应的匹配动作获得主域中标签的总数,然后根据主域的标签总数将标签分成子域和主域,从而同时得到所述主域名和所述子域名的划分表;即所述DNS数据包的所述第一哈希值同时没有匹配到所述黑名单和所述白名单,则进一步地通过查询主域名映射表(同样以所述流表形式实现 )获得DNS请求报文(属于所述DNS数据包中的一种,当所述DNS数据包是由本机向本地域名服务器发出,则被称为所述DNS请求报文)中域名对应的主域名长度,并将每一个所述DNS请求报文划分为所述主域名和所述子域名,同时得到所述主域名和所述子域名的划分表,以便后续对所述主域名和所述子域名计算得到对应的哈希值。
本发明中通过对不在所述黑白名单中的所述DNS数据包进行域名划分,得到所述划分表,以便后续可以直接利用所述划分表快速查找相应的所述DNS数据包。
进一步地,请继续参阅图1,S500、所述数据平面对所述主域名的不同子域名的第一哈希值分别进行哈希运算,得到所述主域名的不同子域名的第二哈希值;其中,第二哈希值由对所述标签哈希值进行二次哈希运算得到,所述第一哈希函数与所述第二哈希函数为同一哈希函数,区别为各自的哈希种子不同。
具体地,在所述数据平面将每一个所述DNS域名均划分为主域名和子域名,得到所述主域名和所述子域名的划分表后,进一步地对所述主域名的不同子域名的第一哈希值(所述标签哈希值)分别再次进行哈希运算,以便可以得到所述主域名的不同子域名的数量(所述第二哈希值)。
进一步地,所述数据平面对所述主域名的不同子域名的第一哈希值分别进行哈希运算,得到所述主域名的不同子域名的第二哈希值的步骤具体包括:
S510、所述数据平面利用第二哈希函数对所述主域名的第一哈希值和所述主域名的不同子域名的第一哈希值分别进行哈希运算,对应得到所述主域名的第二哈希值和所述主域名的不同子域名的第二哈希值。
具体地,在所述数据平面将每一个所述DNS域名均划分为主域名和子域名,得到所述主域名和所述子域名的划分表后,利用第二哈希函数对所述主域名的第一哈希值和所述主域名的不同子域名的第一哈希值分别再次进行哈希运算,例如,对于域名“www.***.com”,我们可以使用映射表来获得主域名“***.com”的长度为2。对于域名“www.lib.tsinghua.edu.cn”,主域名“Tsinghua.edu.cn”的长度为3。进而我们可以划分主域名和子域名并得到主域和子域的哈希值,对应得到所述主域名的第二哈希值(数量)和所述主域名的不同子域名的第二哈希值(数量),用于后续的流量收集。
本发明中通过对所述主域名的不同子域名的第一哈希值进行多重哈希,从而有效地提升不同所述DNS域名在时间窗口内的流量特征的统计精度。本发明中通过对所述主域名的不同子域名的第一哈希值再次进行哈希,即进行多重哈希,得到所述主域名的不同子域名的第二哈希值(数量),并以此作为判断是否超过预设阈值的条件。
进一步地,请继续参阅图1,S600、所述数据平面对所述主域名的不同子域名的第二哈希值的个数进行统计,若统计到的不同子域名的数量超过预设阈值,则将所述DNS域名视为隧道流量,并将所述主域名上报至控制平面;
具体地,在对所述主域名的不同子域名的第一哈希值分别进行哈希运算,得到所述主域名的不同子域名的数量后,对所述主域名的第二哈希值的个数进行统计,并将统计到的所述主域名的不同子域名的第二哈希值的个数与所述预设阈值进行比较,若超过预设阈值,则将所述DNS域名视为隧道流量,并将所述主域名上报至所述控制平面,以便所述控制平面进行下一步地操作。
进一步地,请参阅图4,S600、所述数据平面对所述主域名的不同子域名的第二哈希值的个数进行统计,若统计到的不同子域名的数量超过预设阈值,则将所述DNS域名视为隧道流量,并将所述主域名上报至控制平面的步骤包括:
S610、所述数据平面统计在固定的时间范围内所述主域名的不同子域名的第二哈希值的个数,得到不同子域名的数量,并判断是否大于所述预设阈值;
S620、若所述数据平面判断不同子域名的数量超过所述预设阈值,则将所述DNS域名视为隧道流量,并将所述主域名上报至所述控制平面中的控制器。
具体地,在对所述主域名的不同子域名的第二哈希值进行统计之前,先使用整个所述NDS域名的所述第二哈希值来查询布隆过滤器(布隆过滤器是一种具有空间高效性的概率数据结构,用于判断一个元素是否在一个集合中。在有限的内存中,布隆过滤器支持快速***和查询。在本申请中,布隆过滤器被用作分类器,用以确定子域名是否已经出现并被统计过),以确定所述DNS域名是否已经出现:如果已经出现过,则跳过后续处理并进行正常转发;如果它是一个新的域名,则对所述主域名的不同子域名的第二哈希值的个数进行统计:使用所述主域名的第二哈希值来索引Count-Min Sketch(Count-Min Sketch是一种概率数据结构,用于统计数据流中不同类型事件的频率,其使用哈希函数将不同的事件映射到频率,并可以返回特定事件类型频率的估计值。本发明中使用Count-Min Sketch作为频率表来统计每个主域名的不同子域名的数量),得到不同子域名的数量,并更新其中记录的所述子域名的数量的计数值,从而实现使用有限的内存统计每个主域名的不同子域名的数量;然后,将更新后的计数值与预设阈值进行比较,判断所述主域名的子域名的计数值是否异常,如果超过阈值,则将所述DNS域名视为隧道流量,并将所述DNS请求报文发送到所述控制平面中的控制器,以便所述控制器进行相应地处理。本发明中通过将多重哈希后得到的所述子域名的数量与所述预设阈值进行比较,将超过所述预设阈值的所述子域名相对应的所述DNS数据包判断为所述隧道流量,从而直接舍弃,有效地提升了对所述隧道流量筛选的效率。
进一步地,请继续参阅图1,S700、所述控制平面将对应的所述DNS域名更新到所述数据平面的黑名单中,以便滤除所述隧道流量。
具体地,当所述数据平面判断不同子域名的数量超过所述预设阈值后,所述控制平面将所述DNS域名视为隧道流量,并将对应的所述DNS域名更新到所述数据平面的黑名单中,从而实现有效地对所述黑名单进行实时更新。
进一步地,S700、所述控制平面将对应的所述DNS域名更新到所述数据平面的黑名单中,以便滤除所述隧道流量步骤包括:
S710、所述控制器将对应的所述主域名更新到所述数据平面的黑名单中,以便滤除所述隧道流量。
具体地,当所述数据平面判断不同子域名的数量超过所述预设阈值后,将所述DNS域名视为隧道流量,并将所述主域名上报至所述控制平面中的控制器,然后,所述控制器将对应的所述DNS域名更新到所述数据平面的黑名单中,以便对后续的DNS隧道流量进行过滤,从而实现有效地对所述黑名单进行实时更新,并根据更新后的所述黑名单对所述隧道流量进行有效地筛除。
进一步地,请参阅图5,所述基于可编程交换机的实时DNS隧道检测方法还包括:
S10、所述控制平面维护所述黑白名单,并同步更改所述黑白名单;
S20、所述控制平面记录所述主域名和所述子域名,并同步更改所述划分表;
S30、所述控制平面预先使用相关数据训练决策树模型,得到经过训练后的决策树模型,并将经过训练后的决策树模型中的分类规则转化为流表规则,得到所述流表。
具体地,当所述DNS数据包输入到交换机中时,同时,所述交换机中的所述控制平面会维护所述黑白名单,并同步更改所述黑白名单,会记录所述主域名和所述子域名,并同步更改所述划分表,还会预先使用相关数据训练决策树模型,得到经过训练后的决策树模型,并将经过训练后的决策树模型中的分类规则转化为流表规则,从而部署到数据平面的匹配表中(得到所述流表),实现将决策树规则转化为流表的方式,并将决策树模型部署到数据平面,以便可以实现以纳秒的速率对DNS数据包进行实时的分类。其中,所述控制平面指被部署在交换机本地的软件***或者是远程的服务器上的控制程,而且所述控制平面和所述数据平面通过特定的接口进行通信,从而实现实时交互通信。
本申请中通过将决策树中的每条路径转换为一条流表。那么对于决策树中的任何路径,将所判断的特征相同的节点进行合并,最终路径对应的节点数量都不超过输入特征的维数。对于每个节点,分类只需要判断节点对应特征的取值范围,这类似于数据平面中匹配动作表对传入的参数值进行比对的操作,从而可将决策树的分类过程转换为数据平面的流表匹配。如果某条流表发生匹配,则代表可以通过决策树中某条路径到达具有分类结果的叶子节点。例如,使用表示输入的维度为3的特征向量,每个特征的值都是整数,进而一条从决策树中提取的分类规则如下:
而具体地将分类规则转化为交换机中的流表规则,得到所述匹配动作表(以流表的形式实现),匹配动作表的执行代码如下所示:
进一步地,请参阅图6,本发明提供的一种基于可编程交换机的实时DNS隧道检测***,所述基于可编程交换机的实时DNS隧道检测***包括:数据平面10和控制平面20,所述数据平面10用于对输入的DNS数据包采用循环增量解析的方式进行解析、哈希和特征统计处理,得到带有多个标签的DNS域名、第一哈希值和域名特征;所述数据平面10用于根据所述第一哈希值查询预设的黑白名单,若查询所述第一哈希值在黑名单中,则将所述DNS数据包进行丢弃,若查询所述第一哈希值在白名单中,则将所述DNS数据包转发到第一预设端口;所述数据平面10用于根据所述域名特征,查询由经过训练后的决策树模型转换得到的分类表,得到所述DNS数据包对应的分类结果,并进行异常情况判断,若所述分类结果为异常,则将所述DNS数据包丢弃;所述数据平面10用于在所述分类结果为正常且所述黑白名单中查询不到所述第一哈希值时,根据查询到的划分表,将每一个所述DNS域名均划分为主域名和子域名;所述数据平面10用于对所述主域名的不同子域名的第一哈希值分别进行哈希运算,得到所述主域名的不同子域名的第二哈希值;所述数据平面10用于对所述主域名的不同子域名的第二哈希值的个数进行统计,若统计到的不同子域名的数量超过预设阈值,则将所述DNS域名视为隧道流量,并将所述主域名上报至控制平面20;所述控制平面20用于将对应的所述DNS域名更新到所述数据平面10的黑名单中,以便滤除所述隧道流量。
具体地,所述基于可编程交换机的实时DNS隧道检测***的主体分为所述数据平面10和所述控制平面20两部分;所述数据平面10指交换机具体处理数据包的硬件流水线;而所述控制平面20指被部署在交换机本地的软件***或者是远程的服务器上的控制程序,所述控制平面20和所述数据平面10之间则是通过特定的接口进行通信,从而实现实时交互通信。
在所述数据平面10中,首先,通过配置第二预设端口(特定预设端口)的回环属性,对解析、哈希和特征统计等处理步骤进行重循环操作,从而将所述DNS数据包重新发送到流水线进行处理,多次对输入的DNS数据包进行解析、哈希和特征统计等处理操作:那么,当所述DNS数据包被输入到所述数据平面10的交换机中时,所述数据平面10中的所述解析器先对输入的所述DNS数据包进行解析,得到带有多个标签的所述DNS域名;然后,利用第一哈希函数对所述DNS域名的标签进行哈希运算,得到所述DNS域名的所述第一哈希值,即对所述DNS域名中的每个标签进行计算,得到所述DNS域名的所述第一哈希值;再者,使用匹配动作表对所述DNS域名的特征进行统计,得到所述域名特征,即通过匹配动作表对所述DNS域名的标签的每个字节进行匹配,获取所述DNS域名对应的字符统计特征(所述域名特征,包括域名总字符数、大写字符的数量、数字字符的数量和标签的数量)。
当跳出重循环操作之后,接下来,先根据所述第一哈希值查询预设的黑白名单,若查询所述第一哈希值在黑名单中,则将所述DNS数据包进行丢弃,若查询所述第一哈希值在白名单中,则将所述DNS数据包转发到第一预设端口;同时,根据所述域名特征,查询由经过训练后的决策树模型转换得到的分类表,得到所述DNS数据包对应的分类结果,并进行异常情况判断,若所述分类结果为异常,则将所述DNS数据包丢弃;但是,若在所述分类结果为正常且所述黑白名单中查询不到所述第一哈希值时,则根据查询到的所述划分表中的流表,将每一个所述DNS域名均划分为主域名和子域名;并对所述主域名的不同子域名的第一哈希值分别进行哈希运算,得到所述主域名的不同子域名的第二哈希值;然后,对所述主域名的不同子域名的第二哈希值的个数进行统计,得到不同子域名的数量后与所述预设阈值进行比较,若统计到的不同子域名的数量超过预设阈值,则将所述DNS域名视为隧道流量,并将所述主域名上报至所述控制平面20;最后,所述控制平面20将对应的所述DNS域名更新到所述数据平面10的黑名单中,以便滤除所述隧道流量。其中,所述基于可编程交换机的实时DNS隧道检测***的框架图如图7所示,图中的域名数据库包括所述数据平面10的黑名单,决策树分类表就是经过训练后的决策树模型转换得到的分类表。
本发明中通过采用重循环操作将所述DNS数据包重新发送到流水线进行处理,多次对输入的DNS数据包进行解析、哈希和特征统计等处理操作,从而从所述DNS数据包那精准得到带有多个标签的DNS域名、第一哈希值和域名特征;并通过将决策树模型以流表的形式部署在可编程交换机中的数据平面10,以便实时处理高速的网络流量,对于各类基于DNS隧道的网络攻击均表现出较高的检测率,可以有效地防范各种基于DNS隧道的网络攻击,同时最大限度地降低对合法用户网络性能的影响。
更进一步地,本发明提供的一种计算机可读存储介质,所述计算机可读存储介质存储有基于可编程交换机的实时DNS隧道检测程序,所述基于可编程交换机的实时DNS隧道检测程序被处理器执行时实现如上所述的基于可编程交换机的实时DNS隧道检测方法的步骤;由于上述对所述针对稳定性元素筛选和查询的方法的步骤进行了详细的描述,在此不再赘述。
综上所述,本发明提供的一种基于可编程交换机的实时DNS隧道检测方法及相关设备,所述方法包括以下步骤:数据平面10对输入的DNS数据包采用循环增量解析的方式进行解析、哈希和特征统计处理,得到带有多个标签的DNS域名、第一哈希值和域名特征;然后查询第一哈希值是否在预设的黑白名单,若查询第一哈希值在黑名单中,则将DNS数据包进行丢弃,若查询第一哈希值在白名单中,则将DNS数据包转发到第一预设端口;接着根据域名特征,查询由经过训练后的决策树模型转换得到的分类表,并对得到的DNS数据包对应的分类结果进行判断是否为异常,若为异常,则将DNS数据包丢弃;若当分类结果为正常且查询到第一哈希值均不在黑白名单中,则根据查询到的划分表将每一个DNS域名均划分为主域名和子域名;再者对主域名的不同子域名的第一哈希值再次进行哈希运算,得到主域名的不同子域名的第二哈希值;最后对不同子域名的第二哈希值的个数进行统计,若统计到的不同子域名的数量超过预设阈值,则将DNS域名视为隧道流量,并将主域名上报至控制平面20;所述控制平面20将对应的DNS域名更新到数据平面10的黑名单中,以便滤除隧道流量。通过采用循环增量解析的方式对任意长度域名进行解析,并将决策树模型以流表的形式部署在数据平面10,实现对DNS隧道的全面检测。
可以理解的是,对本领域普通技术人员来说,可以根据本发明的技术方案及其发明构思加以等同替换或改变,而所有这些改变或替换都应属于本发明所附的权利要求的保护范围。
Claims (14)
1.一种基于可编程交换机的实时DNS隧道检测方法,其特征在于,所述基于可编程交换机的实时DNS隧道检测方法包括以下步骤:
数据平面对输入的DNS数据包采用循环增量解析的方式进行解析、哈希和特征统计处理,得到带有多个标签的DNS域名、第一哈希值和域名特征;
所述数据平面根据所述第一哈希值查询预设的黑白名单,若查询所述第一哈希值在黑名单中,则将所述DNS数据包进行丢弃,若查询所述第一哈希值在白名单中,则将所述DNS数据包转发到第一预设端口;
所述数据平面根据所述域名特征,查询由经过训练后的决策树模型转换得到的分类表,得到所述DNS数据包对应的分类结果,并进行异常情况判断,若所述分类结果为异常,则将所述DNS数据包丢弃;
若所述分类结果为正常且所述数据平面在所述黑白名单中查询不到所述第一哈希值,则根据查询到的划分表,将每一个所述DNS域名均划分为主域名和子域名;
所述数据平面对所述主域名的不同子域名的第一哈希值再次进行哈希运算,得到所述主域名的不同子域名的第二哈希值;
所述数据平面对所述主域名的不同子域名的第二哈希值的个数进行统计,若统计到的不同子域名的数量超过预设阈值,则将所述DNS域名视为隧道流量,并将所述主域名上报至控制平面;
所述控制平面将对应的所述DNS域名更新到所述数据平面的黑名单中,以便滤除所述隧道流量。
2.根据权利要求1所述的基于可编程交换机的实时DNS隧道检测方法,其特征在于,所述基于可编程交换机的实时DNS隧道检测方法还包括:
所述控制平面维护所述黑白名单,并同步更改所述黑白名单;
所述控制平面记录所述主域名和所述子域名,并同步更改所述划分表;
所述控制平面预先使用相关数据训练决策树模型,得到经过训练后的决策树模型,并将经过训练后的决策树模型中的分类规则转化为流表规则,得到所述流表。
3.根据权利要求1所述的基于可编程交换机的实时DNS隧道检测方法,其特征在于,所述数据平面对输入的DNS数据包采用循环增量解析的方式进行解析、哈希和特征统计处理,得到带有多个标签的DNS域名、第一哈希值和域名特征的步骤具体包括:
所述数据平面配置第二预设端口的回环属性后,利用解析器对输入的所述DNS数据包进行解析,得到带有多个标签的所述DNS域名;
所述数据平面利用第一哈希函数对所述DNS域名的标签进行哈希运算,得到所述DNS域名的所述第一哈希值;
所述数据平面使用匹配动作表对所述DNS域名的特征进行统计,得到所述域名特征。
4.根据权利要求1所述的基于可编程交换机的实时DNS隧道检测方法,其特征在于,所述数据平面根据所述第一哈希值查询预设的黑白名单,若查询所述第一哈希值在黑名单中,则将所述DNS数据包进行丢弃,若查询所述第一哈希值在白名单中,则将所述DNS数据包转发到第一预设端口的步骤具体包括:
所述数据平面将所述第一哈希值与预设的黑白名单中的匹配项分别进行匹配,若匹配到所述黑名单中的匹配项,则将所述DNS数据包进行丢弃,若匹配到所述白名单中的匹配项,则将所述DNS数据包转发到所述第一预设端口。
5.根据权利要求1所述的基于可编程交换机的实时DNS隧道检测方法,其特征在于,所述数据平面根据所述域名特征,查询由经过训练后的决策树模型转换得到的分类表,得到所述DNS数据包对应的分类结果,并进行异常情况判断,若所述分类结果为异常,则将所述DNS数据包丢弃的步骤具体包括:
所述数据平面控制经过训练后的决策树模型转换得到所述分类表;
所述数据平面根据所述域名特征查询所述分类表,得到所述DNS数据包对应的分类结果;
所述数据平面判断所述分类结果是否异常,若所述分类结果为异常,则将所述DNS数据包丢弃。
6.根据权利要求3所述的基于可编程交换机的实时DNS隧道检测方法,其特征在于,所述若所述分类结果为正常且所述数据平面在所述黑白名单中查询不到所述第一哈希值,则根据查询到的划分表,将每一个所述DNS域名均划分为主域名和子域名的步骤具体包括:
若所述数据平面判断所述分类结果为正常且在所述黑白名单中查询不到所述第一哈希值,则通过查询划分表中的流表,将每一个所述DNS域名均划分为主域名和子域名。
7.根据权利要求6所述的基于可编程交换机的实时DNS隧道检测方法,其特征在于,所述数据平面对所述主域名的不同子域名的第一哈希值再次进行哈希运算,得到所述主域名的不同子域名的第二哈希值的步骤具体包括:
所述数据平面利用第二哈希函数对所述主域名的第一哈希值和所述主域名的不同子域名的第一哈希值分别进行哈希运算,对应得到所述主域名的第二哈希值和所述主域名的不同子域名的第二哈希值。
8.根据权利要求6所述的基于可编程交换机的实时DNS隧道检测方法,其特征在于,所述数据平面对所述主域名的不同子域名的第二哈希值的个数进行统计,若统计到的不同子域名的数量超过预设阈值,则将所述DNS域名视为隧道流量,并将所述主域名上报至控制平面的步骤包括:
所述数据平面统计在固定的时间范围内所述主域名的不同子域名的第二哈希值的个数,得到不同子域名的数量,并判断是否大于所述预设阈值;
若所述数据平面判断不同子域名的数量超过所述预设阈值,则将所述DNS域名视为隧道流量,并将所述主域名上报至所述控制平面中的控制器。
9.根据权利要求8所述的基于可编程交换机的实时DNS隧道检测方法,其特征在于,所述控制平面将对应的所述DNS域名更新到所述数据平面的黑名单中,以便滤除所述隧道流量步骤包括:
所述控制器将对应的所述主域名更新到所述数据平面的黑名单中,以便滤除所述隧道流量。
10.根据权利要求1所述的基于可编程交换机的实时DNS隧道检测方法,其特征在于,所述域名特征包括:域名总字符数、大写字符的数量、数字字符的数量和标签的数量。
11.根据权利要求1所述的基于可编程交换机的实时DNS隧道检测方法,其特征在于,第一哈希值为标签哈希值,由对所述DNS域名的标签进行哈希运算得到;第二哈希值由对所述标签哈希值进行二次哈希运算得到。
12.根据权利要求7所述的基于可编程交换机的实时DNS隧道检测方法,其特征在于,所述第一哈希函数与所述第二哈希函数为同一哈希函数,区别为各自的哈希种子不同。
13.一种基于可编程交换机的实时DNS隧道检测***,其特征在于,所述基于可编程交换机的实时DNS隧道检测***包括:数据平面和控制平面;
所述数据平面用于对输入的DNS数据包采用循环增量解析的方式进行解析、哈希和特征统计处理,得到带有多个标签的DNS域名、第一哈希值和域名特征;
所述数据平面用于根据所述第一哈希值查询预设的黑白名单,若查询所述第一哈希值在黑名单中,则将所述DNS数据包进行丢弃,若查询所述第一哈希值在白名单中,则将所述DNS数据包转发到第一预设端口;
所述数据平面用于根据所述域名特征,查询由经过训练后的决策树模型转换得到的分类表,得到所述DNS数据包对应的分类结果,并进行异常情况判断,若所述分类结果为异常,则将所述DNS数据包丢弃;
所述数据平面用于在所述分类结果为正常且所述黑白名单中查询不到所述第一哈希值时,根据查询到的划分表,将每一个所述DNS域名均划分为主域名和子域名;
所述数据平面用于对所述主域名的不同子域名的第一哈希值分别进行哈希运算,得到所述主域名的不同子域名的第二哈希值;
所述数据平面用于对所述主域名的不同子域名的第二哈希值的个数进行统计,若统计到的不同子域名的数量超过预设阈值,则将所述DNS域名视为隧道流量,并将所述主域名上报至控制平面;
所述控制平面用于将对应的所述DNS域名更新到所述数据平面的黑名单中,以便滤除所述隧道流量。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有基于可编程交换机的实时DNS隧道检测程序,所述基于可编程交换机的实时DNS隧道检测程序被处理器执行时实现如权利要求1-12任一项所述的基于可编程交换机的实时DNS隧道检测方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210482202.9A CN114844704B (zh) | 2022-05-05 | 2022-05-05 | 基于可编程交换机的实时dns隧道检测方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210482202.9A CN114844704B (zh) | 2022-05-05 | 2022-05-05 | 基于可编程交换机的实时dns隧道检测方法及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114844704A CN114844704A (zh) | 2022-08-02 |
CN114844704B true CN114844704B (zh) | 2023-06-06 |
Family
ID=82567405
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210482202.9A Active CN114844704B (zh) | 2022-05-05 | 2022-05-05 | 基于可编程交换机的实时dns隧道检测方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114844704B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020181740A1 (zh) * | 2018-12-29 | 2020-09-17 | 长沙理工大学 | 一种高性能的openflow虚拟流表查找方法 |
CN112367312A (zh) * | 2020-10-30 | 2021-02-12 | 北京亚鸿世纪科技发展有限公司 | 一种研判dns隐蔽隧道的检测方法及装置 |
WO2021109669A1 (zh) * | 2019-12-05 | 2021-06-10 | 华为技术有限公司 | 恶意域名访问的检测方法、装置及计算机可读存储介质 |
CN113660275A (zh) * | 2021-08-18 | 2021-11-16 | 中国电信股份有限公司 | 域名***请求的处理方法、装置、电子设备和存储介质 |
-
2022
- 2022-05-05 CN CN202210482202.9A patent/CN114844704B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020181740A1 (zh) * | 2018-12-29 | 2020-09-17 | 长沙理工大学 | 一种高性能的openflow虚拟流表查找方法 |
WO2021109669A1 (zh) * | 2019-12-05 | 2021-06-10 | 华为技术有限公司 | 恶意域名访问的检测方法、装置及计算机可读存储介质 |
CN112367312A (zh) * | 2020-10-30 | 2021-02-12 | 北京亚鸿世纪科技发展有限公司 | 一种研判dns隐蔽隧道的检测方法及装置 |
CN113660275A (zh) * | 2021-08-18 | 2021-11-16 | 中国电信股份有限公司 | 域名***请求的处理方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114844704A (zh) | 2022-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108701187B (zh) | 用于混合硬件软件分布式威胁分析的设备和方法 | |
US10735379B2 (en) | Hybrid hardware-software distributed threat analysis | |
US10079846B2 (en) | Domain name system (DNS) based anomaly detection | |
US9514246B2 (en) | Anchored patterns | |
US9736115B2 (en) | Firewall packet filtering | |
Geravand et al. | Bloom filter applications in network security: A state-of-the-art survey | |
US9858051B2 (en) | Regex compiler | |
Zhang et al. | Real-time distributed-random-forest-based network intrusion detection system using Apache spark | |
US11743153B2 (en) | Apparatus and process for monitoring network behaviour of Internet-of-things (IoT) devices | |
US7782868B2 (en) | Two-stage computer network packet classification method and system | |
EP3905622A1 (en) | Botnet detection method and system, and storage medium | |
US7140041B2 (en) | Detecting dissemination of malicious programs | |
US20080186974A1 (en) | System and method to process data packets in a network using stateful decision trees | |
US20180367431A1 (en) | Heavy network flow detection method and software-defined networking switch | |
Bando et al. | Range hash for regular expression pre-filtering | |
CN114844704B (zh) | 基于可编程交换机的实时dns隧道检测方法及相关设备 | |
CN111950000A (zh) | 一种接入访问控制方法及设备 | |
CN112968906B (zh) | 一种基于多元组的Modbus TCP异常通讯检测方法和*** | |
Zou et al. | An identification decision tree learning model for self-management in virtual radio access network: IDTLM | |
CN114553546A (zh) | 基于网络应用的报文抓取的方法和装置 | |
Duan et al. | DNSGuard: In-network Defense against DNS Attacks | |
RU181257U1 (ru) | Межсетевой экран на основе кластеризации данных | |
Abdulhassan et al. | Many-field packet classification using CR-tree | |
Sacramento et al. | Detecting Botnets and Unknown Network Attacks in Big Traffic Data | |
Thames et al. | Bit vector algorithms enabling high-speed and memory-efficient firewall blacklisting |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |