找回密码
 立即注册
查看: 11882|回复: 0

Windows下最简单的对抗DNS污染的方法

[复制链接]
发表于 2012-11-22 12:34:39 | 显示全部楼层 |阅读模式
起因是我这(beijing urban network co. ltd)把DNS服务器改为8.8.8.8或者8.8.4.4的时候就无法使用了,表现为发出DnsQuery后没有任何响应,猜测大概是GFW搞的鬼吧。唔。。。不管是不是反正这黑锅都让GFW来背,呵呵。

GFW的DNS污染只对UDP协议的DNS查询有效,对TCP协议的DNS查询无效,我们只需要使用TCP协议来查询DNS就可以了。
在Windows下,使用nslookup命令时加上-vc参数就可以强制使用TCP协议而不是UDP协议进行DNS查询。例如查询encrypted.google.com,输入命令nslookup -vc encrypted.google.com 8.8.8.8进行DNS查询就可以得到正确的查询结果,下一步就是把结果加入hosts文件。nslookup命令的用法我在这里就不多说了,唯一要多说的是不要使用中国的DNS服务器查询就行,推荐Google DNS和OPEN DNS。

如何让强制让系统使用TCP协议来查询DNS呢?
用这个:https://code.google.com/p/pwx-dns-proxy/
或者:
默认情况下Windows的DNS交互使用UDP协议承载,于是抱着试试的心理尝试了一下用TCP来发送DNS请求,结果Google DNS很给力的返回了结果。
接下来的工作就是怎样让Windows用TCP来发送了。悲催的是翻了一遍组策略,网络连接属性等等都没找到哪个选项可以让Windows发送TCP的DNSQuery,也不知道是真没有还是没找到。没办法只好自己动手丰衣足食啦,分析后发现判断用UDP或TCP的关键位置在DnsApi.dll中,修改之,覆盖,重启,用Wireshark看到发送的都是TCP的DNS请求,目前除了nslookup工具,其他使用一切正常,用nslookup发出的请求不受影响,默认还是UDP的,反正不影响上网,无视了。
.text:6DC08FC8 8B 46 10        mov     eax, [esi+10h]

.text:6DC08FCB 89 45 F4        mov     [ebp+var_C], eax


关键代码,此处让var_C值为2即可,这里给出我的修改方法85A0: 90 90 90 90 90 -> 33 C0 40 EB 2585C8: 8B 46 10 -> EB D6 40上面是Win7下的DNSAPI.DLL修改方法,请不要用到Windows XP下 后记:
测试了一下似乎也能绕过GFW的DNS投毒
测试方法:
1. 用UDP协议dig www.google.com,没有任何返回
2. 仍用UDP协议dig www.twitter.com 有返回结果,不过给的IP地址不正确,是随机值
说明GFW的DNS投毒在拦截DNS请求之前,下面看看TCP协议请求的实验结果
1. 用TCP协议dig www.google.com 返回正确IP
2. 用TCP协议dig www.twitter.com 也返回了正确的IP
均返回了正确结果,看来GFW的DNS劫持目前还仅限于UDP协议,对于TCP协议则没有过滤
不过这仅是我这里的情况,还不知道是否在其他网络中也适用,如果不适用说明GFW可以根据不同的运营商或者地区来部署不同的版本。那就比较恶心了。

----------------------再后记-------------------------------
1. 经留言的童鞋们提醒,本文适用的系统和文件版本号已经加红标出了,修改前一定要先看仔细咯,谢谢各位童鞋~
2. 这个只是自己做的玩的,没有别的目的,所以没经过什么严格测试,不建议不太懂的人去修改系统文件啦~m(_ _)m。(GFW不要来认证我哇~~)
3. 本文所述的不适用自2011/5/6以来出现的国际出口频繁中断的抽风。。。因为在这个时间点被转载了,姑且还是说一下。
唔。。。再次感谢留言的童鞋~~~
2011/5/16

--------------------------- 下载 ---------------------------
根据大家的意见另外又修改了一个For XP SP3的,现在一起提供下载
修改前请看清版本号。XP替换系统文件会麻烦一些,不会替换的请Google,Google了还不会的就别改了。
版本号一定得匹配再替换!!! Win7版DnsApi.dll
Size: 270,336 bytes
MD5Sum   : c2e583928d087a631cff925e27a5edb4
系统版本:Win7 Ultimate X86 Version 6.1.7601
DLL文件版本:6.1.7601.17570
Download :  dnsapi_Win7.dll (1304)
Win XP SP3版DnsApi.dll
Size: 149,504 bytes
MD5Sum   :8140c86b871295a43bad2a9028bcaa30
系统版本:Windows XP Profressional SP3 Version 5.1.2600
DLL文件版本:5.1.2600.6089
Download: dnsapi_XP_SP3.dll (676)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|第一站论坛 ( 蜀ICP备06004864号-6 )

GMT+8, 2024-4-29 20:26 , Processed in 0.080642 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表