网络安全攻防技术实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.2 域名发现

2.2.1 子域名信息收集

子域名是父域名的下一级,比如“huiyuan.xxx.com”和“bbs.xxx.com”这两个域名是“xxx.com”的子域名。

像“www.xxx.com”这样的域名为企业的主站域名,企业对于主站域名的应用的防护措施比较健全,不管是应用本身的漏洞发现、漏洞修复,还是安全设备相关的防护都做得更加及时和到位,而企业可能有多个、几十个甚至更多的子域名应用,因为子域名数量多,企业子域名应用的防护可能会没有主站及时。攻击者在主站域名找不到突破口时,就可以进行子域名的信息收集,然后通过子域名的漏洞进行迂回攻击。

子域名信息收集主要包含枚举发现子域名、搜索引擎发现子域名、第三方聚合服务发现子域名、证书透明性信息发现子域名、DNS域传送发现子域名等方式。

2.2.2 枚举发现子域名

子域名收集可以通过枚举的方式对子域名进行收集,枚举需要一个好的字典,制作字典时会将常见子域名的名字放到字段里面,增加枚举的成功率。

子域名暴力破解常用的工具有“Layer子域名挖掘机”和“subDomainsBrute”。

1.使用Layer子域名挖掘机

“Layer子域名挖掘机”是图形化的工具,内置了很多常见的子域名字典,支持多线程,可以识别域名的真实IP,是子域名枚举常用的工具之一。

使用Layer子域名挖掘机对“xxx.com”进行子域名暴力破解的结果如图2-12所示,发现存在“m.xxx.com”“mail.xxx.com”“secure.xxx.com”等多个子域名。

img

图2‑12 子域名暴力破解的结果

2.使用subDomainsBrute

“subDomainsBrute”工具用于渗透测试的目标域名收集,能够实现高并发DNS暴力枚举,发现其他工具无法探测到的域名,高频扫描每秒DNS请求数可超过1000次。

subDomainsBrute的使用方式为:“subDomainsBrute.py [options] target.com”。

通过命令“python subDomainsBrute.py xxx.com”对“xxx.com”的子域名进行枚举,发现存在562个子域名,subDomainsBrute运行结果如图2-13所示。

img

图2‑13 subDomainsBrute运行结果

枚举发现的域名会保存在“xxx.com.txt”文件中。

2.2.3 搜索引擎发现子域名

使用搜索引擎Google或者百度,输入“site:xxx.com”可以获取“xxx.com”子域名的信息。例如,查询“xxx.com”的子域名,在Google中搜索“site:xxx.com”,就可以发现存在“mybase.xxx.com”“bcs.xxx.com”等多个子域名,如图2-14所示。

img

图2‑14 Google发现子域名

2.2.4 第三方聚合服务发现子域名

很多公开的第三方聚合服务网站都可以进行信息收集,子域名信息是其包含的内容之一,常用的第三方聚合服务网站有DNSdumpster、VirusTotal和Sublist3r。

其中,Sublist3r是一个使用Python编写的工具,旨在使用公开来源情报(Open-source intelligence,OSINT)枚举网站的子域名。它可以帮助渗透测试人员对目标域名进行收集,以及获取其子域名。Sublist3r使用许多搜索引擎(如:Google、Yahoo、Bing、Baidu和Ask等)枚举子域名,Sublist3r同样也使用Netcraft、VirusTotal、ThreatCrowd、DNSdumpster和ReverseDNS获取子域名。

使用命令“python sublist3r.py -d xxx.com”就可以对“xxx.com”进行子域名查询,从图2-15中可以看出,Sublist3r会使用Netcraft、VirusTotal、ThreatCrowd、DNSdumpster和ReverseDNS等第三方聚合服务发现子域名。

img

图2‑15 Sublist3r使用第三方聚合服务发现子域名

子域名获取结果如图2-16所示,一共获取到了393个“xxx.com”网站的子域名。

img

图2‑16 子域名获取结果

2.2.5 证书透明性信息发现子域名

证书透明性(Certificate Transparency,CT)是Google的公开项目,通过让域所有者、CA和域用户对SSL证书的发行和存在进行审查,来纠正这些基于证书的威胁。具体而言,证书透明性具有三个主要目标。

(1)使CA无法(或至少非常困难)为域颁发SSL证书,而该域的所有者看不到该证书。

(2)提供一个开放的审核和监视系统,该系统可以让任何域所有者或CA确定证书是错误的还是恶意颁发的。

(3)尽可能防止用户被错误或恶意颁发的证书所欺骗。

证书透明性项目有利有弊。通过证书透明性,可以检测由证书颁发机构错误颁发的SSL证书,可以识别恶意颁发证书的证书颁发机构。因为它是一个开放的公共框架,所以任何人都可以构建或访问驱动证书透明性的基本组件,CA证书中包含了域名、子域名、邮箱等敏感信息,存在一定的安全风险。

利用证书透明性进行域名信息收集,一般使用CT日志搜索引擎进行域名信息收集,常用的有“https://crt.sh/”和“https://transparencyreport.google.com/https/certificates”。

1.使用crt.sh对域名进行搜索

使用crt.sh对域名进行搜索,如图2-17所示,输入“***.com”,搜索后发现有多个子域名的信息。

img

图2‑17 使用crt.sh对域名进行搜索

2.使用Google对域名进行搜索

在“https://transparencyreport.google.com/https/certificates”中输入“***.com”,使用Google对域名进行搜索如图2-18所示。

img

图2‑18 使用Google对域名进行搜索

搜索完成后发现有多个子域名的信息,搜索结果如图2-19所示。

img

图2‑19 搜索结果

2.2.6 DNS域传送漏洞发现子域名

DNS服务器从功能上分为主DNS服务器、从DNS服务器、缓存DNS服务器与转发DNS服务器。

主DNS服务器主要用于维护所负责解析的域的数据库,可以对数据库进行读写操作,数据库中存储了主机名相关的信息,需要管理员手工进行修改。

从DNS服务器也称为辅助DNS服务器,可以作为主DNS服务器的备份服务器与负载服务器。

缓存DNS服务器不负责域名解析,它会将用户访问其他DNS的信息保存在本地,作为缓存数据,这样用户再访问时就会比较方便,缩短域名的查询时间。

转发DNS服务器会将特定的域名查询进行转发,若DNS服务器无法权威地解析客户端的请求,即没有匹配的主要区域和辅助区域,并且无法通过缓存信息来解析客户端的请求,转发DNS服务器会转发到指定的DNS服务器上面,由该DNS服务器完成域名解析工作。

DNS区域传送是指主、从DNS服务器的数据同步机制,当主DNS服务器出现故障或者出现负载太大而无法正常工作的情况时,从DNS服务器就会处理DNS请求。从DNS服务器的区域数据是从主服务器复制的,所以从服务器的数据是只读的,此时使用的是DNS服务TCP协议的53端口。

正常情况下,主DNS服务器的DNS区域传送请求只会转发给从DNS服务器,进行数据更新,但是很多DNS服务器由于错误配置导致任意DNS区域传送请求都会进行数据库同步,区域数据库的信息就被别人非正常获取了,这样就搜集到了数据库中存储的攻击域下面的所有子域名相关的信息,导致了域名的泄露,甚至可能会包含一些测试域名、内网域名,而测试域名和内网域名的安全防护措施相对较低,更容易被攻击者攻击。

DNS域传送漏洞发现子域名的过程如下。

(1)在Linux系统内使用dig命令进行测试,如图2-20所示。使用“dig xxx.org ns”命令对目标发送一个ns类的解析请求来判断其DNS服务器。

img

图2‑20 使用dig命令进行测试

(2)使用“dig axfr @dns xxx.com”命令对目标发起axfr请求,获取其域内所有的域名,如图2-21所示。

img

图2‑21 通过发送axfr请求获取域内所有的域名