简介
DNS(Domain Name System)劫持又称域名劫持,是指通过某些手段取得某域名的解析控制权,修改此域名的解析结果,导致对该域名的访问由原IP地址转入到修改后的指定IP,其结果就是对特定的网址不能访问或访问的是假网址。
著名事件
2009年 巴西最大银行遭遇DNS攻击,1%用户被钓鱼。
2010年1月12日 “百度域名被劫持”事件。
2012年 日本邮储银行、三井住友银行和三菱东京日联银行各自提供的网上银行服务都被钓鱼网站劫持。
2013年 史上最大规模DNS钓鱼攻击预估已致800万用户感染。
2014年1月21日 北京2014年1月21日,全国大范围出现DNS故障,下午15时20分左右,中国顶级域名根服务器出现故障,大部分网站受影响。
DNS查询过程
DNS劫持方式
方法一:利用DNS服务器进行DDOS攻击
SYN Flood是一种广为人知的DoS( 拒绝服务攻击 )与DDoS( 分布式拒绝服务攻击的方式)之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或 内存不足的攻击方式。
正常的DNS服务器递归查询过程可能被利用成DDOS攻击。假设攻击者已知被攻击机器的IP地址,然后攻击者使用该地址作为发送解析命令的源地址。这样当使用DNS服务器递归查询后,DNS服务器响应给最初用户,而这个用户正是被攻击者。那么如果攻击者控制了足够多的肉鸡,反复的进行如上操作,那么被攻击者就会受到来自于DNS服务器的响应信息DDOS攻击。
如果攻击者拥有着足够多的肉鸡群,那么就可以使被攻击者的网络被拖垮至发生中断。利用DNS服务器攻击的重要挑战是,攻击者由于没有直接与被攻击主机进行通讯,隐匿了自己行踪,让受害者难以追查原始的攻击者。
方法二:DNS缓存感染
攻击者使用DNS请求,将数据放入一个具有漏洞的的DNS服务器的缓存当中。这些缓存信息会在客户进行DNS访问时返回给用户,从而把用户客户对正常域名的访问引导到入侵者所设置挂马、钓鱼等页面上,或者通过伪造的邮件和其他的server服务获取用户口令信息,导致客户遭遇进一步的侵害。
方法三:DNS信息劫持
TCP/IP体系通过序列号等多种方式避免仿冒数据的插入,但入侵者如果通过监听客户端和DNS服务器的对话,就可以猜测服务器响应给客户端的DNS查询ID。每个DNS报文包括一个相关联的16位ID号,DNS服务器根据这个ID号获取请求源位置。攻击者在DNS服务器之前将虚假的响应交给用户,从而欺骗客户端去访问恶意的网站。假设当提交给某个域名服务器的域名解析请求的DNS报文包数据被截获,然后按截获者的意图将一个虚假的IP地址作为应答信息返回给请求者。原始请求者就会把这个虚假的IP地址作为它所要请求的域名而进行访问,这样他就被欺骗到了别处而无法连接想要访问的那个域名。
方法四:DNS重定向
攻击者将DNS名称查询重定向到恶意DNS服务器上,被劫持域名的解析就完全在攻击者的控制之下。
实验
以下来源于知乎作者:小说dns劫持
首先,我们要用一个无线网卡来伪造ap。
启动伪ap前的准备
Ifconfig –a 查看当前网卡情况
Ifconfig wlan0 up 激活无线网卡
Airmon-ng start wlan0 将你的无线网卡开启“Monitor”模式
如果这里有其他进程干扰的话就先把干扰进程kill掉再进行。在设置监听模式前先输入airmon-ng check kill结束进程。
探测目标ap,为伪ap的假设做准备,airodump-ng wlan0mon.
在上面探测ap中,我们可以了解到WiFi名称(ssid)、加密方式以及信道等信息。
接下来我们就可以启动伪ap了。airbase-ng wlan0mon -e "xiaoqin00" -c 6 (这里环境不同,启动方式也不一样,我这里是kali2.0的环境所以这样,以前版本启动方式为airbase-ng mon0 -e "xiaoqin00" -c 6)
这个时候我们就可收到我们伪造的ap了,但是这个ap无法行使正常的功能,你连接的话它会一直保持获取ip中的状态。
接下来就需要我们配置和这个伪ap配套的dhcp了。
apt-get install udhcpd
修改/etc/udhcpd.conf配置文件,自定义IP池、网关、DNS、interface等等。
推荐用gedit工具来编辑文件:
gedit /etc/udhcpd.conf
修改IP池
192.168.x.y
192.168.x.z
修改执行dhcp功能的接口
可以用过ifconfig -a或者iwconfig命令来查看接口
修改DNS、网关、netmask等
修改/etc/default/udhcpd,修改dhcpd功能为yes。
DHCPD_ENABLE="yes"
开启dhcp服务,service udhcpd start。
我们将http://xiaoqin00.com的域名劫持到192.168.2.1上。
配置好dhcp后,我们还需要解决流量问题,这里192.168.2.0/24中的流量需要通过主机网卡eth0与外界进行交互。我们用iptables来解决这个。
再接着就是配置dns服务了。这里我们使用msf中的fakedns来提供dns服务。
当这都配置好后,我们来连接这个伪ap。现在,只要被攻击者一进入www.xiaoqin00.com,他就会被劫持到错误的站点,这算是钓鱼的一种方法吧。
当你完成这些之前,如果目标主机已经连接上WiFi,可以对它的WiFi用mdk3等工具进行ddos攻击强制目标断开连接。
在智能手机中,如果两个WiFi一样,那么手机会保持当前连接并对新出现的WiFi自动进行屏蔽。
构造伪dhcp服务器有很多种方法。
方法五:ARP欺骗
ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。ARP攻击主要是存在于局域网网络中,局域网中若有一台计算机感染ARP病毒,则感染该ARP病毒的系统将会试图通过”ARP欺骗”手段截获所在网络内其它计算机的通信信息,并因此造成网内其它计算机的通信故障。
ARP欺骗通常是在用户局域网中,造成用户访问域名的错误指向。如果IDC机房也被ARP病毒入侵后,则也可能出现攻击者采用ARP包压制正常主机、或者压制DNS服务器,以使访问导向错误指向的情况。
可以使用ettercap或者arpspoof来实现dns劫持。
方法六:本机劫持
本机的计算机系统被木马或流氓软件感染后,也可能会出现部分域名的访问异常。如访问挂马或者钓鱼站点、无法访问等情况。本机DNS劫持方式包括hosts文件篡改、本机DNS劫持、SPI链注入、BHO插件等方式。
就像这样,进入hosts文件改掉dns。等机主上机时,如果他要访问www.xiaoqin00.com的话,它的会话会被劫持到192.168.2.1上。
当然,你也可以破解路由器,直接更改路由器的dns设置。