首页 > 编程知识 正文

运营商劫持dns,域名劫持原理及实现

时间:2023-05-04 02:51:58 阅读:136048 作者:3973

DNS是域名系统“域名服务器”,主要用于将域名解析为相应的IP地址。 因为人们不方便记住ip地址,所以需要域名来帮助记忆。

关于DNS服务器

DNS域名解析的过程解析的过程是查找哪些计算机需要资源的过程。 当风中衬衫在浏览器中输入地址时,比如http://www.baidu.com,其实并不是百度网站真正意义上的地址。 互联网上每台计算机的唯一id是其IP地址,但IP地址不便于记忆。

的大致DNS分析流程

查找浏览器缓存

不同的浏览器之间的时间可能不同,因为浏览器通常会缓存一定时间的DNS记录。 通常,2-30分钟,浏览器就会去找这些缓存。 如果有缓存,则直接返回IP。 否则,就进入下一步。

查找系统缓存

如果在浏览器缓存中找不到IP,浏览器会查看本地硬盘上的hosts文件,以确定其中是否有与此域名对应的规则。 如果有的话,直接使用hosts文件中的IP地址。 如果在本地hosts文件中找不到相应的ip地址,浏览器会向本地DNS服务器发出DNS请求

主机a首先向本地服务器进行递归查询

本地DNS服务器首先查询缓存记录。 如果缓存中有此记录,则可以直接返回结果。 这个过程是递归进行的。 如果不存在,则本地DNS服务器必须联系DNS根服务器

本地服务器使用迭代查询在根域名服务器上查询

根DNS服务器不会记录特定域名和IP地址之间的对应关系,而是告诉本地DNS服务器它可以继续联系域服务器并提供域服务器的地址。 这个过程是反复的过程。 (根域名服务器告诉本地服务器在此处无法查询,并发送下一个要查询的顶级域名服务器的IP地址。 )

本地域名服务器查询顶级域名服务器

顶级域名服务器告诉本地服务器,现在也查不到它,然后发送您有权查询的域名服务器的IP地址

本地域名服务器查询权限域名服务器

因为寻求的对象是.com域服务器。 com域服务器收到请求后,它不会直接返回域名和IP地址之间的对应关系,而是告诉本地DNS服务器解析服务器的地址。

权限域名服务器将与查询的域名相对应的IP传递给本地服务器

本地域名服务器最后将查询结果通知主机a

浏览器查询DNS以获得与域名相对应的IP地址:的特定过程包括:浏览器搜索其DNS缓存、操作系统的DNS缓存、读取本地主机文件对于对本地DNS服务器的查询,如果要查询的域名包含在本地配置本地资源中,则将解析结果返回给客户端,完成域名解析。 这个解决方案是有权威的。 如果本地DNS服务器无法解析要查询的域名,但服务器缓存了此web地址映射关系,则调用此IP地址映射以完成域名解析。 这个解决方法没有权威。 如果本地域名服务器未缓存网址映射关系,则会根据其设置启动递归查询或迭代查询

DNS查询的两种方式目前使用了两种方式的组合

递归查询本地DNS服务器负责查询其他DNS服务器。 通常,您会向根域服务器查询域名,然后从根域名服务器向下查询。 最后生成的查询结果返回到本地DNS服务器,并从本地DNS服务器返回到客户端。

简而言之,是你给我任务,然后我来处理你的结果,最后我回到结果给你。 不要在意在我心中如何不断细化这个任务,不断递归地回到最后

如果简单递归查询的负载太大,现在不使用。

对本地DNS服务器重复查询不是自己查询其他DNS服务器,而是将能够解析域名的其他DNS服务器的IP地址返回给客户机DNS程序,直到得到查询结果为止也就是说,迭代分析只是帮助你找到相关的服务,而不是帮我查。

解析流程以访问 y.abc.com为例

假设客户端想知道域名是y.abc.com主机的IP地址,域名解析的过程(总共使用8个UDP消息)为

客户端向其本地域域名服务器发送DNS请求消息。

本地域名服务器收到请求后,查询本地缓存,如果没有记录,作为DNS客户端向根域名服务器发出解析请求。

根域名服务器收到请求后,判断该域属于.com域,并将对应的顶级域名服务器dns.com的IP地址返回给本地域域名服务器。

本地域名服务器向顶级域名服务器dns.com发出解析请求消息。

顶级域名服务器dns.com收到请求后,判断该域属于abc.com域,因此将对应的许可证域名服务器dns.abc.com的IP地址作为本地域域名

本地域名服务器将解析请求消息发送至授权的域名服务器dns.abc.com。

授权域名服务器dns.abc.com收到请求后,将查询结果返回给本地域名服务器。

本地域名服务器将查询结果保存在本地缓存中,同时返回客户端。

DNS劫持DNS的域名解析基于UDP协议实现,容易发生DNS劫持。

DNS劫持传统DNS解决域名的最大弊端是容易的

被劫持,直接降低互联网用户的使用体验。比如你想访问 www.baidu.com,结果发生 DNS 劫持,得到了一个诈骗网站的 IP 或者空的地址,使你无法使用正常的服务(比如百度是搜索服务)。
HTTPDNS 利用 HTTP 协议与 DNS 服务器交互,代替了传统的基于 UDP 协议的 DNS 交互,绕开了运营商的 Local DNS(本地 DNS 服务器),有效防止了域名劫持,提高域名解析效率。另外,由于 DNS 服务器端获取的是真实客户端 IP 而非 Local DNS 的 IP,能够精确定位客户端地理位置、运营商信息,从而有效改进调度精确性。

同时https也可以解决DNS劫持的问题。

由于我们在浏览器或webapp中与服务端的交互大多是通过协议+域名进行的,而对于域名映射到ip这个步骤要经过本机请求dns服务器的过程,因此除了受信任的dns根服务器,中间缓存的各种dns服务器都有可能被黑或者被运营商利用篡改。
比如www.baidu.com正常是映射到61.135.169.125这个公网ip,黑客或者恶意份子将dns服务器对于该域名的公网ip解析改成26.135.169.123,那么我们在某个地域访问www.baidu.com得到的结果就是26.135.169.123这台服务器返回的内容,并且在http协议访问的情况下毫无感知。

https的证书可以应对dns劫持
如test-h5.com被运营商或其他恶意份子将dns篡改至广告服务器地址F,浏览器使用https协议在与test-h5.com进行数据交互之前,需要获取域名对应证书,此时地址F的服务器返回一个假的证书,接着向CA或者本地跟证书验证对应域名证书合法性,浏览器必然会显示证书安全有问题,此时用户如果点击信任该证书并且继续浏览,则便进入了被劫持的h5页面
但是需要注意的是,如果,恶意份子直接伪造证书https还是无法解决DNS劫持问题。

https可否有效应对dns劫持、http内容劫持

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。