雲計算

DNS科普系列 :被動DNS(Passive DNS)

如今,每個人的生活都離不開互聯網,而互聯網中又蘊含著很多小學問。就拿瀏覽網頁來說,當我們輸入某個網址後,屏幕背後究竟要經歷怎樣的過程,才能帶我們精準到達那個網頁呢?

我們把輸入的網址稱為域名,而在這背後,需要一臺域名服務器將該域名解析為對應的IP地址,然後根據IP地址來對網站服務器進行訪問。其中,通過域名獲取對應IP地址的過程叫域名解析。域名解析需要使用到DNS。

DNS是互聯網上存儲域名與IP映射關係的一個分佈式數據庫。使用DNS,用戶可以方便的用域名訪問互聯網,而不用關心複雜難記的IP地址。

然而,我們發現有一些問題,光靠DNS是很難解決的,例如:

  • 一個域名過去曾指向到何處?
  • 特定網絡範圍內的IP地址對應的所有域名有哪些?
  • 對於一個給定的名稱服務器,它託管了哪些域名?
  • 有哪些域名指向給定的IP網絡?
  • 一個域名下存在哪些子域名?

這些DNS很難解決的問題,利用被動DNS(Passive DNS)技術就可以迎刃而解。

被動DNS是什麼?

被動DNS是Florian Weimer在2004年提出併發明的一項技術,與DNS查詢的方式相反,被動DNS屬於反向獲取或查詢DNS數據信息。

被動DNS,將全球域名系統中可用的DNS數據信息(包括)重建到中央數據庫中,以便研究人員對其進行檢索和查詢。這些數據信息是從生產網絡中獲取到的,不僅包含了當前的DNS數據,也包括了歷史記錄中的一些DNS數據映射。

被動DNS的應用場景有哪些?

發明被動DNS技術的初衷,是為了防止網絡攻擊,事實上,它的確在這方面起到了突出的作用。除此之外,它還被用在其他的應用場景中,例如:

  • 檢測網站釣魚域名
  • 阻斷垃圾郵件干擾
  • 識別惡意域名
  • 提供威脅情報
  • 檢測域名劫持
  • 品牌保護
  • 域名DNS歷史記錄查詢
  • 查詢主域名下的所有子域名

被動DNS是如何工作的?

接下來,讓我們通過一個實例,來了解被動DNS是怎麼工作的?

以下實例,使用到的是美國Farsight Security公司推出的Passive DNS數據庫----DNSDB,有關這一案例的更多信息,可參考該公司的Passive DNS白皮書:https://info.farsightsecurity.com/passive-dns-ebook

被動DNS基於被動觀察的DNS查詢和響應。例如,一個互聯網用戶可能會查詢到www.popeyes.com,這是美國一家頗受歡迎的炸雞餐廳的網站。根據查詢發生的位置,被動DNS傳感器可以收集到該DNS查詢的相關信息,並收集到主機名解析的IP地址,例如13.52.38.70。

將該信息添加到DNSDB後,DNSDB用戶可以在DNSDB中搜索該名稱,從而瞭解該名稱解析為哪個IP地址;用戶還可以查詢IP地址並收集指向該IP的域名。

這一過程,如下圖所示:

1.png

例如,使用DNSDB命令行工具dnsdbq查看標準域名,我們看到:

$ dnsdbq -r www.popeyes.com -S -k last | more
;; record times: 2019-11-05 15:04:13 .. 2020-04-06 23:41:49
;; count: 179249; bailiwick: popeyes.com.
www.popeyes.com. CNAME rbi.netlifyglobalcdn.com.

;; record times: 2019-08-07 16:07:03 .. 2019-11-05 15:04:00
;; count: 96401; bailiwick: popeyes.com.
www.popeyes.com. CNAME popeyes.com.

;; record times: 2017-03-31 02:33:47 .. 2019-08-07 15:59:50
;; count: 369691; bailiwick: popeyes.com.
www.popeyes.com. CNAME popeyeswcag.wpengine.com.
[ etc ]

我們截取了一段時間www.popeyes.com是CNAME的記錄(第一段部分)

該CNAME指向另一個域名:rbi.netlifyglobalcdn.com。

為了找出該域名的實際位置,我們需要再次通過被動DNS查看結果:

$ dnsdbq -r rbi.netlifyglobalcdn.com/A -S -k last | more
;; record times: 2020-03-19 16:34:11 .. 2020-04-07 00:41:42
;; count: 7912; bailiwick: netlifyglobalcdn.com.
rbi.netlifyglobalcdn.com. A 54.156.183.85

;; record times: 2019-11-05 15:10:24 .. 2020-04-07 00:35:09
;; count: 121708; bailiwick: netlifyglobalcdn.com.
rbi.netlifyglobalcdn.com. A 35.199.169.199
;; record times: 2020-03-19 16:43:14 .. 2020-04-07 00:32:07
;; count: 22756; bailiwick: netlifyglobalcdn.com.
rbi.netlifyglobalcdn.com. A 13.52.58.70

;; record times: 2020-03-19 16:52:23 .. 2020-04-07 00:27:17
;; count: 23076; bailiwick: netlifyglobalcdn.com.
rbi.netlifyglobalcdn.com. A 54.215.26.148
[etc]

值得注意的是,DNSDB報告了我們在“真實DNS”中找到的IP地址13.52.58.70,但被動DNS傳感器也大致在同一時間看到了其他IP地址。 在這種情況下,由於Popeyes®是非常受歡迎的快餐連鎖店,因此他們使用的內容分發網絡可以在同一時間段內解析該站點的暱稱(rbi.netlifyglobalcdn.com)到多個IP地址(CDN可能會將來自美國西海岸的查詢發送到一臺服務器,將來自東海岸的查詢發送到另一臺服務器,並將來自南海岸的查詢發送到第三臺服務器)。 這意味著我們現在可以輕鬆查看有關此域的詳細信息,否則我們可能很難發現它們。

是否有使用相同CNAME的域? 我們可以通過搜索記錄的“右側”進行檢查(例如通過使用-n而不是-r):

$ dnsdbq -n rbi.netlifyglobalcdn.com -S -k count
;; record times: 2019-11-05 15:04:13 .. 2020-04-07 02:43:57
;; count: 179517
www.popeyes.com. CNAME rbi.netlifyglobalcdn.com.

;; record times: 2019-11-20 23:49:36 .. 2020-04-07 03:35:15
;; count: 29883
www.timhortons.ca. CNAME rbi.netlifyglobalcdn.com.

;; record times: 2019-11-13 03:08:20 .. 2019-11-13 03:16:25
;; count: 28
www.bk.com. CNAME rbi.netlifyglobalcdn.com.
;; record times: 2019-11-13 03:11:20 .. 2019-11-13 03:13:24
;; count: 9
mobile.bk.com. CNAME rbi.netlifyglobalcdn.com.

通過這個實例,我們發現www.timhortons.ca、www.popeyes.com以及www.bk.com(漢堡王®)使用了相同的CNAME,那麼他們之間有什麼關係呢?

通過查閱相關資料,我們發現,這三個品牌其實同屬於一家餐飲公司。

2.png

原本只是簡單的一次檢索,被動DNS卻可幫助我們發現一個域名背後的三個快餐連鎖品牌之間的關係。

而這只是被動DNS諸多應用場景中最為普通的一個,在預防網絡攻擊方面,它還會展示出更強有力的作用,這些都需要我們進一步學習與探索。

如需瞭解被動DNS更多的信息,請參考以下資料:

[1] https://securitytrails.com/blog/passive-dns

[2] http://techgenix.com/what-passive-dns/

[3] https://www.farsightsecurity.com/technical/passive-dns/

Leave a Reply

Your email address will not be published. Required fields are marked *