
我一直在閱讀有關 kaminsky DNS 錯誤的信息,試圖更好地理解它是如何工作的。我想我已經掌握了要點,但 Dan 提到了 bailiwicks,用於針對防火牆後面的 DNS 伺服器。
有人可以解釋一下什麼是 bailiwick,並舉例說明如何使用它來瞄準防火牆後面的伺服器以利用 kaminsky 漏洞嗎?
答案1
範圍
Linux 雜誌文章那埃赫蒂亞爾發布的內容很好地解釋了 bailiwick 是什麼以及它與 DNS 的關係。基本上,額外的記錄會新增到 DNS 回應中以協助尋找委託 DNS 伺服器。引用文章中的例子:
$ dig @ns1.example.com www.example.com
;; ANSWER SECTION:
www.example.com. 120 IN A 192.168.1.10
;; AUTHORITY SECTION:
example.com. 86400 IN NS ns1.example.com.
example.com. 86400 IN NS ns2.example.com.
;; ADDITIONAL SECTION:
ns1.example.com. 604800 IN A 192.168.2.20
ns2.example.com. 604800 IN A 192.168.3.30
攻擊
有關攻擊的詳細資訊請參見 Dan 的幻燈片(請參閱投影片 24/25)。要攻擊防火牆後面的伺服器:
- 觸發對攻擊者控制的域(例如“
1.badguy.com
”)的子域的查找。 - 攻擊伺服器使用其試圖毒害的網域的 CNAME 記錄進行回應(例如「
debian.org
」)。這會導致從目標到「debian.org
」的 DNS 查詢。 - 一旦攻擊伺服器發送 CNAME 引用,它就會開始在欺騙性 DNS 回應中進行串流傳輸,其中包括附加回應(例如「
security.debian.org
」指向「badguy.com
」的 IP 位址)。 - 如果回應中的交易 ID 被正確猜測,防火牆後面的伺服器現在會認為「
security.debian.org
」解析為壞人的位址。
有很多方法可以讓防火牆後面的伺服器尋找 IP 位址、內部客戶端請求、解析伺服器日誌中的 IP 位址等。波茲邁耶提到防火牆在這次攻擊中很大程度上無關緊要。
答案2
正如 Mark Johnson 所提到的,DNS 伺服器的管轄權是其具有權威的一組網域。曾經,遞歸名稱伺服器接受來自權威名稱伺服器的管轄範圍外的資料。因此,foo.example 的權威名稱伺服器可以在他的答案中添加額外的數據,說明 www.bar.example 的 IP 位址,並且他被相信。這是該計劃的基礎卡什普雷夫攻擊。很長一段時間以來,名稱伺服器不再相信管轄範圍外的數據,正如RFC 2181,第 5.4.1 節。
卡明斯基攻擊確實不是使用管轄區外的數據,因此也可以使用最新的名稱伺服器。這 Linux 雜誌Luke Quinane 提到的文章很好地解釋了這一點(但 Luke Quinene 的帖子的其餘部分,特別是有關防火牆的內容,是值得懷疑的。)
關於防火牆,這主要是一個不相關的問題。如果名稱伺服器想要接收其查詢的答案,那麼它必須是可存取的,因此,無論它是否有防火牆,都沒有關係:卡明斯基攻擊只需要一個通道,即 DNS 通道。
由於卡明斯基攻擊是針對客戶端電腦將使用的名稱伺服器,因此這些電腦是否受到防火牆保護並不重要。 (這是一個很好的例子,說明為什麼防火牆不是神奇的設備,也不能保護一切。)