业务风控方除通过手机号、IP资源部署风控策略外,还会结合设备维度定制更加强有效的防控策略,因此黑产会通过各种方式和工具伪造移动设备信息。改机工具、模拟器和各种hook框架都是黑产常用的作案工具。
设备(手机、电脑等)是互联网风控体系中的重要环节。IP和手机号都是运营商的资源,很多关键的风险属性和数据只有运营商才能掌握。而设备掌握在用户自己手中,互联网平台可以获取设备上的各种信息用来做风控。设备数据的维度是相当丰富的,设备类策略规则运用得当能够起到非常好的防护作用。为了对抗设备端的风控技术,黑产也在不断地创新各种技术,改机工具就是其中值得注意的一类。
互联网业务平台的营销活动,一般都有以下类似的客户条款。
· 每个注册账号仅限参与一次。
· 每个手机号仅限参与一次。
· 每台设备仅限参与一次。
当然这些条款不能靠客户自觉来遵守,需要做到后台限制策略里。前文提到,黑产可以通过接码平台来获取大量的虚假手机号,进而注册大量的垃圾账号。那么如何使用少量真实设备生成大量的虚假设备呢?
互联网业务平台通过设备上的一些信息来判断,这就是设备指纹。只要通过技术手段修改设备信息,理论上就可以绕过设备的限制,于是改机工具应运而生。
如图2.6所示为008神器改机工具的介绍,如果在风控系统中使用诸如手机号、MAC地址信息来进行简单防控策略,基本上都会被这款改机工具绕过。如果应用程序没有足够的终端对抗能力,黑产就轻而易举地伪造出各种虚假的设备信息,用一台手机生成无限多个设备指纹。当然改机工具也不是万能的,设备指纹还是能够通过技术手段识别出来的,这是攻防对抗的博弈。根据对改机工具的逆向分析研究,一些高级的改机工具已经有了针对设备指纹的对抗。
图2.6 改机工具
如果你希望在不root的情况下同时开启多个相同的应用程序,就可以使用多开工具。多开的工具在Android应用市场上架非常多,如LBE平行空间、360分身大师、多开分身等(见图2.7)。多开工具一般自带修改系统参数功能,甚至有个别多开工具还针对设备指纹厂商进行了特殊处理。
多开工具按照技术原理,大致可以分为三大类:基于virtualAPP开源框架、基于DroidPlugin开源框架和重打包。也有开发者将virtualAPP和Xposed结合,开发出一套virtualXposed框架,能够在多开环境下灵活使用Xposed插件。多开工具因为不需要root就能改机,倍受“小白”黑产欢迎。
图2.7 多开工具
Android root和iOS越狱(jailbreak)指的是操作系统管理员的权限状态,即普通应用拥有系统管理员权限。大部分的手机操作系统,出于安全的考虑,是不允许应用程序提升权限的。当然也有些Android操作系统(如MIUI开发版)本身允许应用程序申请root权限。Android root和iOS越狱一般利用的是操作系统提权漏洞。例如,CVE-2017-8890是一个影响Linux Kernel 4.10.15之前的所有内核版本的double free漏洞,可以利用该漏洞获取Android 7手机的root权限。Android操作系统常用的root工具有kingroot、360root、root精灵等,这些工具实际上就是尝试利用各种提权漏洞,最终获取root权限并安装权限管理工具。因此低版本root和越狱的成功率较高。iOS操作系统上的越狱工具种类繁多,Hexxa plus支持iOS 13.1,Chimera 和Unc0ver支持iOS 12.4。前不久爆出的iOS bootrom硬件越狱漏洞,更是影响了iPhone XR之前版本的iPhone 手机,况且苹果公司无法通过更新系统版本的方式修复。root和越狱操作是有一定的风险的,很有可能造成手机系统瘫痪。需要说明的是,root和越狱并不意味着设备一定是黑设备,只是可能性较高。
Xposed是一款Android操作系统常见的hook框架,可以直接从互联网免费下载,安装前需要先root手机。基于Xposed框架,开发者可以非常方便地修改Android操作系统的任意Java代码,如自动抢红包、修改步数、消息防撤回、一键新机等。绝大部分改机工具都使用了Xposed框架,如微X模块、QX模块、幸运破解器、fakegps等。
CydiaSubstrate(原名为MobileSubstrate)是一款iOS操作系统常见的hook框架,越狱时会同时安装该软件。基于CydiaSubstrate框架的MobileHooker,开发者可以非常方便地替换iOS操作系统的Objective-C/C/C++函数。几乎全部的改机工具都是通过CydiaSubstrate实现的,使用量较多的有NZT、AWZ、iGrimace等,iOS操作系统的改机工具大部分都是要付费的。
Frida是一款功能强大的轻量级hook框架,支持Android操作系统和iOS操作系统。它主要提供了功能简单的Python接口和功能丰富的JS接口,使得hook()函数和修改ELF等操作可以通过简单编程实现。Frida API接口包含了主控端与目标进程的交互接口,可以用于动态调试,即时获取信息并进行修改。使用Frida可以获取进程的信息(模块列表、线程列表、库导出函数),可以拦截指定函数和调用指定函数,可以注入代码,图2.8展示了使用Frida注入twitter并使用所有recv或read开头的函数,操作方便。如果你没有root手机或不想写hook代码,你也可以选择objection。objection是一个基于Frida开发的命令行工具,它可以很方便地hook Java函数和类,并输出参数,调用栈,返回值。
图2.8 Frida注入twitter并使用所有recv或read开头的函数
Android是开源操作系统,开发者可以自己定制rom。一些不良动机的开发者,开发出可以随意修改手机操作系统参数的rom称为“硬改”。这种改机方式对于开发者难度较高,但在操作系统framework层面做了改动,APP是完全无法检测的。从目前收集到的情报和数据分析来分析,确实有一部分群控和云真机在使用定制rom的方式,手机自带操作系统打包出售。那么这些硬改的设备参数是如何生成的呢?硬改的设备可以在本地随机生成设备参数,也可以从云端设备库动态下发其他设备的真实参数。
脱机挂是指把原有客户端代码逻辑使用程序模拟执行。脱机挂开发者需要先对客户端代码逻辑进行逆向和破解,然后使用自己编写的代码实现相应逻辑。脱机挂能够实现短时间的大批量请求,但制作脱机挂的门槛也是所有作弊手段中最高的。说起脱机挂,就不得不提易语言和精易论坛。易语言是一种以中文作为程序代码的编程语言,其易上手、门槛低的特点,使之成为大多数外挂的编程语言。最近还推出了e4a框架,可以使用易语言开发Android应用。如图2.9所示,精易论坛是软件破解者和黑产工具的集中营,它具有各种封装好的破解库和现成工具线上担保交易。
图2.9 黑产社区的帖子
由于改机工具对抗激烈,2019年黑产将作案手段升级为了iOS设备备份恢复和抹机恢复。
备份恢复是对iOS设备某一特定时期的数据进行备份,以备在需要时将设备恢复到某一时期的操作。例如,在安装某一应用程序之前先进行备份,然后使用完应用程序后进行备份还原,就会将设备还原到备份时的状态,而且一些系统的属性如idfa、idfv等信息会发生变化。如图2.10所示,经过测试使用某助手进行备份还原的时间成本仅1分钟,并且可以批量操作。
抹机恢复就是将设备完全重置,恢复成出厂设置,如图2.11所示。在这个过程中,用户的所有数据信息都会被清理,即抹机后就是一个理论上的新设备,经过测试使用某助手抹机的时间成本在3~5分钟,并且可以批量操作。
图2.10 备份/恢复工具
图2.11 抹机工具
近两年,手机模拟器的新技术层出不穷。一是各种Android模拟器获得了Windows、Linux、Mac平台的支持,二是Android云模拟器的兴起,三是iOS模拟器的出现,四是在Android手机上运行模拟器。
说起云模拟器(见图2.12),就不得不提红手指和河马云手机。在ARM主板上同时运行多个Android操作系统,然后通过远程控制工具实现近似于本机的用户操作,还可以实时分享给其他人观看。这种SaaS模式可以实现成本最小化。在平台租用一台模拟器,每天的平均成本不到1元。实际测试发现,模拟器上预装好了各种游戏外挂、改机工具,操作非常流畅,玩游戏没有任何卡顿。
图2.12 云模拟器
2019年,市场上新出现了iOS模拟器,可谓是新奇产品,如图2.13所示。iOS模拟器目前已知的有黑雷和果仁。iOS模拟器其实是在Windows环境中下载一个vmdk格式的MacOS虚拟镜像,然后在MacOS中使用Xcode里的iOS模拟器。iOS模拟器不能直接运行ipa文件,需要经过专用工具转换。
虚拟大师(基于Anbox)可以在Android设备上运行一个独立的Android模拟器,模拟器可以独立地运行各种Android APP。这个模拟器并非系统本身的镜像,由于apk打包了一个ROM(包含system.img和data.img),所以模拟器有自己独立的版本和各项属性。在Android手机上流畅运行模拟器,对于作弊者来说非常方便。值得一提的是,模拟器已经预装好了各种作弊工具和软件,如图2.14所示为虚拟大师的界面。有意思的是,红手指和虚拟大师的开发是姐妹公司。
图2.13 iOS模拟器
图2.14 虚拟大师的界面
国外还有很多专业的公司售卖付费浏览器软件,如图2.15和图2.16所示,Antidetect和Multilogin 等工具通过修改Chrome 和Firefox内核,自定义浏览器对象参数,达到伪造新浏览器的目的,此外还提供自动代理、群控、cookie 机器人、设备标准库等功能,可视化界面方便用户操作,功能十分强大。
图2.15 Antidetect 工具
图2.16 Multilogin 工具
selenium、plantomJS、nightmareJS、puppeteer 都是Web 应用程序的自动化框架,它们利用浏览器驱动实现自动化操作网页,支持无界面模式(headless)。如图2.17所示,使用者通过编写简单的脚本即可操作浏览器,任意更改浏览器属性。这种作弊方式不同于协议破解和JS 引擎模拟执行,因为它是在真实浏览器环境下的操作,原有的JS 代码会被完整执行,因此更难检测。并且headless 模式在内存消耗、运行时间、CPU 占用上都有一定的优势。
在移动端也有很多自动化脚本工具,如按键精灵、触动精灵等。其原理分为两类:一类是通过Android操作系统的辅助功能服务,不需要root;另一类是通过root 权限直接注入事件。在一般情况下,自动化脚本工具会配合群控和改机工具配套使用。
图2.17 nightmareJS 代码示例