技巧:红蓝对抗之域名搜集方法总结

优采云 发布时间: 2022-10-31 15:45

  技巧:红蓝对抗之域名搜集方法总结

  腾讯蓝军实习生

  jax, yhy, A1oe

  前言

  在以往的HW、红蓝对抗、渗透测试项目中,外网信息的采集是一个至关重要的环节。外网信息采集全面,可能有四、两种拨号效果,直接突破外网边界,进入内网。

  最近,我们三人加入了腾讯蓝军,学习渗透技能。讲师要求我们对域名资产的采集方法进行全面的研究。子域是域名信息采集的重要组成部分。在防御措施严密的情况下,我们不能直接拿下主域名,所以可以采取迂回战术,拿下子域名,然后无限接近主域名。

  方法原理介绍

  1. 收获具有证书透明度的子域

  原则

  引用谷歌的项目介绍:“为了给用户提供加密流量,网站必须先向可信的证书颁发机构(CA)申请一个证书。然后,当用户尝试访问对应的网站时,这个证书提供给浏览器以验证 网站。近年来,由于 HTTPS 证书系统的结构缺陷,证书以及颁发证书的 CA 很容易受到黑客攻击和操纵。Google 的证书透明项目( ) 旨在通过提供一个用于监控和审核 HTTPS 证书的开放框架来保护证书颁发过程。”

  那么,通过像这样的证书透明项目,我们可以从中获得一些有价值的域名。

  执行:

  访问以下链接,搜索您需要查询的域名,如:

  (1)crtsh:

  (2) 脸书:

  (3)委托:

  (4) 证书检测器:

  (5) 窥探:

  (6) 中央统计局:

  (7) 谷歌:

  2. 例行检查采集子域

  2.1 域名转移

  原则

  区域转移操作是指备服务器查询主服务器以刷新其区域数据库以确保数据一致性。此操作的目的是防止主名称服务器由于意外故障而变得不可用的全局影响。通常,只有在网络中有备用域名 DNS 服务器时,才需要进行 DNS 区域传输操作。一旦 DNS 服务器被错误配置为向任何发出请求的人提供区域数据库的副本,它就可能被攻击者利用。

  执行

  1.挖掘命令

  作为挖掘@axfr

  是提供数据的服务器,是要传输的关键字,axfr是区域传输选项。

  2.python中的dns库

  xfr = dns.query.xfr(where=server,zone=self.domain,timeout=5.0,lifetime=10.0)

  zone = dns.zone.from_xfr(xfr)

  这儿存在一个问题

  一般来说,如果DNS服务器配置正确、DNS传输被禁用或设置了白名单,漏洞利用成功的概率很低。

  2.2 站点配置文件

  原则

  信息泄露的主要问题是某个域名下的一些文件会存储一些相关的域名,比如子域。此类文件包括跨域策略文件crossdomain.xml、站点地图文件。

  执行

  创建文件列表,拼接域名后直接访问,判断修改后的文件是否存在。如果存在则提取数据,如果不存在则跳过。

  1.crossdomain.xml文件

  直接访问crossdomain.xml路径

  2.站点地图文件

  直接访问 sitemap.xml、sitemap.txt、sitemap.html、sitemapindex.xml、sitemapindex.xml 路径

  这儿存在一个问题

  文件往往不存在,即使存在,域名信息也不充分或不完整。

  2.3 检查内容安全策略

  原则

  内容安全策略 (CSP) 是一种声明性安全机制,它使 网站 操作员能够控制符合 CSP 的用户代理(通常是浏览器)的行为。通过控制启用哪些功能以及从何处下载内容,您可以减少 网站 的攻击面。CSP 的主要目的是防御跨站点脚本 (XSS) 攻击。例如,CSP 可以完全禁止内联 JavaScript 并控制从何处加载外部代码。它还可以禁用动态代码执行。禁用所有攻击源后,XSS 攻击变得更加困难。CSP 中的关键字是 default-src、img-src、object-src 和 script-src。其中,*-src 可能收录域名信息。

  执行

  1.手动抓包

  HTTP 标头的 Content-Security-Policy 属性

  2. Python的Requests获取

  导入请求

  res = requests.post(url=url, headers=headers, data=data, allow_redirects=False)

  如果不是 res.headers['Content-Security-Policy']:

  print("标头中没有 Content-Security-Policy")

  别的:

  # 进程主体代码

  2.4 使用DNS查询采集子域

  原则

  子域srv是通过枚举常见的SRV记录并进行查询来采集的,子域是通过查询域名的DNS记录中的MX、NS、SOA、TXT记录来采集的。

  SRV 记录

  这是在添加服务记录服务器时添加的服务记录,SRV记录哪台计算机提供了哪项服务。格式为:服务名称。协议的类型(例如:example-server.tcp)。

  以下命令枚举给定域名的 SRV 记录:

  nmap --script dns-srv-enum.nse --script-args "dns-srv-enum.domain=''"

  MX 记录

  要创建邮件服务,它会指向邮件服务器地址,并且需要设置 MX 记录。创建邮件地址时,一般根据邮件服务商提供的MX记录填写此记录。

  NS 记录

  域名解析服务器记录。如果要指定域名服务器解析子域,需要设置NS记录。

  SOA 记录

  

  SOA 称为起始权限记录,NS 用于标识多个域名解析服务器,SOA 记录用于标识众多 NS 记录中哪一个是主服务器。

  TXT 记录

  可以任意填写,可以为空。这个项目一般在做一些验证记录的时候用到,比如:SPF(anti-spam)记录。

  3. 利用 DNS 数据集采集子域

  使用 DNS 记录公开数据采集

  *注:将需要的{domain}替换为需要查询的域名,目标是我们认为更有效的。

  (1) ip138:

  {域}/domain.htm

  (2)百度云观察:

  {领域}

  (3) 黑客目标:

  (4) 谜语人:

  :{领域}

  (5) 缓冲:

  {领域}

  (6) dnsdb:

  {领域}

  (7) ipv4info:

  (8) 罗布特斯:

  (9)中国:

  (10) 网络技术:

  (11) dnsdumpster:

  (12) 网站档案:

  (13) 查找子域:

  4. 利用威胁情报平台数据采集子域

  *注:将需要的{domain}替换为需要查询的域名,以下平台需要注册,注册后免费试用

  (1) {domain}/{section}

  {section} 指其他命令和动作,API 的使用请参考文档。

  (2) {domain}/子域

  (3) {域名}

  API:域

  (4)

  {领域}

  (5) {domain}/子域

  或 {domain}/关系

  (6)

  #

  5.使用搜索引擎发现子域

  5.1 谷歌搜索语法——站点

  当使用站点提交查询时,Google 会将查询限制在某个网站/某个域。这个时候最好配合其他指令。例如,使用减号“-”排除不需要的数据。域名。

  5.2 站点:xxx *(目标IP)

  当我们得到子域的真实IP后,可以尝试搜索site:xxx*进行C段搜索,也可以通过这种方法找到很多其他有价值的相关域名。经过笔者的尝试,这种方法在搜狗和谷歌搜索引擎上都有效,谷歌搜索引擎效果更好。

  如图所示:

  6. 域名注册与资产归集

  原则

  在采集一些大型目标的信息时,您还可以通过查找域名注册信息,找到具有相同记录的其他域名资产。比如在采集qq的子域时,最常用的方法就是采集子域。此时,其他顶级域名资产将被遗漏。

  搜索网站:

  如上图所示,通过查看网站的记录/许可号,再逆向查看,可以找到其他具有相同记录的顶级域名资产。

  通过域名注册搜索具有相同记录的其他域名资产,可以更全面地采集目标资产信息,增加发现漏洞的概率。

  7.whois查询和关联查询

  工具:网站管理员工具

  这里我们将演示如何执行whois查询和反向检查

  7.1 查询whois

  7.2 查看whois

  **&ddlSearchMode=1&domain=

  获取相关域信息。

  8. 领域爆炸

  爆破的原理其实是通过枚举实现的,通过不断拼接字典的内容来枚举域名的A记录,但是这种方式一般需要解决泛解析的问题。

  比如开源工具oneforall会先随机访问一个不存在的域,通过返回结果来判断是否有泛解析。确认有泛解析后,程序会开始连续循环生成随机域名,去服务器查询,每次查询都会返回服务器。记录IP和TTL,直到大部分IP地址出现两次以上,IP黑名单采集结束。拿到IP黑名单后,oneforall再将其字典中的每一项与指定要查询的域名进行拼接。爆破过程中根据IP黑名单过滤。

  但是,这种广泛的过滤很容易导致漏报,因此 oneforall 也将 TTL 作为黑名单规则的一部分。判断依据是:在权威DNS中,泛解析记录的TTL必须相同。如*敏*感*词*域记录相同,但 TTL 不同,那么这条记录可以说绝对不是泛解析记录。

  优秀的开源工具

  我们研究了市面上的各种开源子域采集工具,列举了很多优秀工具的功能和优势。这是一个采集其子域的示例。简单比较每个工具的性能和效果。

  工具名称:oneforall

  

  项目地址:

  工具说明:

  oneforall 是近年来出现的比较好的子域采集工具之一,并且还在不断的更新和优化中。这个工具整合了各种域名信息采集的“姿势”,手段可谓非常全面。包括使用证书透明、例行检查、使用网络爬虫(进行中)、DNS数据集、DNS查询、威胁情报平台、搜索引擎等,但笔者发现其对域名泛解析的处理是不是特别理想,而且有很多错误。同时也存在消耗时间长等缺点。

  工具名称:SubdomainBrute

  项目地址:

  工具说明:

  李洁洁的SubdomainBrute是业内比较知名的子域名采集工具。该工具使用协程加速爆破速度,使用114DNS、百度DNS、阿里DNS查询快速可靠的公共DNS。精度高,效果更好。但是泛解析的处理规则是:如果超过10个域名指向同一个IP,则发现指向该IP的其他域名将被丢弃。这个方法可能会被误删,但不可否认,这个规则在一定程度上是有的。简单有效。

  工具名称:ESD

  项目地址:

  工具说明:

  ESD的爆破速度极快。62万条数据只需要4分30秒左右。该工具的缺点之一是它具有很高的性能要求。1G2核心服务器CPU使用率达到100%。另外,输出结果也比较不稳定。在同一网络下采集同一个域名时,结果的数量会出现数倍的变化。

  工具名称:子查找器

  项目地址:

  工具说明:

  使用subfinder采集子域信息,输出结果多,基数大,速度快,输出格式多,便于后续处理(oneforall也有同样的优点)。

  美中不足的是这个工具没有爆破功能,被动源比其他工具少。

  各种工具的效果比较

  每种工具的优缺点比较如下:

  *注:由于各个工具提供的默认字典不同,字典往往需要自己定义才能发挥更大的作用,所以各个工具下载后不修改,使用自己的默认字典进行爆破。使用单个域名测试并不通用,爆破结果仅供参考。

  从上图来看,单从数据层面来看,OneForAll在四大工具中表现突出,李洁洁的subdomainBrute也很优秀。可访问子域的百分比和时间非常好。域名相对较少。

  子域采集常见问题

  1.DNS缓存问题

  不同的DNS服务器可能有不同的缓存策略,也可能有不同的缓存结果,导致域名查询时解析结果没有及时更新。通常,解决上述问题需要多次 DNS 查询来强制 DNS 服务器刷新缓存以获得正确的结果。这无疑增加了泛分辨率判断和子域爆破的难度。

  事实上,这个问题在 OneForAll 中并没有得到很好的解决。在判断是否存在一般解析问题时,OneForAll 使用了函数detect_wildcard(domain, ns_ip_list)。在该函数中,OneForAll 使用不存在的子域名进行查询,判断是否有通用解析。但是只做一次决定是不够准确的,可能会导致误判。

  2.“刚性”词典

  爆破是子域采集方法的重要组成部分。对于这些工具中的大多数,字典的质量决定了最终的爆破效果。但大多数字典只是遍历字符集,使用常见的高频词,没有及时更新。当字典文件过大时,爆破速度变得很慢,效率低下的字典即使再大也达不到预期的效果。

  在实际的域名爆破中,能够自动更新的字典无疑会比普通的字典更好。在这里,我们提出了一种自动字典更新的方案。

  动态词典

  在本节中,我们更详细地描述自动字典更新的方案,可以分为三个步骤:更新词的权重➡️删除原创字典中权重低的词➡️从数据集中提取高频词和将它们添加到字典中,以更新字典。

  测试工具:Subdomainbrute

  流程图如下:

  1.体重更新

  首先使用工具subdomainbrute及其默认字典对子域进行爆破,并使用如下脚本对得到的结果进行进一步的批量检测,判断该域名是否可以被外网访问,并保存可以访问的域名一般是从外网到success.txt。

  接下来将mydic中单词的权重全部初始化为0。然后对比success.txt中的三级域名,mydic中对应单词的权重加1,其他单词的权重不变。另外,需要记录本次查询的域名。以后查询同一个域名时,mydic中词的权重不会重复更新。

  *注:mydic用于记录字典中的单词和对应的权重,格式如www,0

  2.单词删除

  使用字典爆破不同域名n次(例如20次)后,更新字典,即删除字典中的单词。具体步骤如下:

  首先,使用record_num.txt文件记录字典的使用次数。当record_num.txt文件不存在时,会生成。使用不同域名的每个查询+1。同一个域名的重复查询只算一次。

  每次程序运行后,判断是否需要reset mydic。如果需要更新,先删除record_num.txt文件,然后根据权重大小对mydic中的数据进行排序,排序后删除后30%的数据。

  3.词典更新

  删除原字典中30%的值后,需要向字典中添加新值。我们解析公共 DNS 记录以更新我们自己的字典。由于下载的数据集大小一般为几十G,直接处理比较困难,所以我们先对数据进行切分,降低处理难度。

  首先将数据集划分为每个100MB左右的数据文件,然后从这些数据文件中随机抽取一部分,将其中的所有子域提取出来,拼接到字典的“数据源”中. 对提取的子域数据进行词频分析,按照频率降序对内容进行排序。选择最频繁出现的值并将其添加到字典中,直到新字典与旧字典的大小相同。最后,新字典中所有值的权重需要清零。

  总结

  1.除了使用爆破工具,采集子域的方法还有很多。比如域名转移漏洞、DNS查询等常规手段,以及证书透明化、DNS数据集、威胁情报平台、搜索引擎、域名注册和whois查询的使用。总而言之,威胁情报平台在这些方法中表现最好,其次是证书透明度和 DNS 数据集。

  2.在这篇文章文章中,我们也研究和比较了几个业内优秀的工具。在子域的采集测试中,subfinder 和 OneForAll 表现更为突出。

  3.子域采集中的一些主要问题是域名泛解析,不同线路不同IP的解析,子域爆破时字典效率低。

  4、针对词典问题,提出了词典自动更新方案。

  网上采集子域的方法和工具有很多,但在实际使用中效果并不理想和全面。为了得到一个高效且有价值的子域列表,我们需要结合不同的方法,使用工具来合理的采集它们。

  为了方便在实战环境中使用,我们整理了大部分常用的方法,整合到这个文章中。作为学习记录,本文可能存在一些错误。如果有任何错误,请纠正我。希望大家和我们一起探索更多更高效的采集子域的方法,共同学习,共同进步。

  最后,还要感谢Leon和Xiaowu导师的帮助和指导。

  附录

  Google 证书透明度项目

  枚举子域

  DNS域名转移漏洞

  史上最全的子域采集方法:

  我们是台橡

  互联网安全卫士

  用户数据安全的捍卫者

  我们发现漏洞,检查入侵,防止攻击

  携手安防行业精英共建互联网生态安全

  期待您与我们的正能量联盟!

  seo站长工具 方法和技巧:SEO新手如何学起?

  SEO新手学习框架

  作为新手,起步阶段主要是搭建SEO基础知识的框架。而这些都可以通过各大搜索引擎初学者的指南文档获得。

  初学者指南

  百度搜索优化知识

  Google SEO 初学者指南

  掌握了这些基础知识体系之后,接下来就是通过实践来检验各种知识点的使用,还需要使用一些基础的SEO工具,包括各大搜索引擎百度、谷歌、必应等主流的站长工具,Yandex 、Naver等小语言;衍生产品插件:5118、爱站、Semrush、Moz、Ahrefs等。

  这可以通过在有SEO团队的公司中加入基础职位来完成,实战是检验知识的唯一标准。自建网站也是一种方式,毕竟搭建个人小网站的成本(包括资金投入和技术投入)已经很低了。

  同时,我们要时刻关注搜索引擎的发展变化和技术更新,不断更新自己的系统认知。

  各大引擎算法的历史和各大白皮书也应该熟悉和掌握。这就是大道所在,能在意识上形成正确的战略方向。

  算法更新历史和白皮书

  算法更新历史

  

  白皮书

  谷歌搜索中心

  百度白皮书:

  百度搜索页面质量标准规范

  百度APP移动搜索登陆页面体验白皮书5.0

  当然,一些灰帽子和黑帽子的技术也应该知道,也可以在自己的资源中做一些实验。但在服务型公司,除非公司有明确要求做黑帽,否则其他人坚决不尝试,毕竟SEO不是一日之功,这样做风险太大。

  竞品的研究也需要不断跟进,这会给你在SEO策略方案上一些启发。

  最后,SEO要成为高级点,必须经过几轮算法循环,对网站进行过多的操作。

  但归根结底,SEO只是一种吸引流量的手段,用它为服务公司和自身带来价值增长才是硬道理。但是SEO思维对我们有很大的积极影响。

  如果你喜欢SEO,就应该时刻保持好奇,不断学习,加强沟通,多做实战。

  以下谷歌seo信息学习博客供参考

  谷歌搜索最新消息

  

  搜索引擎期刊 SEO 专栏

  搜索引擎登陆SEO专栏

  SE圆桌

  以上就是整个SEO新手系统学习SEO的框架。

  为公司建立独立站做外贸的SEO新手

  在本节中,您可以先完善独立站基础SEO标签的基础SEO信息。你可以参考SEO新手指南,按照步骤练习。

  再次重申,关键词这个阶段的研究也很重要,可以使用指南配合google ads、Semrush等一些关键词研究工具配合竞争对手研究(可以搜索核心谷歌搜索中独立网站产品的词)排名前 20 位研究的结果)

  对整个独立站结构进行细化,站内部分首页列表页包括详情页。在选词策略上,关注首页列表页的核心词,详情页的长尾词。具体的内容结构侧重于对产品的理解和用户的需求。内容部署是其中之一,其二是看同类竞品词排名靠前的页面结构部署(意思是引擎通过user确定了用户最需要什么样的内容结构和内容行为),初步内容先做这个,然后根据用户反馈数据做进一步的调整。

  性能方面,可以参考站长工具后台网站的核心指标和人性化的体验进行相应的优化。

  我是Jesse,一个喜欢SEO研究的SEOer,一直在路上,欢迎交流。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线