获取移动设备唯一标示(反作弊)的一些想法





引言:


    在移动互联网时代新零售行业获取设备可信的唯一id是一个常见的业务需求。

    在app推广拉新过程中,长期存在着新用户第一杯免费的业务逻辑。可观的利润使得大量的黑产蜂拥而至。刷机,hook,设备农场 等手段层出不穷,无所不用其极。

    这是业务背景。



    而Android和ios 平台对于设备唯一Id的开发支持不容乐观,在更高版本的android sdk上google 甚至屏蔽了大量业界常用的特征api。  

    而imei,mac,等常规设备标示,或是单独生成的设备唯一标示都存在各种缺陷。我们的设备唯一标示必须克服类似xposed等作弊框架,,用户权限禁止等复杂的客户端环境。

    这是技术现状。



            原文地址:https://developer.android.com/training/articles/user-data-ids


    综上所述,在移动互联网时代,我们需要一个通用,快速,安全获取设备唯一的方案。下面介绍方案 MonitorFinger






一     我们如何使用ta。


1    导入类库,在Android平台上我们使用的是so动态库。

        是的,我们的主体部分都是基于ndk使用c++开发完成的,原因稍后会介绍。


导入类库

2    初始化

    初始化动作一般完成在app启动时。

    主要是特征信息采集,并且上传至云端。这里的信息采集需要注意的是快速,和稳定,和通用。


3    异步获取设置id



    我们获取的id生成规则都是在服务器快速生成,与设备无关与设备信息有关。 这样做的好处有二:

    1安全,标示规则不下发至客户端,减少核心逻辑泄露风险

    2快速响应,可以根据云端策略迅速更新




二     我们如何实现ta


设计思路

        把大象关冰箱一共需要三步,获取一个可靠的设备id也是。


    1    藏起来

        也就是说将设备指纹的声明周期与app生命周期脱离。


        在Android中的具体表现就是将生产完的设备id存放到sd卡和setting中各一。下一次启动,尝试读取,并发生至云端校验。


sd卡目录示意

        不要小瞧这点,根据极光大佬在博客中提到的,这一点就可以解决90%的情况。(我个人觉得,这是比例应该是没有黑产因素的情况下)


外存方案

        原文地址:http://blog.jiguang.cn/registrationid/


        我们在外存的基础上,给他新增了一点我们的创意: 图片隐写功能,常规的id隐藏方案是隐藏到sd的文件中,但是这样不管你如何修改后缀名都有暴漏的风险,因为id信息的文件特征还是比较明显的。这里我们将其通过特定的算法以混写的方式写入某些系统的图片文件中。 

      类似的方案,可以参考这篇文章:

        https://blog.csdn.net/riba2534/article/details/70544076



    毕竟保存一颗珍珠的最好办法,不是把它放进保险柜加多少锁,而是把它扔到大海里。



2    看清楚

    多维度,快速,安全获取设备特征信息。

    多维度,我们会获取包括imei,mac,等常规信息,还会获取类似网络信息,储存设备等物理信息,以及很多不敏感的设备信息。 因为假的就是假的。黑产不论如何伪装,一定会有他模拟不出来的信息。

    快速,获取设备信息并且获取id是不能影响业务的,不能造成长时间的程序阻塞,要做到用户无感知。

    安全

    第一是信息安全,要采用多种反逆向加固方法,防止被逆向破解。

    第二是程序安全,不能因为某些权限或机型问题,导致崩溃,影响到主业务。



    针对android平台,另外还有一点需要注意:整体下沉

    因为Android平台xpose框架等工具存在,使得root后的设备对于framework的hook成本极低。 所以Android端的所有业务逻辑必须下沉到ndk层,增加安全性。


            xposed官网:https://repo.xposed.info/

3    聪明点

    之前提到的,所有id的生成策略与设备无关,与设备信息有关。 所有的id生成规则都是放到服务器处理的,反作弊的策略也可以最快时间响应,这就属于利用云端的智慧去降维打击客户端作弊了。



    之前在反编译旧版支付宝的时候,发现其设备id手段极为简单,仅为两部,第一步尝试读取imei,如果获取不到直接生产uuid并且上报服务器。(新版本已经不是如此了)

    我对这种现象是理解支付宝的用户数据来源足够多,他对自己的大数据能力极为自信而引起的。



    我们比第三方服务优势的地方,是因为我们懂得业务。

    我们在自研设备指纹的同时,采用过很多第三方服务。然后我们经常会发现很多对方无法发现的作弊情况。因为黑产坐标通常都是产业化和批量化的,因此一定会有很多业务特征上的体现,这一点是第三方反作弊平台无法实现的。


    常见维度和策略举例。

    比如网络环境信息,比如对方对手机的imei和mac等信息做了更改行为,但是通过对对方网络环境的信息检测,我们可以返回其之前的id信息,而不认为是一个新的设备。

    提高作弊成本。商业行为一定是讲究投入产出比例的。其实我们没有办法从根本上屏蔽作弊行为,但是

    如果对方之前想要作弊刷到一张咖啡券的时间成本和资金成本,大于一张咖啡券的成本。那我们就成功了。




三    测试


    Xposed修改检测  pass


    Root检测(包括存在root管理工具的情况)    pass


    夜神,mumu等6款主流模拟器 pass


    用户不开启权限的过程 可以采集到其他维度的信息,pass








备注:

思路借鉴:1极光,友盟等推送推送服务商 公开博客

2逆向部分app,分析其实现思路

3移动端团队聪明的大脑,很多创新的点子

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,753评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,668评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,090评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,010评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,054评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,806评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,484评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,380评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,873评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,021评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,158评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,838评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,499评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,044评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,159评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,449评论 3 374
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,136评论 2 356

推荐阅读更多精彩内容

  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,735评论 2 59
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,209评论 25 707
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,432评论 0 17
  • APP开发中常需要获取设备的DeviceId,以应对刷单,目前常用的几个设备识别码主要有IMEI(国际移动设备身份...
    看书的小蜗牛阅读 8,580评论 1 12
  • 夜深了, 突然好想你! 你在哪? 不知道什么时候开始, 你早已住进我心里, 我想给你发个消息问问你最近好吗? 却不...
    愿无喜悲阅读 149评论 0 0