请详细介绍DNS欺骗
DNS欺骗是指攻击者冒充域名服务器的一种欺骗行为。攻击者通过入侵DNS服务器、控制路由器等方法把受害者要访问的目标机器域名对应的IP解析为攻击者所控制的机器，这样受害者原本要发送给目标机器的数据就发到了攻击者的机器上，这时攻击者就可以监听甚至修改数据，从而收集到大量的信息。如果攻击者只是想监听双方会话的数据，他会转发所有的数据到真正的目标机器上，让目标机器进行处理，再把处理结果发回到原来的受害者机器；如果攻击者要进行彻底的破坏，他会伪装目标机器返回数据，这样受害者接收处理的就不再是原来期望的数据，而是攻击者所期望的了。例如让DNS服务器解析银行网站的IP为自己机器IP，同时在自己机器上伪造银行登录页面，那么受害者的真实账号和密码就暴露给入侵者了。#### DNS欺骗原理

尽管DNS在互联网中扮演着如此重要的角色，但是在设计DNS协议时，设计者没有考虑到一些安全问题，导致了DNS的安全隐患与缺陷。
DNS欺骗就是利用了DNS协议设计时的一个非常严重的安全缺陷。
首先欺骗者向目标机器发送构造好的ARP应答数据包，ARP欺骗成功后，嗅探到对方发出的DNS请求数据包，分析数据包取得ID和端口号后，向目标发送自己构造好的一个DNS返回包，对方收到DNS应答包后，发现ID和端口号全部正确，即把返回数据包中的域名和对应的IP地址保存进DNS缓存表中，而后来的当真实的DNS应答包返回时则被丢弃。
假设嗅探到目标靶机发出的DNS请求包有以下内容：
Sourceaddress :192.168.1.57
Destinationaddress :ns.baidu.com
Sourceport :1234
Destinationport :53(DNSport)
Data :www.baidu.com
我们伪造的DNS应答包如下：
Sourceaddress :ns.baidu.com
Destinationaddress :192.168.1.57
Sourceport :53(DNSport)
Destinationport :1234
Data :www.baidu.com192.168.1.59
目标靶机收到应答包后把域名以及对应IP保存在了DNS缓存表中，这样www.baidu.com的地址就被指向到了192.168.1.59上。