在当今数字化时代,互联网的快速发展带来了无数的子域名,这些子域名是构成一个网站的基本组成部分。对于网络管理员和安全专家来说,了解和掌握子域名信息搜集及工具使用技巧至关重要。子域名信息搜集是指通过各种技术手段和工具,获取目标网站下的所有子域名的过程。随着网络攻击和数据泄露事件的不断增加,有效地搜集子域名信息能够帮助安全团队更好地识别和应对潜在的威胁。
子域名信息搜集的过程包括多种方法,其中一种常用的方法是通过DNS查询获取子域名。DNS查询是一种用于获取域名与IP地址之间映射关系的协议,通过查询DNS服务器,我们可以获取到目标网站下的所有子域名。除此之外,还有一些自动化工具可以帮助我们更快速、高效地进行子域名信息搜集,例如SubdomainsBrute、OneforAll、Sublist3r、Amass等工具。
掌握子域名信息搜集的工具使用技巧对于网络安全专家来说非常重要。通过有效地搜集子域名信息,我们可以发现目标网站隐藏的漏洞、弱点或者未经授权的访问点。
一、subdomainsBrute工具简介
subdomainsBrute是一款用Python编写的子域名爆破工具。它可以根据提供的字典文件,快速扫描给定域名可能存在的子域名。该工具使用多线程技术进行扫描,提高了扫描效率,并支持将结果输出到文件中以便进一步处理和分析。
1.1.特点
1).递归发现三级、四级、五级域名
工具使用小字典进行递归查询,以便发现那些不容易被探测到的域名。
2).全面的字典
该工具提供了较全面的字典,包括3万多条和8万条的小字典和大字典。
3).默认使用快速可靠的公共DNS
工具默认使用114DNS、百度DNS和阿里DNS这几个公共DNS服务器进行查询。您也可以随时修改配置文件,添加您认为可靠的DNS服务器。
4).自动筛选泛解析的域名
工具会自动筛选出存在泛解析的域名。当前的筛选规则是:如果超过10个域名指向同一IP,则工具将丢弃后续发现指向该IP的其他域名。
5.可接受的扫描速度
整体速度还可以,每秒稳定扫描100到200个域名(使用10个线程)。
1.2历史版本的变化
[2022-06-14] Version 1.5:增加了通过HTTPS证书获取子域名的功能,提高了兼容性,并在Windows系统下通过Proactor事件循环缓解进程句柄限制。
[2022-05-06]:修复了版本检查错误的bug。
[2020-10-29]:增加了对强制扫描泛解析的域名的支持。
[2020-10-26]:修复了Windows系统下出现的文件描述符过多的问题。
[2020-05-05]:增加了对Python 3.5+的支持,提高了执行效率。
[2019-05-19]:添加了通配符测试,提高了扫描速度和可靠性。
[2018-02-06]:添加了多进程支持,结合协程提高了扫描效率,并对字典中的占位符进行预处理以提高扫描效率。
[2017-06-03]:修复了normal_lines的深拷贝问题。
[2017-05-04]:使用协程替代多线程,使用优化级队列减小队列长度,优化了对占位符的支持。
二、域名和子域名的概念和分类
域名和子域名是互联网中常用的概念,它们在网站寻址和组织上起着重要的作用。
2.1域名
域名是由一串以点分隔的字符组成的网址,用于标识和定位互联网上的资源或主机。例如,"example.com"就是一个域名。域名通常包含多个部分,从右到左依次表示级别。最右边的部分称为顶级域名(Top-Level Domain,TLD),如.com、.org等;其左边的部分称为二级域名(Second-Level Domain,SLD),如example.com;再往左则可以有更多的子域名。域名可以注册并与特定的IP地址相关联,通过域名解析系统(DNS)将域名转换为对应的IP地址。
2.2子域名
子域名是在主域名下创建的更小的域名,用于进一步划分和组织网站的不同部分。子域名可以根据需要自由定义,并与主域名共享同一级别。子域名的格式为subdomain.domain.com,其中subdomain表示子域名的名称,domain.com表示主域名。子域名可以用于区分不同的服务、部门、地理位置或语言版本等,提供更灵活和可扩展的网站架构。
2.3分类
根据组织层级和功能的不同,子域名可以分为以下几种类型:
1).主机子域名
用于标识特定的主机或服务器,如www.example.com表示网站的主页。例如:
www.example.com:网站的主页
ftp.example.com:FTP文件传输服务
mail.example.com:电子邮件服务
ns1.example.com:DNS服务
2).服务子域名
用于区分不同的服务或功能,如mail.example.com表示邮件服务。例如:
api.example.com:API服务
cdn.example.com:内容分发网络
chat.example.com:在线聊天服务
ads.example.com:广告服务
3).地理位置子域名
用于根据地理位置进行区分,如cn.example.com表示中国地区的网站版本。例如:
cn.example.com:中国地区的网站版本
us.example.com:美国地区的网站版本
jp.example.com:日本地区的网站版本
sg.example.com:新加坡地区的网站版本
4).语言版本子域名
用于根据语言进行区分,如en.example.com表示英文版网站。例如:
en.example.com:英文版网站
fr.example.com:法文版网站
es.example.com:西班牙文版网站
zh.example.com:中文版网站
5).部门子域名
用于区分不同的部门或团队,如sales.example.com表示销售部门的网站。例如:
sales.example.com:销售部门的网站
hr.example.com:人力资源部门的网站
dev.example.com:开发部门的网站
marketing.example.com:市场营销部门的网站
总结起来,域名是互联网上资源或主机的标识,而子域名是在主域名下创建的更小的域名,用于进一步划分和组织网站的不同部分。根据组织层级和功能的不同,子域名可以进行多样化的分类。为了方便,一般来讲主站会有分站的链接地址,但为了安全有些组织的子域名仅供内部使用,通过内部通告获知,外部只能通过暴力破解等方式来获取。
三、域名信息搜集的方法和工具
域名信息搜集是指通过各种方法和工具获取域名相关的信息,包括域名所有者、注册商、DNS服务器、IP地址、SSL证书等,这些信息对于网站管理、运营和安全都非常重要。下面介绍一些常用的域名信息搜集方法和工具:
1).WHOIS查询
WHOIS是一种协议,用于查询域名注册信息。可以通过WHOIS查询工具或在线服务,输入目标域名或IP地址,获取相关的注册信息、联系人、注册商、DNS服务器等信息。常用的WHOIS查询工具包括whois.domaintools.com、who.is、whois.com等。
2).DNS查询
DNS查询可以获取域名的IP地址、CNAME记录、MX记录等信息。
可以使用dig、nslookup、host等命令行工具进行查询,也可以使用在线DNS查询服务,如dnschecker.org、mxtoolbox.com等。
3.SSL证书查询
SSL证书查询可以获取域名的证书颁发机构、证书类型、有效期等信息。
可以通过浏览器开发者工具、SSL检测工具或在线SSL查询服务进行查询,如sslshopper.com、digicert.com等。
4).站长工具
站长工具是一类专门针对网站管理和SEO优化的在线服务,提供了丰富的域名信息搜集和分析功能。 常用的站长工具包括百度站长平台、Google Search Console、Alexa网站排名等。
5).漏洞扫描器
漏洞扫描器可以对目标域名进行全面的安全扫描,检查是否存在漏洞、弱密码等问题。常用的漏洞扫描器包括Nmap、OpenVAS、Nessus等。
3.1WHOIS查询工具的使用方法
WHOIS查询工具是一种通过WHOIS协议查询域名注册信息的工具,可以查询域名的所有者、注册商、注册日期、过期日期、DNS服务器等相关信息。下面介绍一些常用的WHOIS查询工具的使用方法:
1).whois.domaintools.com:
打开whois.domaintools.com网站,在搜索框中输入目标域名,点击“Search”按钮。等待查询结果展示,即可查看域名的注册信息、历史记录、DNS记录等。评价:需要付费注册用户并登录网站才能查看详细信息。
图片
图片
2).who.is
打开who.is网站。在搜索框中输入目标域名或IP地址,点击“WHOIS Lookup”按钮。等待查询结果展示,即可查看域名的注册信息、联系人、DNS服务器等。
图片
3).whois.com
打开whois.com网站。在搜索框中输入目标域名或IP地址,点击“WHOIS Search”按钮。等待查询结果展示,即可查看域名的注册信息、联系人、DNS服务器等。
图片
4).新网查询
打开Xinnet域名WHOIS查询页面:http://whois.xinnet.com/
在搜索框中输入目标域名,点击“查询”按钮。等待查询结果展示,即可查看域名的注册信息、联系人、DNS服务器等。
图片
5).时代互联
打开Now.cn域名WHOIS查询页面:https://www.now.cn/whois
在搜索框中输入目标域名,点击“查询”按钮。等待查询结果展示,即可查看域名的注册信息、联系人、DNS服务器等。
图片
6).阿里云
打开阿里云WHOIS查询页面:https://whois.aliyun.com/,在搜索框中输入目标域名,点击“查询”按钮。等待查询结果展示,即可查看域名的注册信息、联系人、DNS服务器等。
图片
3.2子域名爆破工具subdomainsBrute的使用方法
子域名爆破工具"subdomainsBrute"是一种用于扫描目标域名的子域名的工具,它通过组合常见的子域名前缀和域名后缀来进行暴力破解。下面是使用"subdomainsBrute"的基本方法:
1).安装"subdomainsBrute"
首先,在命令行或终端中下载并安装"subdomainsBrute"。可以使用以下命令进行下载:
git clone https://github.com/lijiejie/subDomainsBrute.git
网页下载:
https://codeload.github.com/lijiejie/subDomainsBrute/zip/refs/heads/master
2).安装依赖项
解压缩subDomainsBrute.zip并进入subDomainsBrute目录。安装依赖项。
对于Python 3.5+用户:
pip3 install dnspython==2.2.1 async_timeout
对于Python 2.7用户:
pip install dnspython gevent
3).运行"subdomainsBrute"
(1)使用以下命令运行subdomainsBrute
python subDomainsBrute.py domain.com
其中,"domain.com"是目标域名。
(2)命令行选项
--version:显示程序版本号并退出。
-h, --help:显示帮助信息并退出。
-f FILE:指定包含每行一个子域名的文件,默认为subnames.txt。
--full:完整扫描模式,将使用subnames_full.txt字典文件进行扫描。
-i, --ignore-intranet:忽略指向私有IP的域名。
-w, --wildcard:在通配符测试失败后强制进行扫描。
-t THREADS, --threads=THREADS:指定扫描线程数,默认为500。
-p PROCESS, --process=PROCESS:指定扫描进程数,默认为6。
--no-https:禁用从HTTPS证书获取域名的功能,这可以节省一些时间。
-o OUTPUT, --output=OUTPUT:指定输出文件名,默认为{target}.txt。
四、subdomainsBrute工具的使用实例
4.1搜集某网站的子域名信息
1).下载并解压subdomainsBrute
2).安装依赖项
按照执行环境提示安装依赖项async_timeout
python –m pip install async_timeout
图片
3).执行子域名暴力破解
python subDomainBrute.py xxxx.com
图片
4).到程序目录打开xxx.com.txt
如图所示,可以看到两列数据,第一列为域名,第二列是域名对应的解析IP地址。
图片
五、总结及评价
subdomainsBrute相对于在线查询工具来说更为全面,并且不受权限限制。它提供了更广泛的查询结果,而不仅仅局限于已经授权的子域名。然而,该工具在查询速度上可能存在一定限制,如果扫描的子域名数量较多,查询进度可能会比较慢。跟OneForAll想比较,结果和数据项要少一些,但却是比较方便。
1).扫描速度快,使用简单。
2).部分目标扫描结果数据不如OneForAll全面
OneForAll扫描结果