Security of Browser
by @uglefisk, from AGORA Awards 2019
如家庭住址(IP)、服务号(DNS)等等,详细的令人发指。还好whoer又告诉我如何去保护隐私的方法。
主要建议为两点:
- 更改浏览器的配置
- 更改我家的默认服务号(DNS)
浏览器里的WebRTC
漏洞(Bug)
2015年,TorrentFreak报告了一个 WebRTC 的安全漏洞,
解决方案
wikipedia.org上给出了解决方案。
Microsoft Edge : 在地址栏输入「 about:config」,搜索「开发人员设置」选项并点击「在WebRTC上隐藏我的本机IP地址」,即可隐藏IP地址。Mozilla Firefox :在地址栏输入「about:config」,搜索「media.peerconnection.enabled」并双击将值改为「false」,就可将WebRTC关闭。Google Chrome :在谷歌应用商店安装谷歌官方扩展「WebRTC Network Limiter」。Opera :在官方应用商店搜索并安装「WebRTC Control」扩展。其它方案 :uBlock Origin :安装「uBlock Origin」并在设置中启用「避免WebRTC 泄露本地IP地址」可以避免本地IP泄露。但需注意的是,该方案不适用于Firefox 41(或更低)、uBlock Origin 1.3.3(或更低)版本用户。WebRTC Control :对于主流浏览器(Firefox, Opera, Google Chrome…),此扩展基本上都已经支持。
Language(语言)
Mozilla Firefox : 在地址栏输入「about:config」,搜索「intl.accept_languages」,去除「zh」,改为「en-us,en」。System :请善用 Google/Baidu。
TimeZone(时区)
- In Linux:
1
:~$ sudo ln -s -f /usr/share/zoneinfo/Europe/Paris /etc/localtime
- In Winwos: 点点鼠标即可。
DNS
浏览器打开一个网站的时,首先向 DNS 服务器发起域名解析请求,获取到域名(网站)所对应的 IP 后,再向网站服务器发起 HTTP 请求。
HTTP 请求不会包含用户当前系统所设置的 DNS 服务器的 IP 地址,原则上网站是获取不到用户系统的 DNS 服务器的 IP 地址。
人类的智慧是无穷尽的,正面无法获取用户隐私(DNS 服务器 IP)了,就想出了一个“曲线救国”的方法来获取用户更多详细隐私内容。
即
自建 DNS 权威服务器很简单,直接像 VPS 提供商购买即可。
浏览器打开一个网页的主要流程如下:
- 向 DNS 服务器发起域名解析;
- 向网站服务器发起 HTTP 请求;
- 网站服务器响应 HTTP 请求。
在这个流程第 1 步中,客户端发送域名解析请求到 DNS 服务器,不会与网站服务器发生交互。
在第 2 步中,客户端会发送 IP 地址、浏览器信息、语言等信息到网站服务器,这其中也没有包含 DNS 服务器的信息。
那么,DNS 服务器地址是在什么时候泄露的呢?
经过抓包分析,
1 | https://twfos1559410.ba.whrq.net/css/null.css?_=1456472191430 |
随后又
1 | https://whoer.net/zh/dns?domain=twfos1559410.ba&_=1456472133109 |
其中 domain 这个参数的值 twfos1559410.ba 与前一个请求的域名前半段一致,是个随机字符串。
看来,获取客户端 DNS 服务器地址的关键就在这里。
使用 dig
命令查看该域名的解析流程,命令如下:
1 | :~$ dig twfos1559410.ba.whrq.net +trace |
从 dig
命令的返回结果中,比较关键的一行是:
1 | whrq.net. 172800 IN NS ns8.whdn.net. |
这是一条 NS 记录,即所有 whrq.net
的子域名由 DNS 权威服务器 ns8.whdn.net
负责解析。
如果该 DNS 权威服务器手脚不干净,并与网站服务器有“串通“,那么网站服务器就可以获取到客户端的 DNS 服务器的地址了。
具体流程如下:
- 客户端向网站服务器发起 HTTP 请求;
- 网站服务器返回的网页中包含一个由随机字符串组成域名的 CSS 链接;
https://twfos1559410.ba.whrq.net/css/null.css
- 客户端浏览器解析到该 CSS 链接的时候,需要先向客户端 DNS 服务器发起请求解析该域名;
- 客户端DNS服务器向DNS权威服务器
ns8.whdn.net
发起解析twfos1559410.ba.whrq.net
域名的请求。 - DNS 权威服务器
ns8.whdn.net
记录下随机数twfos1559410
与客户端 DNS 服务器的 IP 地址。 - DNS 权威服务器将客户端 DNS 的 IP 地址告诉网站服务器。
- 客户端向网站服务器发起请求获取客户端 DNS 的 IP 地址。
至此,网站获取客户端DNS服务器IP地址完成。
修改本地 DNS:
1 | :~$ sudo vim /etc/resolv.conf |
References:
- 阿毛的博客
- WikiPedia