上一期我们提到,黑产有三种常见的破解方式:
1.通过识别出验证码图片答案实现批量破解验证,即图片答案识别;
2.在了解通讯流程之后直接携带相关参数发请求,即协议破解;
3.使用各种客户端模拟器来模拟真人通过验证,即模拟器破解。
针对这黑产的“三板斧”,极验总结了一一对应的验证码攻防点:图片答案博弈、协议破解检测和环境检测,用于保护极验客户相关场景和接口的安全。在前三期中,我们了解到黑产在破解验证码时会进行验证图片资源遍历、图片识别模型和协议破解。
任何业务在运营一段时间之后都会面临黑产大量的破解,黑产的破解效果与破解准确率、有效周期与尝试频次有关。黑产破解效果=破解准确率×有效周期×尝试频次
在前两期的图片答案识别中,黑产都是从破解准确率出发,比如利用遍历验证图库来大批量穷举识别图片答案,能使破解准确率高达60%;或是通过自动化的模型训练,得到准确率更高的图像识别模型,使破解准确率高达90%。然而,极验针对黑产的图片答案识别破解,总结出了一套有效的视觉偏差对抗方案,并实现每小时一次高频高效更新验证图集,直接让黑产识别图片的程序出现视觉偏差,从而大大降低准确率。在极验动态更新图集和图片类型后,黑产的破解准确率下降至不足20%。
在第三期的协议破解中,黑产从破解有效周期出发,通过伪造协议、模拟真人请求,实现一段时间内的有效破解,能够省略前端渲染过程、直接向服务端API发起请求。然而,当极验动态更新了前端参数后,黑产的请求就会因不携带新参数而被极验的CT命中识别,黑产的破解有效周期缩减至仅不到一个月。
因此,当黑产的破解准确率大大降低、有效周期大幅下降时,便会开始最后的挣扎——暴力破解,即用尝试频次来换准确率。本期,我们就来聊聊如何利用极验的pow工作量证明,应对黑产的暴力破解。
黑产一般会通过提高破解准确率的方法来提高效率,例如图片识别模型、资源遍历;或是保证在一段有效期内实现高效的破解,例如协议破解。如果一旦发现准确率无法提高,有效周期也被迫失效,黑产在走投无路的情况下,就会尝试提高试错频次。
暴力破解,指以次数来换取最终验证成功量。哪怕黑产被极验拦截后,准确率从80%下降到10%,一旦通过暴力尝试扩大8倍的尝试次数,同样能达到与80%准确度相当的黑产效果。一般情况下,黑产的暴力尝试可细分为以下四种常见的客户场景:
第一种是其他破解方式都用完之后,迫不得已的选择。
比如黑产在攻击某个网站时,使用图片答案识别破解和协议破解时均被防守方拦截,无法实现破解。这时为了完成接到的破解任务,黑产不得不用大力出奇迹的方法来加大破解频次,以次数来换取最终验证成功量。
第二种是破解率低的补充手段。
由于黑产本身的技术水平或资金受限,破解准确率低于平均水平。黑产在和防守方进行长期博弈时,为了弥补破解率低的不足,通常会选择暴力尝试的方式提高验证成功量。
第三种是黑产想在原有破解率和准确率的基础上,进一步加大成功破解次数。
当黑产本身的破解准确率、破解有效周期都较高时,为了薅到更多的羊毛,这批不满足的黑产便会通过暴力尝试进一步加大杠杆。对客户消耗得越多,牟取的利润越高。这类暴力破解多发生在一些无限额的高利润场景,比如电商薅羊毛、黄牛党抢票等,很可能给企业带来致命的威胁。
第四种是不考虑任何其他因素,直接无脑进行暴力尝试。
这部分黑产无需研究场景、无需担心破解准确率,只要准备足够多的机器设备即可发起攻击。这类黑产专注于“大力出奇迹”,不论能薅到多少羊毛都能满足。与其他破解方式不同,暴力尝试除了破解企业业务,对企业造成经济影响以外,大量的请求此时还会破坏服务器的稳定性,类似于DDOS攻击,对企业整个服务的稳定性造成影响。
对于黑产而言,暴力破解有哪些价值?第一方面是能够帮助黑产完成迫不得已的任务。当黑产接到破解任务时,必须完成对企业某个指标的破解,而使用图片答案识别、协议破解时均被防御,影响任务的进程。这时,暴力破解作为一个补充手段,能帮黑产在被拦截时解决一些棘手的难题。第二方面,暴力破解也可以作为黑产破解率低的补充手段。黑产在破解时,通常会先尝试进行低频次的破解,若发现破解效果不尽人意,便会加大破解频次,来弥补准确率低的不足。当黑产购买更多机器、投入更多的硬件资源来破解图片答案时,一旦黑产请求次数达到非常大,就可以得到 "复用"的图片答案,尽管我们能实现每小时更新一次图集,黑产总能在我们更新的间隙去大量地"碰运气"。第三方面,暴力破解对黑产而言十分赚钱。以高频次的协议破解为例,黑产一旦完成了前期的准备工作。将逆向得到的客户端代码和客户端逻辑,固化成一套脚本,执行代码的效率将达到非常高,也就是说每秒的请求频次高,薅取到的资源也更多。
首先,我们从黑产视角出发,看看黑产是如何进行暴力破解的?他们一般会用什么方式来提高破解频次?
其实,用最简单的话来说就是大力出奇迹——疯狂地尝试,让尝试的次数变得更多。而黑产的底层能力就在于:既能购买更多机器加大尝试频次,又能让每台机器同时运行多个进程。假设每台机器每秒能够运行50个进程,如果黑产购入10台机器,就能同时跑500个进程,每秒发起500次尝试。以下视频展示了黑产单个机器如何开展不同数量的进程:
演示①
如演示①所示,此时黑产同时攻击的数量仅为 1 ,只开启了1个进程,此时黑产服务器的CPU利用率在20%左右;
演示②
演示②中,黑产增加了运行进程,同时对攻击 20 个验证码接口发起攻击,同时开启20个进程。此时,黑产服务器的CPU利用率达到了80%,必须花费更多的计算资源。据不完全统计,黑产单个服务器运行的进程数与机器配置有关,最高可实现每台机器同时运行100个进程。通过这一底层能力,黑产往往会分别从图片侧与协议侧进行下暴力尝试:黑产在图片侧的疯狂尝试,主要是增加请求的频次。因为验证码是一个需要答案的业务,并不是随随便便发个请求就可以通过,所以做到 "暴力" 的核心就在答案这里。验证码的答案跟图片资源相关,每一张图片对应一个答案。黑产请求量大了之后,就可能得到同一张图片,这样答案就可以 "复用"。黑产在协议侧的疯狂尝试,主要是减少单次请求的时间。黑产通过破解协议、省略掉前端渲染过程、直接向服务端API发起请求,就能实现脚本的“复用”,节约等待页面渲染的时间,高频次地发起请求。总而言之,黑产进行暴力尝试的核心就是利用单个机器同时运行多个进程的能力。而这一能力不论在图片识别场景还是协议破解场景,都是存在的。通过上述高频次的暴力破解方式,哪怕在黑产的破解准确率极低的情况下,只要黑产疯狂尝试,一样能达到破解的目的。
暴力破解看起来是一个很好的破解手段,但黑产在享受高频次破解的同时,也会为此付出代价——服务器的运行成本,包含机器投入的个数,以及单个机器的进程。首先,黑产为了提高自身的破解频次,必须花费更多的资金成本购入一大批机器设备,并准备足够的带宽,这对黑产来说是一笔前期不小的花费。以暴力破解十万张验证图片为例,若每台服务器支持100个进程,那么黑产至少需要购买1000台服务器,每年花费成本近50万元。除此之外,为了规避一些和频率相关的规则封禁,黑产还需要购买大量的代理ip,并且付出一部分磁盘存储的成本。除此之外,如果黑产单个机器同时开启的破解进程过多,还会影响整个机器运行的速度。总的而言,黑产暴力破解的代价是需要投入很高的机器购买成本,以及每个服务器运行的计算成本。
验证产品一直是作为互联网黑产最直接的正面战场,即使在防守方的拦截下,依然会有大量暴力破解者以洪水式的攻击去尝试绕过所有的防御机制,他们往往会投入更高的成本去使用更加隐蔽的策略,来换取最终验证成功量。数据显示,在暴力破解攻击下,86%的服务器资源都会被机器脚本抢占,黑产通过发起暴力破解攻击,在企业运营活动、信息泄露、盗取账号等方面获取的收益超过50万美元。暴力破解多发生在电商行业,高额成交量的背后除了真正拥有消费需求的电商用户达成的交易,还有一些奔着巨额优惠券而大批量薅羊毛的羊毛党。通常情况下,这些羊毛党为了提高作业效率必定会使用自动化脚本进行高频抢购,以此提高成功通过量。在大促活动期间,这些高频次的恶意请求无疑会影响电商平台的服务稳定性,甚至造成整个系统瘫痪,影响用户正常下单,给电商平台带来巨额的经济损失。在游戏行业,黑产也会使用暴力方法破解玩家的账户密码,盗取玩家账号,从而转卖盈利;在游戏营销活动中,黑产常常通过暴力破解来刷积分、刷礼包,不仅损害了正常玩家的利益,造成大量的用户投诉,更是消耗了大量服务器资源和带宽资源,影响游戏服务器的稳定性,给游戏公司带来严重的负面影响,影响游戏口碑。
站在客户视角,如果遭遇了黑产的暴力破解,数据会发生哪些异常变化?
某电商行业的客户Y,每个月会举办一次回馈用户的营销活动,因此经常遭遇黑产通过自动化脚本批量下单、抢夺正常用户的福利。在某天上午10:00,Y公司的业务部门突然收到了大量的用户投诉:一批限量出售的商品瞬间全部被自动化脚本抢走,而正常用户却因平台瘫痪无法提交订单。同时,相关社交媒体平台上也出现了大量的负面讨论,整个业务部门陷入了僵局,纷纷开始讨论事故原因和解决方案。Y公司业务部门负责人立刻查看了后台数据,发现一个小时内的验证交互量达到了历史峰值:244785。Y公司日常的验证交互量均在50000左右,增长幅度超过了380%。除此之外,验证请求量、通过量等数据也远远超过平时的正常交互量,大量的异常请求突破了服务器的带宽上限,使得平台的运行速率大大降低,影响了正常用户的使用,给Y公司造成了巨大的损失。
收到Y公司的求助后,极验安全专家第一时间查看了后台数据。根据这次“请求量大幅度提高,但是整体通过率较低”的数据反馈,极验初步判断黑产这一次发起攻击的核心是提高攻击频次,即暴力破解。为了进一步证实,极验单独查看了后台的CT命中量,根据后台持续上升的CT命中量,判断出这是黑产在使用机器脚本大批量进入网站,进行高频次的协议破解。CT命中量我们在上一期中也提到过,是极验特有的“异常标记”功能,专门用于定位黑产的协议破解。
查看CT命中量,定位协议破解
发现验证请求量大幅度提高,并且整体通过率较低,结合CT命中量的持续异常上升,极验定位到是黑产正在利用自动化脚本进行高频次的协议破解。当企业遭遇攻击、数据出现异常时,如何能准确定位的黑产的低频次破解还是暴力破解?我们把这几种破解方式在业务侧反映的不同现象进行分类,供大家以后快速定位问题。
为了帮助客户对抗黑产的暴力破解,防守方又该如何应对呢?
既然暴力破解就是以高破解频次取胜,那么防御手段就非常简单:降低黑产的破解频次。前面我们提到,黑产提高破解手段有两种方式,一是购买更多的机器,二是增加单个机器运行的进程。因此,防守方想要降低黑产的破解频次,既要限制机器对应的IP、减少机器的个数,又要限制机器的运行速率、减少单个机器运行的进程,二者缺一不可。目前大部分公司在防御时,仅仅针对IP做了限制,并不能完全有效地防住黑产,因为这对机器、IP的限制颗粒度仍然不够。最细的颗粒度是进程,也就是算力。单位机器的算力是有限的,我们一旦发现破解机器,就需要将这些机器的算力消耗到无效,让其算力空转,从而没有更多算力去暴力尝试,这就是POW的核心思路。那么,如何实现对黑产单个机器算力的限制?在长达十一年的黑产对抗经验中,极验找到了解决这一难题的答案,我们把它命名为——pow(proof of work,工作量证明)。pow是一种密码证明形式,证明者(黑产)需要向校验者(验证码)证明已经花费了一定量的特定计算工作,由校验者(验证码)来进行确认。简单来说,pow就像一道必须回答的“算术题”。黑产在发起请求时,除了需要正确地完成滑动、点选等动作,还需要花时间和CPU资源去处理这道"计算题",就不得不放慢攻击频率,因此有效减少了黑产单个机器的进程。
在pow机制生效前,黑产无需做这道“算术题”,只需要提交正确的图片答案;
而pow机制生效后,黑产在调用验证码时,会从服务端拿到pow相应的参数,需要按照规定将工作量证明提交给服务端进行校验。
在极验的pow机制下,一能限制黑产单位机器的进程,二能保证对正常用户无打扰。
(1)限制黑产单位机器的进程
黑产作为请求方的通过时间与计算难度挂钩,设置的难度越大,黑产需要花费的时间成本和计算资源越多。
演示①
演示②
演示③
演示④
如演示①所示,此时极验并未开启防暴力的pow,黑产同时攻击的数量仅为 1 ,黑产服务器的CPU利用率仅在20%左右,此时能够正常运行、快速通过验证;
演示②中,极验开启了防暴力的pow,并设置了计算难度为3秒,虽然黑产同时攻击的数量也仅为 1,但不得不消耗一定的计算资源来提交工作量证明,并且等待3秒完成计算。此时,黑产服务器的CPU利用率高达80%以上。虽仍然能够通过验证,但效率大大降低;
演示③中,极验加大了pow的计算难度,从3秒提升为5秒。此时,黑产必须花费更多的计算资源,且等待5秒才能完成计算。黑产服务器的CPU利用率已经接近100%,虽仍然能够通过验证,但仅破解一张验证码就需要花费10秒以上;
演示④中,在极验pow计算难度为5秒的前提下,黑产 同时攻击 20 个验证码接口。此时,黑产服务器的CPU利用率达到100%,服务器几近瘫痪。当黑产发起大量攻击时,验证失败率高达95%,成功通过验证的概率仅有5%。
在pow的作用下,黑产自动化脚本的运行速度大大降低,无法在短时间内完成大量的验证交互。
同时,pow对正常用户不会造成任何影响。当正常用户访问页面调用验证码时,低频的请求所需要的工作量计算对验证流程影响微乎其微,只需要等待0.2~0.7秒。而对于使用自动化脚本而发出高频请求的黑产来说,服务器会花费大量资源进行pow计算,浪费成千上万个零点几秒,也就无法在短时间内高频验证。
如视频所示,pow机制生效后,并不影响正常用户的交互体验;而黑产暴力破解时,为了通过大量请求,而不得不进行大量计算,耗费大量的服务器资源。在极验的pow机制下,要么黑产的破解频次降低,要么黑产就要投入更多的计算资源、攻击成本来应付pow计算。
在极验为Y公司开启pow防御后,15:00再次查看各项数据指标,虽然验证请求量和交互量居高不下,但验证通过量已从213046骤降到了127。再对比Y网站受到攻击前凌晨4:00的数据,这时的通过量已回到正常水平,通过计算我们得出:pow开启后有效阻止了约97.42%的异常请求次数,拦截效果十分显著。
下午15:00各项数据
凌晨4:00,数据回归正常
暴力破解与常规破解方式不同,除了攻击客户正常业务、薅羊毛之外,还会带来一些其他危害,类似DDOS攻击,消耗整个服务器的资源和稳定性,对电商平台造成更严重的经济损失。因此,当客户遭遇暴力破解时,必须立刻联系极验解决。
那么,pow背后用到了哪些技术原理呢?为了消耗黑产的算力,极验的方法就是让黑产长时间跑一些无意义的函数,尽可能多地消耗黑产的计算成本。极验将pow应用到验证码中,主要依靠哈希(Hash)算法,即散列函数。它是一种单向密码体制,是一个从明文到密文的不可逆的映射,只有加密过程,没有解密过程。同时,哈希函数可以将任意长度的输入经过映射变化以后得到固定长度的输出。
哈希函数的这种单向特征和输出数据长度固定的特征使得它可以生成消息或者数据。利用哈希运算构造出一个伪随机数生成器,可以确保最终数据的不可预测性。借此,极验通过一个变化值进行复杂的哈希随机碰撞,直到找到特定的碰值,可以通过调节碰撞值的长度,实现对于工作量和计算难度的调节,碰撞值越长,所需要的运算量越大。比如说将计算的难度设置在 16 位,使用python执行16位的pow运算需要0.25秒左右才能完成计算,也就意味着完成1次验证至少需要0.25秒,这样下来,黑产整体请求效率就会下降,请求频次也会大大降低。
在极验验证码的pow业务流程中,加载验证资源时,极验服务器下发pow参数到客户端,参数中包含pow的计算难度、哈希算法、业务流水号等关键部分,客户端在验证时除了需要完成验证码的答案还需要额外计算pow结果。客户端根据下发的参数,凭借满足条件的随机字符串进行哈希运算,通过哈希运算的不可预测性和随机字符串的随机性进行多次运算最终得出符合条件的结果,最后将结果提交到极验服务端进行校验,答案正确方可通过验证。在这一过程中,客户端需要二次回答,即用户除了需要回答出验证码的正确结果,如将滑块移动到正确的位置、按照正确的顺序依次点选文字,还需要客户端回答出正确的pow结果。相比以往的验证码只验证一个回答,pow的应用提高了验证码对客户端的要求,安全性也随之提高。由于正常用户的客户端一次只需通过一个验证码,其请求量少,相应的计算也很少,平均一个字符串的平均查找的时间在数十毫秒,因此对正常的客户端的影响可忽略不计,做到了用户无感;但是对于黑产而言,他们不得不经过多次哈希算法来找到正确的pow结果,消耗大量的CPU计算资源和时间成本。
为了帮助客户更好地防御黑产,在极验团队的共同努力下,pow还做到了以下技术突破:
1、随机生成、无法篡改
在加载验证请求时,字符串与验证码请求返回的验证ID、流水号、消息生成时间有关,因此任意一个pow参数都无法被随意篡改。极端情况下,就算黑产了解了字符串的生成规则,试图通过伪造篡改请求参数,来越过pow机制。极验也可在服务端进行校验时第一时间发现异常并立即将发起的请求标记或封禁拦截。
2、与风控系统高度融合pow与极验的风控体系结合用以判别异常账号,我们通过IP频率、设备频率等风控策略判断用户风险,面对正常、低风险用户降低计算难度;面对异常、中高风险的请求提高难度。这种策略使黑产在时间和CPU上产生高消耗,从而阻拦异常流量,以此为企业提供更安全、更便捷、更智能的用户运营。
3、无法逆向推出答案客户端生成的随机字符串组成Hashcash msg,需要使用哈希算法来对此进行散列,但因哈希算法不可逆,所以任何客户端只能进行多次尝试找到目标串。
4、抵抗客户端破解很多时候安全产品需要在客户端进行环境检测,黑产的反侦察亦是如此, 他们会投入资源以破解产品逻辑,规避环境检测。但是应用了pow的验证码即使在客户端逻辑被破解, 也不能被黑产绕过,因为所有的校验逻辑都需在服务端进行。
更值得一提的是,在为Y公司解决了问题后,经过一段时间持续的数据跟踪复盘,我们发现开启pow后,黑产发起二次攻击的概率比以前更低。这是因为pow实实在在地消耗了黑产的服务器资源和计算成本:当黑产发起常规的图片答案攻击时,尽管我们能够做到每小时更新一次图集,但无论我们的图集更新速率有多快,黑产总能在我们更新的间隙去大量“碰运气”,碰出图片的答案;而pow不需要图片资源,只用每次下发一道"计算题",黑产就必须要花时间花CPU去处理这道"计算题"。当黑产发现自身的服务器被消耗后,就会转向去薅其他企业的羊毛,而不是继续碰壁。
这是一次攻防转换的防守。过去我们只是从防御视角躲避黑产、不让黑产通过,黑产仍然可以再次破解图片,重新发起攻击;而pow对于黑产而言不仅仅是一套防御机制,更是一次主动向黑产发起的进攻,攻打敌方的壁垒。pow能实际损害黑产的服务器资源和计算成本,所以发起二次攻击的概率更小。pow首次采用了主动进攻的方式,真正实现了从被动防御到主动防御,对黑产更加有威慑力。
总的来说,pow相当于验证码下发给客户端的一道“算术题”,让黑产的服务器花费大量资源进行pow计算,从而限制黑产的高频交互,大大降低暴力破解的攻击频次。pow在行业内首次采用了主动对黑产进攻的方式,真正实现了从被动防御到主动防御,帮助客户有效地打击黑产,减少业务损失和服务器风险,并真正做到用户无感。
对于黑产而言,想要抢占正常用户的业务资源,势必要发出远超正常用户的请求,经过CPU的大量计算资源,并投入大量的时间成本。在极验对36万家客户的实践应用中,pow技术已得到了广泛的高度好评。极验客户成功团队不断为客户服务,当前在细分市场的头部覆盖率已达到56.20%。
极验专利墙
下一期,我们将介绍黑产图片答案破解、协议破解之外的第三大破解方式:模拟器破解——使用各种客户端模拟器来模拟真人通过验证。极验又会如何应对呢?