黑产通过改定位绕过平台风控的事件无处不在。

出行平台上,借助改定位伪造虚假的司机出行记录,骗取平台“补贴”;

社交平台上,通过改定位为特殊位置,并利用“附近的人”功能进行色情引流;

营销活动中,利用改定位突破规则限制,获得地域性营销活动的参与资格......

近期,威胁猎人karma风险情报平台捕获到Fake Location改定位新款工具,工具适用于Android平台,可以通过Root环境对手机所处的位置进行模拟,并支持模拟时位置的快速切换,从而达到修改定位的目的。

对黑灰产而言,Fake Location成本更低、隐蔽性更强,无疑是天然的“作案工具”。

威胁猎人情报研究员在部分地图类应用和打车类应用中通过该工具进行地理位置篡改测试,均能篡改成功。如下是测试效果图:

进一步研究调查发现,Fake Location可以随意篡改系统地理位置信息,可被广泛应用于如下业务场景:

营销活动薅羊毛:电商、银行类App经常会在指定城市开展营销活动。配合Fake Location可以快速切换到目标城市,获得参与营销活动资格;

虚拟站街:通过Fake Location篡改地理位置信息,通过在社交软件设置虚拟定位,实现虚拟站街行为,吸引不明真相的社交用户,进一步实施色情诈骗等行为;

游戏外挂:借助Fake Location篡改地理位置信息,对一些依赖地理位置信息的App实施攻击行为,比较典型有宝可精灵,一起来捉妖这两款游戏,通过篡改定位,可以瞬移到精灵坐标处,严重破坏游戏平衡,不利于游戏业务健康有序发展。

可见,只要是依赖于地理位置信息的App业务场景,都是Fake Location的潜在攻击对象。

据有关新闻报道,2021年,多名不法分子利用公司货运平台漏洞,用Fake Location改定位工具进行虚假跑单来骗取平台赠送的优惠券金额差价,经缜密侦查,涉案金额达100万余元。

近期,威胁猎人情报研究员查阅Fake Location相关线报,在部分社交群聊中发现不少利用Fake Location进行攻击活动的讨论记录。

注:利用Fake Location进行攻击活动的群聊记录

一、Fake Location技术原理

Fake Location的基本原理,是通过“Hook”手段劫持LocationManagerService服务中的相关函数,达到修改定位的目的。

为方便开发者开发App,Android官方设计了很多系统服务给开发者调用。

在Android系统中,获取地理位置信息需调用Android系统的位置服务,而位置服务运行在包含了大量系统服务程序的system_server进程中,地理位置信息服务程序在system_server中的服务名为:LocationManagerService

Fake Location通过“Hook”手段劫持了LocationManagerService服务中的相关函数。当App向LocationManagerService发起获取地理位置信息请求时,被劫持的LocationManagerService向App返回预先设置的地理位置信息,通过这种方式完成地理位置信息篡改。

这也是Fake Location的特别之处。不同于市面上传统的改定位工具,通过劫持相关App(将定位信息注入到目标App)实现篡改定位,Fake Location则是直接劫持“系统位置服务”,因不在目标应用进程空间,更加隐蔽而难以检测。

二、Fake Location如何实施攻击?

1. Fake Location启动时释放恶意模块payload

经研究分析发现,Fake Location运行时会释放一些恶意样本到/data/data/com.lerist.fakelocation/files目录,其中较为重要的payload如下表所示:

2. 向system_server进程注入恶意模块payload

威胁猎人风险情报平台通过动态分析手段,对Runtime类的exec(用于执行shell命令)方法进行监测,可以看到payload注入过程大致如下:

3. libfakeloc_init.so被注入到system_server进程中,并加载hook模块

libfakeloc_init.so的主要功能是加载libfakeloc.so(hook模块),libfakeloc.so是一个apk文件,加载libfakeloc.so过程如下:

注:图为“调用injectDex的init方法”

Fake Location的核心功能都在libfakeloc.so这个apk文件中,libfakeloc.so加载后会执行类com.lerist.inject.fakelocation.InjectDex的init方法,在这个方法里,Fake Location添加了一些“系统服务”,从而可以像调用LocationManagerService系统服务那样调用这些服务,用于跨进程通信。

4.libfakeloc.so劫持LocationManagerService对象的多个函数,其中就包括getLastLocation函数

在创建服务对象内部,libfakeloc.so会劫持系统服务类的关键函数,完成地理位置篡改。以MockLocationService为例,在其启动过程会对LocationManagerService服务部分和位置信息相关的函数进行劫持操作。函数列表如下:

5.在劫持的getLastLocation函数中,判断是否需要改定位

在劫持的getLastLocation中,首先判断是否需要改定位(当有用户使用了Fake Location的位置模拟功能时则需要篡改)。

如果需要改定位,直接调用getLastLocation_bak(getLastLocation_bak是原getLastLocation的备份),构造一个Location对象(伪造的位置信息),填充伪造的经纬度信息并返回,达到篡改位置信息目的。如果不需要改定位,则调用原本的getLastLocation函数并返回正常的地理位置信息。

三、风险处置建议

未来,将有越来越多的恶意工具通过劫持系统服务进程的方式来伪造数据,在实现预定目标的同时,规避App的风控检测。

针对这些更加隐蔽、难以检测的改定位工具,企业可以:

1)通过检测特征文件判断是否安装Fake Location。Fake Location并没有直接劫持目标App,所以在目标App里面不会留下异常特征,检测较为困难,但是其运行过程会释放一些特征文件,因此可以通过检测特征文件判断是否安装Fake Location;

2)从系统服务的角度来检测Fake Location。Fake Location注册了自定义的系统服务,也可以从系统服务这个角度来进行检测,判定是否安装Fake Location。

面对改定位、改机绕过等日渐猖獗的黑产技术,企业很难从单一技术角度与之正面对抗。

威胁猎人的设备风险情报,针对企业面临的过人脸、篡改定位、改机、多开等设备风险,及时监测并分析黑灰产在设备攻防对抗上使用的最新工具和资源,提取攻击模式和监测特征,助力企业及时进行针对性防御。

声明:本文来自威胁猎人Threat Hunter,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。