子域名枚举是信息收集中关键的一步,细节很大程度决定战果。本文参考The Art of Subdomain Enumeration,加上实践运用进行总结。
被动枚举 一、证书透明度证书
当通过HTTPS访问web时,网站向浏览器提供数字证书,此证书用于识别网站的主机名,由证书颁发机构(CA,Certificate Authority)颁发。
证书透明度
证书透明度(Certificate Transparency)简称CT,主要用于将证书记录到公开的CT log中,日志可以被任何人浏览。
通过CT log搜索
https://crt.sh/ https://censys.io/ https://developers.facebook.com/tools/ct/ https://google.com/transparencyreport/https/ct/利用crt.sh,一行代码收集子域名,代码是从国外漏洞赏金猎人那里拷贝的,更多one line,后面持续更新。
curl -fsSL -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:69.0) Gecko/20100101 Firefox/69.0" "https://crt.sh/?CN=%25.github.com" | sort -n | uniq -c | grep -o -P '(?<=<TD>).*(?=</TD>)' | sed -e '/white-space:normal/d'二、搜索引擎
推荐DuckDuckGo,just enjoy it。
谷歌
必应
DuckDuckGo
百度
抛砖引玉:),百度子域名枚举效果如下,其实sublist3r也集成了百度、谷歌、必应,接下来会在DNS数据聚合中介绍。
三、DNS数据聚合
利用第三方服务进行DNS枚举,它们聚集大量DNS数据集,可以通过它们查找子域。常见第三方服务例如DNSdumpster和Netcraft。
推荐Sublist3r神器,Sublist3r神器集成了Netcraft、Virustotal、ThreatCrowd、DNSdumpster和ReverseDNS等等,你值得拥有。
四、ASN
ASN(Autonomous System Numbers)自治系统编号。互联网可以认为由自治系统组成,例如一个全球公司,各国都有分公司,每个分公司都是一个自治系统,为了便于管理,需要给每个系统进行编号,对应的编号称为ASN。
通过域名,可以查询ASN
通过ASN,可以查询属于ASN的所有IP范围
whois -h whois.radb.net -- '-i origin AS36459' | grep -Eo "([0-9.]+){4}/[0-9]+" | uniq 五、SANSAN(Subject Alternate Name)主题备用名称,主题备用名称证书简单来说,在需要多个域名,将其用于各项服务时,可使用SAN证书。允许在安全证书中使用subjectAltName字段将多种值与证书关联,这些值被称为主题备用名称。名称可包括:IP地址、DNS名称等。
appsecco提供的脚本
sed -ne 's/^( *)Subject://p;/X509v3 Subject Alternative Name/{ N;s/^.* //;:a;s/^( *)(.*), / /;ta;p;q; }' < <( openssl x509 -noout -text -in <( openssl s_client -ign_eof 2>/dev/null <<<$'HEAD / HTTP/1.0 ' -connect xx.com:443 ) ) 主动枚举 一、字典枚举