原理

访问像 www.example.com 这样的网站。你将这个友好的域名输入浏览器,但你的电脑不理解文字——它说的是数字的语言,特别是 IP 地址。那么,你的电脑是如何找到网站的 IP 地址的呢?这时就需要DNS,互联网的可靠翻译器。

主机文件

The hosts 文件是一个简单的文本文件,用于将主机名映射到 IP 地址,提供了一种手动域名解析方法,可以绕过 DNS 过程。虽然 DNS 自动将域名转换为 IP 地址,但 hosts 文件允许直接、本地覆盖。这对于开发、故障排除或阻止网站特别有用。

The hosts 文件位于 Windows 的 C:\Windows\System32\drivers\etc\hosts 和 Linux 及 MacOS 的 /etc/hosts 。文件中的每一行遵循以下格式:

1
<IP Address>    <Hostname> [<Alias> ...]

DNS 的关键概念

Domain Name SystemDNS )中, zone 是域名空间的一个独立部分,由特定实体或管理员管理。你可以把它想象成一个包含一组域名的虚拟容器。例如, example.com 及其所有子域名(如 mail.example.comblog.example.com )通常都属于同一个 DNS 区域。

区域文件是一个存储在 DNS 服务器上的文本文件,它定义了该区域内资源记录(将在下文中讨论),为将域名转换为 IP 地址提供关键信息。

为了说明,这里是一个简化的区域文件,用于 example.com 可能看起来像这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$TTL 3600 ; Default Time-To-Live (1 hour)
@ IN SOA ns1.example.com. admin.example.com. (
2024060401 ; Serial number (YYYYMMDDNN)
3600 ; Refresh interval
900 ; Retry interval
604800 ; Expire time
86400 ) ; Minimum TTL

@ IN NS ns1.example.com.
@ IN NS ns2.example.com.
@ IN MX 10 mail.example.com.
www IN A 192.0.2.1
mail IN A 198.51.100.1
ftp IN CNAME www.example.com.

DNS 服务器存储各种资源记录,每个记录在域名解析过程中都起着特定的作用。让我们探索一些最常见的 DNS 概念:

DNS Concept DNS 概念 Description 描述 Example 示例
Domain Name 用于网站或其他互联网资源的人类可读标签。 www.example.com
IP Address 分配给每个连接到互联网的设备的唯一数值标识符。 192.0.2.1
DNS Resolver 一个将域名转换为 IP 地址的服务器。 您的互联网服务提供商的 DNS 服务器或公共解析器,如 Google DNS( 8.8.8.8
Root Name Server DNS 层次结构中的顶级服务器。 全球有 13 个根服务器,命名为 A-M: a.root-servers.net
TLD Name Server 负责特定顶级域的服务器(例如,.com,.org)。 Verisign for .com ,PIR for .org
Authoritative Name Server 存放域名实际 IP 地址的服务器。 通常由主机提供商或域名注册商管理。
DNS Record Types DNS 中存储的不同类型的信息。 A, AAAA, CNAME, MX, NS, TXT 等

既然我们已经探索了 DNS 的基本概念,让我们深入探讨 DNS 信息的构建块——各种记录类型。这些记录存储与域名相关的不同类型的数据,每种数据都有特定的用途:

Record Type 记录类型 Full Name 全名 Description 描述 Zone File Example 区域文件示例
A Address Record 地址记录 将主机名映射到其 IPv4 地址。 www.example.com. IN A 192.0.2.1 www.example.com.192.0.2.1
AAAA IPv6 Address Record IPv6 地址记录 将主机名映射到其 IPv6 地址。 www.example.com. IN AAAA 2001:db8:85a3::8a2e:370:7334 www.example.com. 在 AAAA 2001:db8:85a3::8a2e:370:7334
CNAME Canonical Name Record 规范名称记录 为主机名创建别名,指向另一个主机名。 blog.example.com. IN CNAME webserver.example.net. blog.example.com. 在 CNAME webserver.example.net.
MX Mail Exchange Record 邮件交换记录 指定负责处理该域名电子邮件的邮件服务器。 example.com. IN MX 10 mail.example.com.
NS Name Server Record 名称服务器记录 将 DNS 区域委托给特定的权威名称服务器。 example.com. IN NS ns1.example.com.
TXT Text Record 文本记录 存储任意文本信息,通常用于域名验证或安全策略。 example.com. IN TXT "v=spf1 mx -all" (SPF record)
example.com. IN TXT "v=spf1 mx -all" (SPF 记录)
SOA Start of Authority Record
权威记录的开始
指定 DNS 区域的行政信息,包括主要名称服务器、负责人的电子邮件地址和其他参数。 example.com. IN SOA ns1.example.com. admin.example.com. 2024060301 10800 3600 604800 86400 example.com. 在 SOA ns1.example.com. admin.example.com. 2024060301 10800 3600 604800 86400
SRV Service Record 服务记录 定义特定服务的主机名和端口号。 _sip._udp.example.com. IN SRV 10 5 5060 sipserver.example.com.
PTR Pointer Record 指针记录 用于反向 DNS 查询,将 IP 地址映射到主机名。 1.2.0.192.in-addr.arpa. IN PTR www.example.com.

攻击手段

两类攻击者

被动攻击者(窃听者):不会影响两者之间的通讯,只是想获取信息

主动攻击者:会干扰两者的通讯

安全目标

CIA:

C(confidentiality):即在有主被者攻击情况下,无法获得网络中的内容

I(Integrity):攻击者无法篡改网络通信的内容

A(Authentication):通信双方是正确的主题

针对域名系统的攻击

  1. 输入url地址时,浏览器会询问本地的域名解析器
  2. 本地域名解析器会询问根根域名解析器
  3. 根域名解析器会返回org服务器域名解析器的相应地址
  4. 本地域名解析器会根据地址找到.org域名服务器询问
  5. org域名服务器会返回域名服务器地址
    6 .本地域名解析器再根据该地址寻找所需服务器
1
2
3
4
5
6
7
8
9
10
11
flowchart LR
缓存-->|直接查询|本地域名解析器
电脑 ---> 本地域名解析器
本地域名解析器-->|记录|缓存
本地域名解析器-->根域名解析器
根域名解析器-->|.org服务器地址 NS xxx.xx.xxx.xx|本地域名解析器
本地域名解析器-->.org域名解析器
.org域名解析器-->|域名服务器地址 NS xxx.xx.xxx.xx|本地域名解析器
本地域名解析器-->域名服务器
域名服务器-->|A www=xxx.xx.xxx.xx|本地域名解析器

NS服务器记录:由根目录和.org服务器提供的ip地址

地址记录:由域名服务器返回的

攻击方向

一、对查询过程的信息干扰

二、入侵域名服务器

三、DNS缓存攻击(对QID)