概述
從2016年開始,我就在琢磨尋找一種新的繞過谷歌驗證碼v2的方法會有多難,如果這種方法能夠適用於任何環境而不僅僅是針對特定的案例,那這種方法將是非常理想的。接下來我將向你介紹ReBreakCaptcha——一種全新的谷歌驗證碼v2的繞過技術。
ReBreakCaptcha分為三個階段:
1、音頻挑戰-獲得正確的挑戰類型
2、識別-轉換音頻挑戰音頻並將其發送到谷歌的語音識別API
3、驗證-驗證語音識別結果並繞過驗證碼
注:截至發布時(2017.02.28),該漏洞仍確認有效。
ReBreakCaptcha階段1:音頻挑戰
一共有三種類型的驗證碼v2挑戰:
圖像挑戰-挑戰包含描述和9個子圖像組成的圖像。請求用戶需選擇與給定描述最為匹配的子圖像。
音頻挑戰-挑戰包含音頻錄音,請求用戶需輸入聽到的數字。
文本挑戰-挑戰包含一個類別和5個候選短語,請求用戶需選擇與給定類別最匹配的短語。
ReBreakCaptcha知道如何解決驗證碼v2的音頻挑戰,因此,我們需要一種每次都獲得音頻挑戰的方法。
當點擊驗證碼v2的“我不是機器人”復選框時,我們經常會看到以下挑戰類型:
要獲得音頻挑戰,我們需要單擊以下按鈕:
然后我們就能看到一個可以輕松繞過的音頻挑戰:
也許你會注意到,有時候你會得到一個文本挑戰,而不是音頻挑戰:
要繞過它並獲得音頻挑戰,只需要點擊“重新加載挑戰”按鈕,直到獲得正確的類型即可。重新加載挑戰按鈕:
我們的目標是什么?繞過驗證碼。我們能做到嗎?是的,用谷歌語音識別API!
ReBreakCaptcha階段2:識別
接下來是一個有趣的部分,利用谷歌的一個服務來對付另一個谷歌的服務!讓我們回到音頻挑戰(第三張圖),如你所見,此挑戰頁面上的控件是:
1、播放按鈕-聽到挑戰內容
2、文本框-給用戶輸入結果的。
3、下載按鈕-下載音頻挑戰文件
讓我們下載音頻文件,並將其發送到Google語音識別API。在執行此操作之前,我們會將其轉換為Google語音識別API要求的“wav”格式。現在我們有音頻挑戰文件,並准備好發送到Google語音識別。如何才能做到這一點?使用他們的 API。
有一個偉大的Python庫,名為 SpeechRecognition,用於執行語音識別,支持多個引擎和API,在線和離線。我們將使用這個庫實現Google語音識別API調用。我們發送'wav'音頻文件,然后語音識別將以字符串(例如'25143')形式將結果發回給我們。這個結果就是我們音頻挑戰的結果。
ReBreakCaptcha階段3:驗證
這個階段相當短。我們現在需要做的只是將輸出字符串從階段2復制粘貼到文本框中,然后單擊“驗證”在ReCaptcha小部件。沒錯,我們現在半自動地使用Google的服務繞過自己的其他服務。
ReBreakCaptcha完整PoC
這里提供了一個完整的由Python編寫的PoC腳本,github鏈接:https://github.com/eastee/rebreakcaptcha
2017.03.02更新
我注意到了不少人遇上了一個難度值較高的音頻挑戰版本。因此,我提交了一個解決方案到github repo,該方案應該能克服這種情況,雖然成功率比原來要低。目前仍不清楚為什么會觸發這個較難的版本,但最被懷疑的原因是你的IP地址被谷歌認為是可疑的,通常情況下,不要使用公共代理/VPN,因為谷歌會將這些IP標記為可疑(這時將會出現較難的驗證碼版本)。
本文由 安全客 翻譯,轉載請注明“轉自安全客”,並附上鏈接。http://bobao.360.cn/learning/detail/3584.html
原文鏈接:https://east-ee.com/2017/02/28/rebreakcaptcha-breaking-googles-recaptcha-v2-using-google/