DNS 协议
一、DNS
1. 概念
- DNS(domain name system) 域名系统,作为将域名的 IP 地址相互映射关系存放在一个分布式的数据库,DNS 使用的是 UDP 的 53 端口
- 域名:有 ICANN 机构统一管理
2. 域名空间
-
树状结构
- 根域:(全世界只有 13 台根域服务器)
- 顶级域:(主要用于区分域名的用途)
- 组织类:商业(com) 教育和学校(edu) 社会非盈利性组织(org)
- 国家 / 地区域名:中国(cn) 香港(hk) 美国 (us) 英国 (uk)
- 二级域名
- FQDN:完全限定域名
二、DNS 查询
1. 查询过程
- 客户机想要访问 www.baidu.com,根据自己的 TCP/IP 参数,向自己的首选 DNS 服务器发送 DNS 请求
- 首选 DNS 收到客户机的请求后,会去查询自己的区域文件,找不到 www.baidu.com 的 IP 地址信息(将请求转发到根域服务器,需要配置根提示);直接可以以找到 www.baidu.com 的 IP 地址信息(直接响应给客户机)
- 根域服务器收到请求后,由于根域服务器只维护顶级服务器信息,会响应顶级域服务器 IP,首选 DNS 根据根域服务器响应的信息,将请求转发到 com 顶级域
- com 顶级域服务器收到请求,由于 com 顶级域服务器只维护二级域信息,二级服务器 IP(baidu.com), 首选 DNS 根据顶级域相应的信息,将请求转发到 baidu.com 二级域
- baidu.com 二级域收到请求,baidu.comDNS 服务器里面维护的是 baidu.com 区域的所有主机信息,包含了 www.baidu.com 的信息,直接将 www.baidu.com 的 IP 地址响应给首选 DNS
- 首选 DNS 在响应给客户机
2. 递归查询
- 当客户机请求自己的首选 DNS 服务器,首选 DNS 服务器上有域名记录信息,直接响应给客户机(由上图所示,第一步和第八步是递归)
3. 迭代查询
- 首选 DNS 服务器没有域名记录信息,通过一步一步去根域服务器,顶级域服务器,二级域服务器,最终找到对应的域名记录信息
4. 查询内容
- 正向:通过域名查 IP
- 反向:通过 IP 查域名
三、使用 Windows 部署 DNS 服务器
- 使用 Linux 配置时使用 bind 服务
1. DNS 服务器分类
- 主要名称服务器:存放区域(二级区域)中相关的设置,存放的是区域文件的正本数据
- 辅助名称服务器:存放的是副本数据,是从主要名称服务器复制过来的,不能修改
- 主控名称服务器:提供数据复制(可以理解为 DNS 服务器中某一个角色)
- 缓存(cache-only)域名服务器:里面没有区域文件,需要配置转发器
2. 配置
- 在 server 上安装 DNS 服务器
- 新建正向查找区域
- SOA 记录
- NS 记录
- 新建主机(A)记录
- 新建别名(CNAME)记录
3. DNS 记录
- A: 主机记录,域名和 IP 地址的映射
- CNAME:别名记录
- SOA:权威名称服务器
- NS:名称服务器
- MX:邮件交换记录,一般有邮件服务器时使用
- SRV:正在提供特定服务的服务器
- PTR:反向指针记录
4. 区域传送
- 将主要名称服务武器的区域文件传送到辅助名称服务器上
- 区域传送使用的 TCP 协议
四、分析 DNS 流量
1. DNS 报文字段
- ID 字段
- flags: 标志 *
- 第 1 位:标识消息类型(0 是请求,1 是响应)
- 第 2~5 位:opcode 查询种类
- 第 6 位:标识是否是一个权威应答
- 第 7 位:一个 UDP 报文为 512 字节,指示是否截断超过部分
- 第 8 位:是否请求递归
- 第 9 位:允许递归的标识
- 第 10~12 位:保留位
- 第 13~16:应答码(0 没有错误,1 格式错误,2 服务器错误,3 名字错误,4 服务器不支持,5 拒绝,6~15 保留)
- questions:请求段中问题记录数
- answer rrs:回答段中的记录数
- authority rrs:授权段中授权记录数
- additional rrs:附加段中的附加记录数
五、实施 DNS 欺骗
- 在 kali 上使用 ettercap
-
编辑 ettercap 文件
vim /etc/ettercap/etter.dns - 先对目标主机和网关进行 ARP 欺骗
- 实施 DNS 欺骗