最近了解到一款不错的小工具Pcap_DNSProxy,这是一个可以在Windows上搭建的DNS服务程序,用来防止DNS污染。(同时支持MAC,LINUX)
什么是DNS污染
DNS污染是一种让用户得到虚假的ip而不能和正常的目标ip进行通讯,是一种DNS缓存投毒攻击(DNS cache poisoing)。其工作方式是:由于通常的DNS查询没有任何认证机制,而且DNS查询通常基于的UDP是无连接不可靠的协议,因此DNS的查询非常容易被篡改,通过对UDP端口53上的DNS查询进行入侵检测,一经发现与关键词相匹配的请求则立即伪装成目标域名的解析服务器(NS,Name Server)给查询者返回虚假结果。
如何应对DNS投毒
- 如用ss等代理工具。
- 修改host。
- 使用Pcap_DNSproxy等小工具,用于忽略DNS投毒。
Pacp-DNSproxy简介
Pcap_DNSProxy 是一个基于 WinPcap/LibPcap 用于过滤 DNS 投毒污染的工具,提供便捷和强大的包含正则表达式的修改 Hosts 的方法,以及对 DNSCurve/DNSCrypt 协议、并行和 TCP 协议请求的支持。
Pacp-DNSproxy使用方法
下载并安装winPacp
下载Pacp-DNSproxy,解压(在github中搜索Pacp-DNSproxy即可下载)
进入Pcap_DNSProxy解压目录,右键点击以管理员身份运行 ServiceControl.bat输入 1 并回车,即选择 1: Install service 安装服务 ps:批处理会将程序注册系统服务,并进行 Windows 防火墙测试,每次开机服务都将自动启动
此时 Windows 系统会询问是否同意程序访问网络,请将 “专用网络” 以及 “公用网络” 都勾上并确认。
打开网络和共享中心-更改适配器设置选择本地连接或无线连接或宽带连接。将系统默认的DNS服务器换成127.0.0.1,
如果需要使用 IPv6 协议的本地服务器 右击属性-Internet协议版本6(IPv6)-属性-勾选使用下面的DNS服务器地址 在首选DNS服务器内填入::1,确定保存并退出即可
这样就搭建了一个本地的DNS服务器(自带防污染和DNS缓存功能)并且将系统全部的DNS请求均交由该服务器进行解析。
上面只介绍了最简单的一种部署方法,这种配置有时候还是会解析不到向google,twitter这些地址,需要我们修改配置文件中的解析策略。
修改后的Config.ini如下,#代表注释。使用时请删除注释
远程代理解析DNS
如果上述方法不好用,那么可以尝试使用proxy来远程解析DNS,Pcap_DNSProxy支持HTTP代理和Socks5代理,也就是说支持像蓝灯,SS等proxy方式。下面以SS为例修改配置文件Config.ini
这样就实现了使用SS客户端将IP解析请求通过代理发送到8.8.4.4服务器,防止本地8.8.4.4被墙,同理可以修改上面的127.0.0.1:1080为你本地的SS监听地址。