本发明专利技术公开了一种基于机器学习的DNS服务器软件指纹识别系统和方法,所述系统由输入模块、特征提取模块(查询/响应→抽取特征)、本地预先训练生成的决策树分类模块、以及输出模块组成。本发明专利技术以用户所要检测的目标DNS服务器域名作为输入,系统在后台运行程序获得目标DNS服务器的请求/回包的特征记录,在训练好的预测模型中识别判断,最终输出目标DNS服务器的软件版本信息。本发明专利技术所述的基于机器学习的DNS服务器软件指纹识别系统和方法,采用机器学习的方式,检测和识别DNS服务器软件版本信息,提高DNS服务器的安全性。
【技术实现步骤摘要】
一种基于机器学习的DNS服务器软件指纹识别系统和方法
本专利技术涉及域名系统安全管理领域,具体涉及一种基于机器学习的DNS服务器软件版本信息识别的系统与方法。
技术介绍
域名系统(DNS)是一种分层结构的分布式命名管理系统,是因特网的核心元素之一,主要工作是负责将方便人类记忆的域名地址(如www.baidu.com)映射到因特网路由选择的IP地址,绝大部分的互联网应用功能都需要以域名系统作为基础来实现,一旦域名系统发生故障,无法提供正常的域名解析服务,那么,相当多数的互联网功能将随之失效,给用户带来不便和难以估计的损失,因此域名系统的安全性相当重要,引起了众多专家学者和运营商的关注和研究。不幸的是,域名系统一直以来遭受着大量的攻击,这些攻击问题主要来自于执行错误、DNS协议漏洞、伪造的DNS查询请求等原因。据中国互联网络信息中心(CNNIC)与国家域名安全联盟发布的《中国域名服务安全现状与态势分布报告(2014)》显示,我国顶级域名服务器普遍采用了Linux/Unix操作系统,两者占比达到98%以上,同时,在所采用的DNS服务软件方面,ISCBIND(BerkeleyInternetNameDomain)依然是绝大部分顶级域名服务器首选的DNS服务软件,比例占到了81.8%,但其中相当一大部分的BIND服务器依然使用的是较低版本,特别是其中32.6%的BIND服务软件开启了版本应答功能,这为域名服务器带来一定的安全隐患。因此,在网络安全政策允许下,特定DNS解析服务软件的bug或者弱点应该被准确识别和控制。网络扫描和远程应用检测通常被用来获取目标信息,指纹识别(fingerprint)技术将这一目标具象化。在DNS服务器软件指纹识别方面,大多数现有方法是主动方式,通过发送请求然后根据响应返回包特征判断。另外有研究学者提出了一种被动指纹识别技术,通过人工提取DNS服务器软件版本特征用到流量分析中去。这些方法存在着局部失效或者人工工作量大、特征信息更新缓慢的缺点。因此,本领域的技术人员致力于开发一种基于机器学习的DNS服务器软件指纹识别系统和方法,采用机器学习的方式,检测和识别DNS服务器软件版本信息,提高DNS服务器的安全性。
技术实现思路
有鉴于现有的DNS服务器软件指纹识别方法的缺陷,本专利技术提出了一种基于机器学习的检测识别DNS服务器软件版本信息系统和方法,利用开发人员先期在本地训练生成的决策树模块作为核心分类模块,以用户目标DNS服务器域名作为输入,程序化抽取该域名的查询/响应报文特征记录,作为决策树模块的输入特征,经过决策树模块决策分类得到最终的目标DNS服务器域名的版本信息。为了解决上述技术缺陷,本专利技术所述的一种基于机器学习的DNS服务器软件指纹识别系统,包括输入模块、特征提取模块、决策树分类模块和输出模块,其中,所述输入模块、特征提取模块、决策树分类模块和输出模块依次连接,所述特征提取模块被配置为在向特定的DNS服务器进行的查询和响应中抽取特征;所述决策树分类模块被配置为在本地训练生成,且产生DNS服务器的所述软件指纹以及相对应的版本信息。本专利技术还提供了一种基于机器学习检测DNS服务器软件指纹识别方法,其特征在于,包括以下步骤:第1步、建立DNS服务器软件版本信息数据集;第2步、根据第1步中的所述数据集转化抽取特征训练集;第3步、根据第2步中的所述训练集获得决策树分类模块;第4步、将第3步中得到的所述决策树分类模块集成到识别系统中,用于对于用户输入的目标域名的DNS服务器软件指纹和软件版本信息的输出。进一步地,第1步中,建立DNS服务器软件版本信息数据集的步骤包括:(1.1)在本地虚拟机上安装不同版本DNS服务器软件;(1.2)对于域名进行基于DNS查询包的查询请求;(1.3)利用tcpdump/tshark截取DNS通信流量得到pcap流量包;所述pcap流量包即DNS服务器软件版本信息数据集。进一步地,第2步中,转化抽取特征训练集的步骤包括:(2.1)以第1步得到的所述软件版本信息数据集作为输入,使用Python语言解析所述pcap流量包,得到每条查询/响应的记录;(2.2)在所述记录的内容中抽取出特征字段,汇总成特征训练集备用。进一步地,第3步中,获得决策树分类模块的步骤包括:(3.1)以第2步得到的特征训练集作为输入,运行决策树分类的机器学习算法,得到决策树分类模块。进一步地,第4步中:包括以下步骤:(4.1)将所述决策树分类模块与输入模块、查询/响应模块、输出模块连接组成完整的软件指纹识别系统;(4.2)对于用户输入的目标域名,输出DNS服务器软件指纹和软件版本信息。进一步地,第2.1步中,包括以下步骤:(2.1.1)使用python语言编写pcap文件解析程序,将原始截取的二进制格式pcap文件读取解析成为16进制字符文件;(2.1.2)根据pcap文件格式分离出应用层数据;(2.1.3)根据DNS消息格式的头格式,将每条消息记录提取出固定字段的值作为特征。进一步地,第2.1.3步中,所述固定字段包括Opcode、Authoritative、Recursionavailable和Replycode。进一步地,对于同一个域名的请求,将不同类型请求的返回包特征横向拼接,全部类型返回包特征拼接完全后就得到一条有效的训练集数据记录。本专利技术的
技术实现思路
:一种基于机器学习的DNS服务器软件指纹识别的系统方法,主要包括如下步骤:1.建立分类器模块:对于不同版本的DNS服务器软件,截取查询/响应流量包,使用python语言编写了pcap文件解析程序,将原始截取的二进制格式pcap文件读取解析成为16进制字符文件,并根据pcap文件格式分离出应用层(即DNS协议层)数据,然后再根据DNS消息格式即头格式,将每条消息记录提取出Opcode,Authoritative,Recursionavailable,Replycode等共计11固定字段的值作为特征,对于同一个域名的请求,将不同类型请求的返回包特征横向拼接,这样全部类型返回包特征拼接完全后就得到一条有效的训练集数据记录,按照同样的方法,将另外DNS解析软件版本或其他域名的返回包类似处理,由此可以得到一个完整的训练数据集。在此训练集上运行决策树分类算法,得到决策树分类器模块。2.程序化抽取特征:对于用户输入的目标DNS域名,我们利用步骤1所述建立分类器模型前期所做,将一系列类型的DNS查询请求程序化执行,并截取相关流量,程序自动抽取特征成记录,组成决策树分类器模块的样本输入。3.机器学习:利用步骤2所述程序化提取用户输入的目标DNS域名查询/响应报文特征,输入到预先建立的分类器模块中,分类器根据预先学习到的特征属性模式将该输入划分到已有的类别中去,输出结果到用户界面。附图说明图1是本专利技术的一种基于机器学习的DNS服务器软件指纹识别的方法流程;图2是本专利技术的决策树分类器模块部分结构图。具体实施方式参照图1所示,一种基于机器学习的DNS服务器软件指纹识别的方法系统,所述系统包括如下步骤:1.目标DNS服务器域名读入:用户将目标DNS服务器域名通过输入界面输入系统中。2.抽取目标DNS服务器域名特征:2.1系统程序自动向目标DNS服务器域名发送Typ本文档来自技高网...
【技术保护点】
一种基于机器学习的DNS服务器软件指纹识别系统,其特征在于,包括输入模块、特征提取模块、决策树分类模块和输出模块,其中,所述输入模块、特征提取模块、决策树分类模块和输出模块依次连接,所述特征提取模块被配置为在向特定的DNS服务器进行的查询和响应中抽取特征;所述决策树分类模块被配置为在本地训练生成,且产生DNS服务器的所述软件指纹以及相对应的版本信息。
【技术特征摘要】
1.一种基于机器学习的DNS服务器软件指纹识别系统,其特征在于,包括输入模块、特征提取模块、决策树分类模块和输出模块,其中,所述输入模块、特征提取模块、决策树分类模块和输出模块依次连接,所述特征提取模块被配置为在向特定的DNS服务器进行的查询和响应中抽取特征;所述决策树分类模块被配置为在本地训练生成,且产生DNS服务器的所述软件指纹以及相对应的版本信息。2.一种基于机器学习检测DNS服务器软件指纹识别方法,其特征在于,包括以下步骤:第1步、建立DNS服务器软件版本信息数据集;第2步、根据第1步中的所述数据集转化抽取特征训练集;第3步、根据第2步中的所述训练集获得决策树分类模块;第4步、将第3步中得到的所述决策树分类模块集成到识别系统中,用于对于用户输入的目标域名的DNS服务器软件指纹和软件版本信息的输出。3.根据权利要求2所述的基于机器学习检测DNS服务器软件指纹识别方法,其特征在于,第1步中,建立DNS服务器软件版本信息数据集的步骤包括:(1.1)在本地虚拟机上安装不同版本DNS服务器软件;(1.2)对于域名进行基于DNS查询包的查询请求;(1.3)利用tcpdump/tshark截取DNS通信流量得到pcap流量包;所述pcap流量包即DNS服务器软件版本信息数据集。4.根据权利要求3所述的基于机器学习检测DNS服务器软件指纹识别方法,其特征在于,第2步中,转化抽取特征训练集的步骤包括:(2.1)以第1步得到的所述软件版本信息数据集作为输入,使用Python语言解析所述pcap流量包,得到每条查询/响应的记录;(2...
【专利技术属性】
技术研发人员:邹福泰,周江林,裴蓓,潘理,李建华,
申请(专利权)人:上海交通大学,公安部第三研究所,
类型:发明
国别省市:上海,31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。