2017/03/10

網站追蹤技術--音頻指紋追蹤(audio fingerprinting web-tracking)

網站追蹤技術--音頻指紋追蹤(audio fingerprinting web-tracking)


透過 HTML AudioContext 的函式,來追蹤使用者。這功能本來是設計來在 web browser
上面處理聲音分析、過濾的,但用在追蹤及網站使用者識別,更是令人驚豔。(這是根本是 HTML5 版本的程式奇淫技巧呀!!)


Audio Fingerprinting測試DEMO頁面:
https://audiofingerprint.openwpm.com/



研究機構:
普林斯頓大學的研究室,關於音頻指紋(AudioContext Fingerprinting)、WebRTC Local IP Discovery 及帆布指紋(Canvas Fingerprinting)的說明
https://webtransparency.cs.princeton.edu/webcensus/index.html#fp-results
其中關於 AudioContext Fingerprinting 但需要進一步的研究,指紋的穩定性及唯一性。

這研究室開發的 OpenWPM 看起來很強大呀!!
https://github.com/citp/OpenWPM


另一個研究機構,大量收集,並探討 fingerprinting 的有效性。
https://amiunique.org/
還發了一篇 IEEE http://ieeexplore.ieee.org/document/7546540/?reload=true


實作的GITHUB專案:
這個專案,不相容於前一個專案版本 Fingerprintjs ,這個版本但使用多個不同的偵測技術。

線上測試:
http://valve.github.io/fingerprintjs2/

原始碼:
https://github.com/Valve/fingerprintjs2
作者的裡面有一段寫到:「I'm also paying special attention to IE plugins, popular in China, such as QQ, Baidu and others.」 , 幫 china user 廠廠了!!

這是我直接放在我網站的連結 http://jangmt.com/fingerprintjs2/ 
他可以分辨到不同的 chrome 使用者以及更細微的差異.


我寫了一個簡單的測試的頁面,可以讓使用這測試一下他的 展示閱覽的狀態歷史
http://jangmt.com/fingerprintjs/





網站使用者識別機制-帆布指紋( canvas fingerprinting )



* Canvas fingerprinting 可以透過HTML5  BROWSER 的 CANVAS ,依據不同軟體及硬體裝置上對於 Canvas 的實作,得到不同的指紋,得到一個唯一 HASH 值,用這個值來判斷使用者的唯一性。且它無法被無痕視窗封鎖阻擋,也沒有防毒軟體可以阻止它洩漏你的機器識別資訊,AdBlock 要檔是可以,但要自己加入規則鎖 Canvas JS。

* 這讓我想到上一篇,我用 IP清單來抵擋大量的暱名 IP,現在換成這個機制,加上 IP 管制,就可以更精準的阻止匿名攻擊的註冊!!

* 至於哪些沒有 CANVAS 的 browser 就直接把它拋棄了,根本不讓他連網。目前大概只有機器人會用沒有 CANVAS 的 BROWSER 巴。

WIKI: https://en.wikipedia.org/wiki/Canvas_fingerprinting

誰提出的想法:https://cseweb.ucsd.edu/~hovav/dist/canvas.pdf

解釋:https://securehomes.esat.kuleuven.be/~gacar/persistent/the_web_never_forgets.pdf
開始解釋這種追蹤工具的難以抵擋性, 2014年的調查已經有 5% 以上的網站使用這種技術。

猜測正確率論文:https://panopticlick.eff.org/static/browser-uniqueness.pdf  ‎被引用 535 次
「在我們的樣本中,帆布指紋變化相當快速,但即使一個簡單的試探通常能夠猜到是
什麼時候的指紋,是以前觀察過的 '升級版' 瀏覽器指紋,
有 99.1% 的猜測正確 和只有 0.86% 是未命中(false positive rate)。」


* 線上立即可以測試的網站:

(1) 線上測試網站
https://fingerprint.pet-portal.eu/  更詳細的 fingerprint 還可以猜你安裝哪些軟體,且有不錯的識別率。



(2)
我下載 https://github.com/Valve/fingerprintjs 的本機測試結果 ,可以點擊這裡測試。這個比較簡單,直接分析得到一組code ,在同一個機器同 browser 開啟會是唯一值。 v2 版本比較進階,甚至可以識別你的 chrome 帳號登入的不同。



GITHUB 已經有人寫成 framework 可以直接用的 code:
https://github.com/Valve/fingerprintjs  第一版
https://github.com/Valve/fingerprintjs2  第二版


more...
http://valve.github.io/blog/2013/07/14/anonymous-browser-fingerprinting/
http://www.ghacks.net/2014/07/21/companies-use-canvas-fingerprinting-track-online/

另一個研究機構,大量收集,並探討 fingerprinting 的有效性。
https://amiunique.org/
還發了一篇 IEEE http://ieeexplore.ieee.org/document/7546540/?reload=true

我寫了一個簡單的測試的頁面,可以讓使用這測試一下他的展示閱覽的狀態歷史
http://jangmt.com/fingerprintjs/


2017/03/06

TOR 匿名網路的抵擋

有各做網站很麻煩的問題, 就是會遇到透過大量的 ip 重複註冊. 然後 client 可以大量使用匿名網路 ex. TOR , open proxy 等方式大量註冊,且一定是透過機器人來大量註冊,通常會搭配圖檔認證機器人,如果可以雙管齊下, 先擋住機器人,再來擋住 tor or open proxy 就可以防堵匿名的大量註冊。

可以檢查你的網路IP是否為 tor 網路 https://torstatus.blutmagie.de/ 
這個提供 tor db list https://www.dan.me.uk/tornodes 提供ip-list DB and client
這是另一個付費的匿名網路的名單 https://udger.com/resources/ip-list/web_proxy
但能夠完全阻擋嗎?
我猜檔個 80%~90% 應該可以巴 , 要全檔太難了, 畢竟連手機都有 tor browser 了, 無處不再呀!





至於機器人那段, 加強文字驗證碼應該可以解決. 但要搞到很難辨識又失去方便性,
這是可以取捨的點.
google reCAPTCHA  https://www.google.com/recaptcha/intro/