DNS域傳送漏洞是在黑客常用的一種漏洞攻擊手段。要實現域傳送漏洞,就需要一個不安全配置的DNS服務器,允許匿名用戶傳輸所有記錄並收集有關網絡中主機的信息。然後網絡上的任何用戶都可以獲取所有傳送記錄並收集有關網絡中服務器的信息。然而,目前還很少有人知道,如果使用Active Directory集成DNS,任何用戶都可以默認查詢所有DNS記錄。

本文,我會給你介紹了一個默認查詢所有DNS記錄的工具—— Adidnsdump ,即使你是一個沒有讀取傳送記錄權限的用戶,也可以使用以下方法獲得域環境中的所有DNS解析記錄。

0×01

就個人而言,每當我接手一個新的滲透測試任務時,我會去了解網絡佈局,使用了那些軟件以及數據的位置。如果公司有非描述性的服務器名稱或描述,像BloodHound或ldapdomaindump這樣的工具不會有太大幫助,因爲 SRV00001.company.local 仍然沒有告訴我在這臺主機上運行的是什麼。在大量IP地址上運行EyeWitness等發現工具通常會返回大量默認的Apache / IIS頁面,因爲大多數站點都配置爲偵聽DNS名稱而不是IP地址。此時你如果知道DNS記錄,可能就會發現SRV00001.company.local和gitlab.company.local指向同一個IP,這個IP上可能存放着大量源碼。因此,我認爲訪問AD的DNS記錄非常有價值。爲此我編寫了一個可以轉儲這些DNS記錄的Adidnsdump。你既可以直接在網絡中的主機運行它,也可以通過SOCKS隧道利用。

0×02

該工具的設計思路,是在我研究Active Directory DNS時開始的,主要受到Kevin Robertson在 ADIDNS 上工作的啓發。當我作爲普通用戶提取了ADSI Edit並突然看到了域中所有DNS記錄時,我試圖找出AD如何在LDAP中使用域來存儲DNS記錄。令我驚訝的是,早在2013年,就有人開發出可以提取DNS記錄的 PowerShell腳本 ,但它並沒有完全符合我的要求,所以我決定用Python編寫一個版本,並添加一些選項來枚舉比默認情況下更多的記錄。

0×03

在LDAP中查詢DNS記錄的最明顯方法是執行查詢,選擇該類的所有對象,這些對象 dnsNode 表示DNS區域中的條目。當我使用過濾器執行查詢時 (objectClass=dnsNode) ,這會返回非常有限的結果,即使我可以看不到更多記錄:

如上圖所示,很多記錄的objectClass都處於隱藏狀態。這是因爲計算機DNS記錄的默認權限(我認爲其他記錄也不是通過AD DNS gui創建的),這些記錄不允許所有用戶查看內容。由於IP地址實際上存儲爲此對象的屬性,因此無法查看這些記錄的IP地址。

但是,默認情況下,任何用戶都可以創建新的DNS記錄,任何用戶也可以默認列出DNS區域的子對象。所以我們知道有記錄,我們只是無法使用LDAP查詢它。

通過使用LDAP枚舉知道記錄所在的位置之後,我們就可以直接使用DNS查詢它,因爲執行常規DNS查詢不需要什麼特別權限,這樣我們就可以解析域中的所有記錄。

0×04

使用adidnsdump,您可以 從GitHub 獲取,可以枚舉DNS區域中的所有記錄。首先,首先顯示您當前所在域中的區域 --print-zones 。這將顯示存在哪些區域。並非所有區域都很有趣,例如轉發,緩存和存根區域不包含該域的所有記錄。如果找到這些區域,最好查詢它們實際所屬的域。下面的輸出顯示我的測試域只有默認區域:

user@localhost:~/adidnsdump$ adidnsdump -u icorp\\testuser --print-zones icorp-dc.internal.corp
Password: 
[-] Connecting to host...
[-] Binding to host
[+] Bind OK
[-] Found 2 domain DNS zones:
    internal.corp
    RootDNSServers
[-] Found 2 forest DNS zones:
    ..TrustAnchors
    _msdcs.internal.corp

如果我們爲工具指定區域(或者爲默認區域指定爲空),我們將獲得所有記錄的列表。顯示可以列出所謂的“隱藏”記錄,但僅顯示問號,因爲不知道哪種類型的記錄存在以及它指向何處。記錄全部保存到名爲的文件中 records.csv

要解析未知記錄,請指定 -r 標誌,該標誌將對 A 所有未知記錄執行查詢( AAAA 如果您在IPv6網絡中,則可以在代碼中輕鬆將其更改爲)。之前空白的幾個節點突然有記錄:

如果您沒有直接連接但是通過代理工作,則可以通過socks代理該工具並使用該 --dns-tcp 標誌在TCP上執行DNS查詢。

緩解措施

爲了安全起見,我建議你首先要對DNS記錄的安全性持有客觀的認知態度。如果你確實要隱藏DNS記錄,就請刪除“Everyone”和“Pre-Windows 2000 Compatible Access”的“列出內容”權限,以阻止普通用戶查詢DNS記錄。但這可能會產生負面影響,所以我不建議那樣做。

所以最好的辦法是及時檢測DNS查詢活動的出現,通過監控大量DNS查詢或啓用對DNS區域列表的審計可能是一種更好的緩解措施。

工具

adidnsdump可在 GitHub 和PyPI( pip install adidnsdump )上下載。該工具還可以將記錄轉儲到CSV文件,但隨時可以提交替代格式的請求。

*參考來源: dirkjanm ,FB小編周大濤編譯,轉載請註明來自FreeBuf.COM

相關文章