聊聊虚拟定位工具新宠儿:AnyGo的原理与识别

市面上已经有很多基于位置服务的应用场景,如运动品类应用基于地理位置生成运动轨迹,企业办公应用基于定位信息进行打卡,游戏品类应用基于位置信息开发区域排名,电商品类应用基于位置发放区域性优惠券等等。在黑灰产嗅探到背后的商业利益后,通过伪造定位信息来达到自己的目的。为了进一步降低技术门槛和对抗难度,虚拟定位工具应运而生。

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

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

AnyGo 简介

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

聊聊虚拟定位工具新宠儿:AnyGo的原理与识别_第1张图片

AnyGo 模拟定位

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

聊聊虚拟定位工具新宠儿:AnyGo的原理与识别_第2张图片

模拟跑步

模拟驾车

使用 Xcode 实现 iOS 虚拟定位

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

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

聊聊虚拟定位工具新宠儿:AnyGo的原理与识别_第3张图片

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

聊聊虚拟定位工具新宠儿:AnyGo的原理与识别_第4张图片

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进行的虚拟定位。

聊聊虚拟定位工具新宠儿:AnyGo的原理与识别_第5张图片

聊聊虚拟定位工具新宠儿:AnyGo的原理与识别_第6张图片

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

聊聊虚拟定位工具新宠儿:AnyGo的原理与识别_第7张图片

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

聊聊虚拟定位工具新宠儿:AnyGo的原理与识别_第8张图片

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

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

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

添加Eva微信:Geetest_1024,加入极验读者交流群

你可能感兴趣的:(cocoa,macos,objective-c,安全)