域名劫持到百度被黑详解DNS技术
域名劫持就是在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则直接返回假的IP地址或者什么也不做使得请求失去响应,其效果就是对特定的网址不能访问或访问的是假网址。
域名解析(DNS)的基本原理是把网络地址(域名,以一个字符串的形式,比如 www.google.com)对应到真实的计算机能够识别的网络地址(IP地址,比如216.239.53.99 这样的形式),以便计算机能够进一步通信,传递网址和内容等。
由于域名劫持往往只能在特定的被劫持的网络范围内进行,所以在此范围外的域名服务器(DNS)能够返回正常的IP地址,高级用户可以在网络设置把DNS指向这些正常的域名服务器以实现对网址的正常访问。所以域名劫持通常相伴的措施——封锁正常DNS的IP。
如果知道该域名的真实IP地址,则可以直接用此IP代替域名后进行访问。比如访问http://www.google.com/ ,可以把访问改为http://216.239.53.99/ ,从而绕开域名劫持
你有没有遭遇过这样的情况?当你在浏览器中输入正确的URL地址,但是打开的并不是你想要去的网站。或者是114的查询页面,或者是互联星空的网站,或者一个广告页面,或者是一个刷流量的页面,甚至是一个挂马的网站。这样的话,极有可能你遭遇了DNS欺骗。最近闹得沸沸扬扬的“百度被黑”事件,本质上就是来自黑客对DNS的篡改。下面我们就来解析一下DNS的知识
我们以百度被黑为例,看看正常的DNS请求和被劫持的DNS请求的不同
1、正常的DNS请求流程为:
(1)在浏览器输入http://www.baidu.com;
(2)计算机将会向DNS服务器发出请求;
(3)DNS服务器进行处理分析得到http://www.baidu.com的相应地址为119.xxx.209.xxx;
(4)DNS将把次IP地址119.xxx.209.xxx返回到发出请求的计算机;
(5)你正常登录到http://www.baidu.com的网站。
2、被DNS欺骗以后的DNS请求为:
(1)在浏览器输入http://www.baidu.com;
(2)计算机将会向DNS服务器发出请求(这里注意:实际上你发起的请求被发送到了攻击者那里);
(3)攻击者对请求处理进行伪造DNS回复报告,返回给计算机的是攻击者指定的IP地址;
(4)你登录到的网站实际上不是http://www.baidu.com,而是掉进了攻击者设计好的“陷阱网站”。
解析DNS报文
DNS报文是我们了解DNS攻击所必须了解的知识。
1.格式:
2.DNS报文结构分为
标识(id),用来签证每个DNS报文的印记,由客户端设置,由服务器返回,它可以让客户匹配请求与响应。参数(flag),参数被分成好几步分。
QR 如果QR位设置为0表示报文是查询,如果为1表示响应
opcode 通常是0,指标准查询,1是反向查询,2是服务器状态查询
AA 如果此位为1,表示服务器对问题部分的回答是权威性的
TC 截断,如果UDP包超过512字节将被截流
RD 表示希望递归,如果它设为1的话,表示递归查询
RA 如果设为1,表示递归可用
Zero 如它的名称一样,总是0
rcode 0表示有错误,3表示名字错误
3.DNS查询报文,图3为DNS报文查询的格式。
响应报文有个共同的格式,我们称之为资源记录---RR响应报文的格式(RR)如下:
域名:域名是与下面的资源数据对应的名字,它的格式同前面讲到的查询一样。
类型:类型标识了RR类型代码号,它同前面查询类值一样。
类:通常为1,表示因特网数据。
生存时间:表示客户方将RR放在高速缓存里的时间,RRs的TTL通常为2天。
资源数据长度:标识资源数据的大小。
概念:说到这里,对于网络基础知识有一定了解的朋友都知道,当客户向一台服务器发送请求服务时,服务器会根据客户的 IP地址反向解析出该IP对应的域名。这种反向城名解析就是一个查DNS(域名解析服务器 ) 的过程。
我们换一下思路,如果服务器在进行DNS查询时能够人为地给它我们自己的应答信息,那么结果会怎样呢?
答案显然不用我说了,这就是所谓的DNS欺编 (dnsspoofing )。说实话,“DNS欺骗”威力巨大,如果被攻击者巧妙利用,人侵局域网更是痛快淋漓。