首先让我们来看看什么是DNS:以下是引用中国协议分析网里面对DNS的说明
DNS的全称是Domain Name System当您连上一个网址在URL打上www.hotmail.com的时候可以说就是使用了DNS的服务了。但如果您知道这个www.hotmail.com的IP地址直接输入209.185.243.135也同样可以到达这个网址。其实电脑使用的只是 IP地址而已(最终也是0和1啦)这个www.hotmail.com只是让人们容易记忆而设的。因为我们人类对一些比较有意义的文字记忆(如 www.hotmail.com)比记忆那些毫无头绪的号码(如209.185.243.135)往往容易得多。DNS的作用就是为我们在文字和IP之间担当了翻译而免除了强记号码的痛苦。
接着是我使用的DNS欺骗原理
我们在设置我们的 网络时经常要设置DNS地址,比如现在我们学校使用的就是:202.102.154.3和202.102.128.68这两个IP地址就是DNS解析服务器的地址,当我们输入一个网址如:www.whhit.com的时候,就有一个DNS请求发到设置的DNS服务器上去,然后DNS服务器告诉你你访问的的网站对应的IP是202.102.144.56于是你的浏览器就会到相应的IP上面去取回网页。那么如果我想欺骗你,让你转到一个别的地址上去怎么做呢?我只需要在DNS服务器给你答复之前给你一个假的回答就可以了,比如我告诉你www.whhit.com对应的IP是172.17.30.52.123这样你的机器就会自动转到172.30.52.123上面去。那么不是DNS服务器也要做回答吗?呵呵,这个其实你不用担心,在收到第一个回答以后就浏览器就开始转向了,对于后到的DNS回答会被系统自动丢弃掉。
基于以上原理,我们就可以完成这个工程了。
现在唯一的问题就是如何来伪造一个DNS应答了,由于要用winpcap发包,而winpcap的发包功能是很简陋的,他不能像libnet等开发包一样帮助你构造包,所以所有的包结构都要你来构造。
要构造包首先要捕获包,因为包中的一些东西我们在构造的时候是需要用到的。那么如何捕获呢?这要看你的局域网使用的交换机种类,如果是一个HUB,就像我们现在寝室楼层的一样,那我们只要把网卡设置成混杂模式就可以捕获到所有包