geetest_logo

背景:基于位置服务 LBS「Location Based Services」的应用非常多,已经融入到生活中的方方面面。

市面上已经有很多基于位置服务的应用场景,如运动品类应用基于地理位置生成运动轨迹,企业办公应用基于定位信息进行打卡,游戏品类应用基于位置信息开发区域排名,电商品类应用基于位置发放区域性优惠券等等。


在黑灰产嗅探到背后的商业利益后,通过伪造定位信息来达到自己的目的。为了进一步降低技术门槛和对抗难度,虚拟定位工具应运而生。


在以前 iOS 系统上需要越狱系统或通过篡改技术修改 CoreLocation 实现虚拟定位,不仅增加了黑灰产自己的复杂度和设备成本,也为检测带来了更多的检测特征。为了解决这痛点,黑灰产越来越多开始使用AnyGo、iAnyGo、爱思助手等工具进行位置伪造。


一款运动产品的工作人员找到极验,表示他们发现越来越多的代刷在使用AnyGo进行位置伪造,向我们寻求解决办法。在帮助客户解决问题之前,我们先来了解一下AnyGo是一款怎样的虚拟定位软件。


AnyGo简介


AnyGo 利用 Xcode 提供通过 GPX 文件的定位模拟服务,而无需在 iOS上安装 App 或者需要 iPhone 系统越狱。下面是 AnyGo 界面截图:


AnyGo 模拟定位


AnyGo 通过 GPX 文件,不仅仅可以模拟定位到某一个位置,且可以根据场景模拟运动轨迹,并对全局系统有效:


模拟跑步

模拟驾车


使用 Xcode 实现 iOS 虚拟定位


既然AnyGo是使用的一种Apple开发中的测试服务,那么我们通过 Xocde 动手操作一下吧。

首先在 Xcode 开启Debug的 Simulate Location,选定位置或通过GPX文件修改定位信息,即可完成虚拟定位的主要操作。



Simulate Location 是通过GPX文件对虚拟的定位进行描述的。其中GPX是一种为应用软件设计的通用的全球定位系统的XML格式数据,可以用来描述点、路径和轨迹。



AnyGo的工作原理


为了弄清楚AnyGo等同类型的虚拟定位工具的原理,我们下面需要了解 com.apple.dt.simulatelocation 服务和 libimobiledevice开源库。

AnyGo 通过跨平台开源库 libimobiledevice 提供的 Wi-Fi 或 USB通讯能力与 iOS 设备连接,并向设备上的lockdown进程发送开启 com.apple.dt.simulatelocation 服务命令。该服务会使用指定的 GPX 文件进行系统全局的虚拟定位,从而让系统上的所有应用使用虚假的定位信息。以下是部分 libimobiledevice 源码:


#define DT_SIMULATELOCATION_SERVICE "com.apple.dt.simulatelocation"

if (lockdownd_start_service(lockdown, DT_SIMULATELOCATION_SERVICE, &svc) != LOCKDOWN_E_SUCCESS) {
    lockdownd_client_free(lockdown);
    idevice_free(device);
printf("ERROR: Could not start the simulatelocation service. Make sure a developer disk image is mounted!\n");
return -1;
}


lockdown


lockdown 是 iOS 设备上一个开机启动的守护进程,用于 iPhone 进程与系统服务的通讯,以root权限运行,其配置文件声明位于/System/Library/LaunchDaemons/com.apple.mobile.lockdown.plist路径下。未来我们将进一步分享相关内容。


如何对AnyGo检测


如何对这类虚拟定位进行识别?其实,通过 iOS 系统提供的 API 便可进行初步的检测。

在 iOS 15+,系统在 CLLocation库提供了isProducedByAccessoryisSimulatedBySoftware 属性来识别通过GPX进行的虚拟定位。


未篡改获取定位信息返回的结果:



使用 GPX 修改定位后返回结果:



可以看到已经实现了虚拟定位,并且 isSimulatedBySoftware 已经命中。此外我们也可以利用 AnyGo的原理进行识别。


最终该运动品类客户通过我们的产品解决了他们迫在眉睫的问题。


当然除了对虚拟定位的识别外,做好后续的代码对抗也是必不可少的。极验设备验是极验近期推出的一款风控产品,通过三维复合和弱特征归因算法等生成了设备唯一标识符,可以检测不限于虚拟定位、模拟器、篡改、代理、多开、越狱等多种风险,为企业的安全前行保驾护航。


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