瀏覽器指紋識別。如何在網絡上跟踪用戶。[第2部分]

 

https://ascarding.com/threads/browser-fingerprinting-how-to-track-users-on-network-part-2.1456/

HTML5 應用程序緩存

應用程序緩存允許您指定站點的哪一部分應該保存到磁盤並可以訪問,即使用戶處於離線狀態。所有這些都由清單控制,清單指定了緩存中元素的存儲和檢索規則。與傳統的緩存機制類似,AppCache 還允許您在清單本身和無限期存儲的資源中存儲唯一的、用戶特定的數據(與常規緩存不同,資源會在一段時間後從中刪除)。AppCache 佔據了 HTML5 數據存儲機制和普通瀏覽器緩存之間的中間值。在某些瀏覽器中,cookie 和站點數據被刪除時會被清除,而在其他瀏覽器中,只有在瀏覽歷史記錄和所有緩存文檔被刪除時才會被清除。


其他存儲機制

但這並不是所有的選擇。在 JavaScript 及其開發人員的幫助下,您可以保存和請求唯一標識符,以便即使在刪除整個瀏覽歷史記錄和站點數據後它仍然有效。作為選項之一,您可以使用它來存儲 window.name 或 sessionStorage。即使用戶清除了所有 cookie 和站點數據,但沒有關閉打開跟踪站點的選項卡,服務器將在下次訪問時收到標識令牌,並且用戶將再次鏈接到已收集的關於他。在 JS 中觀察到相同的行為。任何打開的 JavaScript 上下文都會保留其狀態,即使用戶刪除了站點數據。同時,這樣的 JavaScript 不僅可以屬於顯示的站點,還可以隱藏在 iframe、web worker 等中。例如,


協議

除了與緩存相關的機制、JS 和各種插件的使用之外,現代瀏覽器還有其他一些網絡功能,允許您存儲和檢索唯一標識符。

  1. Origin Bound Certificates aka ChannelID) - 持久性自簽名證書,用於向 HTTPS 服務器標識客戶端。對於每個新域,都會創建一個單獨的證書,用於稍後啟動的連接。站點可以使用 OBC 來跟踪用戶,而無需採取任何客戶端可見的操作。作為唯一標識符,您可以使用客戶端提供的證書的加密哈希作為合法 SSL 握手的一部分。
  2. 同樣,TLS 也有兩種機制——會話標識符和會話票證,允許客戶端在不執行完整握手的情況下恢復中斷的 HTTPS 連接。這是通過使用緩存數據來實現的。這兩種機制允許服務器在短時間內識別來自單個客戶端的請求。
  3. 幾乎所有現代瀏覽器都實現了自己的內部 DNS 緩存,以加快名稱解析過程(並在某些情況下降低 DNS 重新綁定攻擊的風險)。此緩存可輕鬆用於存儲少量信息。例如,如果您有 16 個可用的 IP 地址,大約 8-9 個緩存名稱就足以識別網絡上的每台計算機。但是,這種方法受到瀏覽器內部 DNS 緩存大小的限制,並且可能會導致名稱解析與提供商的 DNS 發生衝突。


機器規格

之前考慮的所有方法都基於這樣一個事實,即用戶被設置了一個唯一標識符,該標識符在後續請求期間發送到服務器。還有另一種不太明顯的跟踪用戶的方法,它依賴於查詢或測量客戶端機器的特徵。單獨地,每個接收到的特徵僅代表少量信息,但是如果將其中的幾個組合起來,它們可以唯一地標識 Internet 上的任何計算機。除了此類監視更難以檢測和預防這一事實之外,該技術還可讓您識別使用不同瀏覽器或使用隱私模式的用戶。


瀏覽器的“指紋”

最簡單的跟踪方法是通過組合瀏覽器環境中可用的一組參數來構建標識符,每個參數都沒有任何意義,但它們一起形成了每台機器的唯一值:

  • 用戶代理。返回瀏覽器版本、操作系統版本和一些已安裝的插件。如果缺少 User-Agent 或您想檢查其“真實性”,您可以通過檢查在不同版本之間實現或更改的某些功能來確定瀏覽器版本。
  • 時鐘運行。如果系統沒有將其時鐘與第三方時間服務器同步,那麼它遲早會開始滯後或匆忙,這將在實際時間和系統時間之間產生獨特的差異,這可以使用 JavaScript 以微秒的精度進行測量。事實上,即使在與 NTP 服務器同步時,仍然會存在也可以測量的小偏差。
  • 關於 CPU 和 GPU 的信息。您可以直接(通過 GL_RENDERER)或通過使用 JavaScript 實現的基準測試和測試獲得它。
  • 顯示器分辨率和瀏覽器窗口大小(包括多顯示器系統中第二台顯示器的參數)。
  • 系統中安裝的字體列表,例如使用 getComputedStyle API 獲得。
  • 所有已安裝插件、ActiveX 控件和瀏覽器幫助程序對象的列表,包括它們的版本。您可以通過 brutenavigator.plugins[]-force 獲取它(某些插件在 HTTP 標頭中顯示它們的存在)。
  • 有關已安裝擴展和其他軟件的信息。廣告攔截器等擴展程序會對查看的頁面進行某些更改,這可用於確定它是哪種擴展程序及其設置。


網絡“指紋»

在本地網絡的體系結構和網絡協議的配置中可以找到許多其他功能。此類標誌對於安裝在客戶端計算機上的所有瀏覽器都是常見的,並且不能僅使用隱私設置或某些安全實用程序來隱藏它們。這些包括:

  • 外部 IP 地址。對於 IPv6 地址,這個向量特別有趣,因為在某些情況下,最後一個八位字節可以從設備的 MAC 地址中獲得,因此即使連接到不同的網絡也能保留下來。
  • 傳出 TCP/IP 連接的端口號(通常為大多數操作系統按順序選擇)。
  • 位於 NAT 或 HTTP 代理後面的用戶的本地 IP 地址。結合外部 IP 地址,它可以讓您唯一地識別大多數客戶。
  • 有關客戶端使用的代理服務器的信息,從 HTTP 標頭 (X-Forwarded-For) 中獲取。結合客戶端的真實地址,通過幾種可能的方式獲得繞過代理也可以讓你識別用戶。


行為分析和習慣

另一種選擇是著眼於與 PC 無關的特徵方向,而是與最終用戶相關的特徵,例如區域設置和行為。此方法再次允許您在不同瀏覽器會話、配置文件之間以及在隱私瀏覽的情況下識別客戶端。您可以根據以下數據得出結論,這些數據始終可供研究:

  • 首選語言、默認編碼和時區(所有這些都存在於 HTTP 標頭中並且可以從 JavaScript 訪問)。
  • 客戶端緩存中的數據及其瀏覽歷史記錄。緩存元素可以使用基於時間的攻擊來檢測——跟踪器可以通過簡單地測量加載時間來檢測與流行資源相關的長壽命緩存元素(如果時間超過本地緩存的預期加載時間,則取消轉換)。您還可以提取存儲在瀏覽器瀏覽歷史記錄中的 URL,儘管現代瀏覽器中的此類攻擊幾乎不需要用戶交互。
  • 鼠標手勢、擊鍵的頻率和持續時間以及來自加速度計的數據——所有這些參數對於每個用戶都是獨一無二的。
  • 對網站標準字體及其大小、縮放級別以及特殊功能(如文本顏色和大小)的使用的任何更改。
  • 客戶端配置的某些瀏覽器功能的狀態:阻止第三方 cookie、DNS 預取、阻止彈出窗口、Flash 安全設置等(具有諷刺意味的是,更改默認設置的用戶實際上使他們的瀏覽器更容易識別) .
而這些只是表面上顯而易見的選擇。如果你深入挖掘 - 你可以想出更多。


總結一下

如您所見,在實踐中,有大量不同的方式來跟踪用戶。其中一些是執行錯誤或遺漏的結果,理論上是可以糾正的。如果不完全改變計算機網絡、Web 應用程序和瀏覽器的原理,幾乎不可能根除其他的。您可以通過清除緩存、cookie 和其他可以存儲唯一標識符的位置來抵消某些技術。其他人在用戶完全沒有註意到的情況下工作,您不太可能保護自己免受他們的侵害。因此,最重要的是在網絡中旅行,即使在私人查看模式下,請記住您的動作仍然可以被跟踪。

留言

這個網誌中的熱門文章

DeepNude 2.0 – Deepnude AI算法一键脱衣,绿色破解版,免费下载

用数字货币洗钱,警察蜀黍就没招了吗?| 浅黑笔记

最简单的Trojan一键脚本,效率高/速度快/延迟低,支持tls1.3,系统要求>=Centos7