[IT-Security-1] DNS security
DNS security
Notes from RWTH Aachen University course
“IT security 1” Wintersemester 2019/20
professor: Meyer, Ulrike Michaela
- Domain Name System
- 為了將有意義、架構性的 Domain Name 對應到 IP 位址
- 由許多DNS server組成
- DNS server可以被applications query
- root 沒有名字
- domain 命名/控制/授權 subdomain
- Zones
- 跟 Domain 不同,Zones 的 Child 不一定屬於同個 Zone
- 每個 Zone 有部分 Domain name tree 及有這個 zone 的資訊的 name server
- 每個 Zone 的 authoritative name server 都有存 zone file
- Resource Records
- 每個 Domain name 都有一組相關的 resource records
- 記錄對應的 “A” type: IPv4 位址/ “AAAA”: IPv6…
- Recursive queries
- 被 queried 的 name server 一定要回答問題,不能指向其他 name server
- Iterative queries
- 被 queried 的 name server 可以回覆適當的 NS type 的 RR 或 A type 的 RR 指向其他 name server
- DNS security goal
- 正確
- 可用
- DNS 攻擊
- Cache poisoning
- redirect
- 網站不存在
- 早期的Cache poisoning:
- 加入多的type “A” RR,則DNS回傳時會回傳兩個IP位址
- 此方法已不可能
- Bailiwik rule: 授權的 name server 只會回傳 subdomain 的網址
- 新Cache poisoning:
- 需要偽造IP位址
- 且在正確的IP位址回傳前,送出
- 隨機的 Query ID 可以阻止Cache poisoning
- 若攻擊者可以預測 Query ID則還是可以攻擊
- resolvers 可以檢查 query ID, IP address, source port
- 攻擊者須偽造 query ID, IP address, source port 才可攻擊,且要比真的 name server 快
- 偽造一個 query ID: Birthday Attack
- \(k\) 次猜測保證有 \(P\) 的機率猜到一 16 bit 的 query ID
\(N=65535, P=99\%,\text{ then }k =4.6\times N\)\(P\) \(k\) \(P\approx 1-e^{-\frac{k}{N}}\) \(k\approx ln(\frac{1}{1-P})N\) - 但如果攻擊者可以使 resolving DNS server 傳送 \(k\) 個隨機 query IDs,且攻擊者送出相等的 query IDs 猜測,至少有一個 query ID 命中
從 \(k\) 個裡面猜 \(k\) 次
\(P=99\%,\text{ then }k\approx 388\)\(P\) \(P\approx 1-\frac{(N-k)}{N}^k\) 攻擊者一次送出 \(388\) 次query IDs
在真的response抵達之前,成功機率是\(99\%\)- 如果真的response比假的IP address先抵達,則會被存在 cache 中,要等到此IP address的TTL到期才有辦法再攻擊
- 隨機Source port
- 攻擊者須猜中 query ID 和 source port
- 減緩 Kaminsky Attack
- 作業系統(stub-resolver)也是poinsoning的攻擊對象
- malware攻擊
- 若與攻擊者在同個network中,有辦法擷取DNS query
- 用 IPsec/TLS 增加DNS安全
- 偵測偽造的IP address
- 無法用 cache poisoning 攻擊
- 無法cache
- 須建立IPsec的associations/ TLS的handshaking
- DoS攻擊
- DNSsec
- 用簽章增加resource record的授權
- 分配公鑰
不提供機密性和access control
- Zone signing key(ZSK)
- 對一個zone中的DNS RRsets簽章
- 可以時常更換(zone可自己更換)
- key signing key(KSK)
- 對DNSKEY RR簽章,包含ZSK
- zone的信任起源
- 需被parent zone信任
- 若Data被ZSK簽章,在zone裡可被信任
- 若ZSK被KSK簽章,ZSK可被信任
- 若找不到 domain names (NXDOMAIN) 則回傳新的RR type NSEC
- 最接近的下一個domain name (字典序)
- 缺點:replaying NSEC entry
透露其他合法domain name資訊 - 解法:動態生成並簽章NSEC
- 解法2:NSEC3
把所有存在的domain name用hash
用hash value排序
回傳query的hash值和下個hash值
- 缺點:replaying NSEC entry
- DNS的DDoS攻擊
- 多個IP對同一台DNS server攻擊
- 偽造 DNS information
- 更改 name server 資料
- DoS 攻擊
- 用 DNS 當 command 或 data extraction channel
- 擷取資料給DNS server
Readings
Allan Liska and Geoffrey Stowe: “DNS Security: Defending the Domain Name System”, Elsevier 2016
DNS in general
Chapter 2.1 of Andrew Tanenbaum’s “Computer Networks
RFCs
RFC 1034: Domain Names – Concepts and Facilities
RFC 1035: Domain Names – Implementation and Specification
RFC 4033: DNS Security Introduction and Requirements
RFC 4034: Resource Records for the DNS Security Extensions
RFC 4035: Protocol Modifications for the DNS Security Extensions
留言
張貼留言