近期休闲小游戏“羊了个羊”火爆朋友圈,这款第二关难度系数极高且带有省份和个人排名的小程序游戏甚至在最高峰时段热度指数超过了和平精英和英雄联盟。但不管是MOBA手游英雄联盟还是休闲小游戏羊了个羊,在繁荣的背后游戏外挂脚本屡见不鲜。
羊了个羊游戏脚本
面对此类业务遭受计算机自动化作弊的情况,企业应该如何应对、避免损失及无效运营无疑成了当下最应该重视的问题。
目前,针对以上风控问题,极验作为负责企业业务安全的服务商已根据不同问题类型给出解决方案,即在易出现自动化作弊的场景部署验证码。极验安全专家表示:目前黑灰产利用自动化脚本作弊的技术手段不断进步和成熟,与黑产博弈最有效的办法便是提高黑灰产作弊成本。极验现行的解决方案中应用了工作量证明技术的行为验4.0就可以最大程度地提高黑灰产的攻击成本。这项技术通过加大电脑CPU的计算量、延长计算时间的方法防御高频次的交互,但对低频次且账户安全性高的正常用户则毫无影响。以下为具体详细说明:
工作量证明,(Proof of Work,以下简称“PoW”)顾名思义就是证明你所做过的工作。当应用在验证码中时,它指的是验证码厂商的服务端向用户的客户端调取计算机完成指定量工作的证明,该证明一般为提交了正确的哈希算法的字符串答案。在这一过程中,极验服务端除了可以迅速验证客户端的答案外,工作量证明的数量多少也有且仅有它可以规定。
因PoW的作用就是限制高频次的请求,所以通常情况下极验会通过主动监测以发现高请求量且不符合客户业务规律的流量时开启PoW共识防御机制。
下图为某一网站开启PoW前后的数据对比情况。我们可以看到在下午14:00时该网站的验证交互量达到了历史峰值:244,785。随后验证请求量、交互量等四项数据都有所下降,但从曲线图中仍然可以看出数量远远超过该网站的正常交互量。在14:52分左右我们监测到网站的异常数据。根据以往的经验我们大体判断出这是黑灰产在使用计算机脚本大批量进入网站并进行了高频次的交互验证,随即我们开启了PoW进行防御。
下午14:00各项数据
8分钟后即15:00当我们再次查看各项数据指标时,虽然验证请求量和交互量居高不下,但通过开启PoW,验证通过量已从213,046骤降到127。再对比网站受到攻击前凌晨4:00的数据,这时的通过量已回到正常水平,通过计算我们得出PoW开启后有效阻止了约97.42%的异常流量进入,拦截效果十分显著。
下午15:00各项数据
凌晨4:00各项数据
极验主要采用一种 Hash 运算的方法来用作验证码的PoW工作量证明,该方法主要利用HASH运算的复杂度,通过给定的初始值,进行复杂的值递增规律,利用HASH碰撞原理,直到找到特定的碰值,可以通过调节碰撞值的长度,实现对于工作量的调节(碰撞值越长,所需要的运算量越大)。在目前的认知中,黑产除了穷举尝试,无法很快的找到满足条件的签名串。黑产在发送请求时就需要进行N次递增生成新的签名串,直到生成了符合极验服务端要求的签名串,即可完成工作量证明。
极验设计的 Hashcash 的签名串如下:
Hashcash msg: version|bits|hashfunc|datetime|id|lot_number|ext|rand
示例如下:
PoW_msg: 1|16|2021-12-14T14:15:21.167233+08:00|647f5ed2ed8acb4be36784e01556bb71|b3af6a9f47bc4e4a825715e20622a307||hijwiakgwjAIDL
PoW_sign = hashfunc(PoW_msg)
字段意思解释:
version: Hashcash 格式版本. 目前版本为1。
bits: 散列之后得到的字符串有多少bit前缀是0,代表计算的强度。0越多,代表需要计算的强度越大。
hashfunc: 支持的散列函数md5、sha1、sha256
datetime: 消息生成的时间,格式iso8601: YY-MM-DDTHH:mm:ss+08:00
. (这里是使用时间字符串还是时间戳?)
id: 验证码服务的id
lot_number: 验证码服务的流水号
ext: 额外扩展
rand: 随机字符串, 使用 base-64 编码
在验证码流程中,验证码问题加载返回id、lot_number、datetime、bits、version。客户端生成随机字符串组成Hashcash msg,然后使用散列算法来来对此进行散列,直到找到符合 bits 数量前缀的 0 开头的串,即可视为完成了工作量证明。在验证码回答时,和答案一起传入PoW_msg, PoW_sign作最终校验。
对于客户端来说,需要调整随机字符串,找到 bits 位前缀为 0 的的散列串才能完成工作量证明。以bits为16来说,平均找到一个目标串需要随机生成字符串 rand 并散列二的十六次方次(65536),此过程满足几何分布。以电脑为3.6Ghz的CPU举例, 三种散列算法分别需要以下时间进行一次散列运算。
对于 md5 散列方法:
65536 * 572 ns = 37486592 ns = 37.486592 ms
因为散列算法不可逆,所以任何客户端只能进行多次尝试找到目标串。平均查找时间在数十毫秒,对正常的客户端没有太大影响,但是对于恶意的客户端端就必须多花费CPU找到相应的PoW_sign串来通过检测,这样就可以限制恶意客户端的行为。同时可以结合我们的风控体系,对异常用户提高 PoW 的强度,对正常用户降低 PoW 的强度。
在与黑灰产多年博弈的过程中我们发现他们还会利用外接打码平台和秒拨IP(利用国内家用宽带拨号上网的原理,每一次断线重连就会获取一个新的IP)入侵网站、软件或是H5小程序。面对这些准备充分、资源充足的黑灰产,若是不使用应用了PoW的验证码,大概率只能束手无策。
然而PoW的好处在于它不依赖IP规则而避免误封可能性,哪怕黑灰产以上述手段破解验证码,客户端依旧需要完成由极验服务端发出的计算工作,打码平台和秒拨IP无法帮助黑灰产完成计算工作。对于黑产而言,想要抢占正常用户的业务资源,势必要发出远超正常用户的请求,堆积在黑产处的高频请求带来的就是超高的计算工作,来保障接口服务的公平性。
以下为极验目前应用了PoW的行为验4.0产品和行为验3.0的业务流程对比图,我们可以明显看出开启PoW后发生了从极验服务端返回客户端输出PoW版本、哈希方法、PoW难度;随机生成16位字符;运算源数据处理;获取签名串等7项关键步骤的变化。PoW在原有的验证码防御机制上进一步使黑灰产付出的成本高于所获利润,他们也因此放弃破解,减少攻击,从而实现了有效拦截97.42%异常流量的成绩。显然,给网站上加的这个行为验4.0“Buff”在保护业务安全中发挥了关键作用。
行为验3.0与行为验4.0PoW业务流程对比
以电商、游戏和区块链为代表的行业最容易受到黑灰产业链中大规模薅羊毛的影响,从而造成直接且无法估量的金额损失。据不完全统计,目前已部署极验行为验4.0的用户近20万,其中包含滔博运动、TapTap、OKcoin、IBOX、金数据、微博、keep等知名企业。
行为验4.0示例