一种域名爆破方法、装置、存储介质及电子设备
文献发布时间:2023-06-19 09:41:38
技术领域
本申请涉及互联网领域,具体而言,涉及一种域名爆破方法、装置、存储介质及电子设备。
背景技术
子域名收集是在渗透测试过程中信息收集的必要手段,子域名收集常用的方式就是获取DNS服务器中所有存在的域名及其对应的地址。通常地,通过遍历字典向DNS服务器发送一连串的查询信息,DNS服务器收到查询信息后,若对应的域名存在,则会返回信息,若域名不存在,则会返回域名不存在的信息,整个过程被称为DNS爆破。
现有技术中,操作系统发送请求包后会等待相应时间,用于接收DNS服务器反馈的消息,直至响应超时,导致爆破速度较慢。因为需要等待相应时间用于接收返回包,导致操作系统每秒最多发1000~3000请求包。同时在进行DNS爆破时,会占用大量的系统描述符,会导致系统网络受到影响。
发明内容
本申请的目的在于提供一种域名爆破方法、装置、存储介质及电子设备,以至少部分改善上述问题。
为了实现上述目的,本申请实施例采用的技术方案如下:
第一方面,本申请实施例提供一种域名爆破方法,所述方法包括:
处理器通过独立接口向网卡传输查询包,其中,所述查询包包括目标标识、待爆破域名和目标DNS服务器的地址;
所述处理器获取所述网卡传输的所述目标DNS服务器反馈的数据包;
所述处理器解析包含所述目标标识的数据包,获得与所述待爆破域名匹配的爆破结果,其中,所述爆破结果包含所述待爆破域名的对应的IP地址。
第二方面,本申请实施例提供一种域名爆破装置,所述装置包括:
传输单元,用于处理器通过独立接口向网卡传输查询包,其中,所述查询包包括目标标识、待爆破域名和目标DNS服务器的地址;
所述传输单元还用于所述处理器获取所述网卡传输的所述目标DNS服务器反馈的数据包;
处理单元,用于所述处理器解析包含所述目标标识的数据包,获得与所述待爆破域名匹配的爆破结果,其中,所述爆破结果包含所述待爆破域名的对应的IP地址。
第三方面,本申请实施例提供一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述的方法。
第四方面,本申请实施例提供一种电子设备,所述电子设备包括:处理器和存储器,所述存储器用于存储一个或多个程序;当所述一个或多个程序被所述处理器执行时,实现上述的方法。
相对于现有技术,本申请实施例所提供的一种域名爆破方法、装置、存储介质及电子设备中,处理器通过独立接口向网卡传输查询包,查询包包括目标标识、待爆破域名和目标DNS服务器的地址;处理器获取网卡传输的目标DNS服务器反馈的数据包;处理器解析包含目标标识的数据包,获得与待爆破域名匹配的爆破结果,其中,爆破结果包含待爆破域名对应的IP地址。因为独立接口独立于操作系统,所以查询包的发送和数据包的接收均不经过操作系统,不会占用操作系统中的标识符。并且可以持续发包,不用设置等待时间,实现快速发包的目的。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它相关的附图。
图1为本申请实施例提供的电子设备的结构示意图;
图2为本申请实施例提供的域名爆破方法的流程示意图;
图3为本申请实施例提供的查询包的部分示意图;
图4为本申请实施例提供的数据包的部分示意图;
图5为本申请实施例提供的爆破结果的部分示意图;
图6为本申请实施例提供的域名爆破方法的另一种流程示意图;
图7为本申请实施例提供的域名爆破方法的另一种流程示意图;
图8为本申请实施例提供的域名爆破方法的另一种流程示意图;
图9为本申请实施例提供的查询字段示意图;
图10为本申请实施例提供的域名爆破装置的单元示意图。
图中:10-处理器;11-存储器;12-总线;13-网卡;201-传输单元;202-处理单元。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
在本申请的描述中,需要说明的是,术语“上”、“下”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该申请产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。
在本申请的描述中,还需要说明的是,除非另有明确的规定和限定,术语“设置”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
子域名收集是在渗透测试过程中信息收集的必要手段,子域名收集常用的方式就是获取DNS服务器中所有存在的域名及其对应的地址。通常地,通过遍历字典向DNS服务器发送一连串的查询信息,DNS服务器收到查询信息后,若对应的域名存在,则会返回信息,若域名不存在,则会返回域名不存在的信息,整个过程被称为DNS爆破。现有技术中,操作系统发送请求包后会等待相应时间,用于接收DNS服务器反馈的消息,直至响应超时,导致爆破速度较慢。因为需要等待相应时间用于接收返回包,导致操作系统每秒最多发1000~3000请求包。同时在进行DNS爆破时,会占用大量的系统描述符,会导致系统网络受到影响。
本申请通过提供一种使用pcap底层进行发包,修改DNS包的部分信息,达到发送数据包与接收数据包的目的,同时发送与接收两种动作分离,使DNS爆破的发包速度得到极大的提升,相对于现有技术,速度可以提升100倍。
本申请实施例中,DNS域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。DNS域名系统作为将域名和IP地址相互映射的一个分布式数据库,能够使用户更方便地访问互联网。DNS使用TCP和UDP端口。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。DNS爆破是指通过枚举法,多次向DNS服务器发送请求,获得域名。PCAP是一个独立于操作系统的用户层包捕获的API接口,为底层网络监测提供了一个可移植的框架。
本申请实施例提供了一种电子设备,可以是服务器或其他计算机设备。请参照图1,电子设备的结构示意图。电子设备包括处理器10、存储器11、总线12。处理器10、存储器11通过总线12连接,处理器10用于执行存储器11中存储的可执行模块,例如计算机程序。
处理器10可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,域名爆破方法的各步骤可以通过处理器10中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器10可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital SignalProcessor,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
存储器11可能包含高速随机存取存储器(RAM:Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。
总线12可以是ISA(Industry Standard Architecture)总线、PCI(PeripheralComponent Interconnect)总线或EISA(Extended Industry Standard Architecture)总线等。图1中仅用一个双向箭头表示,但并不表示仅有一根总线12或一种类型的总线12。
存储器11用于存储程序,例如域名爆破装置对应的程序。域名爆破装置包括至少一个可以软件或固件(firmware)的形式存储于存储器11中或固化在电子设备的操作系统(operating system,OS)中的软件功能模块。处理器10在接收到执行指令后,执行所述程序以实现域名爆破方法。
可能地,本申请实施例提供的电子设备还包括网卡13。网卡13通过总线与处理器10连接。处理器10可以通过网卡13与其他服务器(DNS服务器)进行通讯。
应当理解的是,图1所示的结构仅为电子设备的部分的结构示意图,电子设备还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。
本发明实施例提供的一种域名爆破方法,可以但不限于应用于图1所示的电子设备,具体的流程,请参考图2:
S101,处理器通过独立接口向网卡传输查询包。
其中,查询包包括目标标识、待爆破域名和目标DNS服务器的地址。
可选地,该独立接口可以被理解为与电子设备的操作系统互不关联的接口。由于其与操作系统之间相互独立,从而使得在信息传输中,接写入网卡进行发包,不需要经过操作系统中发送查询包后的等待时间。
S104,处理器获取网卡传输的目标DNS服务器反馈的数据包。
S109,处理器解析包含目标标识的数据包,获得与待爆破域名匹配的爆破结果。
其中,爆破结果包含待爆破域名对应的IP地址。
可选地,查询包包括UDP数据段,目标标识为UDP数据段的标志位;或者查询包包括DNS数据段,目标标识为DNS数据段的ID字段,当然地,查询包也可以同时包含UDP数据段和DNS数据段,目标标识也同时包含UDP数据段的标志位和DNS数据段的ID字段。请参考图3和图4,图3和图4分别为查询包的部分示意图和数据包的部分示意图。其中,Source Port表示UDP数据段的标志位,transaction ID表示DNS数据段的ID字段。UDP数据段的标志位的取值范围为1~65535,DNS数据段的ID字段的取值范围为1~65535。可选地,将UDP数据段的标志位和/或DNS数据段的ID字段设置为特定的值,可以起到标识作用。例如,UDP数据段的标志位为10000,DNS数据段的ID字段设置为0X0064。
综上所述,本申请实施例提供的域名爆破方法中,处理器通过独立接口向网卡传输查询包,查询包包括目标标识、待爆破域名和目标DNS服务器的地址;处理器获取网卡传输的目标DNS服务器反馈的数据包;处理器解析包含目标标识的数据包,获得与待爆破域名匹配的爆破结果,其中,爆破结果包含待爆破域名对应的IP地址。因为独立接口独立于操作系统,所以查询包的发送和数据包的接收均不经过操作系统,不会占用操作系统中的标识符。并且可以持续发包,不用设置等待时间,实现快速发包的目的。
可选地,对于上述实施例中涉及的独立接口,可以采用Pcap接口(又称,Libpcap)。其原因在于Libpcap是Unix/Linux平台下的网络数据包捕获数据库。它是一个独立于系统的用户级数据包捕获API接口,为底层网络监测提供了一个可以移植的框架。工作原理:一个包捕获机制包含三个主要部分,分别是面向底层的包捕获引擎,面向中间层的数据包过滤器,面向应用层的用户接口。Linux操作系统对于数据包的处理流程是从底到上的方式,依次经历网络接口卡、网卡驱动层、数据链路层、IP层、传输层,最后到达应用程序。Libpcap也是基于这种原理,Libpcap的捕获机制并不影响Linux操作系统中网络协议栈对数据包的处理。对应用程序而言,Libpcap包捕获机制只是提供了一个统一的API接口,用户只需要按照相关的编程流程,简单地调用若干函数就可以捕获到感兴趣的数据包。
用户API是Libpcap面向上层应用程序提供的编程接口,用户通过调用相关的函数实现数据包的捕获或者发送。具体来说,Libpcap的工作原理可以描述为,当一个数据包到达网卡时,Libpcap利用创建的套接字从链路层驱动程序中获得该数据包的拷贝,即旁路机制,同时通过Tap函数将数据包发给BPF过滤器。BPF过滤器根据用户已经定义好的过滤过则对数据包进行逐一匹配,若匹配成功则放入内核缓冲区,并传递给用户缓冲区,匹配失败则直接丢弃。如果没有设置过滤规则,所有的数据包都将放入内核缓冲区,并传递给用户缓冲区。
具体地,通过使用Pcap接口将查询包写入网卡,进行发包。可选地,在发送数据包的同时开启另一个监听线程(可能地,另一个Pcap接口)用于监听网卡,实现发送与接收分离,从而大幅度提高了速度。由于直接写入网卡进行发包,不需要经过操作系统中发送查询包后的等待时间,每秒速度可达到300,000/s,速度提升100倍。
对于图2中的爆破结果,本申请实施例还提供了一种可能的实现方式,请参考图5,图5为爆破结果的部分示意图。
如图5所示,待爆破域名为www.baidu.com,待爆破域名解析为www.a.shifen.com,www.a.shifen.com再次被解析为www.wshifen.com。www.wshifen.com对应的IP地址为104.193.88.77和104.193.88.123。待爆破域名www.baidu.com的IP的地址为104.193.88.77和104.193.88.123。
在图2的基础上,关于处理器10如何获取数据包,本申请实施例还提供了一种可能的实现方式,请参考图6,域名爆破方法还包括:
S102,网卡向目标DNS服务器传输查询包,并接收目标DNS服务器反馈的数据包。
S103,网卡将数据包传输给处理器。
具体地,网卡13通过另一组监听线程将接收到的所有数据包均传输给处理器10。
在图2的基础上,关于如何获取爆破结果,本申请实施例还提供了一种可能的实现方式,请参考图7,域名爆破方法还包括:
S107,处理器判断数据包是否存在爆破结果。若是,则执行S109;若否,则执行S108。
具体地,可以通过获取DNS应答字段ANCount判断是否存在爆破接口。若ANCount大于0,则此域名存在,执行S109,反之,表示此域名不存在,执行S108。
S108,处理器确定目标DNS服务器中不存在待爆破域名。
在图2的基础上,关于如何快速获取爆破结果,本申请实施例还提供了一种可能的实现方式,请参考图8,域名爆破方法还包括:
S105,处理器判断数据包是否包含目标标识。若是,则执行S109;若否,则执行S106。
具体地,请参考图3和图4,当数据包中包含目标标识(UDP数据段的标志位和/或DNS数据段的ID字段)时,说明该数据包为DNS服务器对应待爆破域名的查询包所反馈的;此时执行S109;反之,则执行S106。
S106,处理器删除未包含目标标识的数据包。
可选地,可以根据DNS协议的定义,在DNS Query字段加入需要查询的域名,如www.baidu.com发送查询包,即可完成对应域名的爆破,如图9所示。
请参阅图10,图10为本申请实施例提供的一种域名爆破装置,可选的,该域名爆破装置被应用于上文所述的电子设备。
域名爆破装置包括:传输单元201和处理单元202。
传输单元201,用于处理器通过独立接口向网卡传输查询包,其中,查询包包括目标标识、待爆破域名和目标DNS服务器的地址。可选地,传输单元201可以执行上述的S101。
传输单元201还用于处理器获取网卡传输的目标DNS服务器反馈的数据包。可选地,传输单元201可以执行上述的S104。
处理单元202,用于处理器解析包含目标标识的数据包,获得与待爆破域名匹配的爆破结果,其中,爆破结果包含待爆破域名的对应的IP地址。可选地,处理单元202可以执行上述的S109。
可选地,处理单元202还用于处理器判断数据包是否包含目标标识;若是,则处理器解析包含目标标识的数据包,获得与待爆破域名匹配的爆破结果;若否,则处理器删除未包含目标标识的数据包。可选地,处理单元202可以执行上述的S105和S106。
需要说明的是,本实施例所提供的域名爆破装置,其可以执行上述方法流程实施例所示的方法流程,以实现对应的技术效果。为简要描述,本实施例部分未提及之处,可参考上述的实施例中相应内容。
本发明实施例还提供了一种存储介质,该存储介质存储有计算机指令、程序,该计算机指令、程序在被读取并运行时执行上述实施例的域名爆破方法。该存储介质可以包括内存、闪存、寄存器或者其结合等。
下面提供一种电子设备,可以是服务器或其他计算机设备,该电子设备如图1所示,可以实现上述的域名爆破方法;具体的,该电子设备包括:处理器10,存储器11、总线12以及网卡13。处理器10可以是CPU。存储器11用于存储一个或多个程序,当一个或多个程序被处理器10执行时,执行上述实施例的域名爆破方法。网卡13用于与其他终端进行通讯。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其它的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
- 一种域名爆破方法、装置、存储介质及电子设备
- 一种域名检测方法、装置、电子设备及存储介质