全文8799字,预计阅读时间约25分钟,建议收藏后阅读
验证码本质上自带一层答案的语义,这是天然的区分人和自动程序的地方。无论使用哪一种方式破解验证码,都必须识别出答案。
在多年与黑产破解者的博弈对抗的过程中,我们发现,从限制黑产获取验证码图片答案这个方向来进行防御,不仅可以减少运营成本、降低对客户的打扰率,还能掌握攻防博弈对抗过程中的主动权。经过极验十一年的黑产攻防实践总结出:黑产对于验证码图片答案的获取主要有两种手段——图片穷举破解和图片模型破解。模型破解与穷举破解的差别,本质上是黑产效率的提升。
本期,我们将针对模型破解带来攻防点:图像识别模型对抗。同样会从攻击方(黑产)、被攻方(客户)和防守方(极验)的三方视角进行深度剖析,全面的理解该攻防点。
上一期我们讲到验证图片穷举遍历,其中提到了人工打码。人工打码,又被称作 anti-CAPTCHA ,指在进行验证码人机测试时,黑产将验证码请求发送到人工打码平台,由真实的人来完成,从而通过人肉众包的形式帮助黑产团伙通过验证码。
然而,真人在线输入验证码难以避免耗时等问题,在整个黑产作弊链路中,人工打码几乎占据了超过60%的时间。以破解一批30万张的验证图库为例,黑产下载这批图片耗时8.33小时,通过低成本的人工打码获取这批验证图片答案需要花费208.33小时。并且,图片遍历+人工打码是一个需要持续投入时间和资金的破解方法,一旦验证厂商更新了图集,黑产就需要重新下载一批新的图库,不停地重复花钱请人打码。
那么怎样才能缩减这些时间和资金成本,减少人工打码的占比呢?黑产想出了一种方式——用自动化的方式来识别图片答案。即在验证图片资源遍历批量获取到图片答案后,进行自动化的模型训练,从而实现自动对抗。
相比起图片遍历+人工打码的攻击方式会随着图集自动更新而失效,黑产只需要建立出一个准确的图片识别模型,即便后期验证厂商动态更新了图集,只要不改变图片上的图标风格,识别模型依然能精准地识别图片,效率大大提升。
更新前:图A
更新后:图B
例如,假设黑产训练出了能够识别图A的模型,那么即使验证厂商将图库更新为了图B,黑产的模型同样也能识别。且后续每次图集更新时只要不改变图标风格,黑产的模型都能持续识别这批图片。这直接帮助黑产省去了爬取、下载图库的流程,大大降低了重新寻找人工打码的时间和资金成本,提高了攻击效率。
利用自动化的方式来识别图片答案,对攻击方而言并非必要手段。但如果能减少人工打码的占比,大部分使用自动化识别,将大大缩短黑产的攻击时间,更加持续有效地识别图片答案。那么,黑产是如何得到一个准确且高效的模型,又是如何利用模型来进行自动化攻击的呢?
我们先来了解下图片识别模型的原理。目前,用作图片识别使用的比较多的模型是CNN。
CNN (Convolutional Neural Networks) 是一种深度学习模型,用于图像处理和分析任务。它的基本原理是通过在数据上提取特征,然后利用这些特征来识别和分类数据。它可以用于复杂的图像识别,比如影像分析,行为识别,自然语言处理等。CNN的基本原理介绍:
1.卷积层(Convolutional Layer):卷积层使用一系列的滤波器(卷积核)对输入图像进行卷积操作。滤波器在图像上滑动,并计算每个位置的卷积结果。这样可以捕捉图像的局部空间信息。卷积操作可以通过矩阵乘法和加法来实现。
2.激活函数(Activation Function):卷积层的输出经常会经过一个非线性的激活函数,如ReLU(Rectified Linear Unit),用于引入非线性变换和增加模型的表达能力。
3.池化层(Pooling Layer):池化层用于降低特征图的尺寸,并提取主要的特征。常见的池化操作包括最大池化和平均池化。池化操作可以减少参数数量,提高计算效率,并增强模型的平移不变性。
4.全连接层(Fully Connected Layer):池化层的输出通过全连接层连接到输出层,用于进行最终的分类或回归。全连接层将特征图展平为一个向量,并通过矩阵乘法和加法进行计算。
5.损失函数(Loss Function):CNN的训练过程通过最小化损失函数来优化模型。常见的损失函数包括交叉熵损失和均方误差损失,用于衡量模型的预测结果与真实标签之间的差异。
6.反向传播(Backpropagation):CNN使用反向传播算法来计算损失函数对模型参数的梯度,并通过梯度下降法来更新参数。反向传播通过链式法则将误差从输出层反向传播到输入层,以更新卷积层和全连接层的参数。
站在黑产的视角完整地体验一次图像识别模型训练和攻击的流程:
step 1:黑产针对某游戏公司的Web注册场景发起攻击。
step 2:黑产通过频繁向页面接口发送请求来获取验证图片地址。
step 3:批量下载存储验证图片,共需要大概5~10万张图片。
step 4:人工对验证图片中的答案进行标注。
step 5:构建模型的网络结构,编写模型训练代码。
step 6:使用标注后的验证图片和答案坐标对模型进行训练(训练所使用的设备需要用到显卡) 。
下图展示了模型训练的过程:训练损失和验证损失随着模型迭代稳步下降,最终趋于收敛;训练准确度逐步上升,最终在趋近于100%,验证集准确度在90%左右收敛。
step 7:黑产训练出一个高准确度的识别模型后,后续破解验证码时,通过识别模型就能直接获取答案坐标。
黑产破解者为了降低攻击成本、提高破解效率,通常会利用收集的大量验证码图片样本,打码标注、构建模型网络、训练模型、测试模型,从而得到一个可持续识别图片答案的识别。目前,黑产针对验证码图片的破解最常用的主要是分类模型和相似模型。
1、分类模型
分类模型指的是黑产对图标位置进行检测,并对目标元素和提示标签进行分类。分类模型首先分别对检测出的目标元素和提示图标进行特征编码,得到特征表达,再通过softmax函数计算出可能类别的概率,取概率最高的值并将该图片划分到每个已知的类别,从而丰富模型素材。
下图展示了完整的分类模型训练流程。通过图标提取、特征编码、概率计算,得出目标元素为开关的概率是0.91,提示标签为开关的概率是0.86,因此将该图片划分至开关类别。
黑产分类模型的破解识别机制:黑产在进行模型训练时,会让模型将现有的图标元素全面覆盖,并且至少训练5万张图片。等模型训练完成、上线使用时,只要一发现训练中见过的图片元素,就能准确快速地定位到正确的答案坐标。
上图为分类模型识别验证码答案的效果示例,黑产的分类模型能自动在4个图标元素下标出 “book-open”,“add-on”等类别,快速定位图片答案。
2、相似度模型
相似度模型指的是黑产对图标位置进行检测,并对检测出的目标元素和提示标签进行特征编码,然后计算二者的相似度,相似度较大的可以视为同一类图标。
点击查看大图
上图为相似度模型识别验证码答案的效果示例。相似度模型并不需要知道3个图标元素是什么内容,只需要通过两两计算提示标签与目标元素的相似度,就能直接确定通过验证码的点击顺序。
3、目标检测
目标检测指的是黑产对图标位置进行检测并记录,枚举得出正确的点击顺序。这是黑产攻击成本最低的一种方法,目前市面上免费的目标检测模型已经能够准确的检测目标元素的位置,再用枚举的方法,随机选择一个点击顺序,发送请求,如果通过验证,即试出了正确答案,否则继续尝试。如果一个验证码的目标元素为3个,那么最多尝试6次就能得到正确答案。
上图为目标检测识别验证码答案的效果示例。背景图上共有3个目标元素,那么黑产每次枚举尝试成功的概率 = 1 / A(3,3) = 1/(3x2x1) = 1/6,最多尝试6次就能试出正确答案。
站在黑产的视角,为什么利用模型破解会比人工打码的成本更低? 黑产下载一批30万张的验证图库需耗时8.33小时;然后通过人工打码获取图片答案,打码成本约为1.4分/张,共花费4200元,耗时208.33小时。虽然黑产能够生成自己的图片答案数据库,并且在后续图库未作更新的一个月时间里都能畅通无阻地破解验证,然而一旦验证厂商动态更新了图库,黑产就需要再次花费4200元和9天的时间重新寻找人工打码。
而图像识别模型直接帮助黑产省去了人工打码的时间和资金成本。黑产只需花费8.33小时下载存储这批图片,利用技术手段训练模型,不断尝试和调整模型的网络结构,并使用显卡来提升训练的速度就能得到一个有效的模型。后续利用识别模型时,识别一张全新的图片仅需要0.1s~0.2s,即使验证厂商动态更新了图库,只要不改变图标样式,这个模型也依然有效。可以说,模型识别比人工打码的效率提高了至少25倍。
黑产效率提升25倍,虽然看上去只是数据指标上的差别,但却会给被攻方带来极为致命的威胁,主要体现在以下三个方面:
1.黑产的效率提升后,攻击所花费的时间和资金门槛也大大降低。涌入市场的黑产团伙数量剧增,企业将从被一两个黑产盯上到同时被七八个黑产团伙盯上,遭受损失的概率和金额都会大大增加,甚至让整个业务端瘫痪。
2.效率提升带来的是对业务的反复威胁。即使验证厂商第一次动态更新了验证图集,能够在一段时间内防住黑产,但是当黑产训练出模型后又会再次卷土重来,难以控制。
3.黑产花费的成本更低,收益更高,持续破解的意愿也持续增强。高额的利润刺激黑产进一步研发模型训练的新技术,导致对抗黑产的难度不断增加。
对于黑产而言,模型识别最大的成本在于调整、训练和测试的技术成本。因此,在前期训练出模型后,后期不再需要持续投入时间和资金,大大降低了黑产的攻击成本,扩大了黑产的“营利空间”。当黑产在图片遍历人工打码攻击失效后,通常也会将攻击策略调整为训练图像识别模型,从而进行自动化、高效的破解。
当黑产减少了人工打码的占比,而是使用成本更低、效率更高的自动化模型破解时,被攻击的客户方会又遭遇什么样的问题呢?让我们切换到客户视角,来看看他们被黑产攻击的过程。
第一时段:3月10日早上,极验的客户成功小组在照常进行每日安全监测,发现某游戏公司H的数据出现了异常,验证请求量和验证交互量异常升高,平均每小时的验证码交互量接近3万次。
第二时段:由于H公司的业务接口部署了验证码,所以黑产无法直接爆破业务接口,需要先对验证码进行破解,在这个阶段验证码起到了较明显的保护业务接口的作用。3月10日早上9点-12点,在验证码的拦截保护下,交互量和通过量逐渐下降到正常水平。
第三时段:3月10日下午14点,数据突然又出现了异常变化。黑产在线上不断的请求验证码,进行验证图片资源遍历。于是,极验立即给该客户上了图集动态更新策略。3月10日 9点,同一素材和样式的图片正式更新上线,图集动态更新开始生效。由于黑产原先的答案数据库已失效,导致验证通过量比例大幅下降,数据量恢复到正常状态。
第四时段:3月11日上午12点,黑产的请求量和交互量再次剧增。推测是黑产在第一次数据库失效后调整攻击方式,将图片资源遍历+人工打码的方式切换为图像识别模型自动破解。从通过量来看,虽然黑产可能已经训练完了模型,但是面对极验的验证码模块时,他们模型破解成功率并不高,只有50%左右。然而,即使只有50%的通过量,对客户的业务来说也是沉重的打击,对H公司的经济效益和口碑都造成了巨大损失。
此次和黑产博弈过程持续时间较长,也论证了和黑产的博弈过程并不是一劳永逸的,而是一个不断拉扯的“持久战”。极验安全专家针对每一时段的黑产攻击方式及特征进行了分析,发现黑产在被验证码拦截后,先是进行验证资源图片遍历,通过在线上不断的请求验证码,爬取、穷举线上的验证码素材图片(第三时段)。在图集自动更新生效、黑产的答案数据库失效后,又开始训练图像识别模型,利用自动化模型快速识别图片答案。(第四时段)
1、第四时段,在图片动态更新上线的那一瞬间,极验安全专家通过实时统计数据看到异常数据没有发生波动变化,可以排除黑产提前构建答案数据库的破解方式。
2、通过对验证码日志分析发现,即使对验证图片做了动态更新,同一张新的图片通过不同的请求发送过来的答案坐标依然是完全一样的,而且发送答案的请求速度很快。
3、对各种破解论坛、社群进行调研,发现确实存在一部分黑产通过构建卷积神经网络来训练识别模型,然后通过识别模型来获取验证图片答案。
因此,我们证实了黑产在第四时段模型破解的推测。此时必须针对黑产对图片识别进行反识别,让黑产的识别程序出现视觉偏差。
当企业遭遇这类问题时,如何能准确定位黑产破解是通过穷举还是模型?我们把这两种破解方式在业务侧反映的不同现象进行分类,供大家以后快速定位问题。
遭遇黑产破解时,如果第一次动态更新图库能够起效,黑产不再发起第二波攻击,则定位问题为①图片穷举破解(图片遍历+人工打码);
如果第一次动态更新图库仅在短时间内有效,几小时后黑产再次成功发起第二波攻击,数据恢复后又马上反弹,则可以定位问题为②图片模型破解(图片遍历+自动识别图片),必须采用新的方案来解决。
面对黑产不停切换攻击策略,给客户业务带来严重的威胁,防守方又该如何应对黑产模型破解、限制黑产攻击效率的呢?针对图片模型破解,极验沉淀了对36万家客户的服务经验,总结出了一套非常成熟的视觉偏差对抗方案。
1、视觉偏差
极验安全专家是如何产生视角偏差思路的呢?我们知道,人类有视觉偏差,通常会因为视角、物体、自然变化等因素看到与事实相悖的画面。而黑产训练出的图像识别模型,作为一个固定的数据模型,也会因为人为的干扰、限制而产生所谓的视觉偏差。下图为人类视觉偏差举例:
在第一期的验证图片资源遍历中,防守方只需要1小时更新一次图集就能有效防住黑产,此时防守方的动态更新的效率高于攻击方重新生成答案数据库效率。然而,当攻击方训练出图像识别模型进行自动识别时,识别一张全新图片仅需要0.1s~0.2s,效率甚至高于图集更新的速度。防守效果不再明显,与黑产的攻防博弈也容易陷入拉锯战。因此,防守方必须进一步提高效率,也就是让黑产识别图片的程序出现视觉偏差,直接无法识别到验证图片对应的答案。
2、模型分析
分析图像识别模型的工作原理,首先需要利用目标检测模型,检测目标元素的位置,此处包含两重任务:
(1)预测目标元素的bbox;
(2)预测某处位置是背景还是目标元素,即二分类。对目标检测模型的视觉欺骗主要在第二重任务上,即通过视觉欺骗,让模型将目标元素预测为背景。
业内通常使用目标检测模型检测目标元素的位置,即num_classes=1,如下是目标检测模型Yolov3的结构图。模型输入一张大小416x416的图片,进过darknet基础网络和yolo目标检测网络,输出维度分别为:13x13x(5+num_classes),26x26x(5+num_classes),52x52x(5+num_classes)的特征图,3种不同大小的特征图尺寸满足了不同尺寸目标元素的检测需求。
人类想象不出从未见过的意象,CNN模型也是如此。对于一个从未见过的图标类别,softmax会强行将其预测到一个已知类别中,这当然是错误的。这是分类模型的天然缺陷。
如下图所示,模型编码器对“espresso”图片输出了一个10(num_classes)维的向量[-4.28, 2.97, -0.39, 5.25, -7.57, -3.43, 8.64, 2.63, 6.30, 0.68],分别对应待预测的10个类别。通过softmax函数将每个元素归一化到0-1之间,那么即可以表示图像分类到对应类别的概率,图中可知分类到“espresso”的概率为0.8798。
相似度模型只需要计算目标元素与提示图标之间的相似度,根据相似度的大小判断是否同一事物,这弥补了分类模型的缺陷。相似度模型的训练更符合人类学习新事物的模式。例如,孩童学习认识新事物“猫”,并不是一个归纳推理过程,而是估计相似度,找出与给定猫的图片相似度最高的。
分析了相似度模型,我们就可以构造图标风格进行防御。针对图片元素做不同种类的轮廓干扰处理,从而限制模型对图片元素的匹配。
下图是相似度模型在两种不同图标风格的点选验证码上的预测结果。左侧图标风格个性鲜明,两个相同图标的相似度大,不同图标的相似度小,因此识别模型很容易自动将3个目标元素与3个提示标签匹配;而右侧给所有字符都套上了花环外壳,相似度模型特征编码时被花环外壳所干扰,特征中外壳信息的占比更大,因此随意两个图标的相似度都在0.9以上。所有图标相似度都很大,因此很难正确地将3个目标元素与3个提示标签匹配。
为了使黑产模型产生视觉偏差,从而限制模型对图片元素的匹配,极验共储存4种图片类型,并在实际对抗中生成高达15种异构视差对抗变体。
1、分类模型对抗
黑分类模型的识别机制就是黑产在进行模型训练时,让模型将现有的图标元素全面覆盖。等模型训练完成、上线使用时,只要一发现训练中见过的图片元素,就能准确快速地定位到正确的答案坐标。
针对分类模型的破解,我们会定期全面更新图片元素,让旧的分类识别模型无法识别图片中的答案。效果如图:
更新前
更新后
在更换了新的图片元素后,有一部分图像元素原来的分类模型无法识别定位,即使能够定位到位置的图片元素,其顺序也无法和提示标签的顺序正确匹配。
2、相似模型对抗
相似模型的识别机制在分类模型的基础上进行了更“智能”的提升,相似模型在识别的时候会单独提取下方提示框中的提示标签,对提示标签进行轮廓的扫描,再将扫描得到的轮廓去图片中匹配定位。
针对相似模型的破解,我们也对图片元素做了相应的轮廓干扰处理,并利用这些相似模型来进行测试。
(1)花环类型
花环类型的验证图片将不同的元素包裹在花环内,让黑产的相似模型无法直接通过元素的外轮廓直接识别定位到答案位置。花环类型的图片元素对于相似模型破解的防御效果如下图:
例1
例2
例2
例1 中,黑产的相似模型能够定位到提示词中三个答案的位置,但实际识别出来的顺序是错误的(正确顺序:53P,实际识别顺序:P53)
例2 中,黑产的相似模型只定位到了提示词中两个答案的位置(5P),还有一个答案的位置无法定位(3)。
(2)蜂巢类型
蜂巢类型的验证图片在花环类型的基础上又增加了元素相对位置和元素数量的判断,黑产选取正确答案需要同时从方格内的元素形状、元素数量、元素相对位置来进行分析判断,大大增加了黑产模型识别定位的难度。蜂巢类型的图片元素对于相似模型破解的防御效果如下图:
例3
例3
例4
例3 中,黑产的相似模型能够定位到提示词中四个答案的位置,但实际识别出来的顺序是错误的(正确顺序:✖↓▲●,实际识别顺序:●✖ ↓▲)。
例4 中,黑产的相似模型只定位到了提示词中一个答案的位置(●),还有三个答案的位置无法定位(✖↓▲)。
(3)几何类型
几何类型的验证图片是以基础元素为模板,将不同大小的基础模板随机组合成不同形状,防止模型通过轮廓直接定位到答案位置,不同大小的基础模板随机组合,干扰提示框内提示词与图片中答案的顺序判断。
图片
第一个相似模型
第二个相似模型
上图中,第一个相似模型能够定位到四个答案的位置,但是识别出来的顺序是错误的(正确顺序:↓η⚙,识别顺序:↓⚙η)
第二个相似模型定位到了两个答案的位置(η⚙)还有两个答案的位置无法定位(↓)。
(4)将多种类型的图片进行混合
将花环类型、蜂巢类型与几何类型灵活组合,能够生成高达15种不同的异构视差对抗类型,最大化提高黑产的破解难度,效果如下:
例3
例3
例4
在第一期的验证图片资源遍历中,市面上的其他验证厂商长达一个月才更新一次验证图库,无法拦截住第一波黑产的图片穷举破解,更无从面临第二波图片模型破解,缺乏模型对抗的能力;
而极验不但能做到每小时一次高频高效地更新验证图集,有效拦截住第一波图片穷举破解,还能针对模型视觉偏差做轮廓干扰处理,提前储存4种不同的图片类型,并在实际对抗中生成高达15种异构视差对抗变体,有效限制模型对图片元素的匹配,有效防住第二波黑产的图片模型破解。
极验具备4种丰富的图片类型和15种异构视差对抗变体,丰富的模型储备使极验能够在短时间内制作出上万张图片,来对应黑产各种层出不穷的识别模型。针对不同的客户碰到的不同模型的破解情况,我们只需要在管理后台调整客户账号下相应的参数,调整使用不同类型的验证图片,就可以防御住黑产攻击。能够实现高效批量制作图片,从制作到更新上线分钟级响应。
经过与H公司安全负责人的细致沟通,我们复盘了整个攻防过程,发现一开始在图集动态更新时并没有更新图标风格,即使更新了一批图库,黑产的训练出的模型仍然有效。于是,我们于2023年3月14日16点,针对H公司的账号ID,单独制作并更新了一批全新的验证图标素材模型,将该业务场景 id 下对应的图集全部更换为花环类型。
更新了高难度的图标验证模型后,黑产之前可以正常识别图片答案的模型便失效了,不再能识别这批新的图片。黑产不得不重新按照收集图片、打码标注、构建模型网络、训练模型、测试模型的流程来训练新的模型。训练模型的技术门槛和不确定性很高,所以每次训练新的模型黑产都需要付出很大的代价。
3月15日 10点,黑产屡次尝试也无法通过新的验证图片,于是停止了攻击,验证数据量恢复到正常的业务水平。后续我们持续观察了一个小时的数据表现,发现黑产没有再发起攻击。全新的素材模型对黑产的破解手段有非常明显的拦截效果,H公司的业务最终恢复了正常。
极验与H公司安全负责人的会话记录
我们这次仅提及了位置识别的图片理解,其实还有一些其他有效的防御方法,以及背后不同的视觉偏差误导算法,这些都是我们在十一年长久的黑产对抗中积累出来的方案。
1、应用AIGC限制模型识别
极验不仅储备了4种图片类型,拥有更安全的对抗黑产模型的能力,而且还在不断探索视觉美观与艺术化体验,追求安全与体验的平衡。
SD光影文字是一种比艺术二维码更抗识别的艺术图,主要由 Stable Diffusion 的 ControlNet 插件制作而成。我们可以将光影文字应用于文字点选验证,它能让文字笔画很含糊,通常生成是错误的文字但真人能识别出来,而识别模型却因为笔画错误或精准度低而无法识别,从而使黑产的识别模型产生视觉偏差,无法通过验证。
上图为极验将光影文字应用于验证码中的示例。放大来看,“冰”、“拿”、“铁”三个字都由白云与建筑物的光影虚幻而成,虽然人的肉眼能够识别,但黑产的识别模型却因为笔画错误而无法正确识别,从而无法通过验证。
上图为极验利用SD光影文字融合生成图片的过程,通过一步步调节参数来寻找安全效果与用户体验的最佳平衡。目前,极验正在尝试解决高质量批量生成图像的问题,并且不断探索AIGC与验证码结合的艺术创作,有望在下一次版本更新中正式投入实战。
黑白光影文字更加提升了黑产模型识别的难度
2、跟踪黑产算法动态监控
结合在对抗博弈中的数据反馈和从各大论坛、社群得到的黑产情报资料,对黑产的破解算法进行测试分析,根据黑产算法的实现逻辑和原理来对验证图片进行调整。
3、业务活动提前更新图库模型
当客户有推广活动或者营销活动场景,我们可以在活动开始的前几分钟甚至几秒钟对该客户使用的图库模型进行全量更新,这样能起到让黑产“出其不意”作用,能起到很好的防御效果;当黑产更新破解模型或者爬完图片再次穷举,业务活动早已结束。
验证码答案是任何黑产无法绕过的一个环节,对于线上图片的更新,最后落脚之处还是在于图片的更新速度、图片的抗模型训练能力。我们更新图库模型某种意义上还是走让黑产“无利可图,自动放弃”的路线。值得注意的是,这里也需要把握更新频率和数量的分寸,因为更得越多越快,其实也有利于黑产全部获取所有资源,从而一劳永逸。目前我们的图库更新从制作到更新,再到发布到线上,可以做到分钟级别的响应。
目前,极验在全球客户已超过36万家,图库更新从制作到更新,再到发布上线,可以做到分钟级别的响应。相比其他安全厂商承受着最大的黑产攻击,安全联动效应最强,在图片对抗的积累上,已经形成了高标准的服务方案。对于客户而言,也无需再担心黑产利用图片识别模型自动破解验证码图片答案,从而引发一系列业务安全问题。