数据, 术→技巧, 研发

APP改机工具在黑产中的应用

钱魏Way · · 496 次浏览

APP黑产简介

随着厂商的业务体系越来越庞大,各类优惠活动的次数相应的也越发频繁,尤其是一些有“新用户”限制的活动,导致黑灰产从业人员需要更多的新设备获取利益,而改机工具可以解决黑灰产在移动端的设备成本问题。改机工具通过劫持系统函数,伪造模拟移动端设备的设备信息(包括型号、串码、IMEI、定位、MAC地址、无线名称、手机号等),能够欺骗厂商在设备指纹维度的检测。改机工具会从系统层面劫持获取设备基本信息的接口,厂商app只能得到伪造的假数据。

改机工具应用场景举例:

  • 批量注册账号:通常针对某一厂商,每一部手机能够注册的账号数量是有限的,通过伪造新的设备指纹就可以达到单部手机的复用,进而批量注册账号;
  • 还原账号关联的设备信息:越来越多的厂商会对账号的登录地点、联网状态、设备标识进行检测,以判断是否是用户的常用设备。黑灰产的应对方式是将改机工具的备份数据连同账号一起销售,买家只要和卖家使用同一款改机工具,将数据导入就可以还原注册时的场景,降低被封号的概率;
  • 伪造数据:如通过虚拟定位参加有地点限制的活动。

黑产三把斧:

作弊方式&防护策略:

作弊类型 作弊场景 防护策略
匿名IP、数据中心 使用VPN、Proxy server、Data Center等手段隐藏实际的IP地址上报数据 建立IP、设备ID黑白名单库监督学习模型,结合历史数据,动态实时拟定出入库条件
点击泛滥 短时间内上报大量相同IP地址的点击数据 根据设置的判断阈值,按天计算单个IP的点击次数
点击劫持 间谍App或恶意插件监听Device App list,在App激活前立刻上报点击抢归因 根据平均安装时间(MTTI)判断该点击是否劫持自然量或非本渠道推广量
Android分包劫持 Android应用商店或恶意软件引导用户下载非目标app 结合渠道包channel id与点击内携带信息的关联性,判断是否为劫持
模拟器、设备工厂 使用模拟器伪造激活;真机反复重置设备ID或抹机,伪造‘新设备’刷量 SDK判断device id是否被重置,并上报多维度的系统硬件信息,后端离线积累数据判断是否为刷量行为
SDK报文劫持 对SDK在客户端发出的事件报文进行抓包或反编译,获取报文内关键参数进行篡改或伪造 SDK端加固加密算法;对报文上报的源IP校验
IP黑名单库防护 刷量公司或渠道,购买大量IP,利用机器程序同时帮助多个渠道伪造不存在的用户,大量报送点击/激活。有些公司也会应用VPN切换IP,控制数据特征不会在某一段时间内密集,但是这类作弊从长期历史数据来看,与正常IP是有差别的。 基于作弊IP的数据特征并结合不同作弊场景,制定多个策略进行交叉防护,将所有数据特征符合作弊特征的IP加入到黑名单库。在黑名单库内的IP,发生的点击都将标记为异常。同时将每个IP的历史数据表现考虑到策略中,以达到识别的精准性。例如作弊渠道使用一个IP作弊一段时间后弃用,则这部分IP将会出黑名单库

APP改机软件

Android和iOS都有很多相应的改机工具。Android改机大部分都基于Xposed框架,需要root;iOS大多基于Cydia框架,需要越狱。

当前市场上常见的改机工具市场占比如下:

针对Android系统的主流改机工具功能对比:

针对iOS系统的主流改机工具功能对比:

Android改机工具iGrimace简介

iGrimace工具执行流程

修改地理位置

设置定位。在方法:public void setLocationToHere(View view)处设置定位:

获取指定位置:在方法:public void getLocationData(double old_lat,double old_lng)获取数据:

具体原理:

  • 通过gcj02ToBd09获取经纬度(国测局坐标转百度坐标)
  • 再利用高德地图的接口:mMapView.getMap().moveCamera设置获取的经纬度
  • 再使用getWifiData(double lng, double lat)根据经纬度获取WiFi数据
  • 通过URL请求:getUrl(System.currentTimeMillis(),WifiApiUtils.caculateCheckString(body.get(“body”).toString()))获取当前位置是否有免费WiFi。
  • 再使用getCellLocation(double lng, double lat)确定当前设置位置的基站运营商信息,其内部使用:getApplicationContext().getSystemService(“phone”)).getSubscriberId().substring(0,5)获取IMSI,根据IMSI判断基站运营商,比如编码46007、46002为中国移动,46001为中国联通;
  • 如果getWifiData和getCellLocation都获取正常,接下来修改位置才会成功。

伪造手机号

伪造联通、移动手机。在方法public void setOperatorInfo()伪造手机号:

具体原理

  • 通过:this.queryOperatorMnc获取MNC;
  • 根据MCC判断基站运营商信息,将其写入SD卡根目录下名为igrimace-operator.conf的配置文件中;
  • 支持以下号段:

修改设备信息

修改电话信息、WiFi信息、传感器、媒体和存储、应用模拟、系统设置模拟、自定义、自定义安卓版本在方法:handleLoadPackage(LoadPackageParamlpparam)内完成。读取配置文件:

利用Xposed注入:

开始hook:

具体原理:

  • 读取SD卡根目录下的配置文件;
  • conf保存需要被hook的app:

  • igrimace-operator.conf保存ICCID、运营商、手机号、MNC、IMSI:

iOS改机工具AWZ、ALS简介

爱伪装(AWZ)是国内最新支持iOS全系系统的一键新机、全息备份、位置伪装、ASO辅助工具,手机一键新机,轻松修改设备参数,功能定时更新,多重保障软件稳定运行,为用户提供更好体验。为iPhone/iPad提供反越狱检测,修改系统序列号、型号、系统版本、运营商、地理位置、MAC、UUID、IMEI、IDFA、SSID应用全息备等一系列强大功能。常用于iOS上的推广刷量,配合代理/VPN使用。

AWZ伪装哪些参数?

  • IDFA
  • IDFV
  • 用户名
  • 系统版本
  • 设备型号,固件版本
  • User-Agent
  • 移动网络运营商信息
  • 地理位置
  • uname / sysctl等参数
  • WIFI SSID BSSID
  • IMEI
  • 序列号
  • MAC地址

AWZ有哪些屏蔽刷机检测的手段?

  • VPN隐藏
  • 代理隐藏
  • WIFI隐藏
  • 反越狱检测,越狱文件检测/模块检测/APP检测等

一键新机

在用户进行一键新机时,ALS有如下操作:

  • 生成设备参数并保存到文件/private/var/mobile/Library/Preferences/
    • app1e.mobile.ifalscommon.plist 保存伪造设备参数数据
    • app1e.mobile.ifalslocation.plist 保存伪造位置数据
  • 将应用沙盒目录下的数据备份,同时为新环境创建沙盒目录结构。备份的数据存放在/private/var/mobile/alsdata下。
  • 应用启动后,dylib会hook关键函数,并根据plist文件修改函数返回的数据
  • ALS还会根据情况清理keychain,同时做简单的反越狱检测

改机

在iOS上目前所有流行的改机工具,本质上是利用substrate框架对某些用来获取设备和系统参数函数进行hook,从而欺骗App达到修改的目的,具体的如下:

  • 用作获取设备参数的函数,无论是C函数,还是Objective-C/Swift函数,可以使用hook框架来修改其返回值
  • 屏蔽VPN/HTTP代理检测
  • 屏蔽越狱检测

通过分析ALS.dylib可以发现其hook了如下函数:

sysctl                                  修改设备名,设备型号,iOS版本等
sysctlbyname                            修改设备名,设备型号,iOS版本等
uname                                   修改设备名,设备型号,iOS版本等
SCNetworkReachabilityGetFlags           修改网络类型,WIFI/2G/3G/4G
CNCopySupportedInterfaces               修改WIFI名和BSSID
CNCopyCurrentNetworkInfo                修改WIFI名和BSSID
IORegistryEntrySearchCFProperty         修改设备串号,IMEI
IORegistryEntryCreateCFProperty         修改设备串号,IMEI
_CTServerConnectionCopyMobileIdentity   修改IMEI
UIDevice                                修改设备型号,iOS版本,设备名,IDFV
ASIdentifierManager                     修改IDFA
CTCarrier                               修改运营商信息,包括运营商名,MCC,MNC,ICC
CTTelephonyNetworkInfo                  修改运营商信息,包括运营商名,MCC,MNC,ICC
NSProcessInfo                           修改设备名,iOS版本
NSBundle                                修改App版本号
CLLocationManager                       修改位置参数,包括经纬度,海拔,速度等
MKUserLocation                          修改位置参数,包括经纬度,海拔,速度等
ChromeViewController                    修改位置参数,包括经纬度,海拔,速度等
MapsMainModeController                  修改位置参数,包括经纬度,海拔,速度等
LocationShare                           修改位置参数,包括经纬度,海拔,速度等
SAKCLLocationDelegateProxy              修改位置参数,包括经纬度,海拔,速度等
MOARegionalMonitoring                   修改位置参数,包括经纬度,海拔,速度等
CLLocationManagerBlocks                 修改位置参数,包括经纬度,海拔,速度等
QMLocationManager                       修改位置参数,包括经纬度,海拔,速度等
TDLocationInfo                          修改位置参数,包括经纬度,海拔,速度等
TaxiCancelOrderViewController           修改位置参数,包括经纬度,海拔,速度等
ONELocationStore                        修改位置参数,包括经纬度,海拔,速度等
NSKVONotifying_ONELocationStore         修改位置参数,包括经纬度,海拔,速度等
NSKVONotifying_MomoLocationManager      修改位置参数,包括经纬度,海拔,速度等
AMapDiscoverManager                     修改位置参数,包括经纬度,海拔,速度等
MMUDeviceObserver                       修改位置参数,包括经纬度,海拔,速度等
MMUJSLocation                           修改位置参数,包括经纬度,海拔,速度等
MomoLocationManager                     修改位置参数,包括经纬度,海拔,速度等
IphoneGPSMan                            修改位置参数,包括经纬度,海拔,速度等
YiXinLocationManager                    修改位置参数,包括经纬度,海拔,速度等
CFNetworkCopySystemProxySettings        屏蔽代理检测
NEVPNConnection                         屏蔽VPN检测
UIStatusBarIndicatorItemView            屏蔽VPN检测
AppsFlyerUtils                          屏蔽越狱检测
CLSAnalyticsMetadataController          屏蔽越狱检测
WXOMTAEnv                               屏蔽越狱检测
lstat                                   屏蔽越狱检测
stat                                    屏蔽越狱检测
access                                  屏蔽越狱检测
fopen                                   屏蔽越狱检测
NSFileManager                           屏蔽越狱检测

改机软件的防控

道高一尺魔高一丈,针对产商的黑产策略在不断的迭代进化。也给黑产的判断带来了挑战。一些防范策略包括:

  • 判断 /Applications/AWZ.app 和 /Library/MobileSubstrate/DynamicLibraries/AWZ.dylib 文件存在,可以认为是安装 AWZ。
  • 判断 /Applications/NZT.app 和 /Library/MobileSubstrate/DynamicLibraries/NZT.dylib 文件存在,可以认为是安装 NZT。

其他各类的改机软件需要你自己去收录,或者是分析它们的原理,会释放什么文件?会对哪些函数做 Hook 等等。

针对屏蔽检测的内容,可以使用汇编指令(SVC)代替函数调用完成,同时使用内存校验来检测汇编代码是否被篡改。

参考链接:

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注