应用于渗透测试的子域名发现方法及系统与流程

文档序号:26007525发布日期:2021-07-23 21:26阅读:161来源:国知局
应用于渗透测试的子域名发现方法及系统与流程

本发明属于计算机网络安全的渗透测试技术领域,具体涉及应用于渗透测试的子域名发现方法及系统。



背景技术:

子域名是域名系统(dns)的层次结构。域名系统是将域名和ip地址相互映射的一个分布式数据库。主域名泛指处在顶级域名或国家域名下,例如:mytest.com.cn、mytest.cn。

现有子域名发现技术主要应用在渗透测试的信息收集过程中。在渗透人员进行渗透测试时,收集子域名是资产信息收集最重要的一步,结果的多少和覆盖度决定了渗透目标画像是否完整,只有发现越多越全的子域名,才会解析得更多的ip和应用服务。

现有的子域名发现方法,参见图1,主要包括以下三个步骤:

1、利用公开的dns解析记录查询。

缺点:域名服务器不需要记录所有下属域名和主机的信息,导致了如果某些子域名的缓存记录只存在于未公开dns解析记录的服务器上,则无法查询到其与主机的映射关系,进而无法获取到该子域名。

2、利用子域名词汇字典,进行穷举爆破。

缺点:顶级域名服务器规定了所有节点的标记只能由三类字符组成:26个英文字母(a~z)、10个阿拉伯数字(0~9)和英文连号词(-),并且标记的长度不得超过22个字符。即按照顶级域名服务器规定的策略,单个节点可能存在c(27,1)+c(27,2)+…+c(27,22)种排列组合方式,所以该方法得到的结果不能全部覆盖子域名。

3、对以上两个步骤采集到的结果,进行数据清理,最终得到子域名结果集合。

综上所述,若是遇到爆破字典中未存在,或者是公开的dns解析记录中没有的值,则无法发现这个二级域名。这就导致了渗透测试人员在进行资产信息收集过程中,无法有效形成渗透目标画像,影响渗透测试的效果。



技术实现要素:

针对现有技术中的缺陷,本发明提供一种应用于渗透测试的子域名发现方法及系统,提高子域名发现的覆盖率。

第一方面,一种应用于渗透测试的子域名发现方法,包括以下步骤:

s1:构建短词汇特征库和子域名命名规范库;

s2:利用公开的dns解析记录和/或子域名词汇字典发现录入的主域名中子域名,得到子域名初筛结果集;

s3:利用短词汇特征库和子域名命名规范库对子域名初筛结果集进行提取,将提取到的特征加入预设的子域名结果集;

s4:判断当前是否满足预设的迭代条件,如果是,输出子域名结果集;如果不是,返回步骤s3。

优选地,所述短词汇特征库包括通用短词汇特征库和行业短词汇特征库;

通用短词汇特征库通过以下方法构建:利用机器学习算法对预设的常见词进行训练,提取常见词的特征,形成所述通用短词汇特征库;

行业短词汇特征库通过以下方法构建:利用机器学习算法对录入的行业关键字或业务关键字进行训练,提取行业关键字或业务关键字的特征,形成所述行业短词汇特征库。

优选地,所述子域名命名规范库通过以下方法构建:利用所述机器学习算法对录入的子域名命名规则进行训练,形成所述子域名命名规范库。

优选地,所述利用短词汇特征库和子域名命名规范库对子域名初筛结果集进行提取具体包括:

遍历子域名命名规范库的每一个子域名命名规则;

分别根据每一个子域名命名规则和所述短词汇特征库抽取子域名初筛结果集中的特征,将每次抽取到的特征加入子域名结果集。

优选地,所述子域名发现方法在每次抽取到特征之后,还包括:

对抽取到的特征进行数据校验和数据清洗。

第二方面,一种应用于渗透测试的子域名发现系统,包括:

本地数据库:用于构建并存储短词汇特征库和子域名命名规范库;

筛选单元:用于利用公开的dns解析记录和/或子域名词汇字典发现录入的主域名中子域名,得到子域名初筛结果集,利用短词汇特征库和子域名命名规范库对子域名初筛结果集进行提取,将提取到的特征加入预设的子域名结果集,判断当前是否满足预设的迭代条件,如果是,输出子域名结果集。

优选地,所述短词汇特征库包括通用短词汇特征库和行业短词汇特征库;

通用短词汇特征库通过以下方法构建:利用机器学习算法对预设的常见词进行训练,提取常见词的特征,形成所述通用短词汇特征库;

行业短词汇特征库通过以下方法构建:利用机器学习算法对录入的行业关键字或业务关键字进行训练,提取行业关键字或业务关键字的特征,形成所述行业短词汇特征库。

优选地,所述子域名命名规范库通过以下方法构建:利用所述机器学习算法对录入的子域名命名规则进行训练,形成所述子域名命名规范库。

优选地,所述筛选单元具体用于:

遍历子域名命名规范库的每一个子域名命名规则;

分别根据每一个子域名命名规则和所述短词汇特征库抽取子域名初筛结果集中的特征,将每次抽取到的特征加入子域名结果集。

优选地,所述筛选单元还用于:对抽取到的特征进行数据校验和数据清洗。

由上述技术方案可知,本发明提供的子域名发现方法,能够有效地解决现有子域名发现方法覆盖度不足的缺陷。该方法利用不断提取子域名命名规则以及子域名的特征,通过持续训练短词汇特征库和子域名命名规范库,大大提高了发现的效果和子域名发现的覆盖度。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。

图1为背景技术提供的现有子域名发现方法的流程图。

图2为本发明实施例一提供的子域名发现方法的流程图。

图3为本发明实施例一提供的子域名中特征提取的示意图。

图4为本发明实施例一提供的子域名命名规则提取的示意图。

具体实施方式

下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只作为示例,而不能以此来限制本发明的保护范围。需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本发明所属领域技术人员所理解的通常意义。

应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。

如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。

实施例一:

一种应用于渗透测试的子域名发现方法,参见图2,包括以下步骤:

s1:构建短词汇特征库和子域名命名规范库;

所述短词汇特征库包括通用短词汇特征库和行业短词汇特征库;

通用短词汇特征库通过以下方法构建:利用机器学习算法对预设的常见词进行训练,提取常见词的特征,形成所述通用短词汇特征库;常见词包括常见的中英文词汇、互联网热词、社交媒体名称、地名等等。通用短词汇特征库为字母和/或数字组合。短词汇特征库也可以选用现有的开源短词汇特征库。

行业短词汇特征库通过以下方法构建:利用机器学习算法对录入的行业关键字或业务关键字进行训练,提取行业关键字或业务关键字的特征,形成所述行业短词汇特征库。

具体地,以下以mytest.com为例,假设主域mytest.com所处行业为xx行业,xx行业中有行业关键字“新闻”、“广播”、“直播”,主域名mytest.com的业务关键字有“亚运会”,进行训练后提取短词汇xinwen、xw、new、news、guangbo、gb、radio、radios、zhibo、zb、live等等,对应可提取相近短词汇特征库集a、b、c等等。

优选地,所述子域名命名规范库通过以下方法构建:利用所述机器学习算法对录入的子域名命名规则进行训练,形成所述子域名命名规范库。

具体地,子域名命名规则可以由短词汇特征库和录入的子域名得到。假设短词汇特征库中存在weixin,wx,test,api。当前的录入mytest.com子域名有weixin-test.mytest.com、weixin123.mytest.com,weixin1.mytest.com,weixinapi.mytest.com。则提取出的子域名命名规则(n,m指代短词汇特征;\d{3}为正则表达式,指代3个数字)为:n-m.mytest.com,n\d{3}.mytest.com,n\d{1}.mytest.com,nm.mytest.com。

s2:利用公开的dns解析记录和/或子域名词汇字典发现录入的主域名中子域名,得到子域名初筛结果集;

s3:利用短词汇特征库和子域名命名规范库对子域名初筛结果集进行提取,将提取到的特征加入预设的子域名结果集,具体包括:

遍历子域名命名规范库的每一个子域名命名规则;

分别根据每一个子域名命名规则和所述短词汇特征库抽取子域名初筛结果集中的特征,将每次抽取到的特征加入子域名结果集。

s4:判断当前是否满足预设的迭代条件,如果是,输出子域名结果集;如果不是,返回步骤s3;

具体地,迭代的过程为:遍历子域名命名规范库,以n-\d{3}命名规范规则(如subdomain123)为例,遍历短词汇特征库中的特征,将其当为n,遍历0-9中的3个数字的组合数将其当为\d{3}。迭代结束的条件是遍历完子域名命名规范库后退出迭代。

例如常见短词汇(test、api、weixin、weibo)、地名短词汇(guangdong、shenzhen)、行业短词汇(tts)。命名规范特征库(n,m指代短词汇,mytest.com为主域名):n.mytest.com、nm.mytest.com、n-\d{1}.mytest.com、n-m.mytest.com。

以n-\d{1}.mytest.com命名规范规则为例,遍历短词汇特征库,最终得到的特征为:test-1.mytest.com,,test-2.mytest.com,…,test-9.mytest.com,weixin1.mytest.com,weixin2.mytest.com,…,weixin9.mytest.com,以此类推,直至子域名命名规范库被遍历完毕。

该方法的子域名结果集可以存在本地数据库中。图3、4为每次迭代提取特征的过程:在子域名初筛结果集中进行匹配提取,根据匹配的结果进行结构分析,提取命名规则。如www.mytest.com,根据短词汇匹配后(n,m指代短词汇,下同),结构为n.mytest.com;如test123.mytest.com,结果为n123.mytest.com;如guangdongapi.mytest.com,结果为nm.mytest.com。

优选地,所述子域名发现方法在每次抽取到特征之后,还包括:对抽取到的特征进行数据校验和数据清洗。

具体地,该方法在每次提取到特征后,对提取到的特征进行数据校验,由于提取到的特征可能存在泛域名解析结果(例如利用通配符*(星号)来做次级域名,以实现所有的次级域名均指向同一ip地址),所以需要进行校验。校验过程为判断提取到的特征是否存在泛域名解析的域名,如果存在,则将其过滤掉。然后对校验后的特征进行清洗,遍历校验后的特征,根据dns记录类型进行过滤,保留类型为:a记录、aaaa记录、cname记录、ns记录的特征。

该子域名发现方法,能够有效地解决现有子域名发现方法覆盖度不足的缺陷。该方法利用不断提取子域名命名规则以及子域名的特征,通过持续训练短词汇特征库和子域名命名规范库,大大提高了发现的效果和子域名发现的覆盖度。

实施例二:

一种应用于渗透测试的子域名发现系统,包括:

本地数据库:用于构建并存储短词汇特征库和子域名命名规范库;

筛选单元:用于利用公开的dns解析记录和/或子域名词汇字典发现录入的主域名中子域名,得到子域名初筛结果集,利用短词汇特征库和子域名命名规范库对子域名初筛结果集进行提取,将提取到的特征加入预设的子域名结果集,判断当前是否满足预设的迭代条件,如果是,输出子域名结果集。

优选地,所述短词汇特征库包括通用短词汇特征库和行业短词汇特征库;

通用短词汇特征库通过以下方法构建:利用机器学习算法对预设的常见词进行训练,提取常见词的特征,形成所述通用短词汇特征库;

行业短词汇特征库通过以下方法构建:利用机器学习算法对录入的行业关键字或业务关键字进行训练,提取行业关键字或业务关键字的特征,形成所述行业短词汇特征库。

优选地,所述子域名命名规范库通过以下方法构建:利用所述机器学习算法对录入的子域名命名规则进行训练,形成所述子域名命名规范库。

优选地,所述筛选单元具体用于:

遍历子域名命名规范库的每一个子域名命名规则;

分别根据每一个子域名命名规则和所述短词汇特征库抽取子域名初筛结果集中的特征,将每次抽取到的特征加入子域名结果集。

优选地,所述筛选单元还用于:对抽取到的特征进行数据校验和数据清洗。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本发明实施例所提供的系统,为简要描述,实施例部分未提及之处,可参考前述实施例中相应内容。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

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