砍站的技巧?

Hacker News 上看到的文章,講如何用 JavaScript 砍站:「I Don’t Need No Stinking API – Web Scraping in 2016 and Beyond」。

引起注意的是「Beating CAPTCHA」這邊,直接拿 Antigate 的服務 (付費服務) 來打穿 CAPTCHA,看了一下價錢:

Cheapest price on the market - starting from 0.7USD per 1000 images, depending on the daily volume

唔,這服務這好像頗不賴... 記錄起來用 :o

利用 CloudFlare 的 reCAPTCHA 反向找出真正的 Tor 使用者

Cryptome 這邊看到可能可以被拿來用的技巧:「Cloudflare reCAPTCHA De-anonymizes Tor Users」。

Tor 使用者連到 CloudFlare 上時,常常會出現 reCAPTCHA 的提示,要求你驗證,而這個驗證過程的 traffic pattern 太龐大而且很明顯,當情治單位同時可以監控 CloudFlare 的上游 (像是「Airtel is sniffing and censoring CloudFlare’s traffic in India and CloudFlare doesn’t even know it.」這篇提到的問題) 或是監控 Tor 的 exit node 的上游,再加上同時監測使用者可能的 ISP,就可以對照湊出使用者:

Each click on one of the images in the puzzle generates a total of about 50 packets between Tor user's computer and the Cloudflare's server (about half are requests and half are real-time responses from the server.) All this happens in less than a second, so eventual jitter introduced in onion mixing is immaterial. The packet group has predictable sizes and patterns, so all the adversary has to do is note the easily detectable signature of the "image click" event, and correlate it with the same on the Cloudflare side. Again, no decryption required.

短短的一秒鐘內會產生 50 個封包,而且 pattern 很清楚...

用 Tesseract OCR 解 CAPTCHA

在「python 乌云账号暴力猜解工具」這邊看到 Tesseract OCR 這個 command line 工具,比想像中的簡單很多...

Tesseract OCR 最新版是 2012 年出的,所以也不需要另外用 ppa 安裝,在 Ubuntu 下可以直接用 apt-get 安裝到 3.02 版:

# apt-get install tesseract-ocr

隨便抓張 CAPTCHA 後直接跑就可以了,像是這張:

跑出來的結果:

$ tesseract a.gif a
Tesseract Open Source OCR Engine v3.02 with Leptonica
$ cat a.txt
8308

預設的輸出檔名會加上 .txt 是比較討厭的地方,不然就可以用 /dev/stdout 當作輸出檔名處理掉...

關於重設密碼的步驟

這應該有很標準的程序,不過好像還是有很多站沒這樣做...

必要的步驟包括:

  • 如果使用者只記得 username,輸入後告知使用者「已經發送確認信至 username 當初所註冊的信箱」。
  • 如果使用者只記得 e-mail,輸入後告知使用者「已經發送確認信至該 e-mail」,如果該 e-mail 沒有被註冊也不要有不同的訊息,因為如果可以判斷 e-mail 有沒有不同的訊息,可以利用這個功能大致判斷某個人有沒有註冊這個服務。
  • 基本上都要加上 CAPTCHA 以及對 IP rate limit 避免有人利用這個行為惡搞。

要注意的是要透過「確認信」的步驟再改密碼,而不能在要求重設密碼時就馬上把密碼改掉,不然就可以惡搞使用者。