freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

    渗透测试之子域名枚举(子域名枚举的艺术)
    2018-12-06 00:40:41


    作为渗透测试人员或漏洞赏金猎人,大多数情况下,当开始进行安全评估/渗透测试时,将获得单个域或一组域。你·将不得不进行广泛的侦察,以找到有趣的资产,如服务器,Web应用程序,属于目标组织的子域名,以便您可以增加查找漏洞的机会。

    我们撰写了一篇关于开源情报收集技术的博客,这些技术通常用于侦察阶段。

    子域名枚举是侦察阶段的重要组成部分。这篇博客以简洁明了的方式介绍了各种子域名枚举技术。

    gitbook将作为这篇博客的后续内容发布,内容涉及我们深入介绍这些技术的相同主题。我们在2017年Bugcrowd LevelUp会议上发表的“Esoteric子域名枚举技术”演讲中介绍了其中的一些技巧。

    除了本博客中的内容之外,我们还发布了一本gitbook,其中涵盖了更多技术。这里有gitbook -子域名枚举的艺术本书旨在成为子域名枚举技术的参考。

    声明

    本文并没有参考任何的译文,文中大多数的脚本和工具以及枚举方式都验证,效果还算不错,文中直接参考原文https://blog.appsecco.com/a-penetration-testers-guide-to-sub-domain-enumeration-7d842d5570f6

    的部分内容由于网络原因无法验证,有兴趣的可以自行挖掘,不再做过多的调整,翻译此文的原因就是为了给子域枚举提供一个系统化的学习方式,此外子域名=子域名,但子域不一定只有子域名,注意区分,文章开头提到的子域名枚举的艺术已经完成了翻译,可以直接点击链接进行学习下载;

    子域名枚举的艺术:https://legacy.gitbook.com/book/anyeduke/the-art-of-subdomain-enumeration_zh_cn/details

    文中提到了很多工具和方式,但要注意兵贵在精不在多,适合的才是最好的,注意文中的链接,有助于扩展你对子域枚举的了解

    最后,感谢Secqaun.org

    0x01.什么是子域名枚举?

    子域名枚举是查找一个或多个域的子域的过程。这是侦察阶段的重要组成部分。

    0x02.为什么子域名枚举?

    • 子域名枚举可以发现安全评估范围内的许多域/子域名

    • 查找在隐藏的,被遗忘的子域上运行的应用程序可能会发现关键漏洞

    • 通常,同一组织的不同域/应用程序中存在相同的漏洞

    着名的雅虎之声事件!由于在yahoo.com子域上部署了易受攻击的应用程序,从而被入侵。

    0x03子域枚举技术

    1.搜索引擎

    Google和Bing等搜索引擎支持各种高级搜索运算符来优化搜索查询。这些高级运算符通常被称为“谷歌Dorking”。

    • 我们可以在Google搜索中使用“site:”运算符来查找Google为域找到的所有子域。谷歌还支持额外的减号运算符,以排除我们对不感兴趣的子域名
      • "site:*.wikimedia.org -www -store -jobs -uk”

    image.png

    • Bing搜索引擎也支持一些高级搜索运算符。与Google一样,Bing也支持“site:”运算符,您可能需要检查除Google搜索之外的任何其他结果



    2.DNS数据聚合

    有许多第三方服务聚合大量DNS数据集并可以查看这些数据集检索给定域的子域。

    • VirusTotal运行自己的被动DNS服务,通过存储访问用户提交的URL时执行的DNS解析来构建要查找域的信息,你只需将域名放在搜索栏中即可


    image.png

    • DNSdumpster是另一个有趣的工具,可以找到给定域的潜在大量子域

    image.png



    3.证书透明度Certificate Transparency

    证书透明度(CT)是证书颁发机构(CA)必须将其发布的每个SSL / TLS证书发布到公共日志。SSL / TLS证书通常包含域名,子域名和电子邮件地址。这使他们成为攻击者的宝库。我在证书透明度上写了一系列技术博客文章,我深入介绍了这个技术,你可以在这里阅读这个系列。

    查找为域颁发的证书的最简单方法是使用收集CT日志的搜索引擎,任何人可以搜索它们。下面列出了很受欢迎的CT搜索地址:

    1. https://crt.sh/

    2. https://censys.io/

    3. https://developers.facebook.com/tools/ct/

    4. https://google.com/transparencyreport/https/ct/



    除了Web界面之外,crt.sh还可以使用postgres界面访问其CT日志数据。这使得运行一些高级查询变得简单而灵活。如果您安装了PostgreSQL客户端软件,则可以按如下方式登录:

    $ psql -h crt.sh -p 5432 -U guest certwatch

    我们编写了一些脚本来简化使用CT日志搜索引擎查找子域的过程。这些脚本可以在我们的github中找到 https://github.com/appsecco/the-art-of-subdomain-enumeration

    image.png



    使用CT进行子域枚举的缺点是CT日志中找到的域名可能不再存在,因此无法解析为IP地址。您可以将massdns等工具与CT日志结合使用,以快速识别可解析的域名。

    # ct.py - extracts domain names from CT Logs(shipped with massdns)
    
    # massdns - will find resolvable domains & adds them to a file
    
    ./ct.py icann.org | ./bin/massdns -r resolvers.txt -t A -q -a -o -w icann_resolvable_domains.txt -
    


    image.png

    4.暴力枚举

    基于字典的枚举找到通用名称子域是另一种技术。DNSRecon是一个功能强大的DNS枚举工具,它的一个功能是使用预定义的字典进行子域枚方法侦查子域

    # 使用DNSRecon的基于字典的枚举
    $ python dnsrecon.py -n ns1.insecuredns.com -d insecuredns.com -D subdomains-top1mil-5000.txt -t brt
    

    image.png

    5.置换扫描

    置换扫描是另一个有趣的技术来识别子域。在该技术中,我们使用已知域/子域的排列,改变和突变来识别新的子域。

    • Altdns是一种允许发现符合模式的子域的工具
    $ python altdns.py -i icann.domains -o data_output -w icann.words -r -s results_output.txt
    

    image.png

    使用AltDNS查找与某些排列/更改匹配的子域

    6.自治系统(AS)

    查找自治系统(AS)号码将帮助我们识别属于组织的网络块,而该组块又可能具有有效域。

    首先使用dig查找ASN

    image.png


    其次,使用AS编号查找网络块 - NSE脚本

    $ nmap --script targets-asn --script-args targets-asn.asn=9808 > netblocks.txt
    

    image.png

    7.区域传送

    区域传输是一种DNS事务,DNS服务器将其全部或部分区域文件的副本传递给另一个DNS服务器。如果未安全地配置区域传送,则任何人都可以针对名称服务器启动区域传输并获取区域文件的副本。根据设计,区域文件包含有关区域和驻留在区域中的主机的大量信息。

    $ dig + multi AXFR @ ns1 .insecuredns.com insecuredns.com
    

    使用DIG工具针对域的名称服务器成功进行区域传送

    image.png

    8.DNSSEC记录.

    由于在DNSSEC中处理不存在的域的方式,可以“遍历”DNSSEC区域并枚举该区域中的所有域。也可以从这里了解有关此技术的更多信息。

    • 对于使用NSEC记录的DNSSEC区域,可以使用ldns-walk等工具执行区域遍历
    $ ldns-walk @ ns1.insecuredns.com insecuredns.com
    

    image.png

    区域遍历DNSSEC区域与NSEC记录

    • 某些DNSSEC区域使用NSEC3记录,该记录使用散列域名来防止攻击者收集纯文本域名。攻击者可以收集所有子域哈希并使离线破解哈希值

    • nsec3walkernsec3map这样的工具帮助我们自动收集NSEC3哈希值并破解哈希值。安装nsec3walker后,可以使用以下命令枚举NSEC3受保护区域的子域

    # Collect NSEC3 hashes of a domain
    $ ./collect icann.org > icann.org.collect
    
    # Undo the hashing, expose the sub-domain information.
    $ ./unhash < icann.org.collect > icann.org.unhash
    
    # Listing only the sub-domain part from the unhashed data
    
    $ cat icann.org.unhash | grep "icann" | awk '{print $2;}'
    
    del.icann.org.
    access.icann.org.
    charts.icann.org.
    communications.icann.org.
    fellowship.icann.org.
    files.icann.org.
    forms.icann.org.
    mail.icann.org.
    maintenance.icann.org.
    new.icann.org.
    public.icann.org.
    research.icann.org.
    

    9.DNS数据集聚合

    有些项目收集了互联网范围的扫描数据,并将其提供给研究人员和安全社区。该项目发布的数据集是子域信息的宝库。虽然在这个庞大的数据集中找到子域就像在大海捞针中找到针,但值得付出努力。

    • 转发DNS数据集作为Project Sonar的一部分发布。通过从多个源中提取域名,然后ANY为每个域发送查询来创建此数据。数据格式是gzip压缩的JSON文件。我们可以解析数据集以查找给定域的子域。数据集很大(20 + GB压缩,300 + GB未压缩)
    #用于解析和提取给定域的子域的命令
    
    $ curl -silent https://scans.io/data/rapid7/sonar.fdns_v2/20170417-fdns.json.gz | pigz -dc | grep“.icann.org”| JQ
    

    image.png

    使用FDNS数据集枚举域/子域

    0x04子域枚举技术 - 比较

    我们针对icann.org运行了一些讨论过的技术并对结果进行了比较。下面的条形图显示了每种技术为icann.org找到的独特,可解析的子域的数量。请随时与我们联系,了解我们用于收集此信息的方法。

    image.png

    每种技术为icann.org找到的独特,可解析的子域的数量

    1.子域枚举 - 参考

    我们为子域枚举技术,工具和源创建了一个简单的参考。这个引用是使用Github gist创建的,随意分叉,自定义它 -https://gist.github.com/yamakira/2a36d3ae077558ac446e4a89143c69ab

    # 子域枚举 - 参考
    
    ## 搜索引擎
    
    - [Google](https://google.com) - **site:** operator
    - [Bing](https://bing.com) - **site:** operator
    
    ## DNS信息聚合
    
    - [VirusTotal](https://www.virustotal.com/)
    - [ViewDNS](https://viewdns.info)
    - [DNSdumpster](https://dnsdumpster.com/)
    - [Threatcrowd](https://www.threatcrowd.org/)
    
    ## 证书透明度日志
    
    - https://crt.sh/
    - https://censys.io/
    - https://developers.facebook.com/tools/ct/
    - https://google.com/transparencyreport/https/ct/
    
    ## 工具
    
    - [Sublister](https://github.com/aboul3la/Sublist3r)
    - [Altdns](https://github.com/infosec-au/altdns)
    - [massdns](https://github.com/blechschmidt/massdns)
    - [enumall](https://github.com/jhaddix/domain)
    - [DNSRecon](https://github.com/darkoperator/dnsrecon)
    - [Domain analyzer](https://github.com/eldraco/domain_analyzer)
    - [XRay](https://github.com/evilsocket/xray)
    - [Aquatone](https://github.com/michenriksen/aquatone)
    - [ldns-walk](https://www.nlnetlabs.nl/projects/ldns/)
    - [NSEC3 walker](https://dnscurve.org/nsec3walker.html)
    
    ## 数据源
    
    - [Project Sonar](https://sonar.labs.rapid7.com/)
    - [Certificate Transparency logs](https://www.certificate-transparency.org/known-logs)
    

    0x05参考


    # 子域名枚举
    本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
    被以下专辑收录,发现更多精彩内容
    + 收入我的专辑
    + 加入我的收藏
    相关推荐
    • 0 文章数
    • 0 关注者