关于机器人流量对抗的一点感想
前两天看到一个朋友发的招人贴,兴趣之余点进去看了一下,看到的第一个岗位是资深信息安全工程师/高级专家(人机识别),顿时引起了我的注意。
简要描述一下:
岗位职责:1、负责机器人流量识别与数据分析 2、负责人机识别系统技术设计与实现
岗位定级:P6-P8 工作地点:上海/杭州/北京
印象中多次看到过他招人的帖子,但似乎是第一次有关人机识别或人机对抗的,确认了一下,属实。
前不久看完一本书,尼古拉斯·卡尔写的《玻璃笼子:自动化时代和我们的未来》,当时就想趁着写一下自动化和我们日常工作/生活的一些感想。因为懒,一直没写。
这事再往前,于2018年中最初有一个构思,写一篇短文:保卫"木叶",从火影剧情看网站攻防的演变 ,其实也是谈机器人流量识别与对抗的,同样迟迟未动手。
既然今天心血来潮,就简单写一下关于这方面我所接触范围的一点感想,大概拟一个思路,不谈具体技术细节,以下为正文。
无论是技术/产品选型,或是我们日常中的一些其他决策与思考,影响最终行为的往往是过往的经验和认知,当下的某个观点和决定往往建立在过去事实的基础上。这种思维方式有它适用和和合理的地方,不同心理状态和性格的人会有不同的顾虑。但对于这个机遇与挑战并行且外部环境急剧变化的时代,仅仅遵循经验不再是安享太平的充分必要条件,还需要引入一些其他的评价模型或是标准。我想要表达的是,也许我们在决策的时候应该更多的考虑:现状、趋势和未来。
我们每个人首先都需要立足当下,如果不能解决眼前的问题,势必积累越来越多的问题,最后烦恼缠身无法脱手。几年前直至今天,在安全圈里还经常能够听到"救火"一词。各种各样的问题堆砌在一起,需要迫切解决甚至越理越乱。对于这种情况,如果有现成方案能够帮助解决他们工作中面临的主要烦恼,我想一定是个比较上乘的选择。但也见过很多深陷其中,无暇顾及可选择的解决方案的例子,最终很长一段时间都处于一种比较忙碌甚至痛苦的状态。
现状是我们不得不应对并重视的,但如果只为解决当前问题而解决当前问题,就永远只能是做一个"救火队长"。管理学里面有将事情分为几个不同的维度,重要紧急、重要不紧急、不重要紧急、不重要不紧急,一旦学会根据优先级去执行并放弃无关紧要的事情,很多精力和时间自然会被释放出来。
一般来讲,摆脱了当下的烦恼才更有可能看向未来,但也不是必要条件,而且通向未来的道路一定是同趋势相结合的,而趋势是需要在当下去观察和感受的。
举个例子,在我之前换工作、参与机器人流量对抗之前,现状是当时的工作内容已经不再能产生激励,需要换不同的环境或是岗位调整自己。那么当初在选择的时候,为什么会接受这样一个安排,其实跟对趋势的判断有关。自动化工具、机器人流量,对我而言是不陌生的,一方面是日常中就会用到很多工具辅助完成作业需要,甚至可以说不借助这些程序大多数工作无法开展;另一方面是平时也会看一些不同公司、领域的文章,对于互联网上爬虫之类的流量有一个大概的认识;最后是,在和朋友的聊天中非常直观的感受到了自动化的威力:买的一台云主机,上线不到半小时就看到了大量SSH及其他服务暴力破解尝试的日志。对于3年前的2016年来讲,随着所处环境的变化和时代发展,企业面临自动化的威胁既是一个现状,也是一个还会持续下去的趋势。而在那个时候,没有其他公司站出来说,我要解决这个问题。尽管一些做风控的产品或方案多少提及了自动化工具的识别问题,这一块的需求从来没有被真正满足。按照杰弗里·摩尔在《跨越鸿沟》里面的说法,这是一个细分领域的空白市场。
对于机器人流量的识别,我们在2016年曾总结了一个自动化工具的层级图:
原图有5个层级,只放了4个出来,最上面的一层对应着群控设备和真人操作,当时其实不具备足够的能力进行分析和拦截,现在已经有相当的把握和成熟经验了。
回到3年前,当时国内互联网公司已经有不少覆盖到了下面的两个层次,也有更深层次的识别的能力的大型公司,但整体来讲大多数停留在对于简单工具的检测和识别。如今,但凡有一点规模或是发展较快受人关注的公司,其网站一定会通过前段加密或混淆等方式做保护,并能对应上图第二个层次。淘宝、美团等网站做的更好,会检测通过selenium驱动的浏览器,或是尝试识别目前流行的puppeteer,并通过浏览器指纹、IP、会话、点击等行为进行风控,一下子就跨越了好几个层级。这里所呈现的变化,其实也反应了一个趋势,就是具备JS执行能力的工具变得比之前更多了,用一个客观的数据来表示:2016年Distil的Bad Bots Report报告显示不具备JavaScript执行能力的简单工具请求占比54%,2018年这一比例已下降至26%。
对于市场反应,其实也经历过不屑、不懂、不理解、不接受、接受但不觉得重要、接受且觉得重要、接受觉得重要且需要尽快应对的各类情况。虽然用户心智整体而言有所提升,但根据技术采用生命周期这一模型,还有很多观望、怀疑或是拒绝接受的人群,也是无法避免的。
就人机对抗的激烈程度来说,电商领域显然是最强的,这也是淘宝、蘑菇街、唯品会这类企业有一些不错的实践的原因。但这并不意味着其他行业或领域就不太遭受机器人流量攻击了,换句话说我们不应该根据行业而是场景来判断,比如在一个泛电商的场景里批量注册、批量登录做任务、爬取商品信息、恶意占库存、使用外挂程序薅羊毛、抢优惠、短信炸弹等都是需要防护的。在其他行业如运营商、金融、政府、企业,也或多或少会面临类似的问题,爬个人信息、爬公示信息、刷单、虚假申请、CC攻击等。
人机对抗的具体技术手段而言,大体上分为前端检测与加密、后端可疑数据分析与处理,信誉库、威胁情报等都属于偏后端应用的产物。在整个防御过程中,前端和后端各自的重要行和影响力如何呢,我们应该如何平衡在这两者之间的资源投入?简单来说,前端安全是后端分析的重要依据与基础,没有前端的检测与过滤,后端将面临大量的垃圾数据、缺乏有效的维度和判断依据,使得无论分析还是建模都变得巨为艰难和低效。反过来讲,没有绝对的安全,对于前端防护来说更是如此,因为JS和APP都运行于不可控制的环境,理论上来说有被逆向、破解的可能,具体情况取决于前端安全自身实现的技术门槛和驱使他人尝试逆向的动机强烈程度。总而言之,二者相互依托、彼此成就,缺一不可。
我们经常听说的各类方案,无论是企业自身实践、还是偏风控一类的解决方案,使用大数据、流计算、机器学习建模等技术都是侧重于后端的,但似乎鲜有听闻对于前端安全防护的介绍(APP加固方案除外)。个人猜想,后端的架构、建模根据其规模、业务类型、数据来源丰富度,可以有多种不同的实现方式,正如一千个读者有一千个哈姆雷特。而前端的可选范围却很少,Web端可以对JS等内容进行混淆、加密,或是做字体、CSS等映射,通过Cookie、Param等方式上传检测结果,客户端通过APP自身或SDK实现类似的效果。因此,对于前端而言,具体的实现方式是不能公开讲的,包括具体的采集项、相关的算法和计算方式,最多也只能泛泛而谈。另一方面,由于前端防护只是一个工具、业务都在后端,花更多的资源和时间进行分析,更能产生价值。
基于这样一种情况,如果能在前端防护上取得更大的成就,例如更强的抗逆向和客户端环境检测能力防止来源数据伪造,反倒是能够实现价值差异化,提升后端的效率。Gartner发布的MARKET GUIDE FOR ONLINE FRAUD DETECTION里面有一个反欺诈模型,关于端点画像、行为分析和用户接口保护的三层,都需要依赖于前端的采集和生成Token的机制:
前面已经提到,现在不少企业由于自身需要已经在做人机识别,也有不少第三方的解决方案(通常打包在风控里)宣称可以识别Bots。然而,放眼望去,除非由于自身体量和业务需求的迫切性而能够有强大的技术团队或牛人支撑,很难把这一块做的比较好。自身经验、资源、团队能力有限的公司出于各种原因可能会选择外部解决方案帮助自己做业务安全。在全部可选的第三方方案中,大体上又能分为两类:具备前端拦截能力和只做采集用于后端分析的。这里的前端拦截不是说在浏览器或APP端不让用户发出请求,而是有一个简单的机制能快速判断请求是否为正常用户或脚本等工具发起,具备挑战/响应机制,非正常用户行为无法通过验证而不能走后面的流程。相比只做采集的类型,具备前端拦截能力的方案也具备后端分析能力但效率更高,因为首先能过滤大量无效请求、提高实施欺诈的成本。反过来讲,这一机制也会使得自身处于人机对抗第一线,需要不断迭代、演进产品以确保数据来源的可信度和Bots突破的门槛及成本足够高。
据不完全了解,前端安全做得比较好的第三方解决方案,即具备拦截能力并引起不同群中讨论、分析和尝试突破的,国内大概主要有以下几家。
瑞数信息:本地部署,网友评价前端安全集大成者,全流程人机识别,已知范围内反爬虫最强
极验:SaaS服务,交互安全市场第一,用于验证人机的滑块验证码被数万家企业和网站使用
数美科技:反欺诈解决方案,SaaS服务,有设备指纹、验证码等产品,最近有不少人讨论分析
顶象技术:SaaS服务(JS定期更新)或本地部署,风控产品有风控模型、设备指纹、无感验证
其余方案暂且不表,我的判断逻辑是,根据在不同博客、论坛、交流群的观察情况,无人讨论的方案或不能前端拦截、或防护和检测能力较弱,未能到达对抗层次。
相比国内很多公司以风控作为依托的情形,国外则有更多聚焦并明确声称Anti Bot或是Bot Management的方案,例如:Distil Networks、ShieldSquare、PerimeterX 、Unbotify。知名机构Forrester根据他们统计到的数据,做了一个Bot Management象限分布:
各公司评分情况及相关如下:
据笔者长期对国内外厂商官网、白皮书、博客等内容的对比、观察,发现国外对于Bots的接受度明显更高,且他们的方案较少将风控反欺诈和人机识别放到一起讲。个中原因略做推测如下:首先,国外(主要指西方国家)普遍IT建设成熟度高于国内,自建风控的比例更高;其次,对于薅羊毛、批量注册等场景虽然也都有,但相比国内要少得多,同一家公司面临但业务欺诈类型没有那么复杂,相对简单些;第三,西方国家的法律制度更完善,个人隐私保护等十分重视,整体有更多的安全预算和更高的对于攻击的重视程度;第四,人力成本普遍较高,自动化、机器人的概念更为大众所接受。
以上是对于人机对抗就其技术或市场情况的一些经验或看法,虽然笔者不断强调机器人、Bot、对抗的重要性,但并不想将讨论止于此。所有的技术手段都应服务于其业务价值,就人机识别而言,对工具流量都检测和拦截是一个重要部分,对业务威胁可视化和梳理则是基于此之上的一个重要里程碑,它能适当的量化所遭受的攻击、欺诈的威胁和潜在损失,帮助业务在发展过程中更好地规避不必要的风险以及获得更真实的用户访问数据。
一直很喜欢PerimeterX的一张图,虽然它并没有达到最终业务威胁可视化和量化的程度,但能很好体现作为一个产品在威胁呈现方面的能力:
最后想说的是,国内目前有一些传统安全公司或是创业公司也开始在模仿做一些防Bots的产品,希望他们能真正学到背后的理念和价值表达,而不仅仅是皮毛和形态。