Android设备风控知识继续深入~
发表于:
2022-11-16 17:00
15646
已经有很久一段时间没更新文章了,最近忙于研究,好不容易腾出时间来发这篇文章。因为前几篇文章写得过于潦草(个人原因),以致于广大雪友们跟我反馈说‘不够精辟’,于是我想腾出这个时间写一篇比较完整详细的文章来总结解答一下。 问题1:既然最终使用的设备控制权在用户(黑产)手上,那设备风控到底还有什么意义?1、设备风控不仅仅包含设备指纹这一项,还有例如对设备是否ROOT、设备是否被修改(Xposed/Frida/定制ROM)、设备运行状态、设备网络状态 等等更全面的信息采集。
2、设备指纹在高强度对抗的情况下,确实意义不大。从定制Hook框架到定制ROM,以致于到了更底层Linux内核的修改后,设备指纹其实已经失去了原本的意义。但不可否认的是,设备指纹对于增加黑产对抗难度和某些特定场景的标识,还是具有一定作用的。 任何一层均有黑产作案的可能性。
3、从实际业务出发点来看,很多的地方是需要依靠设备风控来实现的。最常见的场景莫过于广告和电商,这种场景下可以采集用户的信息比较少,也不可能采用交互式的风控方法(你总不可能用户看个广告让人家输个验证码吧 -_-),就只能依靠于设备风控做对抗。
问题2:在高强度对抗的场景下,设备风控该怎么做?
在上升到对ROM和Linux内核的修改以及专门针对App风控采集的行为去分析的对抗强度后,从理论上来说貌似App风控系统从用户端采集的如何参数都已经不可信了,因为从理论上来说一切可以采集的参数均是来自于系统接口、内核接口以及特定的行为痕迹,综上所述一切参数在特定情况下都是可伪造的。
在设备风控这个领域,从最初简单的设备指纹、存储ID到本地文件这种简单方法,到后来出现的采集很多ID参数云端识别,再到现在的基于设备的非标识性参数进行关联分析的方案,黑产和风控的对抗是一步步不断进化和不断迭代的过程。
问题3:什么是基于非标识性参数的关联分析识别?
所谓的基于非标识性参数的关联分析识别,就是基于多个不带标识类的参数进行配合识别的技术,行业内常称为‘关联检测’。
3.1 什么是非标识类参数?
举个粒子,IMEI、MAC地址、Android ID这一类本身对设备的具有唯一性、标识性的参数,称为标识符类参数,或者称为唯一标识码。非标识类参数就是除了上述类型以外的,不具有唯一性或者标识性的设备参数。
1
2
3
4
5
常见的非标识性参数:
通用:网络类型(WiFi
/
4G
/
3G
)、WiFi接入点名称(Wifi SSID)、移动网络信息(运营商、接入点名称)、GPS
/
基站定位、电池电量信息、文件系统信息(空间大小)、内存大小
Android特有:boot_id、存储分区大小
/
inodes
/
block数量、getPackageInfo()
-
>firstInstallTime、设备名称
3.2 怎么关联分析?
理论原理:
1.假设一台设备的IMEI和MAC地址被人为抹去修改了(数据库中无法找到这个imei曾经存在过),但是数据库中有一台设备的bootId、电池电量、GPS定位信息与这个数据高度重合了,是可以判定为同一台设备 。 2.基于假设1出现另一台基于标识性参数去识别而无历史数据的手机,并且数据库中也无其他数据能和该设备数据重合,则判定为新设备。 3.基于概率学理论,只要你采集的可比对参数越多,那么同一台设备重合性就越大,相应的不同一台设备重合的可能性就越小。所以假设1和假设2都可以基于一个固定的重合度的阈值,通过程序来计算是否达到阈值而判定是否重合 。
基于以上理论大家应该就能很好的理解该方法的原理,其实无非就是尽可能的采集更多的参数,在云端生成设备指纹的时候把该设备指纹的数据存储起来,在下一次遇到没有标识性数据的时候,则采用对比非标识性数据的重合度的。
来自参考:《知物由学 | 从应用端到服务端,设备指纹生成算法大变革》 --网易
3.3 关联检测的意义在于什么?
随着Google对Android的隐私权限管理的一步步收紧,未来从Android端能够采集的标识性参数将会越来越少,加上本身iOS端就没有多少可以采集的标识性参数,未来设备风控将会逐步转向到基于非标识性参数的关联检测方向中去。
安卓10后的全新权限控制框架:
而且目前现有的关联检测还仅仅是停留在固定算法判定的简单模式下,如果有机器学习/深度学习这类能力的人,完全可以通过引入AI模型去代替重合算法,做出更强的识别方式。
结语黑产对抗是一个不断更新迭代的过程,要用创新的思维去看待问题,才能使自己不断进步,固步自封只会让自己立于尴尬之地。如有更多问题,也可以联系我Q:2928455383
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)