概述


从2016年开始,我就在琢磨寻找一种新的绕过谷歌验证码v2的方法会有多难,如果这种方法能够适用于任何环境而不仅仅是针对特定的案例,那这种方法将是非常理想的。接下来我将向你介绍ReBreakCaptcha——一种全新的谷歌验证码v2的绕过技术。

ReBreakCaptcha分为三个阶段:

1、音频挑战-获得正确的挑战类型

2、识别-转换音频挑战音频并将其发送到谷歌的语音识别API

3、验证-验证语音识别结果并绕过验证码

注:截至发布时(2017.02.28),该漏洞仍确认有效。

 

ReBreakCaptcha阶段1:音频挑战


一共有三种类型的验证码v2挑战:

图像挑战-挑战包含描述和9个子图像组成的图像。请求用户需选择与给定描述最为匹配的子图像。

音频挑战-挑战包含音频录音,请求用户需输入听到的数字。

文本挑战-挑战包含一个类别和5个候选短语,请求用户需选择与给定类别最匹配的短语。

ReBreakCaptcha知道如何解决验证码v2的音频挑战,因此,我们需要一种每次都获得音频挑战的方法。

当点击验证码v2的“我不是机器人”复选框时,我们经常会看到以下挑战类型:

http://p9.qhimg.com/t0161de8223693ceb3b.png

要获得音频挑战,我们需要单击以下按钮:

http://p3.qhimg.com/t01ac45dfd3eb9f77b8.png

然后我们就能看到一个可以轻松绕过的音频挑战:

http://p2.qhimg.com/t01c3d21524175a76cc.png

也许你会注意到,有时候你会得到一个文本挑战,而不是音频挑战:

http://p0.qhimg.com/t019d98cc922ef2ef87.png

要绕过它并获得音频挑战,只需要点击“重新加载挑战”按钮,直到获得正确的类型即可。重新加载挑战按钮:

http://p5.qhimg.com/t018b545e4c602860db.png

我们的目标是什么?绕过验证码。我们能做到吗?是的,用谷歌语音识别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/

版权声明:本文为c-x-a原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/c-x-a/p/8064854.html