当子域名遇上搜索引擎

用之则行,舍之则藏

  大概数月前我写了一个子域名扫描工具,期间用起来感觉还行,故打算作文分享一波。当然Github上优秀开源的子域名扫描工具很多,其原理不外乎:字典爆破、爬取第三方平台、爬取dns解析记录、利用搜索引擎、利用证书等。本篇不打算去做工具间的比较,主要用来分享一下如何利用百度搜索引擎去高效的搜集子域名。

字典爆破姿势

在介绍利用搜索引擎搜集子域名前,我先分享一下利用字典爆破方式的缺点以及个人解决方案。

字典爆破方式的缺点

  最常见的子域名扫描工具是利用字典爆破的方式,即准备一个常用子域名字典,然后模拟请求dns服务器,观察子域名是否有被成功解析。这种方式非常高效,因为可以利用脚本并发去请求,速度非常快,如果字典够好,结果会很理想。但也存在一个问题,即如果域名设置了泛解析,那么几乎字典中的子域名都是能被成功解析的,会造成很多无用子域名数据。

字典爆破方式的解决方案

  解决这个问题,我的第一种方法是将爆破后的子域名+IP结果存入List列表中,然后check同一个IP对应多少个子域名,如果数量大于阀值,则判定为无用数据(因为正常情况下,同一个IP绑定的域名不会特别多)。第二种方式是在爆破前,先去构造一个特殊的子域名,比如:”iamisnmask.thief.one”,类似这种随机字符串构成,不可能会使用的子域名,如果也能解析成功,则说明使用了泛解析。

利用搜索引擎收集子域名

  这个思路源于搜索引擎本身就是一个庞大的爬虫系统,其收录了大量网站相关的信息,包括子域名,因此可以利用它来搜集一波。国内搜索引擎有很多,这里只介绍利用百度搜索引擎去搜索,另外我之前专门写过如何爬取百度与搜狗的文章,有兴趣可以移步:爬取搜索引擎之寻你千百度 爬取搜索引擎之搜狗
  爬取百度搜索引擎,首先需要收集一个百度IP列表用来分布式爬取,一方面加快爬取速度,另一方面避免被百度屏蔽。其次是要考虑如何去搜索,才能获取尽量多的子域名结果,我这边列了两种方式,欢迎大家补充。
  第一种,可以利用百度搜索语法中的site与link,比如在百度中搜索:site:ctrip.com link:ctrip.com关键词,可以搜索出ctrip.com相关的子域名,但是百度只显示前76页的搜索结果,因此利用此方法获取的子域名肯定不全。

  第二种,为了解决第一种的弊端,我们可以利用site+分块的方式去进行搜索,比如在百度中搜索:site:ctrip.com inurl:login关键词,inurl后的关键词可以利用常见的字典进行构造,这种通过多次分块搜索的方式尽可能多的搜索子域名。

项目相关代码

  项目代码比较简单,这里就不展开介绍了,本文主要分享了通过百度搜索引擎去尽可能多的搜集子域名的一些个人思路。关于代码,为了方便交流,我上传到了github上,有任何问题可以留言讨论。
项目地址:https://github.com/tengzhangchao/subdomain_baidu_search

微信公众号文章地址:当子域名遇上搜索引擎

本文标题:当子域名遇上搜索引擎

文章作者:nmask

发布时间:2019年07月01日 - 17:07

最后更新:2019年07月02日 - 10:07

原始链接:https://thief.one/2019/07/01/1/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

nmask wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
坚持原创技术分享,您的支持将鼓励我继续创作!

热门文章推荐: