安全攻防

Traffic hijacking 浅析

Einic Yeo · 8月17日 · 2019年 · · · · ·
如何判断是否被网关或ISP劫持了DNS或HTTP流量?

注意:

1)每次更换DNS服务器后,需要在DOS窗口下执行 ipconfig/flushdns 命令,才能真正生效。最好是先关闭再打开浏览器,再测试上网结果。chrome浏版权声明:本文遵循 CC 4.0 BY-SA 版权协议,若要转载请务必附上原文出处链接及本声明,谢谢合作!览器下可以打开chrome://net-internals/#dns,查看、清空DNS解析结果。
2)OPEN客户端需要注意避免DNS泄露,否则即使建立了连接,也可能存在DNS查询流量不经过连接而导致的DNS泄露,进而被DNS劫持。

3)有的SOHO路由器存在漏洞,导致路由器的DNS服务器设置被黑客篡改,进而导致使用者的DNS被劫持。

一、DNS劫持的危害

1)对于常见的https网站,如果出现了证书警告页面,则有可能是被劫持了,需要仔细查看证书内容以验证网站的身份。
2)普通网站域名被劫持后,可能被用于钓鱼网站套取用户信息或滥发广告。

二、检测DNS劫持

方法一:
设置Windows的DNS服务器为任意公网IP,仍然可以解析域名,可以上网,表明网关或ISP对DNS查询流量做了劫持。

方法二:
同时在本地和国外主机上pingwww.google.com,显示的IP不一致,且本地无法直接上https://www.google.com,表明网关或ISP对DNS查询流量做了劫持,并且污染了google域名。

方法三:
下载namebench
https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/namebench/namebench-1.3.1-Windows.exe

安装运行,点击右下角的“Start Benchmark”按钮,如果出现“Outgoing requests were intercepted!”的结果,表明网关或ISP对DNS查询流量做了劫持。

方法四:
https://www.dnsleaktest.com/
点击“Standard Test”或“Extend Test”按钮,如果出现“Query round Progress… Servers found”的结果,表明网关或ISP对DNS查询流量做了劫持。

另外,对于常见的https网站,如果出现了证书警告页面,则有可能是被劫持了,需要仔细查看证书内容以验证网站的身份。普通网站域名被劫持后,可能被用于钓鱼网站套取用户信息或滥发广告。

三、防范DNS劫持

防范DNS劫持的方法分为两类:
1)设法绕过:使用现成的非UDP 53端口的DNS服务,或通过本机、代理等使用远程的DNS服务;
2)提前响应:在内网里搭建自己的DNS服务器,抢在上级网关/ISP劫持之前对特定域名做解析,不过,对于没有做设置的域名仍将被上级网关/ISP劫持。

直接验证远程非UDP 53端口的DNS服务器:
dig @123.207.137.160 -p 666 版权声明:本文遵循 CC 4.0 BY-SA 版权协议,若要转载请务必附上原文出处链接及本声明,谢谢合作!hm.baidu.com
dig @123.207.137.160 -p 53 +tcp hm.baidu.com
dig @114.114.114.114 -p 53 +tcp hm.baidu.com
dig @8.8.8.8 +short test.openresolver.com +tcp TXT
参见:dig的windows版本

对比UDP 53端口的查询结果,可以验证UDP 53端口存在DNS劫持
dig @123.207.137.160 -p 53 hm.baidu.com

方法一:
设置DNS服务器为局域网IP,再通过此DNS服务器(可内置在专门的路由器中)forwarder到其它非UDP 53端口的DNS服务器,例如Open版权声明:本文遵循 CC 4.0 BY-SA 版权协议,若要转载请务必附上原文出处链接及本声明,谢谢合作!DNS服务器等。

方法二:
无需专门的路由器,可以将DNS服务器设置为127.0.0版权声明:本文遵循 CC 4.0 BY-SA 版权协议,若要转载请务必附上原文出处链接及本声明,谢谢合作!.1,再通过UDP Proxy等工具将127.0.0.1:53的流量转发到其他非USP 53端口的DNS服务器上。或者修改注册表项,启用TCP 53端口查询。

下载Simple UDP Proxy/Pipe版权声明:本文遵循 CC 4.0 BY-SA 版权协议,若要转载请务必附上原文出处链接及本声明,谢谢合作!:
http://download.softpedia.com/dl/3fea07e334b4263f405655a7db3375ae/579197d9/100094357/software/network/sudppipe.zip

运行:
sudppipe.exe -p 123.207.137.160 666 53

再将本机DNS服务器设置为 127.0.0.1。

管理员身份DOS窗口下输入命令实现修改DNS服务器:
netsh interface IPv4 set dnsserver “以太网” static 127.0.0.1 both
netsh interface show interface:找到网卡名”以太网”

方法三:
下载:
https://sourceforge.net/projects/dns2socks/

运行:
DNS2SOCKS.exe /t 123.207.137.160:8081 123.207.137.160:666 127.0.0.1:53

将本机DNS服务器设置为 127.0.0.1。方法同上。

方法四:
下载使用dnscrypt,网址:https://dnscrypt.org/

方法五:
win7用户可以修改dnsapi.dll,,强制使用TCP而不是UDP协议进行DNS查询

方法六:
直接用WEB代理,由WEB代理在远端做DNS解析
123.207.137.160:8081

方法七:
直接使用WEB在线代理,由WEB在线代理在远端做DNS解析
http://123.207.137.160/www

方法八:
架设自己的DNS服务器,普通是利用bind、dnsmasq软件,但是设置比较繁琐,缺乏WEB管理界面

四、防范HTTP流量劫持

现在运营商等可以对接入的宽带线路做分光劫持,旁路监听80端口等明文流量,插入广告等骚扰内容,或者对HTTP流量做Cache缓存,即使用户的DNS没有被劫持,仍然会导致查看的网页被篡改、下载的文件不正确,为此用户可以使用非80、8080端口的HTTP代理服务器,同时在HTTP代理服务器端使用带广告过滤数据库的DNS服务器。


参考:
1)中神通大地DNS&URL云控管系统
http://www.trustcomputing.com.cn/cn/index.php/product/dns-url

2)dig的windows版本
http://www.trustcomputing.com.cn/bbs/viewthread.php?tid=1132

3)DNS服务器实时测速比较
https://www.grc.com/dns/benchmark.htm

4)当DNS泄漏让不再安全,我们该怎么办?
http://www.freebuf.com/articles/network/67591.html

5)揭开“流量劫持”的神秘面纱
http://www.williamlong.info/archives/4564.html

6)绕过运营商HTTP劫持
https://onebitbug.me/2013/12/19/escape-isp-http-hijacking/

7)工信部投诉
http://www.chinatcc.gov.cn:8080/cms/shensus/

参考文献

https://github.com/w1zard/closurether

https://securitytrails.com/blog/dns-hijacking

https://news.yahoo.com/isps-secretly-hijacking-search-traffic-profit-off-customers-182404705.html

https://www.cnblogs.com/index-html/p/ssl-frontend-hijack.html

https://www.cnblogs.com/index-html/p/https_hijack_hsts.html

0 条回应