子域名信息收集
总结关于子域名信息收集的相关知识
Last updated
总结关于子域名信息收集的相关知识
Last updated
主域名由两个或者以上的字母构成,中间由.
隔开,整个域名只有一个.
,Subdomain是顶级域名(.com
, .top
, .cn
),与之相同,还有三级域名,四级域名等,这些统称为子域名。
我们将子域名收集分为主动收集和被动收集两部分,主动收集是指直接与目标产生流量交互的收集方式,被动收集是借助搜索引擎等收集方式。
我们可以通过字典的收集,然后通过脚本的方式来收集子域名,比如我们可以写一个小程序,从字典中提取内容并进行拼接。
Dns服务商
Dns服务商的字典是最准确有效的,先找到一份DNSPod公布的使用最多的子域名字典:
https://github.com/DNSPod/oh-my-free-data/blob/master/src/dnspod-top2000-sub-domains.txt
通用字典
通过基础组合生成字典,再从大小和命中做取舍。
组合方式
示例
备注
单字母
f.fei.cn
单字符比较常见
单字母+单数字
s1.feei.cn
双字母
sd.feei.cn
大多数为业务系统名称的首字母缩写
双字母+单数字
ss1.feei.cn
双字母+双数字
ss01.feei.cn
三字母
www.feei.cn
部分业务系统名称为三个字母缩写
单数字
1.feei.cn
双数字
11.feei.cn
三数字
666.feei.cn
通过常见词组生成的字典
具有代表意义的中英文词组
中文
英文
fanyi.feei.cn
tranlate.feei.cn
huiyuan.feei.cn
member.feei.cn
tupian.feei.cn
picture.feei.cn
同类爆破工具的字典
同类工具搜集了相应的字典,可以全部结合起来:
这里我提取了很多工具、网络上分享出来的字典,一共3844910
条,经过简单去重:
最终得到1853022
条数据。
通过搜索引擎进行谷歌语法收集
可以使用-
去掉不想看的结果,例如site:baidu.com - image.baidu.com
e.g.
补充命令:
命令
示例
备注
intitle
intitle:admin
搜索网页标题中含有admin的页面
inurl
inurl:admin
搜索网页链接中含有admin的页面
intext
intext:admin
搜索网页<body>
标签中含有admin的页面
Index of/
直接进入网站首页下的所有文件和文件夹
filetype
filetype:pdf
搜索指定后缀为pdf页面的内容
cache
搜索Google里关于某些内容的缓存
当我们获取某些子域名真实IP时,再进行
site:x.x.x.*
会有意想不到的结果。
集合了多种搜索引擎的接口。
https://github.com/aboul3la/Sublist3r
Google透明度报告中的证书透明度项目是用来解决HTTPS证书系统的结构性缺陷,它能够让所有人查询各个网站的HTTPS证书信息,从而能发现签发了证书的子域名。
https://transparencyreport.google.com/https/certificates
https://scans.io/study/sonar.ssl
https://scans.io/study/sonar.moressl
https://developers.facebook.com/tools/ct/
这里有人写了一个工具
https://github.com/appsecco/bugcrowd-levelup-subdomain-enumeration
简化使用CT日志搜索引擎查找子域名的过程,在子域名枚举中使用CT的缺点是,在CT日志中找到的域名可能不再存在,因此它们不能被解析为IP地址。可以使用诸如massdns这样与CT日志结合的工具来快速识别可解析的域名
通过查询dns的一些解析记录,而很多第三方服务聚合了大量的DNS数据集
这里lijiejie也写了关于dns暴力解析的工具
https://github.com/lijiejie/subDomainsBrute
nmap --script dns-brute baidu.com
当访问ip 的80
端口或者8080
端口时,如果遇到301跳转,可在header中获取域名信息,全网扫描结果如下:
https://scans.io/study/sonar.http
利用爬虫工具,对页面中的结果进行提取
https://github.com/binux/pyspider
subjs
linkfinder
https://github.com/GerbenJavado/LinkFinder
通过扫描crossdomain.xml
文件
利用乌云镜像等漏洞报告平台,或者一些漏洞案例,可以暴露出一些企业域名信息。
https://github.com/search?q="domain"&type=code
http://tool.chinaz.com/subdomain/
https://securitytrails.com/list/apex_domain/qq.com
http://ce.baidu.com/index/getRelatedSites?site_address=qq.com
在对一些大型的目标进行信息搜集时,还可以通过查找域名备案信息来发现同备案的其他域名资产。如搜集百度的子域名时,最常见的即为对baidu.com进行子域名搜集,此时就会遗漏其余顶级域名资产。
流量代理:通过WebProxy代理电脑所有流量,再分析流量中中出现的子域名
置换扫描是另一种识别子域名的有趣技术。在这种技术中,我们使用已经已知的域名或子域名的排列、变更和突变来识别新的子域名
使用AltDNS查找到与特定置换或修改匹配的子域名
找到自治系统号将帮助我们识别属于一个组织的网段,这个组织中可能有有效的域名。
使用dig或host解析给定域名的IP地址。
提供IP地址就可以找到ASN的工具
提供域名就可以找到ASN的工具
发现的ASN编号可以用来查找域名的网段。有Nmap脚本可以实现
https://nmap.org/nsedoc/scripts/targets-asn.html
nmap --script targets-asn --script-args targets-asn.asn=17012 > netblocks.txt
区域传送是DNS事务的一种类型,DNS服务器将一个完整或部分的区域文件副本传递给另一个DNS服务器。如果区域传送没有被安全地配置,任何人都可以在服务器上启动区域传送,并获得该区域文件的副本。而区域文件包含了许多关于该区域和驻留在该区域的主机的信息。
由于在DNSSEC中处理不存在的域名,所以可以遍历DNSSEC区域并枚举该区域中的所有域名。对于使用NSEC记录的DNSSEC区域,可以使用像ldns-walk这样的工具来执行区域遍历。
一些DNSSEC区域使用NSEC3记录,这些记录使用散列的域名来防止攻击者收集纯文本域名。攻击者可以收集所有的子域散列,并在离线状态下解密。
nsec3walker、nsec3map等工具帮助我们自动收集NSEC3散列和破解散列。安装nsec3walker后,可以使用以下指令枚举NSEC3受保护区域的子域名。
https://github.com/laramies/theHarvester
这里要介绍的另一款开源情报收集工具就是theHarvester,它可以寻找出与目标域名有关的电子邮箱地址、子域名和虚拟主机。但是与Sublist3r相比,它所能提供的子域名查询结果十分有限。
python theHarvester.py -d example.com -b all
https://github.com/jfrancois/SDBF
子域名枚举工具中通常都包含有一个需要进行尝试解析的常见子域名列表,而我们可以利用马尔可夫链的知识来扩展这种技术。例如当你查找到了www1之后,也许www2也会存在,以此类推。这篇研究论文对这项技术进行了非常详细的介绍,而SDBF的查询结果要比简单的关键字枚举技术丰富得多。
集合了多种搜索引擎的接口。
https://github.com/aboul3la/Sublist3r
https://github.com/lijiejie/subDomainsBrute
https://github.com/binux/pyspider
爬虫工具
https://github.com/GerbenJavado/LinkFinder
https://github.com/ring04h/wydomain
字典穷举
python dnsburte.py -d aliyun.com -f dnspod.csv -o aliyun.log
域传送检测/子域名枚举/Banner检测/生成地图
https://github.com/le4f/dnsmaper
资产发现管理,域名信息关联(whois、github历史泄露)、漏洞扫描
https://github.com/0xbug/orangescan
https://github.com/TheRook/subbrute
根据Dns记录查询子域名
https://github.com/We5ter/GSDF
GoogleSSLdomainFinder是为方便使用谷歌透明证书查询的python脚本,而使用谷歌透明证书查询子域名准确率较高,但覆盖面不足。
https://github.com/mandatoryprogrammer/cloudflare_enum
使用CloudFlare进行子域名枚举的脚本
https://github.com/18F/domain-scan
https://github.com/guelfoweb/knock
https://github.com/exp-db/PythonPool/tree/master/Tools/DomainSeeker
https://github.com/code-scan/BroDomain
https://github.com/Q2h1Cg/dnsbrute
https://github.com/yanxiu0614/subdomain3/
Sublist3r是最受欢迎的开源工具之一,同时支持Python 2.x和Python 3.x版本。除常见搜索引擎外,Sublist3r还使用Netcraft、Virustotal、ThreatCrowd、DNSdumpster和ReverseDNS枚举子域名。
ESD枚举工具可基于aioHTTP获取一个不存在子域名的响应内容,并将其与字典子域名响应进行相似度对比(超过阈值为同个页面,低于阀值则为可用子域名),最后再对最终子域名进行响应相似度对比。该工具可以有效避免搜集到的子域名大部分为无效子域名。
https://github.com/appsecco/bugcrowd-levelup-subdomain-enumeration
简化使用CT日志搜索引擎查找子域名的过程,在子域名枚举中使用CT的缺点是,在CT日志中找到的域名可能不再存在,因此它们不能被解析为IP地址。可以使用诸如massdns这样与CT日志结合的工具来快速识别可解析的域名
https://github.com/darkoperator/dnsrecon
DNSRecon是一个功能强大的DNS枚举工具,它的功能之一是使用预定义的词表进行基于词典的子域名枚举。
https://github.com/infosec-au/altdns
置换扫描是另一种识别子域名的有趣技术。在这种技术中,我们使用已经已知的域名或子域名的排列、变更和突变来识别新的子域名
./dnsrecon.py -d <domain>
具有相关域名搜集能力,即会收集当前域名所在组织的其他域名。原理是通过证书中"Subject Alternative Name"的内容。
https://github.com/UnaPibaGeek/ctfr
Certificate Transparency日志查询工具
python3 ctfr.py -d facebook.com -o /home/shei/subdomains_fb.txt
https://github.com/bit4woo/domain_hunter
当使用了BurpSuite作为代理,或者使用它进行了安全测试,会就会记录相关的域名。其中,某个目标的子域名和相似域名很有价值,尤其是相似域名,往往有惊喜!插件的主要原理就是从BurpSuite的Sitemap中搜索出子域名和相似域名。也可以对已经发现的子域名进行主动爬取,以发现更多的相关域名,这个动作可以自己重复递归下去,直到没有新的域名发现为止。
在kali linux下有dnsenum、dnsmap、dnsrecon、dnstracer、dnswalk、fierce、urlcrazy共七个dns信息收集工具
Dnsenum
https://github.com/fwaeytens/dnsenum
dnsenum的目的是尽可能收集一个域的信息,它能够通过谷歌或者字典文件猜测可能存在的域名,以及对一个网段进行反向查询。它可以查询网站的主机地址信息、域名服务器、mx record(函件交换记录),在域名服务器上执行axfr请求,通过谷歌脚本得到扩展域名信息(google hacking),提取子域名并查询,计算C类地址并执行whois查询,执行反向查询,把地址段写入文件。
./dnsenum.pl -f dns.txt baidu.com
dnsmap
用来收集信息和枚举DNS信息,dnsmap暴力破解子域名信息,需要字典配合,速度比较快。
https://github.com/makefu/dnsmap
fierce
测试区域传输漏洞和子域名暴力破解
fierce -dns blog.csdn.net -wordlist myDNSwordlist.txt
urlcrazy
Typo域名是一类的特殊域名。用户将正确的域名错误拼写产生的域名被称为Typo域名。例如,http://www.baidu.com错误拼写为http://www.bidu.com,就形成一个Typo域名。对于热门网站的Typo域名会产生大量的访问量,通常都会被人抢注,以获取流量。而黑客也会利用Typo域名构建钓鱼网站。Kali Linux提供对应的检测工具urlcrazy,该工具统计了常见的几百种拼写错误。它可以根据用户输入的域名,自动生成Typo域名;并且会检验这些域名是否被使用,从而发现潜在的风险。同时,它还会统计这些域名的热度,从而分析危害程度。
urlcrazy [选项] domain