15838183637
网络运维

从ISP角度理解DNS与DNS劫持

日期:2024-07-18 08:44 访问:18次 来源:知乎-是我啊

1、域名解析系统- Domain Name System

DNS主要工作机制是将主机域名转换为IP地址,DNS 域的本质是一种管理范围的划分,最大的域是根域,向下可以划分为顶级域、二级域、三级域、四级域等。相对应的域名是根域名、顶级域名、二级域名、三级域名等。不同等级的域名使用点号分隔,级别最低的域名写在最左边,而级别最高的域名写在最右边。

从根域至二级域示例图

2、DNS-Anycast技术

ØAnycast DNS 可为每个终结点(例如不同地理位置的一组服务器)分配相同的 IP 地址的一组终结点提供多个路由路径。 组中的每个设备在网络上播发相同的地址,路由协议用于选择最佳目标。

Ø使用 Anycast DNS,可以启用 DNS 服务器或一组服务器,以基于 DNS 客户端的地理位置响应 DNS 查询。 其主要目的是增强 DNS 响应时间并简化 DNS 客户端设置。 Anycast DNS 还提供额外的冗余层,可帮助防范 DNS 拒绝服务攻击。

DNS-Anycast示例图

3、用户正常上网DNS全流程[1]

DNS 客户端进行域名 tsinghua.edu.cn 的解析过程如下:

1.用户向本地域名服务器(运行在用户端设备上)发送查询本地缓存请求,查询 tsinghua.edu.cn 主机的 IP 地址;

2.本地域名服务器查询数据库,发现没有域名为 tsinghua.edu.cn 的缓存记录,回复用户RRset exist;

2.1.用户再次向本地域名服务器发起tsinghua.edu.cn的DNS解析请求;

2.2.本地域名服务器收到用户发起的tsinghua.edu.cn解析请求后将代替用户以迭代方式向外主机查询各NS解析,首先是访问根域名服务器并递交.cn的解析请求;(此处正常情况下,由运营商ISP的LocalDNS执行了迭代查询,在用户侧感知是递归查询方式,因为用户只向外发布了一次查询请求就拿到了对应解析结果!

3.根域名服务器查询数据库,发现没有这个主机域名记录,但是根域名服务器知道 cn 域名服务器可以解析这个域名,于是将 cn 域名服务器的 IP 地址返回给本地域名服务器;

4.本地域名服务器向 cn 域名服务器查询 tsinghua.edu.cn 主机的 IP 地址;

5.cn 域名服务器查询数据库,也没有相关记录,但是知道 edu.cn 域名服务器可以解析这个域名,于是将 edu.cn 域名服务器的 IP 地址返回给本地域名服务器;

6.本地域名服务器edu.cn 域名服务器查询 tsinghua.edu.cn 主机 IP 地址;

7.edu.cn 域名服务器查询数据库,也没有相关记录,但是知道 tsinghua.edu.cn 域名服务器可以解析这个域名,于是将 tsinghua.edu.cn 的域名服务器 IP 地址返回给本地域名服务器;

8.本地域名服务器tsinghua.edu.cn 域名服务器查询 tsinghua.edu.cn 主机的 IP 地址;

9.tsinghua.edu.cn 域名服务器查询数据库,发现有主机域名记录,于是给本地域名服务器返回 tsinghua.edu.cn 对应的 IP 地址;

10.最后本地域名服务器tsinghua.edu.cn 的 IP 地址返回给客户端,整个解析过程完成。


4、ISP角度的DNS解析流程

ISP角度的DNS解析全过程与用户角度的DNS全过程区别在于以下几点:

1.在用户侧,本地DNS程序未出去迭代查询目的域名,该过程交给了ISP递归服务器代劳;

2.ISP侧缓存服务器如果存在目的域名的对应解析记录,则直接回复用户解析结果,不在由递归服务器进行迭代查询;

3.ISP递归服务器存在安全保护机制,会在ISP缓存服务器相应域名解析结果TTL值过期之前,提前进行迭代查询;


5、DNS劫持

现网DNS劫持主要分为两种方式:旁路抢答方式(分光镜像+抢先应答)与PBR策略路由方式[2]

1、本文主要介绍旁路抢答方式,ISP通过分光镜像省网出口53端口流量,根据用户请求包的目的域名,提前抢答回复用户,因用户提前收到解析结果,用户自动丢弃掉后续收到的关于目的域名对应逐级NS记录的包。

劫持后用户逐级解析结果

正常用户逐级解析请求结果

正常用户递归Trace结果应该会展现各级NS记录,而非根服务器直接抢先应答用户qq.com的A记录结果,出现这种情况大概率是被劫持了(有可能被某些流氓软件-xx浏览器劫持了DNS)。

劫持时Wireshark抓包情况

后续还可以通过Wireshark抓包分析是否被劫持,当被劫持时,应该只有三个数据包:1、用户发起DNS请求(一般由所设DNS代发),2、劫持方直接抢答解析记录,3、劫持方抢答根NS记录。

未劫持Wireshark抓包情况

这显然和前文提到的DNS 客户端进行域名 tsinghua.edu.cn 的解析过程所应收到的数据包数量不相同,正常未劫持时,抓包情况应该如上图所示:

1.用户向本地DNS程序发起查询请求,查询数据库是否存在qq.com的缓存记录;

2.本地DNS程序回复RRset exist(Answer RRset表示回答区域的数量,此时为0),表示没有目的请求域名qq.com对应的缓存记录;

3.用户再次给本地DNS发起解析请求,此时DNS本地程序向本机配置的LocalDNS发起解析请求(部分用户是自定义配置的DNS业务地址,另外部分用户默认使用由ISP省网侧BRAS自动下发给ONT(光网络终端,即光猫)的LocalDNS地址),LocalDNS(可以理解为位于ISP内部的DNS缓存服务器)首先查看是否存在缓存记录,若有则直接返回缓存记录,若无则交给递归服务器进行逐级递归,最终抓包过程中会先反馈用户一个A记录解析包,然后再回复一个请求qq.com递归过程中的逐级NS(名称服务器,即授权服务器)的解析记录


补充记录:

【1】DNS劫持主要分为三种:

1)路由牵引方式-通过获取异网DNS地址,凡是访问这些异网DNS的请求全部重定向至特定DNS;

2)旁路抢答(分光镜像+抢先应答),镜像分光所有DPI出口的53端口流量,针对流向异网DNS的递归,本地DNS伪装异网DNS进行抢答,此时会收到多个回包解析结果;

3)PBR策略路由,在出口设备配置策略路由,将53端口流量策略路由至网内,指向专门部署的DNS重定向系统,DNS重定向系统向ISP官方DNS发起解析请求并获取到解析结果,最后由DNS重定向系统把结果返回给用户,此时用户只会收到一个回包解析结果。

【2】DNS异网劫持,实际上返回的也是ISP缓存服务器上对应目标域名的缓存记录,只是有可能大环境下省内ISP递归服务器在去根服务器的回程上就被更上级的XX劫持了,本身拿到的解析ip就无法访问,而非故意返回一个错误的缓存结果给用户。

【3】异网劫持只对设置非本省本ISP的DNS业务地址用户生效,大多数用户直接从光猫和OLT上拿到从BRAS下发的DNS业务地址,此时并不会被异网劫持。