DNS 侦察是大多数外部网络渗透测试和红队操作的重要组成部分。 在 DNS 侦察有许多重点领域,但是我认为深入研究DNS TXT记录是很有趣的,这些记录是为了验证域名所有权而创建的。它们非常常见,可以揭示目标公司使用的技术和服务的有用信息。

域名所有权验证过程

当公司或个人想要使用与其域名相关的在线服务时,需要验证该域名的所有权。 根据服务提供商的不同,这个过程通常被称为“域名校验”或“域名验证”。

下面是这个过程的典型工作方式的大纲:

1、公司在在线服务提供商创建一个帐户

2、公司向在线服务提供商提供需要验证的域名

3、在线服务提供商向公司注册的域名联系人发送一封包含唯一域名验证令牌(文本值)的电子邮件

4、然后,公司为他们的域名创建一个 DNS TXT 记录,其中包含他们通过在线服务提供商的电子邮件收到的域名验证令牌

5、在线服务提供商通过执行 DNS 查询来验证域名所有权,以验证包含域名验证令牌的 TXT 记录是否已经创建

6、在大多数情况下,一旦域名验证的过程完成,公司可以删除包含域名验证令牌的 DNS TXT 记录

注意最后一步,这确实是每个人似乎都会忘记做的事情,这就是为什么简单的 DNS 查询对于深入了解在线服务提供商正在使用的是什么非常有用。

注意: 域名验证过程并不总是需要 DNS TXT 条目。 一些在线服务提供商仅仅要求你上传一个包含域名验证令牌的文本文件到域名的网站上。 例如, http://mywebsite.com/validation_12345.txt。 如果你知道你要找的是什么,Google hacking 是一个很方便的方法,但是现在让我们把注意力集中在 DNS 记录上。

100万个域名的 TXT 记录分析

多年来,我们的团队一直在从 DNS TXT 记录中搜集有关在线服务提供商的信息,但我希望能够更广泛地了解其中的内容。 因此,我开始了确定一些域名验证令牌趋势的旅程。

选择域名样本

我开始只是抓取Alexa 排名前100万的网站的 DNS TXT 记录。 我使用了一个稍微老一点的列表,但是对于那些想要重复挖掘这些信息的人来说,亚马逊有一个服务,你可以在 https://aws.amazon.com/alexa-top-sites/上使用。

查询 TXT 记录的工具

DNS TXT 记录可以很容易地通过 nslookup、 host、 dig、 massdns 等工具找到,或者像 dnsrecon 这样关注度比较高的安全工具。 我最终使用了一个基本的 PowerShell 脚本来发出所有的 DNS 请求,因为 PowerShell 让我变得懒惰。 虽然速度有点慢,但还是用了不到一天的时间从100万个站点收集了所有的 TXT 记录。

下面是我使用的基本收集脚本。

#Import list of domains $Domains = gc c:\temp\domains.txt # Get TXT records for domains $txtlist = $Domains | ForEach-Object{
Resolve-DnsName -Type TXT $_ -Verbose } # Filter out most spf records
$Results = $txtlist | where type -like txt | select
name,type,strings | ForEach-Object { $myname = $.name
$
.strings | foreach { $object = New-Object
psobject $object | add-member noteproperty name $myname
$object | add-member noteproperty txtstring if(_ if(i​f(_ -notlike
“v=spf*”) { $object } } } |
Sort-Object name # Save results to CSV $Results | Export-Csv
-NoTypeInformation dnstxt-records.csv # Return results to console $Results

下面是我在收集信息后使用的高级过程:

1、删除剩余的 SPF 记录

2、解析键值对

3、对相似的键进行排序和分组

4、通过 Google hacking 和文档审查确定服务提供商

5、移除了完全唯一且不能轻易归属于特定服务提供商的键

6、对服务提供商进行分类

7、基于域名验证令牌计数确定最常用的服务提供商类别

8、基于域名验证令牌计数确定最常用的服务提供商

五大服务提供商类别

在简要分析了近100万个域名的 DNS TXT 记录之后,我创建了一个需要域名验证的最常见的在线服务类别和提供商的列表。

下面是前五大类别:

还有许多其他类型的服务,从缓存服务(如 Cloudflare)到安全服务(如“ Have i Been Pwned”) ,但上面的类别似乎是最普遍的。 值得注意的是,我删除了 SPF 记录,因为从技术上讲,SPF 记录里面没有域名验证令牌。 然而,SPF 记录是另一个丰富的信息来源,如果管理不善,可能导致电子邮件欺骗的机会。 不管怎样,他们已经超出了这个博客的范围。

25大服务供应商

下面是前25个服务提供商,我可以基于他们的域名验证令牌(TXT 记录)进行指纹识别。 然而,我总共能够提供大约130个属性。

域名验证令牌指纹自动化

为了简化这个过程,我编写了一个 PowerShell 函数,名为“ Resolve-DnsDomainValidationToken”。 你可以简单地为它提供域名,它将基于我创建的域名验证令牌库扫描已知服务提供商的相关 DNS TXT 记录。 目前它支持单个域名、域名列表或 url 列表的参数。

Resolve-DnsDomainValidationToken 可在此下载。

命令示例

为了让你了解命令和输出是什么样的,我在下面提供了一个示例。 目标域名是从 Alexa 前100万个域名中随机选出的。

#Load Resolve-DnsDomainValidationToken into the PowerShell session IEX(New-Object
System.Net.WebClient).DownloadString(“https://raw.githubusercontent.com/NetSPI/PowerUpSQL/master/PowerUpSQL.ps1”)

Run Resolve-DnsDomainValidationToken to collect and fingerprint TXT records $Results = Resolve-DnsDomainValidationToken -Verbose -Domain

adroll.com # View records in the console $Results


对于那些不喜欢在控制台查看结果的人来说,还可以使用 Out-GridView查看结果。

#View record in the out-grid view $Results | Out-GridView

最后,该命令还会自动创建两个包含结果的 csv 文件:

1、Dns_Txt_Records.csv 包含了发现的所有 TXT 记录。

2、Dns_Txt_Records_Domain_Validation_Tokens.csv 包含了可以进行指纹识别的 TXT 记录。

域名验证令牌如何用于邪恶?

下面是我们在渗透测试中如何使用域名验证令牌的一些例子。 由于渗透测试人员和红色团队受到法律限制,我还添加了一些只对现实世界的攻击者可用的选项。

渗透测试人员使用案例

a. 支持但不使用 MFA 的联合身份验证的服务:这是我们最常见的用例。 通过检查域名验证令牌,我们能够识别支持与公司的活动目录部署相关联的联合身份验证的服务提供商。 在许多情况下,它们没有配置双重身份验证。 常见的例子包括 Office 365、 AWS、 GSuite 和 Github。 专业提示: 一旦你对 Azure 进行了身份验证,你就可以通过解析服务主体名称,快速找到支持联合或托管身份验证的其他服务提供商目标。 你可以通过 Karl 的 Get-AzureDomainInfo.ps1 脚本实现。

b. 通过子域名劫持目标:域名验证令牌可以显示支持子域名的服务,一旦 CNAME 记录失效,这些服务可能会受到攻击。 关于常用技术的信息,帕特里克 · 胡达克在这里写了一篇很好的博文。

c. 社会工程学:在构建电话和电子邮件网络钓鱼活动时,更好地理解组织使用的技术和服务提供商是非常有用的

d.一般的成熟度度量:当审查一个组织拥有的所有域名的域名验证令牌时,可以对它们的成熟度水平有一个大致的了解,你可以开始回答一些基本的问题,比如:

  1. 它们是否使用内容分发网络(CDN)来分发和保护它们的网站内容?

  2. 他们是否使用第三方营销和分析? 如果是这样的话,又是哪个第三方? 它们是如何配置的?

  3. 他们是否使用与安全相关的服务提供商? 这些保险提供什么保障?

  4. 他们使用谁来颁发 SSL / TLS 证书? 它们是如何使用的?

  5. 他们使用什么邮件保护服务? 那些默认配置是什么?

e. 分析特定的在线服务提供商的域名验证令牌可以产生额外的洞察力。 例如,许多域名验证令牌都是惟一的某个数值,每个新客户的数值都会递增。 通过分析数千个域名的值,你可以开始推断某个特定客户机使用的服务提供商的时间之类的事情。 一些验证令牌还包括散列和加密的 base64值,这些值有可能在离线时被破解以显示某些明文信息。

f. 现实世界的攻击者还可以试图直接入侵服务提供商,然后横向移动到特定公司的站点、数据存储等服务器上。 共享主机提供商就是一个常见的例子。 渗透测试人员和红队人员不能利用这些场景,但是如果你是一个服务提供商,你应该努力加强客户端隔离,以帮助避免向攻击者敞开这些攻击向量。

总结

分析 DNS TXT 记录中发现的域名验证令牌远非一个新概念,但我希望 Resolve-DnsDomainValidationToken 中的指纹库将有助于在下一个红队、渗透测试评估或内部审计期间节省你的一些时间。

【白嫖网络安全学习资料吗】

服务器指纹识别之 DNS TXT相关推荐

  1. Web服务器指纹识别工具httprint

    Web服务器指纹识别工具httprint 在Web渗透测试中,准确判断服务器的类型直接影响后期渗透测试的成功率.Kali Linux提供了专门的Web服务器指纹识别工具Httprint.该工具根据服务 ...

  2. 微信小程序 SOTER 生物认证DEMO,指纹识别

    今天项目尝试使用微信小程序指纹认证功能 以下为测试demo index.js Page({/*** 页面的初始数据*/data: {isfingerPrint : false, //可否使用指纹识别 ...

  3. 【指纹识别】基于模板匹配实现指纹识别门禁系统含Matlab源码

    1 简介 近年来,随着识别技术和网络技术的飞速发展,门禁系统也得到了飞跃式的发展,出现了基于指纹识别的门禁系统.这种系统具有安全性,方便性和易管理性等特点,是确保各重要部门出入口安全的有效措施,现已广 ...

  4. 指纹识别登录Windows Server服务器远程桌面

    [前言] 企业IT管理者经常会面临以下问题: 一人维护多台服务器:每台服务器设置不同的密码,记忆容易混淆,容易忘记:设置简单的密码,容易被破解:设置相同的复杂密码又担心一旦一个密码被泄露,所有服务器都 ...

  5. Web简单快捷的指纹识别小工具_在线指纹识别平台设计

    Web 指纹识别 本文通过分析 Web 指纹的检测对象.检测方法.检测原理及常用工具,设计了一个简易的指纹搜集脚本来协助发现新指纹,并提取了多个开源指纹识别工具的规则库并进行了规则重组,开发了一个简单 ...

  6. 信息收集域名、IP、端口服务、指纹识别相关信息

    信息收集域名.IP.端口服务.指纹识别.Googlehacking.目录信息.Githack相关信息 域名相关的信息 域名是什么 域名的分类 国际域名 国别域名 新顶级域名 域名联系人信息 whois ...

  7. 浅谈web指纹识别技术

    目前网络上开源的web指纹识别程序很多,如Wapplyzer,BlindElephant,plecost,w3af,whatweb, wpscan, joomscan等等,基本都是国外的,使用的时候因 ...

  8. 渗透测试之指纹识别(CMS、CDN、WAF)

    目录 什么是指纹识别: 1.cms指纹识别 2.cdn指纹识别: 3.WAF指纹识别: 什么是指纹识别: 通过关键特征,识别出目标的CMS系统.服务器.开发语言.操作系统.CDN.WAF的类别 版本等 ...

  9. Kali Linux 网络扫描秘籍 第四章 指纹识别(一)

    第四章 指纹识别(一) 作者:Justin Hutchens 译者:飞龙 协议:CC BY-NC-SA 4.0 4.1 Netcat 特征抓取 Netcat 是个多用途的网络工具,可以用于在 Kali ...

最新文章

  1. 上市3年市值缩水9成,AI教育第一股流利说谋求私有化
  2. 浅谈视觉设计的准确性
  3. [锋利JQ]-图片提示效果
  4. 《大话数据结构》第9章 排序 9.3 冒泡排序(上)
  5. Ubuntu 16.04下Caffe-SSD的应用——常见训练时报错总结
  6. 这次被问懵了!搞定了这些SQL优化技巧,下次横着走
  7. Visio修改默认字体样式
  8. 嘿嘿,又中毒了spoolsv.exe
  9. 可重入锁是什么和demo
  10. oracle导出命令位置,ORACLE 导出导入命令说明
  11. 【软件测试】测试计划书
  12. 【ADO.NET--MVC】初学MVC(MVC入门)(1)
  13. 专家解惑 | 关于华为云盘古大模型,你想问的都在这里~
  14. Android 线程状态
  15. 布客·ApacheCN 编程/大数据/数据科学/人工智能学习资源 2020.1
  16. 打印机显示链接到计算机,电脑连接打印机突然显示错误怎么办
  17. 微信小程序使用scss,gulp
  18. “新主”难救美赞臣?
  19. 抵制“非你莫属”节目的微博活动,我被臭公知震到了,微博成了不负责任的宣泄之地
  20. “珠三角”企业创新难在哪里

热门文章

  1. CV之API:利用Face++的人体识别接口,实现摄像头实时手势识别
  2. 8.图片组件和动画效果--从零起步实现基于Html5的WEB设计器Jquery插件(含源码)...
  3. scrapy爬虫,爬取图片
  4. 拔掉网线时Socket的检查方法
  5. STM32F系列USART的IDLE中断要注意了
  6. 再次理解STM32中的堆栈机制
  7. mysql 使用中 修复 blog_Java My-Blog之mysql容器重复初始化严重bug修复过程
  8. EOS开发步骤(1) 开发说明
  9. 智能合约重构社会契约(7)以太坊总结
  10. 区块链系统之《基于区块链的数字身份认证》