首页 > 其他分享 >聊聊虚拟定位工具新宠儿:AnyGo的原理与识别

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

时间:2023-08-02 15:33:08浏览次数:45  
标签:定位 iOS 通过 新宠儿 虚拟 GPX 聊聊 AnyGo

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

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

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

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

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

AnyGo 简介

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

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

AnyGo 模拟定位

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

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

模拟跑步

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

模拟驾车

使用 Xcode 实现 iOS 虚拟定位

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

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

聊聊虚拟定位工具新宠儿:AnyGo的原理与识别_位置服务_04

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

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


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的原理与识别_位置服务_06

聊聊虚拟定位工具新宠儿:AnyGo的原理与识别_位置服务_07

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

聊聊虚拟定位工具新宠儿:AnyGo的原理与识别_位置服务_08

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

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

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

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

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

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

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

标签:定位,iOS,通过,新宠儿,虚拟,GPX,聊聊,AnyGo
From: https://blog.51cto.com/u_15757911/6938874

相关文章

  • 聊聊时下火热的 AIGC 与 Web3
    近期,AI已经开始影响到了音乐行业,在B站搜索“AI孙燕姿”,从流行歌曲到摇滚,从周杰伦到王力宏,没有AI孙燕姿驾驭不了的歌曲。有用户评论:“我感觉AI没把歌手干掉,先把翻唱干掉了。”AI走红“乐坛”的时间不足一个月,而AI绘画对设计师的影响可不止一个月。自从AIGC诞生以来......
  • C++ 算法进阶系列之再聊聊动态规划的两把刷子
    1.前言递归和动态规划是算法界的两个扛把子,想进入算法之门,则必须理解、掌握这两种算法的本质。一旦参悟透这2种算法的精髓,再加上对树、图等复杂数据结构的深入理解,可以解决大部分的算法问题。本文通过几个典型案例,再次聊聊动态规划算法。其实动态规划算法也就2把刷子。找到......
  • 聊聊List、Set、Map
    1.List哪些实现类JavaList一共三个实现类分别是ArrayList、Vector和LinkedList。(1)ArrayList是最常见用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要将已有数组的数据复制到......
  • 聊聊日志聚类算法及其应用场景
    阅读《基于FlinkML搭建的智能运维算法服务及应用》一文后,对其中日志聚类算法有了些思考。概述日志聚类,简而言之是对海量日志的分析;其分析处理链路可以分为如下流程:日志采集->预处理->分词和特征表示->聚类和标注。算法模型分析针对如上的链路流程做一个拆分叙述。日......
  • 聊聊你们关心的视频号
    阅读本文大概需要2.8分钟。最近很多朋友和读者都问起视频号,那么作为微信视频号第一批受邀开通作者,我想,多少有点话语权给大家聊聊这个话题。1. 啥是视频号呢?还记得今年1月份微信公开课龙哥录制的那个视频么?视频里龙哥说,不是所有人都有能力开个公众号,写长文内容的,但是每个人都有......
  • 聊聊代码之外的事--贪婪与毁灭
        遏制自己内心的知识优越感,才能让自己发自内心的去尊重他人,避免狂妄自大,才能让自己不断的丰富自己的内心。所有通过捷径所获取的快乐,无论是金钱、性还是名望,最终都会给自己带来痛苦。人其实很难抵制诱惑,人只能远离诱惑,千万不要高看自己的定力。必须接受批评,因为它可以帮......
  • 聊聊我认为的分布式、集群实现关键点
    基于常见的中间件(Mysql、ElasticSearch、Zookeeper、Kafka、Redis)等分布式集群设计的机制,自己总结了在在集群设计过程中需要考虑的通用问题。节点通信机制主节点的增加、删除、通信机制。路由算法即数据路由到哪个节点的策略机制。在集群内有多个节点,数据该路由到哪个节点存......
  • 细节决定成败,聊聊JS的类型(下)
    讲完了基本类型,我们来介绍一个现象:类型转换。因为JS是弱类型语言,所以类型转换发生非常频繁,大部分我们熟悉的运算都会先进行类型转换。大部分类型转换符合人类的直觉,但是如果我们不去理解类型转换的严格定义,很容易造成一些代码中的判断失误。其中最为臭名昭著的是JavaScript......
  • 聊聊使用错误采集平台sentry踩到的坑
    前言sentry简介Sentry是一款专业的企业级错误跟踪和日志分析工具,旨在帮助开发人员、管理员和产品经理跟踪、分析和解决应用程序错误和性能问题。Sentry的主要功能和优点包括:错误跟踪:Sentry可以跟踪应用程序中的错误,并将它们记录下来,以便开发人员能够快速定位和解决问......
  • 聊聊Zookeeper技术内幕之客户端与SetData请求处理
    从客户端会话创建到网络连接、请求处理,简单的叙述下流程与逻辑客户端客户端是开发人员使用ZooKeeper最主要的途径,ZooKeeper的客户端主要由以下几个核心组件组成。ZooKeeper实例:客户端的入口。ClientWatchManager:客户端Watcher管理器。HostProvider:客户端地址列表管理器(管理......