geetest_logo

全文6239字,预计阅读时间约13分钟,建议收藏后阅读



道场


一、环境检测的本质


所有业务安全产品的功能主要是识别和处理异常,其中识别比处理更加前置也更加重要。验证服务的整流程其实就是从客户端发起带参数的请求,回答验证答案到服务器进行验证,黑产攻防道系列文章整体讲述了验证码服务整个流程的“攻”与“防”。


在前期文章中,我们围绕着发起请求(通讯流程)和回答答案(图片验证)这两个后置环节,分别讲述了相关攻防点,涉及识别异常请求和异常行为。

验证码是一种主动的安全工具,所有黑产想要获取具有价值信息的目标,就必须回答验证码的答案。所谓环境检测,其实就是通过用户回答,通过识别手段和策略,设下一道道陷阱,同时监测用户所携带请求的设备/浏览器环境信息,利用社会工程学中的信息不对等,区分合法请求和模拟请求


为了更好地理解,举个小例子,我们区分合法请求和模拟请求的方式类似于货币防伪。


为了确保货币的真实性,各国的中央银行和货币印制厂通常采用一系列先进的技术和措施来防范伪造,例如磁性防伪或者红外线和紫外线特征等等。这些防伪技术一般是不对外公开的核心机密。这其实就是一个个陷阱,利用货币防伪特征的信息不对等,打击市场上流通的假币。



二、动机与限制


异常请求的发出通常伴随着异常环境。在实施攻击的过程中黑产会使用到特制的浏览器或者脱离浏览器环境(代码进行脚本运行)的技术手段。据极验统计,89%的攻击案例特征伴随着异常环境。


既然异常环境发生得这么频繁,肯定对黑产特别有价值,那么价值是什么?


先别急,在聊环境伪造之前,我们首先了解点浏览器小知识:市面上有很多浏览器,不同的浏览器会对网站内容在渲染上有微妙的差异性。所以当我们访问一个网站时,浏览器会向服务器发送HTTP请求,并在请求标头中包含用户代理信息,以告诉服务器我们正在使用的浏览器和操作系统,在跨浏览器的兼容上提供更好的用户体验。



同时浏览器因为安全和隐私保护的设计,限制了一些敏感的操作或一些敏感权限(例如正常浏览器无法发起自动化拖动点击操作请求)


以下为特殊浏览器可以执行自动化拖动点击的实例:


1、环境伪造的动机


在这些基础上,黑产为了绕过浏览器的限制,使用自动化工具提高自己的攻击效率,必须使用没有 GUI 的浏览器或者脱离浏览器环境(代码进行脚本运行)去完成异常请求。例如没有GUI的浏览器可以通过代码指令操控所有功能,类似于自动化测试,自动识别拖拽验证码,且需要的 CPU/RAM更少。


我们总结出环境伪造对黑产的两大价值:


(1)突破浏览器功能限制


黑产为了提高自己的攻击效率,一般会着力的点主要为“机器效率”和“提高规模”两个方面:


①脱离浏览器环境直接用接口进行协议破解,省去前台UI交互带来的性能瓶颈。这种方式需要纯抠代码,且对技术能力要求比较高。也就是我们前文所提的协议破解。


②使用自动化工具,类似于自动化测试,例如使用 Selenium 操作 chromium 内核实现自动化的拖动、点击等操作。但是运行效率慢,无法在短时间内发送大量的请求。一旦技术水平做不到或者协议破解被防御住,自动化工具这种方案就为黑产无论技术上还是效率上提供了退而求其次的选择。


脱离浏览器通过调试技术对前端JS做逆向还原,同时理清参数生成的逻辑,补齐环境信息后直接在服务端发起请求,省去前端UI渲染时间。


在前期内容中,我们已经对协议破解做了相关介绍,如果感兴趣可以回顾:【黑产攻防道03】利用JS参数更新检测黑产的协议破解 。在本文中,我们将不再赘述协议破解的相关攻击方式,重点说明伪造环境的原理和检测。


(2)绕过检测与防御机制


因为黑产会使用异常环境来突破原本的浏览器限制,这个规律在业务安全领域得到了应用,安全策略也会依赖于用户代理信息,异常的请求来源和信息通常是重点的嫌疑目标。


黑产为了隐藏自己特征,不被验证检测出来为异常环境,会根据正常浏览器的一些特征去修改自己的参数或者完全伪造出一套参数,欺骗服务器关于请求来源的认知,进一步防止被追踪。

说到底,环境伪造的本质就是篡改,通过修改用户环境参数,从而欺骗服务器认为请求是来自不同类型的浏览器或设备,模拟成真人请求。


2、环境检测的限制


前面我们了解到,既然黑产是通过驱动自动化工具伪造真人行为模拟真人请求,那么防守方如何从中进行防御?


关键就在于:区分出这些伪造的危险请求。通过一系列强弱因子找出正常设备和异常设备之间差异性,这也是识别比处理更前置和更重要的原因,处理的信心来源于识别的精准。


伪装和识别好像一场敌暗我明的谍战,而在真实的安全攻防中,在以收集信息、欺诈或入侵系统为目的的战场上,“伪装”和“识别”的攻击与防守已不仅仅是技术的升级,更有社会工程学的博弈,本期我们就来讲讲“环境伪造”和“环境检测”的攻与防。


企业如何定位黑产的伪造环境


问题发生

A游戏公司拥有独特的在线游戏平台,积累了大量用户数据和游戏内容,平时也会做社区活动激励来促活用户粘性,例如经常把游戏周边奖励通过抽奖的方式送给用户。


在某次抽奖活动14:00开始后,该游戏公司员工发现点击参与人数暴增,日常活跃只有两千多的社区,突然有数万人登录并报名抽奖,明显和社区日常流量量级不符,同时该社区玩家开始在论坛内发帖吐槽抽奖活动,质疑其公平性。给品牌带来一系列负面反馈。


而极验客户成功服务团队在日常安全巡视中,也发现了验证数据的相关异常。14:30开始,网站验证请求量达到了14,983,除此之外,验证交互量和验证通过量都急剧上升。


点击查看大图



问题定位


为此极验主动联系上了该游戏公司安全负责人,提醒相关情况并了解其业务动态,后得知该企业也担心参与的用户并非全是真实人类。为了客户的业务安全利益,极验技术专家开始介入并分析相关情况:


首先,极验技术专家对线上数据进行了采集分析,通过协议破解检测,更新的JS参数并没有命中,通过极验CT规则量并不大,可以排除协议破解的可能。其次IP类型也没有聚集表现,所以也无法通过IP频率去限制。参考客户网站所受攻击流量特征。至此问题看似陷入了困境,到底是因为什么原因呢?


极验如何应对黑产的环境伪造


让我们视角切换到防守方,面对这种情况,极验怀疑黑产使用了自动化破解,并且为了伪造环境使用了高级的隐藏插件。为了识破黑产的伪装,极验在日常安全防护中做了一系列的“监控探头”,加强识别能力,而这一个个监控探头就是为黑产布下的一个个陷阱。


防御思路


1、设置陷阱个点:多重识别


极验专家主要采取的手段之一是使用多种手段验证用户身份,不仅仅依赖于用户代理信息。例如,结合IP地址、Cookie、和用户自动化特征等其他浏览器指纹信息。


例如现在流行的puppteer、playwright以及比较古老的PhantomJS 和Selenium等自动化工具不加处理必然是无法通过现在大部分网站的反爬策略。所以极验技术专家在过去十年的客户服务过程中,花了大量时间来进行一些用来避免检测技术的持续研究,比如使用自动化工具会留下自动化工具的特征,而尝试去掉这种特征,也必然会导致覆盖某些全局属性而产生的“副作用”。


当极验积累了大量正常浏览器和自动化工具之间的不同特征之后,我们需要做的就是采集客户端环境数据,通过服务端的规则集合判断风险程度,将自动化工具流量精准的识别出来。


2、增加陷阱深度:定期更新浏览器检测机制


同时,由于浏览器机制的不断更新,检测手段和黑产攻击是一个动态博弈的过程,而不是一蹴而就的事情,与正规的安全研究团队和安全公司相比,黑灰产的资源相对有限,且面对的打击压力和监控又会很大,大概率无法投入足够的财力、时间和人力来迅速适应新技术和进行持续的创新。我们会研究市面上所有的开源工具,利用组织优势和长期战略进行持续安全运营投入


极验会定期跟踪行业内最新情况,适应不断升级的自动化工具和环境篡改方式,提高检测的准确性。目前规则策略中,已积累出十多款 Web 模拟器及其变种,超过 1000 个 Web 模拟器样本。通过持续改进检测算法和引入新的技术,增强对各种环境伪造技术的抵御能力。


多种检测能力,环境数据收集展现

产品方案


容器安全探针——多类型的陷阱


我们基于对客户端环境和黑产攻击方式的了解,从多个维度进行异常检测分析,得到最终的客户端风险画像,辅助我们对请求进行处理。以下仅仅列举部分策略:



当极验积累了以上的检测策略的时候,黑产是并不知情的,那么他们的行为是不是能躲过这些“监控摄像头”?是不是能够达成目标?让我们接着往下看。


从黑产视角看伪造环境


伪造的原理


伪造对于黑产的价值是突破和绕过,而突破和绕过必然要去伪装,就好像变色龙捕食时也会融入环境颜色。前面我们讲到,环境伪造最基本的原理其实是通过驱动自动化工具伪造真人行为模拟真人请求。黑产不是通过 GUI 控制浏览器的操作,而是通过代码指令控制无头浏览器。在底层,无头浏览器的行为就像其他浏览器一样。这对于开发人员来说非常方便,他们可以操控真实浏览器的所有功能,模拟用户行为,如点击、拖动等,但需要的 CPU/RAM 却少得多。


Chrome 团队在2017年发布了自动化工具Headless Chrome和 NodeJS API Puppeteer, 相比较于古老的PhantomJS 和Selenium,Puppeteer 使用起来更加稳定,而且由于官方团队维护,Puppeteer 会拥有更好的稳定性和前景。它通过 CDP 协议控制 Headless Chrome,黑产可以通过非常简单的配置就能完成自动化攻击


针对无头浏览器的检测方法有很多,当攻击者使用无头浏览器进行网页抓取时,浏览器的所有属性(例如webdriveruserAgent等)一定程度上跟正常浏览器是有区别的,通过检测这些差异可以判断出当前环境是否是处于无头浏览器环境,但是黑产往往不会如此简单的使用自动化工具,他们会用一些特殊手段逃过检测。比如一般网页会通过检测 ua中是否包含 HeadlessChrome,或者是检测window.navigator.webdriver 是否存在来判断是否是模拟器。


而攻击者往往可以很轻松的修改用户代理,并且在页面加载前将其修改为正常值,这样进入页面便无法检测到模拟器特征。


攻击步骤


综合以上,黑产通过以下步骤实施攻击:


Step 1:使用自动化脚本,隐藏自动化脚本特征

运行puppteer自动化工具,通过evaluateOnNewDocument在页面加载前注入篡改逻辑。



Step 2:测试自动化环境效果

可以看到页面的自动化特征已经被抹除掉(简单的篡改就能绕过绝大多数网站的反爬逻辑)



Step3:运行自动化工具完成登录


用自动化工具模仿正常用户操作,进入页面,完成输入账号密码点击登录,然后进入到黑产想牟利的业务流程完成操作。



根据上面的演示,我们可以看到,自动化工具最大的优点是使用起来非常方便,黑产不用硬着头皮在混淆后极难理解的代码里找线索,也不用担心客户端协议参数的变化,只需要完成一次配置,便可以驱动无头浏览器根据业务流程开始完成登录、抢票等一系列自动化攻击,调整起来也非常灵活。


但是仅仅几小时后,黑产就发现自己的账号被大规模的封禁。所有恶意请求伪装被识别出来,并被追溯到了源头进行处理。


问题解决


1、识别伪造


让我们视角回到极验,看看这么短的时间内,极验是怎么通过日常布下的陷阱,识破这“高明”的伪装,通过之前的排查,极验就已经怀疑该次黑产攻击事件是使用了自动化破解,且为了伪造环境使用了高级的隐藏插件,再次按照这个路径进行排查,通过极验自己的检测能力,发现客户当前的流量几乎有一半检测到stealth 的特征。


黑产使用 puppeteer-extra-plugin-stealth 对网站发起自动化攻击(其插件主要能力是通过消除 Headless Chrome 和标准 Chrome 浏览器之间细微的差异来隐藏浏览器的无头状态),通过完全模拟真实API以来确保他们覆盖此属性的方式看起来符合规范。他们不只是用一个简单的数组对象覆盖“navigator.plugins”属性。而是让它具有更真实的类型,以及所有相同的属性。


极验验证码对模拟器的检测能力:可检测出异常流量

​​

这种破解方式绕过了脱离客户端检测、协议破解识别和ip频率限制。且市面上的机器人检测网站均检测不出来,如果没有极验对黑产工具的持续研究,往往就会让这部分恶意流量绕过检测,造成客户成千上万的线上资产损失。


2、客户恢复正常


经过一系列诊断和分析,通过历史积累了大量正常浏览器和自动化工具之间的不同特征之后,极验技术专家采集了客户端环境数据,通过服务端的规则集合判断风险程度,将自动化工具流量精准的识别出来。


17:00,规则上线,黑产的环境伪造手段被迅速地识别出来,该社区取消了4,356个用户的抽奖资格。不仅如此,极验还为客户考虑,增加开关配置加入封禁,识别配合处理动作,将安全风险置前处理,配合协议破解识别将黑产的可操作空间降到最低,经过以上操作,客户的验证数据开始趋于正常,帮客户挽回了即将有可能的损失。


从15:00到17:30,这看似简单的两个半小时,背后是极验在看不见的地方十几年的安全环境分析和策略更新速率


技术突破


在验证码中针对Web端口的检测中,我们为了客户的体验,更多是检测明确的业务风险,事实上我们做到的远远不止这些,极验在设备这个层面,做到了更多维度的检测,并且积累了覆盖全端口检测的能力,可以供用户结合业务流程进行分析。综合以上,我们做到了:


1、基于弱设备因子的校验

通过极验“设备弱特征因子”为每一个设备生成的唯一设备编号,稳定不易篡改。并且收集300多项设备弱特征因子数据,经过设备关系图谱、设备三维复核模型识别虚拟设备、自动化设备以及定制设备,实时输出设备风险标签和风险状态。


2、基于身份的账号画像技术

利用流量账号的历史关系数据,提升识别流量风险的准确性,基于流量身份体系建立账号画像,支持手机号、手机号 MD5、微信 openid 和 QQopenid 等账号类型查询历史风险记录,通过大数据关联历史复核结果。


3、基于关系图谱的设备指纹算法

建立设备在网络中的交互关系和连接关系。设备指纹是对设备的唯一性描述,包括设备的硬件特征、网络行为和其他可用于识别的属性, 使用机器学习或其他技术,对这些特征进行训练,以建立设备指纹的模型。利用训练好的模型,对新的设备进行识别。通过对设备的特征进行匹配,可以确定设备是否已经在网络中被识别过,或者是否属于已知的设备类型。通过了解设备之间的关系,对异常流量进行溯源。


点击查看大图




结语


近年来,伪造环境是黑产使用越来越频繁的手段。海外的情况甚至比国内还要严重。2023年全年,在判断为环境伪造的相关黑产攻击案例中,海外企业占比达80%。


黑产攻防道整个系列从图片答案、协议破解、PoW暴力破解、环境伪造这四个方面讲述了和黑产不见血的厮杀,写这个系列的初心是因为我们看到了黑产日益猖獗的现状后内心感到急迫。


截止当前,极验服务后台每天有29亿次的请求数据,2500万个IP发的极验服务器,600万个IP存在异常和风险行为。在整个市场上,黑产从业人员超200万,团伙超3万个,每年团伙利润超300万,每年因为黑产涉及损失超千亿元。谁也无法保证,下一个受害者是不是你。


我们希望把我们的技术讲出来,我们的技术自信来源于长期的服务、客户的认同和一场场业务风险防控的践行,我们不缺与黑产打明牌的勇气。


往期回顾:

【黑产攻防道01】如何应对黑产进行验证图片资源遍历

【黑产攻防道02】如何对抗黑产的图像识别模型

【黑产攻防道03】利用JS参数更新检测黑产的协议破解

【黑产攻防道04】利用pow工作量证明降低黑产的破解效率


《黑产攻防道》,站在上帝视角看与黑产的攻防博弈。如果您感兴趣欢迎转发,如果您还有其他感兴趣的黑产攻防点,欢迎评论区留言或联系极验小编~

添加Eva微信加入极验读者交流群


Start your free trial
Over 320,000 websites and mobile apps worldwide are protected by GeeTest captcha