RouterOS上实现内网DNS劫持

因为互联网发展的早期阶段, 并没有太多的安全威胁, 因而为安全的考虑也比较少,

当时设计各种协议的时候首先考虑的"能用"! 先实现功能再说! 

结果, dns这种极为重要的功能被设计成了明文的协议. 这也给某些邪恶的机构(比如? 长城宽带?)劫持DNS创造了可能.

本文就是通过ros演示如何实现这种劫持,让大家对DNS劫持有个更深入的了解.

 

 

什么是DNS劫持

  DNS劫持就是通过技术手段,来控制用户解析域名的IP地址。举个例子,正常解析域名www.apple.com时应该返回IP:6.6.3.6;但现在通过DNS劫持,使域名www.apple.com解析返回IP:1.1.1.1,以达到控制www.apple.com该域名,进而控制访问www.apple.com所打开页面。这就是DNS劫持。

为什么要做DNS劫持

  有了DNS劫持,我们就可以随意控制路由器下游用户的域名解析,从而达到限制、强制访问某些网站;或者在用户访问不存在的网站时给予友好的提示;或者把IIS上多个站点用主机头区分……

如何在Ros上做DNS劫持

  在ROS上,可以通过对53端口的UDP访问进行dst-nat,to-address指向我们自己的dns服务器或如果Ros开启DNS服务,也可以指向Ros本身。

WinBox设置:

  本例中使用ROS自带的DNS服务,ROS IP为192.168.27.254。

  首先开启ROS的DNS服务:Winbox中选IP->DNS,在Static页面中点Settings,按下图设置,其中202.96.64.68和202.96.69.38按你所在地区和ISP的DNS填写。

DNS设置

确定后在Winbox中选IP->Firewall,选NAT页面,点红色加号“+”,按下图设置:

Chian=dstnat,Protocol=UDP,Dst.Port=53,Action=dst-nat,To Address=192.168.27

 

General页设置

 

Action页设置

命令行设置:

/ip firewall nat

add action=dst-nat chain=dstnat disabled=no dst-address-type=!local dst-port=53 protocol=tcp to-addresses=192.168.0.1 to-ports=53

add action=dst-nat chain=dstnat disabled=no dst-address-type=!local dst-port=53 protocol=udp to-addresses=192.168.0.1 to-ports=53

/ip dns

set allow-remote-requests=yes cache-max-ttl=1w cache-size=4096KiB max-udp-packet-size=512 primary-dns=202.96.64.68 secondary-dns=202.96.69.38

设置成功的Firewall->Connections效果图:

DNS劫持效果图

可以看到去往202.96.64.68的DNS请求都被192.168.27.254回应了。

注意:如果要使用内网服务器做域名解析服务,必须在以上DNS劫持设置规则之上再添加一条允许该服务器访问外网DNS的规则,否则连内网DNS服务器的解析请求都被劫持了,就无法正常进行域名解析了。

例如内网DNS服务器IP是192.168.27.1,则需要在DNS劫持规则之上添加如下规则:

/ip firewall nat

add action=accept chain=dstnat disabled=no dst-port=53 protocol=udp src-address=192.168.27.1

排除DNS劫持

 

posted on 2017-10-10 09:25  kalamansi  阅读(5176)  评论(0编辑  收藏  举报

导航