石头的微信 發表於 2015-9-25 10:08:19

DNS欺骗的原理 DNS防御实战演练

<p><strong>1.1 域名系统(Domain Name System)</strong></p>
<p>DNS即Domain Name System 的缩写,域名系统以分布式数据库的形式将域名和IP地址相互映射。DNS协议即域名解析协议,简单的说:DNS是用来解析域名的。有了DNS我们就不用再记住烦人的IP地址,用相对好记的域名就可以对服务器进行访问,即使服务器更换了IP地址,我们依旧可以通过域名访问该服务器,这样能够使我们更方便的访问互联网。</p>
<p>为了方便理解DNS的工作原理,我简单做了一幅图:</p>
<p align="center"><img id="theimg" onclick="window.open(this.src)" alt="" baiduimageplusrect="null" baiduimageplusstatus="2" src="https://img.jbzj.com/file_images/article/201509/2015925100156665.jpg?20158251029" /></p>
<p align="left">假如我们要访问 www.baidu.com ,首先要向本地DNS服务器发出DNS请求,查询 www.baidu.com 的IP地址,如果本地DNS服务器没有在自己的DNS缓存表中发现该网址的记录,就会向根服务器发起查询,根服务器收到请求后,将com域服务器的地址返回给本地DNS服务器,本地DNS服务器则继续向com域发出查询请求,域服务器将 baidu.com 授权域名服务器的地址返回给本地DNS服务器,本地DNS服务器继续向 baidu.com 发起查询,得到 www.baidu.com 的IP地址。</p>
<p>本地DNS服务器得到 www.baidu.com 对应的IP地址后以dns应答包的方式传递给用户,并且在本地建立DNS缓存表。</p>
<p>Windows下查看和刷清空DNS缓存表的命令: ipconfig /displaydns&nbsp;&nbsp;&nbsp; ipconfig /flushdns</p>
<p><strong>1.2 DNS欺骗原理</strong></p>
<p>尽管DNS在互联网中扮演着如此重要的角色,但是在设计DNS协议时,设计者没有考虑到一些安全问题,导致了DNS的安全隐患与缺陷。</p>
<p>DNS欺骗就是利用了DNS协议设计时的一个非常严重的安全缺陷。</p>
<p>首先欺骗者向目标机器发送构造好的ARP应答数据包,ARP欺骗成功后,嗅探到对方发出的DNS请求数据包,分析数据包取得ID和端口号后,向目标发送自己构造好的一个DNS返回包,对方收到DNS应答包后,发现ID和端口号全部正确,即把返回数据包中的域名和对应的IP地址保存进DNS缓存表中,而后来的当真实的DNS应答包返回时则被丢弃。</p>
<p>假设嗅探到目标靶机发出的DNS请求包有以下内容:</p>
<p><font style="BACKGROUND-COLOR: #c0c0c0">Source address : 192.168.1.57<br />Destination address : ns.baidu.com<br />Source port : 1234<br />Destination port : 53 (DNS port)<br />Data : </font><font style="BACKGROUND-COLOR: #c0c0c0">www.baidu.com</font></p>
<p>我们伪造的DNS应答包如下:</p>
<p><br /><font style="BACKGROUND-COLOR: #c0c0c0">Source address : ns.baidu.com<br />Destination address : 192.168.1.57<br />Source port : 53 (DNS port)<br />Destination port : 1234<br />Data : </font><font style="BACKGROUND-COLOR: #c0c0c0">www.baidu.com</font><font style="BACKGROUND-COLOR: #c0c0c0"> 192.168.1.59</font></p>
<p>目标靶机收到应答包后把域名以及对应IP保存在了DNS缓存表中,这样www.baidu.com的地址就被指向到了192.168.1.59上。</p>
<p><strong>2.1 实战DNS欺骗</strong></p>
<p>同ARP欺骗一样,DNS欺骗也可以被称为DNS毒化,属于中间人攻击,我还是用虚拟机来模拟DNS欺骗攻击</p>
<p>用到的工具是Ettercap</p>
<p>首先来看目标靶机,</p>
<p align="center"><img id="theimg" onclick="window.open(this.src)" alt="" baiduimageplusrect="null" baiduimageplusstatus="2" src="https://img.jbzj.com/file_images/article/201509/2015925100234277.jpg?201582510244" /></p>
<p align="left">很明显现在www.baidu.com指向到的IP地址是正确的,</p>
<p>接着我们用ettercap来进行DNS欺骗,首先找到etter.dns这个配置文件并且编辑</p>
<p align="center"><img id="theimg" onclick="window.open(this.src)" alt="" baiduimageplusrect="null" baiduimageplusstatus="2" src="https://img.jbzj.com/file_images/article/201509/2015925100302565.jpg?201582510312" /></p>
<p align="left">添加一条A记录,将 www.baidu.com 指向到本机IP</p>
<p align="center"><img id="theimg" onclick="window.open(this.src)" alt="" baiduimageplusrect="null" baiduimageplusstatus="2" src="https://img.jbzj.com/file_images/article/201509/2015925100337611.jpg?201582510348" /></p>
<p>保存并且退出,使用ettercap开始欺骗:</p>
<p align="center"><img id="theimg" onclick="window.open(this.src)" alt="" baiduimageplusrect="null" baiduimageplusstatus="2" src="https://img.jbzj.com/file_images/article/201509/2015925100405529.jpg?201582510421" /></p>
<p align="left">接着我们在到受到攻击的主机上看一下:</p>
<p align="center"><img id="theimg" onclick="window.open(this.src)" alt="" baiduimageplusrect="null" baiduimageplusstatus="2" src="https://img.jbzj.com/file_images/article/201509/2015925100436723.jpg?201582510446" /></p>
<p align="left">可以看到,目标主机对域名www.baidu.com的访问已经被指向到192.168.1.59</p>
<p>在浏览器中访问该域名便访问到事先搭建好的一台WEB服务器</p>
<p align="center"><img id="theimg" onclick="window.open(this.src)" alt="" baiduimageplusrect="null" baiduimageplusstatus="2" src="https://img.jbzj.com/file_images/article/201509/2015925100458917.jpg?20158251057" /></p>
<p align="left">以上就是一次成功的DNS欺骗</p>
<p>DNS欺骗的危害是巨大的,我不说大家也都懂得,常见被利用来钓鱼、挂马之类的</p>
<p><strong>2.2 DNS欺骗的防范</strong></p>
<p>DNS欺骗是很难进行有效防御的,因为大多情况下都是被攻击之后才会发现,对于避免DNS欺骗所造成危害,本菜鸟提出以下建议</p>
<p>1.因为DNS欺骗前提也需要ARP欺骗成功。所以首先做好对ARP欺骗攻击的防范。</p>
<p>2.不要依赖于DNS,尽管这样会很不方便,可以使用hosts文件来实现相同的功能,Hosts文件位置:</p>
<p>windows xp/2003/vista/2008/7 系统的HOSTS文件位置 c:\windows\system32\drivers\etc 用记事本打开即可进行修改。</p>
<p>3.使用安全检测软件定期检查系统是否遭受攻击</p>
<p>4.使用DNSSEC。</p>
<p>最近小编整理了许多关于DNS欺骗的文章,希望大家多多阅读,多多学习。</p>
頁: [1]
查看完整版本: DNS欺骗的原理 DNS防御实战演练