unCaptcha是一款针对Google音频验证码系统reCaptcha的安全研究工具,在该工具的帮助下,广大研究人员可以对部署了reCaptcha的应用程序进行安全审计,当前版本的unCaptcha准确率约为85%。
在互联网上,成千上万的网站依靠谷歌的reCaptcha系统防御恶意攻击,2012年,谷歌的一个研究团队展示了文本reCaptcha的安全缺陷之后,reCaptchha系统演变为依赖音频和图像来实现验证。随着Google对其不断地迭代升级,越来越多的应用程序开始使用reCaptcha来作为安全验证防御机制,unCaptcha便应运而生,广大研究人员可以使用unCaptcha来检测Web应用程序验证码系统的安全性。
unCaptcha主要针对的是音频验证码,该工具利用了浏览器的自动化软件功能,能够与目标站点的验证码系统进行交互,并解析出攻击所需的元素。
而Google的reCaptcha系统使用先进的风险分析系统,以编程方式确定给定用户是人类还是机器人。该系统会将你的cookie(以及你与其他Google服务的交互)、解决验证问题的速度以及鼠标移动等因素考虑在内。如果用户行为越来越可疑,那么验证问题的挑战难度就会越大,并会要求用户解决更多的验证问题。
音频验证码的数据格式为一系列不同长度的数字,以不同的速度、音调和口音通过背景声进行朗读。为了实现验证,我们需要让音频Payload在页面上被识别、下载并自动按语音位置进行分割。
接下来,每个数字音频比特被上传到6个不同的免费在线音频转录服务(IBM、Google Cloud、Google语音识别、Sphinx、Wit AI、Bing语音识别),并收集这些结果。我们综合这些结果中的每一个,用预定的启发式方法方法枚举最可能的一串数字。然后将这些数字有机地输入到验证码系统中,并完成验证。
从测试中,我们发现,单个数字识别的准确率达到92%以上,而完整识别音频验证码的准确率则达到85%以上。
该工具基于Python开发,因此我们首先需要在本地设备上安装并配置好Python环境。接下来,广大研究人员可以使用下列命令将该项目源码克隆至本地:
git clone https://github.com/ecthros/uncaptcha.git
然后,我们还需要使用pip命令和requirements.txt安装该工具所需的其他依赖组件:
$ pip install -r requirements.txt
你还需要确保已经安装好了sox、ffmpeg和selenium,安装命令如下:
$ apt-get install sox ffmpeg selenium
最后,我们就可以使用下列命令来运行该工具了:
$ python main.py --audio --reddit
上述命令将会打开reddit.com,与页面交互以进入帐户注册,生成假用户名、电子邮件和密码,然后攻击音频验证码系统。一旦验证完成(无论是否通过),浏览器就会退出并关闭。
演示视频:
https://www.youtube.com/watch?v=wXrTQzskJLE
幻灯片:
https://drive.google.com/file/d/0BwuogdPv-7DxMDA3N3l1X09nV1U/view?usp=sharing
本项目的开发与发布遵循MIT开源许可证协议。
unCaptcha:
https://github.com/ecthros/uncaptcha
https://www.usenix.org/system/files/conference/woot17/woot17-paper-bock.pdf
https://pdfs.semanticscholar.org/ceef/94e5e9b6188e9aca558efcf92e57ec987bc4.pdf
http://uncaptcha.cs.umd.edu/
https://drive.google.com/file/d/0BwuogdPv-7DxMDA3N3l1X09nV1U/view?usp=sharing
精彩推荐