iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 6
2
Security

網路安全概述系列 第 6

DNS Spoofing: 何謂 DNS? DNS Cache Poisoning?

DNS 解說

之前曾經提到 OSI 的架構。是否對於第三層 (TCP/UDP等) 有印象?
在第三層中,「網路表頭」是記載 IP,而不是對方的網域。

DNS 伺服器負責將人類容易記得的「網域名稱」(如 evsfy.com)轉換成 IP 地址。如果某一台伺服器並不知道那個網域名字是對應哪個 IP,它會想辦法去問另一台伺服器。通常伺服器會將每一組 IP-網域 的對應關係做一個短時間的快取。所以,如果 DNS 伺服器先前被問到一組不知道的紀錄,它會先去問別台,之後短時間內就不用再問一次了。

常見的 DNS 紀錄

DNS 紀錄有好幾種,這邊解說一下常見的 DNS 紀錄種類。

  • A/AAAA - 將一個網域對應到 IPv4 / IPv6 的位置
  • CNAME - 將一個網域對應到另一個網域
  • MX - 紀錄這個網域的郵件伺服器
  • NS - 「我不知道這網域的紀錄,可是你可以問他」
  • TXT - 拿來紀錄一些東西

DNS Cache Poisoning?

DNS Spoofing 是指「偽造 DNS 紀錄」,而比較常聽到的是「DNS 快取污染」(DNS Cache Poisoning)。

跟 ARP 一樣,DNS 若讀到一組不正確的紀錄,那他就會被影響到,而且還會把這筆不正確的紀錄告訴別人。然後一段時間內,被影響到的 DNS 伺服器都會給出不正確的資訊。
由於 DNS 是樹狀結構,所以 DNS 快取污染會影響到附近的 DNS 伺服器。

要進行 DNS 快取污染,要先從 DNS 服務軟體的漏洞來著手。正常的狀況下,DNS 伺服器問別人資訊時,都要先驗證「這筆資訊是不是合理的」(如使用 DNSSEC,下面會解釋)。

DNS 快取污染,主要的影響是會將使用者導向不正確的站台。

例如說某國家把 Google 的域名做了 DNS 快取污染,連線到某個國家的主機上,並在這個主機上架一個很像 Google 的網站,一般人通常也不會發現。攻擊方也可以用這招來做釣魚攻擊,或是配合某些已知的 0-day 漏洞來攻擊使用者。

攻擊方式

有幾種可能的攻擊方式。
以下我們都猜測被攻擊方(正常的 DNS 伺服器)不能或不會做驗證,這邊純粹是解釋過程。

DNS 大致上的流程解釋,與常見的攻擊方法

我們這邊假設幾點:

  1. 攻擊方的網域名稱是 attacker.here,IP 1.1.1.1
  2. 被攻擊方是 target.here

如果這次的攻擊是針對「污染 A 記錄本身」,對話流程大概是這樣:

被攻擊方收到一個請求,需要解析 attacker.here。不過被攻擊方並不知道這個網域,所以他要去問別人。
他會和另一台伺服器這樣問「attacker.here 的位置是啥?」

attacker.here. IN A

假設另一台伺服器是攻擊者,他便會這樣回應:

Answer:
(no response)

Authority section:
attacker.here. 3600 IN NS ns.target.here.

Additional section:
ns.target.here. IN A 1.1.1.1

這個意思是:

  1. attacker.here 是指向 ns.target.here
  2. 然後我還知道 ns.target.here 是對到 1.1.1.1

假設被攻擊方完全不做檢查,那麼,被攻擊方就會把這個結果做快取,然後每個人問他 attacker.here,他都會回 1.1.1.1 (即使他的 IP 根本不是這個)。

防禦方式

基本上,DNS 快取污染的防禦都是,都是「不要那麼相信對方跟你講的話」,以及「不要理會你沒問的東西」。

其中一種方式,是使用 HTTPS 的數位簽章來解決掉偽造主機的問題。
另一種是下一篇會提到的,目前常見的防禦方式「DNSSEC」。


上一篇
ARP Spoofing,講解
下一篇
DNS Spoofing: DNS 補充說明、DNSSEC 為何存在
系列文
網路安全概述31

1 則留言

0
Zico Tung
iT邦新手 5 級 ‧ 2019-12-24 23:46:02

感謝分享!! 受用良多

我要留言

立即登入留言