前言
前段时间学了学中间人攻击的有关知识,写篇文章记录下
原理介绍
什么是中间人攻击?
中间人攻击(Man-in-the-MiddleAttack,简称“MITM攻击”)是一种“间接”的入侵攻击,这种攻击模式是通过各种技术手段将受入侵者控制的一台计算机虚拟放置在网络连接中的两台通信计算机之间,这台计算机就称为“中间人”
什么是DNS?
百度百科:域名系统(Domain Name System,DNS)是Internet上解决网上机器命名的一种系统。就像拜访朋友要先知道别人家怎么走一样,Internet上当一台主机要访问另外一台主机时,必须首先获知其地址,TCP/IP中的IP地址是由四段以“.”分开的数字组成(此处以IPv4的地址为例,IPv6的地址同理),记起来总是不如名字那么方便,所以,就采用了域名系统来管理名字和IP的对应关系。但即使是将32位的二进制IP地址写成4个0~255的十位数形式,也依然太长、太难记。因此,人们发明了域名(Domain Name),域名可将一个IP地址关联到一组有意义的字符上去。用户访问一个网站的时候,既可以输入该网站的IP地址,也可以输入其域名,对访问而言,两者是等价的。例如:微软公司的Web服务器的IP地址是207.46.230.229,其对应的域名是www.microsoft.com
,不管用户在浏览器中输入的是207.46.230.229还是www.microsoft.com
,都可以访问其Web网站。
通俗来说就是访问互联网上的另一台电脑需要知道对应的IP地址,而IP地址是一串数
字,不好记,那么我们就起一个好记的名字,这就是DNS所运行的原理。
什么是DNS欺骗?
百度百科:DNS欺骗就是攻击者冒充域名服务器的一种欺骗行为。 原理:如果可以冒充域名服务器,然后把查询的IP地址设为攻击者的IP地址,这样的话,用户上网就只能看到攻击者的主页,而不是用户想要取得的网站的主页了,这就是DNS欺骗的基本原理。DNS欺骗其实并不是真的“黑掉”了对方的网站,而是冒名顶替、招摇撞骗罢了。
那么我们如何把自己的攻击机伪造为DNS服务器,怎么样使受害机信任我们的DNS解析记录呢?这就要先借助到上一篇文章中所使用的ARP欺骗攻击的,首先使得受害机的流量全部流经攻击机,之后我们就可以根据受害机的DNS解析请求来发送响应包
本次DNS欺骗测试网络拓扑
正常情况:
经过DNS欺骗后异常情况:
实验准备
kali虚拟机、win7虚拟机、win10(192.168.0.131)、ettercap、arpspoof
开始实验
首先在受害机中输入
ipconfig/flushdns
刷新DNS缓存,防止之前的缓存对实验产生影响
首先在kali虚拟机中开启arp欺骗攻击,并打开路由转发功能(详见上篇文章)
输入
vim /etc/ettercap/etter.dns
编辑ettercap有关DNS欺骗的配置文件
并在最后输入
*.hetianlab.com 192.168.0.131
这句话的意思就是对所有hetianlab.com这个二级域名发起的dns域名请求kali都
会将其解析为192.168.0.131
接下来输入
ettercap -G
打开ettercap的UI界面,并按照下图所示的顺序操作
选择网卡
嗅探主机
从插件中开启DNS欺骗攻击
受害机实验前访问www.hetianlab.com显示
开启DNS欺骗后受害机访问www.hetianlab.com显示
这里我选择了一个在192.168.0.131上我自己使用phpstudy搭的一道ctf题目,主要是使用方便,因为现在许多大网站(例如百度)已经采用了一定的反DNS欺骗的防御措施,拿它来做实验可能会不成功,所以还是拿内网的环境玩一玩~
关于DNS欺骗的防范措施
攻击讲完了,我们来说说防御
首先,DNS攻击存在一定的局限性:
(1)攻击者不能替换缓存中已存在的记录,这也就是我们为什么要在实验开始时刷新受害机的DNS缓存的原因
(2)DNS服务器缓存时间的刷新
2、防范措施(百度百科上大致总结的)
(1)使用最新版本的DNS服务器软件,及时安装补丁
(2)关闭DNS服务器的递归功能
(3)限制区域传输范围
(4)限制动态更新
(5)采用分层的DNS体系结构
(6)保护内网设备,DNS攻击一般都是从内网中发起的,如果你的内网设备很安全,那么也就不存在被感染的风险