DNS Tunneling 攻擊是什麼?如何防制?
2024-11-07 12:24:56
DNS Tunneling 是一種利用 DNS 協定的漏洞來進行資料傳輸的攻擊手法。攻擊者可以透過偽造 DNS 查詢來將資料封裝在 DNS 訊息中,並透過 DNS 伺服器進行傳輸。
攻擊手法
舉個例子:
攻擊者想要將「This is normal message」傳輸到遠端主機,可以將資料封裝在以下 TXT 記錄中:example.com. 3600 IN TXT "This is normal message"
之後攻擊者利用受害者電腦發送 DNS 查詢請求(瀏覽網頁時同樣會對網站的網域 DNS 發送查詢請求)給 example.com 時,會收到:
1 | ; Response to the TXT query for example.com |
受害者的電腦向 example.com
發送 DNS 查詢,獲取上述 TXT 記錄,攻擊者即可從中提取資料。由於 DNS 查詢頻繁且多樣,防火牆通常不會深入檢查每個 DNS 請求和回應,這使得 DNS 隧道攻擊可能成功。
現實中的攻擊案例:
在實際攻擊中,攻擊者可能將敏感資訊(如帳號和密碼)進行編碼(例如 Base64),然後將其嵌入到 DNS 查詢中,傳輸至攻擊者控制的 DNS 伺服器。例如,攻擊者可能發送類似 encoded_data.example.com
的 DNS 查詢,其中 encoded_data
是編碼後的敏感資訊。
實際攻擊的概念驗證(POC):
GitHub 上有一個名為 dns-tunneling-poc 的專案,展示了 DNS 隧道的概念驗證。該專案包含一個 DNS 客戶端和伺服器,演示如何通過 DNS 查詢傳輸資料。具體而言,客戶端將資料分段編碼為 Base32,並將其嵌入到符合 DNS 命名規則的查詢名稱中,然後發送給攻擊者控制的 DNS 伺服器。伺服器接收這些查詢,解碼並重組資料。
如何防制
- 避免安裝未知或可疑的軟體: 攻擊者常透過誘導受害者安裝惡意程式來建立 DNS 隧道。因此,應謹慎下載和安裝軟體,僅從可信來源獲取,並定期更新防毒軟體以偵測和阻止惡意程式。
- 監控 DNS 流量的數量與頻率: 定期分析 DNS 查詢的模式,特別是短時間內大量針對相同或相似網域的查詢,這可能是 DNS 隧道攻擊的徵兆。透過設定警報和限制,及早發現並阻止異常的 DNS 活動。
- 實施 DNS 安全擴展(DNSSEC): DNSSEC 可確保 DNS 資料的完整性和真實性,防止偽造和篡改,增強 DNS 的安全性。
- 使用 DNS 防火牆: 部署先進的網路威脅防護系統,能夠檢查 DNS 流量,識別並阻止嵌入在 DNS 查詢中的惡意內容,防止資料外洩。
參考資料
- https://medium.com/dnsfilterofficial/dns-tunnelling-108bcde3a4a8
- https://www.infoblox.com/glossary/dns-tunneling/
- https://www.extrahop.com/resources/attacks/dns-tunneling/
- https://www.paloaltonetworks.com/cyberpedia/what-is-dns-tunneling
- https://www.checkpoint.com/tw/cyber-hub/network-security/what-is-dns-tunneling/