其他
严选APP端上安全体系建设
APP的每个业务场景都有其既定的运行模式,若被人为破坏就可认为是不安全的。比如秒杀场景、用户拉新场景。APP端上安全要做的就是甄别并防范这种异常场景的发生,简而言之它就是:一种确保官方APP在既定业务模型中运行的能力。
1 背景:APP端上安全在谈什么
秒杀场景:大量用户在特定时间点,通过点击抢购来秒杀优惠商品,从而营造一种紧迫而有噱头的营销场景,但如果能通过非法手段自动抢购、甚至提前开始刷接口抢购,那就彻底破坏了业务的玩法,这就是一种不安全的运行模式。 常用的用户拉新场景:新客获取成本高达200左右,所有产品的拉新投入都蛮高,如何获得真正的新用户而不是羊毛党也是拉新必须处理的事,一般而言,新设备+新账户是新用户的基本条件,但新账户的成本其实不高,大部分是要靠新设备来识别的,但如果能通过非法手段不断模拟新设备,那拉新投入获取的可能大部分都是无效的羊毛党,这也可看做是一种不安全的运行场景。 甚至还有二次篡改,构建马甲APP等各种场景。
2 APP端上安全体系应该具备哪些能力
甄别运行环境是否安全的能力 针对不同的场景作出不同的防御的能力
一些APP会在闪屏页面投放广告,从而获取收益,但一旦这个业务逻辑被篡改绕过,那么广告收益直接归零。 还有些情况APP被碰瓷,魔改一些功能,跳转到非官方设定的网站,比如在比较火的APP添加劫持逻辑,跳转到一些黄赌网站,这给官方APP带来的负面影响是难易估量的,如果不能自证清白,甚至还会面临法律上的追责。
端是信息的来源,负责信息采集上报,是安全体系建设的基石,所以端上采集信息的真实性、为完整性至关重要,同时端上也可以执行部分风险低,但收益高的拦截略,比如对于一些已经侦测到的马甲包,在上报用户信息之后,可以选择Crash,对于一些机器点击类的签到、秒杀场景,可以主动拦截请求,降低带宽压力。 网关是第二层,一般处理一些具体规则类的拦截与信息采集,比如有些简单的规则检验,Header里是否携带必备的校验字段,如多开标识、模拟器标志等,如果携带则可以在这一层直接拦截,并沉淀到数据中心,既保证了信息的采集,又能减轻业务后台的压力,尤其对于一些秒杀类的场景非常有效。 业务后台跟数据平台可以一起看做第三层,负责更复杂的模型建设跟业务落地,比如在什么样的节点,才有什么样的策略,比如在组单的时候,业务后台可根据风控侧的判断决定用户的优惠力度等。
技术上:以Android端为例,它是一个开源的系统,每一行代码都不可信,任何通过官方API拿到的信息都可以被HOOK篡改,而指纹很大程度依赖API获得的设备特征信息,如果这些信息都不可信,那指纹的可信程度也会降低。 法规上:现在注重保护个人隐私,不可以随意获取用户信息,这一点有利于用户【包括羊毛党】,但是对于运营方却是不利的,信息越少越难定位到,因此,在隐私合规的前提下,仍需要多维度的获取更多的用户信息,从更多的维度定位到该用户。
通过特征信息甄别【容易绕过】 通过CPU架构甄别【ARM与SimpleX86】 限定APP的运行平台
一个是便利:通过插件自动预约,免得用户自己操作,适合摇号、签到类【签到领积分】; 一个是速度,通过插件直接API请求,抢跑下单,获得收益,适合限时秒杀类的场景【各大平台强茅台】。
扩展核心API接口的能力,承载更多逻辑 通过埋点、用户操作轨迹分析识别用户 启用端上特有能力校验,如短信验证码、行程码分析
利用代码混淆防APP逆向,一般而言官方会提供相应的能力,也可借助三方加固来提高混淆的力度 核心源码、秘钥下沉,采用更难破解的方式实现,同时增加防外部调用的防范策略,比如Android采用C+混淆来处理 为线上APP添加防调试与HOOK的能力,防止动态调试探测, 添加防止代理与中间人劫持的能力,例如SSLPING等技术,避免被抓包探测 从二次打包入手,添加签名、完整性检测的能力,防止被探测、篡改
采用组件化开发模式,不同等级的基础能力、业务、核心逻辑做好隔离 仓库单独部署,同时做好权责划分,代码、文档做好权限隔离 加强秘钥、KEY的管控,开发与生产环境严格隔离
【Caches and Self-Modifying Code】https://community.arm.com/arm-community-blogs/b/architectures-and-processors-blog/posts/caches-and-self-modifying-code 【he self modifying code (SMC)-aware processor (SAP): a security lookon architectural impact and support】 【ARM Cache Flush on mmap’d Buffers with __clear_cache()】https://minghuasweblog.wordpress.com/2013/03/29/arm-cache-flush-on-mmapd-buffers-with-clear-cache/ 【Android模拟器识别检测技术 】 https://www.jianshu.com/p/1db610cc8b84 【通过 HTTPS 和 SSL 确保安全】https://developer.android.com/training/articles/security-ssl?hl=zh-cn 【Android apk 二次打包及防范简单体验】https://www.google.com.hk/search?q=android+%E4%BA%8C%E6%AC%A1%E6%89%93%E5%8C%85&oq=android%E4%BA%8C%E6%AC%A1&aqs=chrome.1.69i57j0i512.7405j0j4&sourceid=chrome&ie=UTF-8 【安卓APK如何防止二次打包?】 https://dun.163.com/news/p/c280a974f0e04c179010de31568276b9 【安卓反调试|常见的Xposed框架检测手段与突破方式】https://zhuanlan.zhihu.com/p/113046537 【设备指纹详解】https://zhuanlan.zhihu.com/p/68852244 【从黑产对抗角度谈设备指纹技术】 https://bbs.pediy.com/thread-265169.htm