Author:bbdog
最近”水哥”很是火了一把,一招微觀辯水技驚四座,粘貼下其如何做到的描述如下:
王昱珩:多信息匹配,看水的時候所有信息抓住,從上往下看,亞克力杯子是沒有什么細節的,工業產品很難看(辨識) 。但杯子有水之后,就有了生命,有了不一樣的地方,每杯水都是獨立的。
記者:魏坤琳說你是通過水的綜合特征進行辨識的,除了氣泡等我們常人能看到的,還結合了哪些特征?
王昱珩:氣泡是依據但不是可靠依據,時間長了它會變大變小甚至掉落。看水看第一眼,給我整個的感覺,就像一個星座。中心點的時候看到一張臉,形象化。每一次閉眼都是在做一次記憶的整理。現場找那杯水,就像拿著照片找人一樣,像在茫茫人海找到你愛的人一樣,一眼就能看到。
在網絡中,你所不知道的角落里,也有很多很多的“水哥”在注視著你們,靜靜的看著你們的所有活動,并默默把每一幕記了下來。并按照他自己的意愿,或好好壞的使用這些數據。
它們所使用的方法與“水哥”基本一致:每個人根據其綜合特征進行辨識,都是可唯一的。通過對這些綜合特征的識別,就可以把你從千萬人中識別出來。
對于某些網站來說,能夠精確的識別某一用戶、瀏覽器或者設備是一個很有誘惑性的能力,同時也是一個強需求。
例如,對于廣告聯盟或者搜索引擎來說,可以利用設備指紋知道這個用戶之前搜索過什么、愛好是什么,從而在搜索結果中更好的貼合用戶需求展示搜索結果;對于銀行、電商等對于安全需求更高的組織來說,可以利用該技術,發現正在登陸的用戶環境、設備的變化,從而阻止賬號盜取、密碼破解等惡意請求;當然,對于某些惡意組織,也可以利用這種技術,用于對用戶進行追蹤。
這里,姑且給出會被拍磚的結論:
服務器通過在客戶端收集以下數據:
A.瀏覽器或設備對于特定標準的不同實現(如標準api使用情況)
B.服務器曾經下發給客戶端的特定數據
C.瀏覽器或設備對特定事件的不同反應(如已緩存的文檔)
D.瀏覽器用戶個人特有設置
E.瀏覽器用戶個人特有的其他信息(如瀏覽器歷史)
通過對以上數據進行組合,并進行hash即可得到一個該設備的唯一識別碼。
同時,為了保證數據的穩定性和精確度,設備指紋還需保證這些數據的不變性和穩定性(針對現在很多用戶會使用隱私模式/清理cookie),于是又引出了其他的一些相關性技術,如持久化cookie等。
舉個例子,以下是我的數據,數據來源[https://amiunique.org/fp]:
將以上的百分比進行相乘,你會發現要找到一個跟你完全一幕一樣的設備,概率是很低的。 當然,如果你的設備、操作系統、瀏覽器等足夠”平庸”,設備指紋不能保證找到你,它只能得出一個結論:現在我發現了一批人,這批人中有你。 如果你的設備、操作系統或瀏覽器足夠特別,它就會像”水哥”一樣馬上把你找出來。
有人說,我用的是大眾的操作系統,直接從某度下的最新版本瀏覽器,沒有做任何額外配置,我本身還經常做清理cookie操作,我應該跟很多大眾一樣,為什么我會像黑暗中的螢火蟲一樣,如此容易被識別呢。在此簡單給出理由,具體可以到相關技術中看詳細實現。
瀏覽器在使用過程中,所使用的緩存機制會暴露。
你最近訪問過支付寶,那么在緩存期間,訪問支付寶的響應速度會很快。這些對于不同網站的訪問速度,可以得出類似用戶訪問歷史的數據,而每個人這份數據都是不同的,你愛淘寶我愛天貓就是如此。
瀏覽器的實現機制、設備的性能會暴露。
用i7內核的電腦和酷睿2的電腦對同一段計算任務的計算時間,會暴露你的硬件差異。
你所安裝的插件和字體會暴露你。
你清除了cookie,然而根本沒有清理干凈。
歷史上的數據會暴露你。
......
如果一個部署了設備指紋的網站,可以完美的拿到上述的這些數據,那么它基本上可以百分百的斷定你是誰,然后撈出你在某天某月看小電影的記錄。
首先,基于相關技術的時間點和其對抗的難度,整理如下圖所示。
這是實現方式最簡單,也是應用最普遍的方式。 通過瀏覽器set-cookie存儲數據(UUID)到客戶端,然后在其他請求時候附在頭部里即可完成。 缺點是,通過手動清理、禁止寫入等可以很簡單的阻攔,導致數據穩定性降低。
window.name可以存儲最多2MB的數據,可以用于一些特殊的場合進行數據傳遞,不過這種方法比較trick,沒有太多人使用。
基于緩存的識別大致上可以分為幾類:
每人一份特有的緩存文件
比如服務器返回給每個用戶的html中,隱含一個特殊的div,id直接用UUID生成。用戶下載一次以后,因為緩存的緣故,這個id就會和其瀏覽器、設備綁定。
加載速度區分
有緩存數據肯定比沒緩存的數據下載速度快。
具體做法通常是:訪問一個很少不會有人訪問的地址,得到一個下載的基準值,然后再訪問一次,得到緩存的一個基準值。然后訪問一個準備好的常見網站的列表,看處于緩存狀態的有哪些網站。
ETAG/LastModify
通過濫用這兩個header,比如設置ETAG超時時間超長,并且把UUID寫在ETAG中(ETAG支持最高81864比特),那這個用戶就可以在超時前被一直鎖定跟蹤
DNS緩存
該技術與加載速度區分并無本質區別,只是dns緩存是利用dns查詢時間查詢的長短等進行的,在此不做贅述。 ?
如果可以完美的得到每個用戶最近訪問的網站,那基本可以完成精準定位了。
這里先貼一個2010的css歷史記錄嗅探的問題:
?
該技術其實是對cookie技術的一個補充。因為,越來越多的普通用戶會清理cookie,因此導致無法對用戶進行識別,因為每次看到用戶都是全新的用戶。
所謂的持久化cookie,無非就是將數據盡可能的藏在了更多的猥瑣的地方。比如flash中(flash可做到多個瀏覽器、多域下的數據共享,因此被廣泛使用),h5的各種生命周期的storage中,webDB中、IE的userdata中等。
如果用戶不能事無巨細的清理干凈。一旦有一個地方未清理完,就會把清理的部分完全覆蓋回來。
簡單流程圖如下:?
這是較新的一種技術,是利用不同瀏覽器不同的設別實現會在canvas繪圖這以功能中,同樣的內容,會繪制出具有細小細節差別的圖片。 通過對這些圖片數據進行hash,可以得到一個粗略的指紋。該指紋能夠識別出了某種GPU在安裝了某種字體下的群體。但是單一使用該數據進行判斷誤判較高,一般還會結合其他技術綜合判斷。 如下,即是對同樣的一段帶表情帶背景文字在不同設備上渲染出的圖像顯示。
利用不同設備上的默認字體和顯示的不同,笑臉表情在各個系統上作圖如下:
具體生成方法如下:
設備指紋也需要采集盡量多的數據進行區分,數據采集方式可以通過Flash、java applet(現在基本沒有了)、js。
采集包括:
最后,還是表達下我對“水哥”的憧憬,附上我喜歡的一個圖:?
Mowery, Keaton, et al. "Fingerprinting information in JavaScript implementations." Proceedings of W2SP 2 (2011).
Bujlow, Tomasz, et al. "Web Tracking: Mechanisms, Implications, and Defenses." arXiv preprint arXiv:1507.07872 (2015).
[https://zyan.scripts.mit.edu/presentations/toorcon2015.pdf]
Acar, Gunes, et al. "The web never forgets: Persistent tracking mechanisms in the wild." Proceedings of the 2014 ACM SIGSAC Conference on Computer and Communications Security. ACM, 2014.
Mowery, Keaton, et al. "Fingerprinting information in JavaScript implementations." Proceedings of W2SP 2 (2011).
Laperdrix, Pierre, Walter Rudametkin, and Benoit Baudry. "Beauty and the Beast: Diverting modern web browsers to build unique browser fingerprints."37th IEEE Symposium on Security and Privacy (S&P 2016). 2016.
Acar, Gunes, et al. "The web never forgets: Persistent tracking mechanisms in the wild." Proceedings of the 2014 ACM SIGSAC Conference on Computer and Communications Security. ACM, 2014.
Fifield, David, and Serge Egelman. "Fingerprinting web users through font metrics." Financial Cryptography and Data Security. Springer Berlin Heidelberg, 2015. 107-124.
Sánchez-Rola, Iskander, et al. "Tracking Users Like There is No Tomorrow: Privacy on the Current Internet." International Joint Conference. Springer International Publishing, 2015.