【Qunar风控安全产品的探索之路】
0x01-前言
本文主要介绍反爬风控相关基础安全产品演变过程中的思考。
文章以总-分的形式讲述,主要分为三部分:(1)产品演变;(2)环境检测;(3)检测分析。
希望其中一些思考能够给大家带来启发。
懂的不多,做的太少。欢迎批评、指正。
0x02-基础安全产品
产品演变
一、问题
在19年之前Qunar的反爬虫、反作弊等场景是业务线各自为战。作为机票反爬最早期的参与者之一,在负责机票App反爬期间就有一个问题一直在困扰我,我的工作一直在不断、重复地编写识别策略,工作量的多少完全取决于爬虫量的多少,防御完全陷入被动局面。是否有办法从根本上解决这类重复性劳动问题。
二、例子
举个例子。下图中蓝色(CRITICAL)代表已识别为疑似用户。黄色(ATTACK)代表已识别为异常用户。
每一次蓝黄交替,就代表一次攻防对抗,就意味着需要进行一次策略的调整。策略例子:
(1)发现某个参数拼写错误;
(2)发现某个设备信息缺失;
(3)发现某个账号对应的IP数量过多。
类似的一次策略调整就需要投入0.5-1pd的人力进行代码编写、发布和验证。
三、思考
重复性劳动注定会使团队陷入被动忙碌且无积累的状态,如何破解这一局面?
比较幸运的是,我在刚毕业的第一年在负责智能打码平台时有研究过几大安全厂商的三代验证码,在此过程中使我具备了一定的逆向技能,让我在解决这一问题上有些新的想法和思路。
四、解决
从上述思考的两点出发,“本质”其实就是将问题特征梳理出来,“作弊门槛”的提升方式就是找到问题背后的原理。
以反爬场景为例
我大概将爬虫特征分为四类。
1、问题特征分类一
(1)具有一定规模的数据才有价值;
(2)抓取设备出于成本考虑,需要控制设备数量。
结合以上特征点,我们需要解决的问题是:如何标记真实的设备。
2、问题特征分类二
(1)防护代码会被分析;
(2)安全数据会被篡改。
结合以上特征点,我们需要解决的问题是:如何保证数据的真实性。
3、问题特征分类三
(1)机器自动化抓取;
(2)拦截数据与模拟请求。
结合以上特征点,我们需要解决的问题是:如何更高效准确地识别异常设备环境。
4、问题特征分类四
(1)容器外模拟请求。
结合以上特征点,我们需要解决的问题是:如何识别脱离容器请求。
五 环境检测
因为这中间涉及到的点非常多,篇幅有限,我觉得可以拿比较有意思的安全产品中的环境检测来详细聊聊。
1、作弊设备分析
通过作弊设备分析应用外部运行环境风险。
我把作弊设备大致分为三种:真机、模拟器以及云手机。
真机-应用多开
通过修改应用名称或运行于多开容器中,使得可以在同一台设备内同时运行多个相同的应用。(常见多开应用有VirtualApp、小米分身等)。
模拟器
通过软件模拟移动设备硬件操作,使得App可以直接运⾏在PC上。(常见模拟器有腾讯模拟器、夜神模拟器等)
云手机
通过ARM服务器以及虚拟化技术,在云端虚拟的原生手机实例。(常见有百度云手机、红手指云手机等)
2、作弊方式分析
作弊方式分析应用内部被篡改的风险。我把作弊方式大致分为两种:篡改和非篡改。
重打包
重打包是指将应用反编译后,修改或添加代码后从新打包,将其安装至设备上,应用运行时就会被加载。
HOOK
当程序在执行某段代码时,控制其执行恶意代码。这种篡改就被称为HOOK。
自动化工具
基于Google/苹果发布的自动化测试框架,进行一些列如点击、滑动、键盘输入等操作。
0x03-思考
(1)以攻促防。从业务安全场景出发,从作弊者角度思考问题,从数据、原理发现解决问题。不断进行攻防对抗,才能使研发人员和系统不断成长。
(2)真人化。真人化的演变过程是从协议破解到模拟器,再到真机,目前正在朝真人众包方向发展。如何定义与识别真实用户和作弊者是新的难题。