unCaptcha项目(https://github.com/ecthros/uncaptcha)成立于2017年4月,对抗谷歌ReCaptcha的成功率达到85%。而谷歌随后也发布了安全更新,对ReCaptcha进行了以下主要修改:
更强的对浏览器自动化的检测
口头短语代替数字
这些变化最初成功地阻止了uncaptcha攻击。然而,到了2018年6月,这些防御已被我成功化解。六个月前,我们就已经与ReCaptcha的团队联系上,他们也完全了解其中原理。在他们的许可下,我们发布了利用代码。
得益于音频验证的变化,现在绕过ReCaptcha比以往都更容易。绕过代码现在只需要一个简单请求将谷歌的验证音频发送到一个免费的、公开的“语音to文字”接口,就可以实现对captcha大约90%的绕过成功率。
虽然最新的ReCaptcha会对抗浏览器自动化引擎Selenium,但是unCaptcha2可以使用屏幕点击器移动鼠标到屏幕上的指定像素,整个移动过程和人一样。这里使用的方法是-移动坐标需要为每个新用户单独定制,当然这也不是最可靠的。
unCaptcha2所使用的方法非常简单:
先打开谷歌的ReCaptcha演示网站
导航到ReCaptcha的“音频验证”
下载音频验证的音频
将音频提交到“语音to文字”接口
等待接口响应并输入答案
点击提交按钮查看是否成功绕过
动图地址:https://user-images.githubusercontent.com/14065974/45004579-df021180-afbb-11e8-8598-177159ed09b4.gif
由于unCaptcha2必须使鼠标移动到屏幕上的特定坐标,因此需要根据你的设置更新坐标参数。这些坐标位于run.py的顶部。如果测试环境为Linux,你可以使用xdotool getmouselocation --shell
命令来查找关于鼠标坐标的相关信息。
你还需要为你选择的“语音to文字”接口设置凭证。由于谷歌、微软和IBM的“语音to文字”系统效果似乎很好,所以这些系统已经包含在文件queryAPI.py中。你必须根据需要设置用户名和密码;对于Google的接口,你必须根据包含你Google应用凭证的文件设置环境变量(GOOGLE_APPLICATION_CREDENTIALS)。
最后,使用pip install-r dependencies.txt
安装依赖项。
我们于2018年6月联系了Recaptcha团队,告知Recaptcha系统并不安全。我们还演示了这种攻击的完整步骤。我们在此之后等待了6个月,以方便Recaptcha团队修复这个问题。recaptcha团队现已同意我们发布利用代码。
这种绕过攻击不被认为是谷歌漏洞悬赏计划的一部分。
本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场 来源:https://github.com/ecthros/uncaptcha2
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.