0x01 DNS
什么是DNS呢?DNS全称“Domain Name Server”,中文域名服务,通常我们会叫它域名解析协议。那么DNS用来干什么的呢?正如它的名字一样,用来解析域名的。我们平时访问一个网页,例如百度,我们会在地址栏中输入www.baidu.com,这个就是域名,但是对于计算机来说,它们工作的时候用的是ip地址,ip地址简单的说就是一串很长的数字,那么对于人来说很难记住,为了方便记住网址,域名就由此而来了。
而DNS就是把域名转换为ip地址的一种服务也好,协议也罢,大概就是那种概念吧。
0x02 DNS工作流程
DNS的工作流程是怎样的呢?
- 当我们在地址栏中输入一个网址,并按下回车,域名解析的过程就开始了
- 计算机首先会在查找本地的HOSTS文件,如果有的话,就直接引用HOSTS文件中的域名对应的ip地址,那么本次域名解析的过程就结束了。
- 但是如果本地的HOSTS文件里没有对应的ip地址,那么就会看你的计算机有没有设置DNS服务器,如果没有设置,那么就没办法了,浏览器会报错,说网站的域名无法解析,本次解析过程就结束了。
- 如果设置了DNS服务器,那么计算机就会那着我们输入的网址到那个DNS服务器去查找,如果去查找的DNS服务器的过程中有服务器挂掉了,那么还是没办法,浏览器还是会报错。
- 如果没有错误,正常查询到了对应的ip,那么浏览器就会拿着这个ip地址来访问正常的web服务,本次解析过程结束。
0x03 DNS劫持
通过上面说的过程,我们知道,一个域名解析的过程就是送计算机得到域名到远端的DNS服务器把结果给我们返回过来,因此这个过程如果有一个中间人,他截获了我们的DNS请求,然后返回一个恶意的ip地址给我们,那么我们的计算机就会把这个恶意的ip地址当作我们想要访问的域名的对应ip,那么每次我们想访问这个网站的时候就会访问那个恶意的ip,如果那个中间人制作了一个和我们想要访问的网址一样的前端界面,就很有可能完成一次钓鱼攻击。
0x04 DNS污染
DNS污染通常还有说法叫做DNS投毒之类的,就是DNS查询的这个过程里,如果有人在你查询结果返回给你之前先一步将一个错误的ip给你,那么真正的查询结果返回的时候就会被忽略,那么你永远只能使用那个错误的ip来进行访问了,GFW的原理就是这个。