网络安全课程笔记三:DNS Security

Network Security Lecture 3: DNS SECURITY

3.1 DNS 服务器

Domain Name System (DNS) 是一个分布式的,有继承关系的数据库。

DNS zone:相同机构下的域名集合(www.polyu.edu.hk, www.lib.polyu.edu.hk, 4yc.polyu.edu.hk)

例如某个客户端想要查询 www.baidu.com 的 IP:

  1. 他需要查询根服务器,获得 .com DNS 服务器地址
  2. 他需要查询 .com 服务器,获得 baidu.com DNS 服务器地址
  3. 他需要查询 baidu.com 服务器,获得 www.baidu.com IP 地址

3.1.1 根 DNS 服务器

当本地的 DNS 服务器不能解析某个域名,他会查询根服务器。

3.1.2 TLD 服务器

解析所有的顶级域名(.com, .org, .cn, .edu 等)

3.1.3 权威 DNS 服务器

组织自己的 DNS 服务器,提供权威的域名、IP 映射关系。

3.1.4 本地 DNS 服务器

每个 ISP 都有一个本地 DNS 服务器,也被称为默认域名服务器(有本地的 Cache,但可能是过期的)。

当一个主机想要查询 DNS,请求会被发送到他的本地 DNS 服务器:

  • 迭代查询方式:本地服务器如果不知道这个域名,他会依次查询根服务器,TLD 服务器,和权威服务器。
  • 递归查询方式:本地服务器如果不知道这个域名,他会向根服务器发起查询请求,根服务器再向 TLD 服务器查询,TLD 服务器再向权威服务器查询。

3.2 DNS Record

RR: Resource Record,单个资源记录 (name, ttl, class, type, value):

|       name        | ttl | class | type |     value      |
| www.polyu.edu.hk. | 300 | IN | A | 158.132.19.241 |

RR type:

  • A:name 是 hostname,value 是 IP 地址
  • NS:name 是 domain,value 是这个域名的权威 DNS 服务器的 hostname
  • CNAME:name 是一个别名,value 是其原名
  • MX:value 是和 name 相关联的邮件服务器的名字

另外 RR 中还会包含 PTR(Pointer),存储了 IP 到域名的映射:

|            name             | ttl | class | type |       value       |
| 241.19.132.158.in-addr.arpa.| 300 | IN | PTR | www.polyu.edu.hk. |

3.2.1 DNS 缓存

任何域名服务器如果获知了某个映射关系,他会进行缓存。缓存会在 TTL 时间之后过期。通常 TLD 服务器都被缓存在本地服务器中,因此根服务器不常访问。

如果某个域名换了 IP 地址,那么直到所有的 TTL 到期,整个 Internet 才能知道新地址。

3.3 针对 DNS 的攻击

3.4.1 IDN 欺骗

IDN 欺骗是钓鱼式攻击的手法之一。它利用国际化域名(IDN)可以以 Unicode 字符命名网址的特性,透过同形异义字,鱼目混珠。

Unicode 有许多同形异义字,例如西里尔字母的小楷 а(U+0430)和英文的 a(U+0061),在许多字体中都看不出有什么不同。于是,入侵者便可用此来欺骗用户。

例如入侵者可以注册一个和著名网站差不多的网址名。例如有西里尔字母的pаypal.com,以数字 0 伪装英文字母 O(G00GLE.COM -> GOOGLE.COM),i 的大楷 I 或数字 1 伪装 L 小楷的 l(google.com -> googIe.com),rn(r 与 n)伪装 m 等。

3.4.2 攻击 DNS 服务器

  1. 消耗带宽的 DDoS 攻击
  2. 基于协议的 DDoS 攻击
    • DNS 请求泛洪
    • 服务器漏洞

3.4.3 DNS 投毒

维基百科:https://en.wikipedia.org/wiki/DNS_spoofing

原理:当受害 DNS 服务器发送解析请求之后,再冒充权威 DNS 服务器向其发送假冒的回答。由于 DNS 服务器只会理会最先到达的回答,因此只要保证假冒的回答在真正的回答之前到达受害者主机即可。

保证方法:

  • DDoS
  • 中间人(MITM)

如何防御 DNS 投毒攻击:

  • 随机化 SP(Source Port)、随机化查询 ID
  • 验证服务器的身份

3.4.4 Kaminsky DNS Attack

相关介绍:http://unixwiz.net/techtips/iguide-kaminsky-dns-vuln.html

  1. 对于目标域名,请求解析一个随机的子域名(www123456.domain.com)
  2. 发送一串伪造的数据包给受害者,这些数据包不是 A 记录,而是 NS 记录,试图将原权威 DNS 服务器对应的 IP 替换为攻击者自己的服务器 IP

优点:

  1. 由于该随机子域名并没有对应的 RR 项,因此就算真正的回答最先到达了,攻击者可以再次尝试,而无需等待 TTL
  2. 一旦将原权威 DNS 服务器的 IP 地址替换为攻击者自己的服务器 IP,攻击者可以在这台服务器上控制一切