0x01 子域名概述
子域名是主域名的下一级域名,通常是大型公司为了满足不同产品或业务需求在主域名基础上发展而来。子域名一般会根据不同用途在主域名前面加上不同的前缀构成。子域名根据主域名前面的前缀数量,又可分为二级子域名、三级子域名和多级的子域名。
如www.example.com、mai.example.coml就是example.com这个主域名的二级子域名。如果在二级子域名前面再加一个前缀,就成为三级子域名,如a.www.example.com、b.www.example.com等。
0x02 设置子域名的意义
设置子域名主要有两方面因素考虑:
1.公司业务较多,单个主域名无法集成显示所有业务信息,所以要针对不同业务开设不同的站点并绑定不同的域名。如官网使用www.example.com,邮箱使用mail.example.com,办公系统使用oa.example.com等等。
2.符合用户搜索习惯,实现用户通过子域名访问网站的效果,大多数用户习惯使用www加域名的方式访问网站,如果我们只为主域名设置解析,不对www的子域名设置解析,那么用户输入www的子域名就无法访问网站,影响用户体验。
0x03 子域名收集的作用
1.扩大资产范围,可以增加漏洞发现的概率
2.众所周知,一般情况下主站的安全性可能相对较高,而一些不常用的子站或者上线不久的站点,可能安全方面的考虑还没有很周全,可能成为目标系统的脆弱点
3.通常情况下,同一组织采用相同应用搭建多个服务的可能性很大,以及补丁的情况也可能大致相同,因此,存在相同漏洞的概率非常大
0x04 实战过程子域名收集手法
被动收集:利用搜索引擎与已存在的数据获取目标信息,隐蔽性更高,难以被察觉,从而提高信息利用率
主动收集:利用暴力破解等手段,会造成很大的动静以及告警,将会引起蓝队人员警觉,若为强对抗环境绝不可使用
01 被动收集
GoogleHacking语法
使用搜索引擎如Google、Bing、Yahoo等,搜索目标组织的子域名。可以使用关键字site:加上目标组织的域名,例如site:example.com,来限制搜索结果只包含目标组织的网站。
网络空间资产测绘
网络空间测绘,即通过对网络空间中的各种资源进行实时监测和分析,实现对网络空间的态势感知,助力识别网络威胁、检测网络攻击,从而提高网络安全防御和应急响应能力,保障网络空间的安全稳定运行。本文从网络空间测绘的概念出发,从设备资产、域名空间、网络拓扑、数字证书等方面对网络空间测绘的实践情况进行介绍和分析,并对网络空间测绘技术应用的发展进行展望。
https://quake.360.net/quake/#/index --> domain:"360.cn"
https://fofa.info/ --> domain="example.com"
https://hunter.qianxin.com/ --> domain="qianxin.com"
https://www.shodan.io/ --> hostname:example.com
在线网站查询
一些线上网站具有子域名的功能,可以通过这些网站去查询子域名
站长之家:https://tool.chinaz.com/subdomain?domain=
dnsdumpster:https://dnsdumpster.com/
查询网:https://site.ip138.com/
爱站:http://dns.aizhan.com
威胁情报平台
威胁情报平台是一种专门用于收集、分析和交流与网络安全相关的威胁信息的技术平台。 它为用户提供了一个集中管理和处理威胁情报的工具,帮助用户快速了解网络威胁的动态,并采取相应的安全措施。
微步查询:https://x.threatbook.com/
AlienVault查询:https://otx.alienvault.com/
riskiq查询:https://community.riskiq.com/
威胁矿工查询:https://www.threatminer.org/
pentest-tools查询:https://pentest-tools.com/
奇安信威胁情报中心:https://ti.qianxin.com/
启明星辰威胁情报中心:https://www.venuseye.com.cn/
第三方DNS服务
DNS历史记录查询是一种用于收集子域名信息的方法,通过查询过去DNS解析记录的服务,可以查找目标组织过去使用过的子域名,有时还可以找到已经被删除的但仍然解析到目标组织的子域名。以下是DNS历史记录查询子域名信息的详细步骤:
确定目标域名:确定要查询的目标域名,例如example.com。
选择DNS历史记录查询服务:选择一个可靠的DNS历史记录查询服务,例如SecurityTrails、DNSdumpster.com - dns recon and research, find and lookup dns records、WhoisXML、PassiveTotal等。这些服务通常提供免费和付费版本,免费版本可能有限制。
输入目标域名:在DNS历史记录查询服务的搜索框中输入目标域名,例如example.com。
查看历史记录:查询服务将返回与目标域名相关的历史记录。这些历史记录可能包括过去使用过的子域名、IP地址、DNS服务器等信息。查看历史记录,尝试找到与目标组织相关的子域名。
需要注意的是,DNS历史记录查询服务并不总是完全准确或完整,有时会缺少一些信息或包含错误的信息。因此,需要对查询结果进行验证,并结合其他方法进行子域名信息的收集
SSL Checker: https://decoder.link/
DNSDumpster: https://dnsdumpster.com/
HackerTarget Subdomain Finder: https://hackertarget.com/find-dns-host-records/
百度安全服务平台: http://ce.baidu.com/index/getRelatedSites?site_address={domain}
IP138: https://site.ip138.com/{domain}/domain.htm
Riddler: https://riddler.io/search?q=pld:{domain}
BufferOver: https://dns.bufferover.run/dns?q={domain}
DNSDB: https://dnsdb.io/zh-cn/search?q={domain}
IPv4Info: http://ipv4info.com/
Robtex: https://www.robtex.com/dns-lookup/
Chinaz: https://alexa.chinaz.com/
Netcraft: https://searchdns.netcraft.com/
Sitedossier: http://www.sitedossier.com/
FindSubdomains: https://findsubdomains.com/
Icon Hash
我们先要找到网站资产的logo文件位置,然后利用脚本获取hash
import mmh3
import requests
import base64
response = requests.get('https://www.xxxxx.com/favicon.ico')
favicon = base64.b64encode(response.content)
hash = mmh3.hash(favicon)
print('http.favicon.hash:'+str(hash))
利用fofa查找相同ico的资产
icon_hash="yourhash"
公开数据集
利用已有公开的扫描数据集,对子域名信息进行收集。推荐常用的两个:
https://scans.io/study/sonar.rdns_v2
https://opendata.rapid7.com/
通常这些数据集都是比较大,可以使用命令进行快速查找
wget https://scans.io/data/rapid7/sonar.fdns_v2/20170417-fdns.json.gz
cat 20170417-fdns.json.gz | pigz -dc | grep ".Your_Target.org" | jq
SSL证书查询
证书
当通过HTTPS访问web时,网站向浏览器提供数字证书,此证书用于识别网站的主机名,由证书颁发机构(CA,Certificate Authority)颁发。证书透明
证书透明(CT)是证书颁发机构(CA)必须将其发布的每个SSL/TLS证书发布到公共日志的项目。SSL/TLS证书通常包含域名,子域名和电子邮件地址等信息。证书流量:引用谷歌的项目介绍:“要向用户提供加密,网站必须先向可信的证书授权中心(CA)申请证书。然后,当用户尝试访问相应网站时,此证书即会被提供浏览器以验证该网站。近年来,由于 HTTPS 证书系统存在结构性缺陷,证书以及签名证书的 CA 很容易受到攻击和窃取。Google 的证书更新项目旨在通过提供一个用于监测和审核 HTTPS 证书的开放式框架,来保障证书签发流程安全无虞。”
注意事项
因为这种方法的原理是根据日志信息收集,只增不减,所以可能会出现一些失效的子域名
censys:https://censys.io/certificates
crtsh:https://crt.sh/
spyse:https://spyse.com/search/certificate
certspotter:https://sslmate.com/certspotter/api/
entrust:https://www.entrust.com/ct-search/
信息泄露
Github
JS信息
js中会存在子域名信息
网盘泄露
网盘中也许会存在子域名信息
凌云搜索: https://www.lingfengyun.com/
盘搜搜:http://www.pansoso.com/
公开笔记
例如语雀中,可以公开搜索需要的子域名信息
......
whois查询
可以通过whois域名查询的相关信息,并通过反查手机号或邮箱来获取相关域名。
https://tools.wujingquan.com/whois/
https://www.zhanid.com/tool/whois.html
https://www.hostinger.com.hk/whois
https://www.idcd.com/tool/whois
反查邮箱
反查电话
域名备案
在对一些大型的目标进行信息搜集时,还可以通过查找域名备案信息来发现同备案的其他域名资产。如搜集qq的子域名时,最常见的即为对qq.com进行子域名搜集,此时就会遗漏其余顶级域名资产。
工信部ICP/IP地址/域名信息备案管理系统 - https://beian.miit.gov.cn/publish/query/indexFirst.action
腾讯云域名信息查询 - https://whois.cloud.tencent.com/
wetools.com微工具的域名综合检测工具 - https://www.wetools.com/domain-check
wetools.com微工具的域名备案查询工具 - https://www.wetools.com/beian
阿里云域名备案查询 - https://beian.aliyun.com/
一般网站底部也会有备案号
再直接查询备案号
在线爆破子域名网站
进行子域名收集时,若是使用本机电脑,而不进行ip隐藏,轻则被蓝队封掉ip,导致无法进行下一步攻击,重则直接被溯源,导致掉大分,因此,在线子域名爆破网站就变得十分重要了,由于爆破子域名并非自己,该动作将不会导致本机ip直接暴露
ASN
AS 号码帮助识别属于组织的网络块,而该网络快又可能具有有效域
查找ASN
基于IP查找:https://asn.cymru.com/cgi-bin/whois.cgi
基于域名查找:https://bgp.he.net/
使用nmap进行查找
nmap --script targets-asn --script-args targets-asn.asn=Your_asn > netblocks.txt
像fofa这类的网络空间测绘引擎也支持ASN查找
SAN
SAN(Subject Alternative Name) 是 SSL 标准 x509 中定义的一个扩展。使用了 SAN 字段的 SSL 证书,可以扩展此证书支持的域名,使得一个证书可以支持多个不同域名的解析。
允许在安全证书中使用 subjectAltName字段将多种值与证书关联,这些值被称为主题备用名称。名称可包括:IP地址、DNS名称等。
安全连接
更多信息
查看证书
获取信息
也可以使用 appsecco 提供的shell脚本:
sed -ne 's/^\( *\)Subject:/\1/p;/X509v3 Subject Alternative Name/{
N;s/^.*\n//;:a;s/^\( *\)\(.*\), /\1\2\n\1/;ta;p;q; }' < <(
openssl x509 -noout -text -in <(
openssl s_client -ign_eof 2>/dev/null <<<$'HEAD / HTTP/1.0\r\n\r' \
-connect baidu.com:443 ) )
自动化工具
subfinder
subfinder是一款子域名发现工具,可使用被动在线资源返回网站的有效子域名。它具有简单的模块化架构,并且针对速度进行了优化。subfinder它只为做一件事而构建 - 被动子域名枚举,并且它做得非常好。
我们已使其符合所有使用的被动源许可证和使用限制。被动模型可确保速度和隐秘性,渗透测试人员和漏洞赏金猎人都可以利用这一点。
subfinder.exe -d qq.com -o output.txt
disu
包含crt.sh、fullhunt、fofa、360quake、fofa、hunter、virustotal、zoomeye的获取子域名的集成工具。
单个域名 python3 disu.py -d baidu.com 多个域名 python3 disu.py -f /path/yourdomainfile
02 主动收集
域传送漏洞
DNS区域传输是将DNS数据库或DNS记录从主名称服务器复制到辅助名称服务器的过程。如果DNS服务器没有进行严格的配置,只要收到AXFR请求就进行域传送,便造成了该漏洞。域传送过程中,传递的信息除了子域外,还有电子邮件地址、电子邮件服务器等信息,可用于钓鱼攻击。其实,域传送漏洞本身就是一个高危漏洞。
nslookup
# 1.nslookup命令进入交互式shell $ nslookup # 2.server命令 参数设定查询将要使用的DNS服务器 $ server xxx.com # 3.如果漏洞存在的话,可以使用ls命令列出所有域名 $ ls # 4.退出 $ exit
dig
在Linux下,可以使用dig命令来发送DNS请求,这里只需要发送axfr类型的DNS请求,如果存在该漏洞,则会返回所有解析记录。
dig @Target_DNS_Server_IP axfr 查询的域名
dnswalk
在Kali中已经预装的工具,这里需要注意的是,要使用域名的完整形式,即 .不能省略
dnswalk your_domain.
nmap
namap 中也有域传送漏洞的检测脚本:
nmap --script dns-zone-transfer --script-args dns-zone-transfer.domain=Your_domain -p 53 -Pn dns.xxx.yyy.com
DNSSEC
DNSSEC,即域名系统安全扩展,主要功能是通过建立信任链来保护DNS中数据的完整性和真实性。由于DNSSEC处理不存在域名的方式,可以遍历DNSSEC域并枚举该域中的所有域名
常用的工具:
ldns-walk
apt-get install ldnsutils
DNS缓存
在常见的企业网络中,通常都会配置DNS服务器,为网络内的主机提供域名解析服务。DNS服务器除了解析私有域名外,还会用递归方式,向公网的DNS服务器请求解析第三方域名。为了提升性能,通常会使用缓存记录,记录解析过的域名,尤其是第三方域名。
域名缓存侦测(DNS Cache Snooping)技术就是向这些服务器发送域名解析请求,但要求不使用递归模式。这样DNS只能解析私有域名和缓存中保存的域名。借助该项技术,渗透测试人员就知道哪些域名是否被过请求过。
./dnsrecon.py -t snoop -n Sever -D <Dict>
工具查询
nmap
Nmap(网络映射器)是一款用于网络发现和安全审计的网络安全工具,是不少黑客及脚本小子爱用的工具 。系统管理员可以利用Nmap来探测工作环境中未经批准使用的服务器,黑客通常会利用Nmap来搜集目标电脑的网络设定,从而计划攻击的方法。
https://nmap.org/
SRV记录
添加服务记录服务器服务记录时会添加此项,SRV记录了哪台计算机提供了哪个服务。格式为:服务的名字.协议的类型(例如:example-server.tcp)。
nmap --script dns-srv-enum.nse --script-args "dns-srv-enum.domain='google.com'"
域传送
域传送操作是指备用服务器向主服务器查询来刷新自己的Zone数据库,保证数据一致性。此操作的目的是为了防止主域名服务器因意外故障变得不可用时影响到全局。正常情况下,只有在网络里存在备用域名 DNS 服务器时,DNS区域传送操作才有必要执行。一旦DNS服务器被错误地配置成任何人发出请求,都向其提供Zone数据库的拷贝,就会被攻击者利用。
注意:一般情况下,DNS服务器都配置正确,关闭了dns传输或设置了白名单,漏洞利用成功的概率较低。
nmap --script dns-zone-transfer --script-args dns-zone-transfer.domain=yhnu.edu.cn -p 53 -Pn dns1.thnu.edu.cn
nslookup
nslookup 命令主要用来诊断域名系统 (DNS) 基础结构的信息。
nslookup 命令通常用来查询DNS的记录,查询域名解析是否正常,在网络故障时用来诊断网络问题。
nslookup 命令的两种模式:
nslookup 命令是一个能够查询互联网域名服务器信息的程序。他有两种工作模式,即《交互模式》和《非交互模式》。
在《交互模式》下,用户可以向域名服务器查询各类主机、域名的信息,或者输出域名中的主机列表。
而在《非交互模式》下,用户可以针对一个主机或域名仅仅获取特定的名称或所需信息。
通过 man nslookup 可以看到对于nslookup命令的官方解释是“query Internet name servers interactively”。
MX记录
建立电子邮箱服务,将指向邮件服务器地址,需要设置MX记录。建立邮箱时,一般会根据邮箱服务商提供的MX记录填写此记录。
nslookup -type=mx qq.com
NS记录
域名解析服务器记录,如果要将子域名指定某个域名服务器来解析,需要设置NS记录。
nslookup -type=ns qq.com
SOA记录
SOA叫做起始授权机构记录,NS用于标识多台域名解析服务器,SOA记录用于在众多NS记录中那一台是主服务器。
nslookup -type=soa qq.com
TXT记录
可任意填写,可为空。一般做一些验证记录时会使用此项,如:做SPF(反垃圾邮件)记录。
nslookup -type=txt qq.com
字典枚举
字典枚举即利用常见的子域名字典,进行暴力破击,最终获得有效的子域名。这种方法有比较大的局限,能收集到多少子域,取决于字典的覆盖程度,同时还有比较致命的缺点,即会造成较大的流量,可能会让目标系统的安全产品造成告警。
评论区