IP匿名性研究

  • 2019 年 10 月 8 日
  • 筆記

何謂匿名?

匿名定義為未知姓名或未確定身份。我們上網時並沒有匿名,即使在使用隱私工具如Tor、Bitcoin或VPN的時候。每項服務至少有一條可以用於區分不同用戶的信息,無論其為一套IP地址(VPN或Tor)還是一個電子錢包(Bitcoin)。這種信息本身可能不會泄露用戶的任何私人信息,但其可與其它相似信息聯繫起來,最終確定個人的身份。 VPN雖然不會使得我們完全匿名,但它會極大增強上網時的隱私和安全。

既然不可能做到完全匿名,我們只能提高相對匿名性,從而使得自己在網絡中的隱私度更高安全性更高

一定的匿名性是有必要的

互聯網時代,個人隱私的保護更加複雜與困難,亟待各種保護手段的更新和創新。比如在網絡立法層面,目前仍有許多空白,缺乏相應的頂層設計。有必要在個人信息保護、電子商務等領域建立嚴格健全的法律規定,劃定互聯網服務商的「禁區」,明確權責,讓處在弱勢的普通用戶擁有知情權、選擇權與維權的依據。

因而在當今這個時代,不論是信息/網絡安全從業者,還是普通群眾都應該自主地去提高自己的安全意識,通過一些措施防止自己的信息泄露。

什麼因素會泄露你的真實IP信息?

可以小結出以下因素:

  • IPV4地址泄露
  • IPV6地址泄露
  • DNS泄露
  • WebRTC泄露
  • HTTPHeader信息泄露
  • 等等…..

IPV4泄露

IPv4使用32位(4位元組)地址,因此地址空間中只有4,294,967,296(232)個地址。不過,一些地址是為特殊用途所保留的,如專用網絡(約1800萬個地址)和多播地址(約2.7億個地址),這減少了可在互聯網上路由的地址數量。隨着地址不斷被分配給最終用戶,IPv4地址枯竭問題也在隨之產生。基於分類網絡、無類別域間路由和網絡地址轉換的地址結構重構顯着地減少了地址枯竭的速度。但在2011年2月3日,在最後5個地址塊被分配給5個區域互聯網註冊管理機構之後,IANA的主要地址池已經用盡。

我們現在常說的IP地址就是指IPV4地址,通常我們在使用瀏覽器訪問web站點時,請求頭中會包含我們的IPV4地址,因此可以被服務器獲取到我們的IP並記錄進入日誌。

IPV6泄露

Internet協議版本6(IPv6)是Internet協議(IP)的最新版本,IP協議是為網絡上的計算機提供標識和定位系統並通過Internet路由流量的通信協議。IPv6是由互聯網工程任務組(IETF)開發的,用於解決長期以來的IPv4地址耗盡問題。 除了更大的尋址空間之外,IPv6還提供其他技術優勢。特別是,它允許分層地址分配方法,這些方法有助於跨Internet的路由聚合,從而限制了路由表的擴展。擴展和簡化了多播尋址的使用,並為服務的提供提供了額外的優化。在協議的設計中已經考慮了設備移動性,安全性和配置方面。 IPv6地址表示為八組,每組四個十六進制數字,組以冒號分隔,例如2001:0db8:0000:0042:0000:8a2e:0370:7334,但存在縮寫此完整符號的方法。

IPV6是還未普遍使用的一種地址,用於解決長期以來的IPv4地址耗盡問題,通過沒有隱藏IPV6也會泄露我們信息。

DNS泄露

什麼是DNS?

DNS或域名系統用於將域名(如www.astrill.com)轉換為數字IP地址,例如 123.98.12.1在互聯網上用於發送數據包。 每當您的計算機需要聯繫網絡上的服務器時,例如當您在瀏覽器中輸入URL時,您的計算機會聯繫DNS服務器並請求IP地址。大多數互聯網服務提供商為他們的客戶分配一個DNS服務器,它們用於控制和記錄您的互聯網活動。

在某些情況下,即使連接到匿名網絡,操作系統仍將繼續使用其默認DNS服務器,而不是由匿名網絡分配給您計算機的匿名DNS服務器。這被稱為泄漏。DNS泄漏是主要的隱私威脅,因為匿名網絡可能會在私人數據泄露的同時提供錯誤的安全感。

當您的DNS請求被泄露時,發送到/從網站發送的實際數據將不被捕獲。但它仍然可以向竊聽者提供關於您訪問的網站的足夠信息。它也為DNS病毒打開門戶,可用於釣魚攻擊(DNS劫持)。

WEBRTC泄露

什麼是WEBRTC? WebRTC(Web Real-Time Communication)是一個支持網頁瀏覽器進行實時語音對話或視頻對話的技術,是谷歌2010年以6820萬美元收購Global IP Solutions公司而獲得的一項技術。2011年5月谷歌開放了WebRTC的源代碼,在行業內得到了廣泛的支持和應用。

即使您正在使用 VPN,也會出現多個可以泄漏 IP 地址的「意想不到的錯誤」。它被稱為 WebRTC(Web 實時通信)泄漏。

WebRTC 允許瀏覽器內部的實時通信。這很方便,但也有一個缺點。即使打開了VPN,WebRTC 也能默認泄漏您的真實地址。WebRTC 協議通過設計實現此目的,即使是最好的 VPN 也無法始終保護自己的信息不被泄露。

因此,如果使用默認啟用 WebRTC 的瀏覽器,則採取必要的預防措施這一點十分重要。在選擇的瀏覽器中搜索如何關閉 WebRTC,或查找是否存在可安裝用來禁用 WebRTC 的 WebRTC 阻止插件。請記住,禁用 WebRTC 可能會導致部分網站(如 Google Hangouts)無法正常工作,因此您可能需要在特定情況下啟用它。

Firefox瀏覽器禁用WebRTC的方法是:在瀏覽器上輸入:about:config。之後搜索:media.peerconnection.enabled。找到它後雙擊,將其改成 false 即可。    Chrome瀏覽器禁用WebRTC的方法是:在Chrome應用商店裡,安裝一個名為WebRTC Leak Prevent的擴展,然後選擇 Use my Porxy server(if present) 即可。

HTTPheader泄露

http請求數據包中的 header:

GET / HTTP/1.1  Host: www.4399.com  Connection: keep-alive  Upgrade-Insecure-Requests: 1  User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36  Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8  Accept-Encoding: gzip, deflate  Accept-Language: zh,en-US;q=0.9,en;q=0.8,zh-TW;q=0.7,zh-CN;q=0.6  Cookie: home4399=yes; UM_distinctid=169050f7793431-0062d73fb17ef-b79183d-144000-169050f7794319; CNZZDATA30039538=cnzz_eid%3D1853484585-1550564275-%26ntime%3D1550564275  If-None-Match: W/"5c6b5dba-2a86c"  If-Modified-Since: Tue, 19 Feb 2019 01:36:58 GMT

可見,通過 header中的 Accept-Language, User-Agent泄露了一些信息,如:我們使用的是中文和英文,用戶詳細UA信息等等。

一般情況下我們也可以使用 X-Forwarded-For, X-Client-IP, X-Real-IP, X-Remote-IP等請求屬性偽造IP從而騙過服務器的IP識別。

IP匿名性測試

我們接下來基於windows10和parrot linux平台代理進行IP匿名性測試,代理軟件是最普通的 小飛機(ssr),值得一提的是 Electron版小飛機還不錯,跨平台。

什麼是Parrot linux? Parrot Security OS(簡稱作「ParrorSec」或「Parrot(鸚鵡)」)是一個基於 Debian 面向安全的 GNU/Linux 發行版。它提供了諸多用於安全測試、數字取證、軟件開發及隱私防護的專業工具。 Parrot與kali類似,但比kali多很多工具。在我目前使用的情況看來,同等配置下Parrot要比kali美觀流暢。

使用以下三個網址進行匿名性檢測:

  • https://www.astrill.com/zh/vpn-leak-test
  • https://whoer.net/zh
  • http://ceye.io/

通過測試直觀地顯現出不同平台,不同情況下的匿名程度,從而得到其差別。

Windows 10平台

在我的物理機 windows10本地啟用 小飛機之後,我們分別從幾個測試平台獲得了IP匿名性測試結果:

astrill.com:

whoer.net:

ceye.io:

通過偽造httpheader中的 x-real-ip我們可以給自己加上一層偽裝,但是並不能逃過檢測:

由以上三個結果可以了解到,單純在win10上使用小飛機代理時,astrill和whoer平台的結果共同反映出了DNS和WEBRTC的泄露,以及頁面語言,當地時間等信息。而ceye的結果更是直接得到了我們的真實IP,僅憑上述信息已經可以精確知道我是哪個村的人了(開個玩笑hhh),因此在win10上小飛機的匿名性堪憂。

Parrot Linux平台

在我的虛擬機 ParrotLinux啟用 小飛機之後,我們分別從幾個測試平台獲得了IP匿名性測試結果:

astrill.com:

whoer.net:

ceye.io:

由以上三個結果可以看到,沒有出現與我所在地有關的信息,檢測到的IP也不是我的真實IP(117.170.***.***),而是代理服務器的IP地址,沒有出現DNS和WEBRTC泄露,因而可以看出 Parrotlinux作為一個面向安全測試的linux發行版的匿名性是十分之高的,相對於win10匿名性要提高了不少。

以Parrot作為跳板,為win10代理

既然Parrot的匿名性比較好,那我們把parrot作為跳板(parrot上的小飛機允許局域網連接),用win10連接運行在parrot上的小飛機代理,會有什麼結果呢?

whoer.net:

ceye.io和astrill檢測是正常的,沒有泄露信息,但是從whoer.net的結果看來:泄露了時區,語言等信息。最關鍵的是WEBRTC直接泄露出了我們的真實IP地址和內網地址。

Parrot OS中自帶Tor網絡,和匿名模式,以上測試均在未開啟Tor網絡和匿名模式情況下測試。 總的來說,單純地使用Parrot還是很香很匿名的!

思考

當今的科技發展迅速,隱私信息也顯得越來越重要,通過一部分真實的蛛絲馬跡,就可能還原出精準的信息模型。IPV6泄露,DNS泄露,WEBRTC泄露,HTTPheader泄露都可能導致你在網絡上的匿名性降低,可能對於普通人來說,這只是無關緊要的事情,但對於諸位安全從業者來說,其中利弊不用多言。