DNS 泄露和 IP 泄露(原因 & 建议)

0x00 WebRTC 引起的 IP 泄露

在你使用 VPN 匿名上网的时候,你可能并不知道某个被你访问的 web 站点的管理员正在通过 WebRTC 获取你的本机 IP。WebRTC的中文名是“网页即时通信”,洋文全程为“Web Real-Time Communication”,它可以让你的网页浏览器支持实时语音和视频通话,最初由 Google 基于收购来的 GIPS 引擎 开发出 WebRTC。2015 年,TorrentFreak 报告了一个 WebRTC 的安全漏洞,该漏洞会致使安装有 WebRTC 的用户泄露真实 IP。关于更多介绍,可查看 维基百科

影响

网站通过使用 WebRTC 接口,可以获取到用户的本地 IP,并且可以扫描用户的本地网络获取更多隐私信息。

修复建议

如果对于现代视频会议,完全没有必要使用浏览器,可替换为更加安全的专业视频通话软件,比如 TeamViewer
然后千万不要忘了禁用浏览器的 WebRTC 接口,禁用方法:

  1. Microsoft Edge: 在地址栏输入“about:config”,搜索“开发人员设置”并点击”在 WebRTC 上隐藏我的本机 IP 地址”,即可隐藏 IP 地址。
  2. Mozilla Firefox:在地址栏输入“about:config”,搜索“media.peerconnection.enabled”并双击将值改为“false”,WebRTC 将被关闭。[23]
  3. Google Chrome:在谷歌应用商店安装谷歌官方扩展“WebRTC Network Limiter”。

另外,你可以安装 uBlock Origin 并在设置中启用“避免 WebRTC 泄露本地 IP 地址”可以避免本地 IP 泄露。但需注意的是,该方案不适用于 Firefox 41(或更低)、uBlock Origin 1.3.3(或更低)版本用户。

检测

Is WebRTC ready yet?:各家网页浏览器对 WebRTC 的支持。
voidsec:若存在 WebRTC 漏洞,则会显示本地 IP。
IP/DNS 检测:可检测是否存在 WebRTC 漏洞以及 DNS 泄露。

0x01 DNS 泄露

虽然如今网络技术发展迅猛,但是 DNS 数据是否应该加密传输仍然备受争议。作为个人,肯定是所有流量全部加密才好。对于 DNS 加密技术,如 DoH(DNS over HTTPS)、DoT(DNS over TLS),但是它们仍然很不成熟,未能普及,所以网络安全还得靠自己的网络防范意识。

影响

DNS 明文传输的危害并不仅仅是泄露个人访问记录这么简单,对于攻击者来说,最希望的还是得到访问你的私人 pC 的权限。这里攻击者可能最常用的手段就是 中间人攻击 (洋文:MITM,感兴趣可查看 维基百科 了解更多),对于这种攻击手段,它的前提必须是能够具备劫持用户流量的条件,然后通过更改流量包内容达到攻击效果。由于 HTTPS 已经普及,此类攻击能够利用的流量往往是 DNS 了,正是因为它的明文传输特性,所以更改 DNS 请求让流量转到攻击者预先设计好的钓鱼网站是多么的容易。

修复建议

如果你期待尝试 DoH,那么你或许应该配置一下你的 Firefox,配置方法看 这里.

由于 DoH 并不成熟,当你访问网络的时候无法避免出现漏网之鱼,因此并不推荐使用。如果你推崇 VPN 匿名上网,有一些 VPN 软件自带 DNS 泄露检测的,具体可以查看对应的 VPN 软件说明书。你可能会有疑问,如果设置 VPN 后,不是全局流量(包括 DNS 流量)都走的 VPN 吗?按常理讲,是不该出现泄露,但是如果你的系统存在漏洞或缺陷,依然会造成 DNS 泄露。就我所知的,Windows 下用于 IPv4 和 IPv6 相互转换的 Teredo隧道协议就有 DNS 泄露的风险,关于 Teredo 介绍可查阅 维基百科 ,即便你正在使用 VPN 也无济于事,因为Teredo 隧道如果和 VPN 隧道同时启用,teredo隧道优先级高于 VPN 隧道,这样就造成了匿名上网的缺口。
关闭方法:netsh interface teredo set state disabled
重新启用:netsh interface teredo set state type=default

如果你不想使用 VPN,那么也推荐你把 ISP 自动为你分配的 DNS 服务器更改为更加权威的,例如 Google 的公共 DNS 8.8.8.8,又或者最近声名鹊起的 CF(官网: 这里1.1.1.1
Windows 更改方法:

  1. Win+R 运行 ncpa.cpl 进入适配器管理界面。
  2. 双击本地网卡,或者右击 -> 属性,更改 DNS 地址为手动分配。
  3. 填入 DNS 地址,确定后,cmd中执行命令 ipconfig /flushdns 清空 DNS 缓存。

检测

DNS leak:点击Standard test 生成测试报告。
IP/DNS 检测:可检测是否存在 WebRTC 漏洞以及 DNS 泄露。

参考链接

除了上面的提到的链接,下面这些教程也会帮助你更好的防止网络信息泄露以及浏览器安全防护:





root@kali ~# cat 重要声明
本博客所有原创文章,作者皆保留权利。转载必须包含本声明,保持文本完整,并以超链接形式注明出处【Techliu】。查看和编写文章评论都需翻墙,为了更方便地获取文章信息,可订阅RSS,如果您还没有一款喜爱的阅读器,不妨试试Inoreader.
root@kali ~# Thankyou!