一种基于机器学习的DNS服务器软件指纹识别系统和方法与流程

文档序号:12739903阅读:1425来源:国知局
一种基于机器学习的DNS服务器软件指纹识别系统和方法与流程

本发明涉及域名系统安全管理领域,具体涉及一种基于机器学习的DNS服务器软件版本信息识别的系统与方法。



背景技术:

域名系统(DNS)是一种分层结构的分布式命名管理系统,是因特网的核心元素之一,主要工作是负责将方便人类记忆的域名地址(如www.baidu.com)映射到因特网路由选择的IP地址,绝大部分的互联网应用功能都需要以域名系统作为基础来实现,一旦域名系统发生故障,无法提供正常的域名解析服务,那么,相当多数的互联网功能将随之失效,给用户带来不便和难以估计的损失,因此域名系统的安全性相当重要,引起了众多专家学者和运营商的关注和研究。

不幸的是,域名系统一直以来遭受着大量的攻击,这些攻击问题主要来自于执行错误、DNS协议漏洞、伪造的DNS查询请求等原因。据中国互联网络信息中心(CNNIC)与国家域名安全联盟发布的《中国域名服务安全现状与态势分布报告(2014)》显示,我国顶级域名服务器普遍采用了Linux/Unix操作系统,两者占比达到98%以上,同时,在所采用的DNS服务软件方面,ISC BIND(Berkeley Internet Name Domain)依然是绝大部分顶级域名服务器首选的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、Recursion available和Reply code。

进一步地,对于同一个域名的请求,将不同类型请求的返回包特征横向拼接,全部类型返回包特征拼接完全后就得到一条有效的训练集数据记录。

本发明的技术内容:一种基于机器学习的DNS服务器软件指纹识别的系统方法,主要包括如下步骤:

1.建立分类器模块:对于不同版本的DNS服务器软件,截取查询/响应流量包,使用python语言编写了pcap文件解析程序,将原始截取的二进制格式pcap文件读取解析成为16进制字符文件,并根据pcap文件格式分离出应用层(即DNS协议层)数据,然后再根据DNS消息格式即头格式,将每条消息记录提取出Opcode,Authoritative,Recursion available,Reply code等共计11固定字段的值作为特征,对于同一个域名的请求,将不同类型请求的返回包特征横向拼接,这样全部类型返回包特征拼接完全后就得到一条有效的训练集数据记录,按照同样的方法,将另外DNS解析软件版本或其他域名的返回包类似处理,由此可以得到一个完整的训练数据集。在此训练集上运行决策树分类算法,得到决策树分类器模块。

2.程序化抽取特征:对于用户输入的目标DNS域名,我们利用步骤1所述建立分类器模型前期所做,将一系列类型的DNS查询请求程序化执行,并截取相关流量,程序自动抽取特征成记录,组成决策树分类器模块的样本输入。

3.机器学习:利用步骤2所述程序化提取用户输入的目标DNS域名查询/响应报文特征,输入到预先建立的分类器模块中,分类器根据预先学习到的特征属性模式将该输入划分到已有的类别中去,输出结果到用户界面。

附图说明

图1是本发明的一种基于机器学习的DNS服务器软件指纹识别的方法流程;

图2是本发明的决策树分类器模块部分结构图。

具体实施方式

参照图1所示,一种基于机器学习的DNS服务器软件指纹识别的方法系统,所述系统包括如下步骤:

1.目标DNS服务器域名读入:用户将目标DNS服务器域名通过输入界面输入系统中。

2.抽取目标DNS服务器域名特征:

2.1系统程序自动向目标DNS服务器域名发送Type为A、AAAA、NS、PTR等多达几十种类型的查询请求报文。

2.2在系统程序发包查询的同时,系统后台运行流量截取程序将步骤2.1所述的查询请求/响应包截取成pcap包保存。

2.3对于步骤2.2得到的pcap包,根据DNS消息报文格式,使用编写好的程序将每条消息记录提取出Opcode,Authoritative,Recursion available,Reply code等共计11固定字段的值作为特征,对于同一个域名的请求,将不同类型请求的返回包特征横向拼接,这样全部类型返回包特征横向拼接完全后就得到一条有效的特征数据记录。

3.基于机器学习分类:如图2所示的决策树分类器结构,我们将步骤2中得到样本特征数据输入到预先建立的决策树分类器模块中,它从决策树的树根进入,在树的每一个节点通过对样本的某个属性的判断选择不同的路径,以此类推逐步下降到叶子节点,每个叶子节点是一种DNS服务器软件版本,从而可以得到输入样本所属的类别。

4.将步骤3中的得到的结果通过输出模块格式化输出到用户界面,完成目标DNS服务器软件指纹识别工作。

以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术无需创造性劳动就可以根据本发明的构思做出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1