一、DNS劫持原理

事实上,通过DNS劫持,可以干很多事情,那么这里只举通过DNS劫持,实现钓鱼网站的例子。

1. 在没有DNS劫持时,正常访问步骤:

(1)我的计算机,将网址发给DNS服务,通过DNS服务的回答,把网站的公网IP返回给我。

事实上,路由器也是有DNS服务的,如果通过路由器DNS服务,没找到网站的公网IP的话,就会继续到外网上的DNS服务器去查找。

疑问:路由器还有DNS服务呢?

是的,我们每个人都会有些经常访问的网站,路由器为了方便你进行DNS查询,路由器会将之前你访问过的网址和公网IP,建立一张网址/公网IP映射表,方便你快速查询,这就是路由器的DNS服务。

当你访问的是一个新网站,通过路由器的DNS服务是找不到新网站的公网IP的,这时才会到外网的DNS服务器上进行查找。

(2)使用查找到的公网IP,然后再去访问网站。


二、.DNS劫持大致两种实现方式

  • 一种是通过ARP欺骗来实现
  • 另一种是通过入侵DNS服务器来实现

1. 通过ARP实现DNS劫持

被劫持去访问钓鱼网站的步骤:

(a)建立钓鱼网站

假设我的网站很重要,有人想DNS劫持搞我,他就会在外网建立一个和我网页很像的“钓鱼网站”,这个钓鱼网站一般都是在公网上的,当然也可以将钓鱼网站搭建在局域网内,不过搭建在局域网内的情况很少。

(b)建立ARP欺骗用的,冒充路由器的“冒充计算机”

(c)通过ARP欺骗,进行DNS劫持

用户计算机访问网站时,会网址发送给DNS服务,但是网址被路由冒充者截获,冒充者会冒充DNS服务器,把钓鱼网站的公网IP回答给用户,这个过程就是DNS劫持。

本来你是想访问正常的DNS服务的,结果被我劫持,访问了我这个假冒的DNS服务器。

(d)用户因为拿到的是“钓鱼网站”的公网IP,所以访问的就是钓鱼网站了。

2. 通过直接入侵DNS服务,来实现DNS劫持

方法就是,直接入侵DNS服务器,将某网站的公网IP改为钓鱼网站的公网IP,也能实现同样的效果。

不过这种是很难的,因为DNS服务器不是那么好入侵的。