早在2016年,我就开始研究如何才能绕过Google的ReCaptcha v2验证码系统,而且我也想知道对于一名攻击者来说,绕过这种验证码系统的难度到底有多少。如果有哪一种验证码绕过技术可以在任何环境下都能很好地工作,而不只是针对某些特殊情况的话,那就非常完美了。
因此,我认为有必要跟大家介绍这种名叫ReBreakCaptcha的攻击方法,我们可以用这种新型的绕过技术来绕过Google的ReCaptcha v2验证码系统。
ReBreakCaptcha的实现主要由以下三个步骤组成:
1.语音Challenge(验证码获取)-得到正确的challenge类型;
2.Recognition(识别)-转换Audiochallenge的音频信息,然后将其发送给Google的语音识别API(Speech Recognition API);
3.Verification(验证)-验证语音识别的结果,然后绕过ReCaptcha;
ReBreakCaptcha第一步:语音Challenge
ReCaptcha v2的challenge主要有以下三种类型:
-图片Challenge:这种Challenge信息中包含一张由9个子图片组成的图片以及需要选择的图片描述,系统会要求用户根据提供的描述信息选择相应的子图片;
-语音Challenge:这种Challenge信息中包含一段语音信息,系统会要求用户输入他们所听到的数字;
-文本Challenge:这种Challenge信息中包含五个候选文本以及用户所需要选择的对象种类,系统会要求用户选择相应种类的单词。
我们可以利用ReBreakCaptcha来对付ReCaptchav2的语音Challenge,所以我们需要解决的问题就是如何能够每次都能获取到语音Challenge。
当我们点击了ReCaptchav2中的“I’m not a robot”(我不是机器人)选项之后,系统通常会给我们现实以下Challenge类型:
2.png
上图所示的即为图片Challenge,如果想要发起语音Challenge的话,我们需要点击如下图所示的按钮:
接下来,系统会要求我们完成语音验证,而这种类型的Challenge是很容易绕过的:
4.png
可能有些同学已经发现了,除了语音Challenge之外,有时你可能还会遇到如下图所示的文本Challenge:
5.png
为了绕过验证系统并获取到相应的验证语音,你可以直接点击“Reload Challenge”(重载Challenge)按钮,直到你得到正确的Challenge类型为止。下图所示即为“Reload Challenge”按钮:
那么我们现在要做什么呢?当然是绕过ReCaptcha啦!那么具体应该怎么做呢?没错,此时就是Google语音识别API登场的时候了。
ReBreakCaptcha第二步:识别
这是最有意思的步骤了,我们将要利用Google提供的服务来黑掉它自己的另一个服务!
让我们回到语音Challenge的话题上,先看下面这张图片:
7.png
上图即为验证系统的语音Challenge界面,这个界面主要由以下几种控制组件组成:
- 一个播放按钮:用来播放验证码;
- 一个文本框:用来给用户输入听到的验证码;
- 一个下载按钮:下载验证语音;
现在,我们需要下载语音验证文件,然后再把它发给Google的语音识别API。在动手之前,我们还需要将该文件转换成“wav”格式,因为Google的语音识别API只能识别这种类型。现在我们手上已经拿到了语音验证文件了,然后准备把它发给Google的语音识别服务。可是这该如何实现呢?是的,我们还需要使用一些其他的API。
这里给大家推荐一个非常好用的Python库(SpeechRecognition),它支持多种在线/离线引擎和API,我们可以用它来完成语音识别的任务。当然了,我们将使用这个库来对接Google的语音识别API。当我们发送了“wav”音频文件之后,SpeechRecognition将会把语音识别的结果以字符串的形式返回给我们(例如‘25143’)。
ReBreakCaptcha第三步:验证
这一步相对来说就比较简单了,我们现在只需要将第二步的识别结果复制粘贴到文本输入框之内,然后点击ReCaptcha的“Verify”(验证)按钮就可以了。没错,我们现在可以用Google自己的服务来半自动化地绕过Google的另一个服务了。
本文转自d1net(转载)