服务器指纹识别之 DNS TXT
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.一般的成熟度度量:當審查一個組織擁有的所有域名的域名驗證令牌時,可以對它們的成熟度水平有一個大致的了解,你可以開始回答一些基本的問題,比如:
它們是否使用內容分發網絡(CDN)來分發和保護它們的網站內容?
他們是否使用第三方營銷和分析? 如果是這樣的話,又是哪個第三方? 它們是如何配置的?
他們是否使用與安全相關的服務提供商? 這些保險提供什么保障?
他們使用誰來頒發 SSL / TLS 證書? 它們是如何使用的?
他們使用什么郵件保護服務? 那些默認配置是什么?
e. 分析特定的在線服務提供商的域名驗證令牌可以產生額外的洞察力。 例如,許多域名驗證令牌都是惟一的某個數值,每個新客戶的數值都會遞增。 通過分析數千個域名的值,你可以開始推斷某個特定客戶機使用的服務提供商的時間之類的事情。 一些驗證令牌還包括散列和加密的 base64值,這些值有可能在離線時被破解以顯示某些明文信息。
f. 現實世界的攻擊者還可以試圖直接入侵服務提供商,然后橫向移動到特定公司的站點、數據存儲等服務器上。 共享主機提供商就是一個常見的例子。 滲透測試人員和紅隊人員不能利用這些場景,但是如果你是一個服務提供商,你應該努力加強客戶端隔離,以幫助避免向攻擊者敞開這些攻擊向量。
總結
分析 DNS TXT 記錄中發現的域名驗證令牌遠非一個新概念,但我希望 Resolve-DnsDomainValidationToken 中的指紋庫將有助于在下一個紅隊、滲透測試評估或內部審計期間節省你的一些時間。
【白嫖網絡安全學習資料嗎】
總結
以上是生活随笔為你收集整理的服务器指纹识别之 DNS TXT的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 攻击 FreeIPA 域:对象枚举
- 下一篇: 进一步考察与UI相关的安全漏洞-上