九维团队-绿队(改进)| 验证码半自动识别测试

admin 2023年2月16日22:47:53评论50 views字数 1690阅读5分38秒阅读模式

九维团队-绿队(改进)| 验证码半自动识别测试





写在前边

作为一个渗透测试工程师可能平时测得最多的漏洞就是密码爆破了,但现在很多网站都加入了验证码机制,每一次密码就会带入验证码,如果验证码错误,即使密码正确也无法登录,提高了爆破难度。


近期笔者浏览了一个python识别验证码的模块,觉得非常好用,想着如果将验证码识别封装为一个函数,就可以实现对有验证码的密码爆破了。


验证码类型包括很多,如字符验证码、图片验证码、gif动图验证码、极验验证码(拖动滑块完成拼图)、手机验证码、视频验证码等。


验证码ocr识别方法有三种: 

1.人工识别,但这过分依赖人为控制,难以实现批量。 

2.ocr识别软件,OCR准确率高。 

3.调用API使用第三方平台识别验证码,但每次需要支付一定费用。在实际使用中,验证码可能带有颜色的背景,这时可以对图片进行简单的处理,去掉干扰因素,比如可以把图片转换为灰度图像,形成黑→灰→白 的过渡。


基本原理


本模块使用的是OCR识别,OCR(optical character recognition)文字识别是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,然后用字符识别方法将形状翻译成计算机文字的过程;即对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程。


如何除错或利用辅助信息提高识别正确率,是OCR最重要的课题。衡量一个OCR系统性能好坏的主要指标有:拒识率、误识率、识别速度、用户界面的友好性,产品的稳定性,易用性及可行性等。


此处以一个网上随处可见的简单验证码图片为例:

九维团队-绿队(改进)| 验证码半自动识别测试


模块ddddocr简介及测试过程


模块ddddocr也被网友打趣称为“带带弟弟ocr”,应用了ocr识别技术,并使用了dddd_trainer 的开源进行适配,使dddd_trainer 训练出的模型可以直接无缝导入到ddddocr里面来使用,在渗透测试中配合此模块进行验证码识别,加入密码爆破,还是有一定作用的。

官方地址:https://github.com/sml2h3/ddddocr安装指令:Pip install ddddocr

*左右滑动查看更多


导入模块:

import ddddocrocr = ddddocr.DdddOcr()


读取验证码图片:

with open("2.jpg","rb") as f:    image = f.read()


识别验证码并输出:

code = ocr.classification(image)print(code)


完整代码:

import ddddocrocr = ddddocr.DdddOcr()with open("2.jpg","rb") as f:    image = f.read()code = ocr.classification(image)print(code)


六行代码即可识别验证码:

九维团队-绿队(改进)| 验证码半自动识别测试


可以看到结果还是很准确的。下面我们再测试几个高难度验证码:


1.有斑点干扰:


九维团队-绿队(改进)| 验证码半自动识别测试

测试结果:

九维团队-绿队(改进)| 验证码半自动识别测试


2.网格视觉干扰:

九维团队-绿队(改进)| 验证码半自动识别测试

测试结果:

九维团队-绿队(改进)| 验证码半自动识别测试


可以看到存在一定误差。


3.中文识别:

九维团队-绿队(改进)| 验证码半自动识别测试

测试结果:

九维团队-绿队(改进)| 验证码半自动识别测试


可以看出ddddocr识别率还是挺高,中文也能够识别,是一个不错的库。


在密码爆破的时候可以将验证码识别封装成一个函数,输入验证码的时候调用函数,即可实现爆破。

九维团队-绿队(改进)| 验证码半自动识别测试


将验证码识别封装为getcode函数:

九维团队-绿队(改进)| 验证码半自动识别测试


验证码调用,即可实现爆破。


防御措施


1.从安全开发的角度来看,使用验证码时应该尽量使用算式验证码了,这样可以一定程度上避免验证码识别进行暴力破解。

2.验证码的爆破往往伴随着密码爆破,只要密码输入错误次数达到上限,锁定用户,验证码爆破也就没有意义了。

3.使用算术验证码,让用户做计算,并尽量使用中文 。

4.改用动态手机或邮箱验证码。

5.使用智能验证码,比如借鉴谷歌的方法来区别人机,比如在9张图片中点击包含自行车的图片等方法。





—  往期回顾  —

九维团队-绿队(改进)| 验证码半自动识别测试

九维团队-绿队(改进)| 验证码半自动识别测试

九维团队-绿队(改进)| 验证码半自动识别测试
九维团队-绿队(改进)| 验证码半自动识别测试
九维团队-绿队(改进)| 验证码半自动识别测试



关于安恒信息安全服务团队
安恒信息安全服务团队由九维安全能力专家构成,其职责分别为:红队持续突破、橙队擅于赋能、黄队致力建设、绿队跟踪改进、青队快速处置、蓝队实时防御,紫队不断优化、暗队专注情报和研究、白队运营管理,以体系化的安全人才及技术为客户赋能。

九维团队-绿队(改进)| 验证码半自动识别测试

九维团队-绿队(改进)| 验证码半自动识别测试
九维团队-绿队(改进)| 验证码半自动识别测试

原文始发于微信公众号(安恒信息安全服务):九维团队-绿队(改进)| 验证码半自动识别测试

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年2月16日22:47:53
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   九维团队-绿队(改进)| 验证码半自动识别测试http://cn-sec.com/archives/1278616.html

发表评论

匿名网友 填写信息