一种端到端的移动App动态防护体系实践
作者:王欢
来源:《中国新通信》 2018年第17期
【摘要】 随着移动用户数量的急速增长,中国APP 开发数量保持全球第一。为了更好的迎合用户的使用习惯,安徽移动也将业务逐步向移动端迁移,目前掌上营业厅已经成为安徽移动最重要的业务之一。我们通过将动态应用保护系统引入到移动APP 端,构建了端到端的移动APP 动态防护体系,提升了我司移动APP 的安全防护水平。通过动态应用保护系统实现对各种自动化攻击的防护,以屏蔽各种业务风险,防止由于移动APP 被逆向、挂马等造成用户的财产损失,避免我司商誉受到影响。
【关键字】 信息安全 移动App 动态防护 端到端 掌上营业厅
一、研究背景及意义
在这个互联互通的时代,移动用户数量的急速增长,中国手机用户已经超过9 亿,形成了全球第一大市场。目前,中国每个手机用户,手机APP 的数量平均超过十个。在APP开发领域,中国APP 开发数量依然取得全球第一。为了更好的迎合用户的使用习惯,安徽移动也将业务逐步向移动端迁移,其中掌上营业
xposed厅是安徽移动主要移动应用之一。目前,安徽移动掌上营业厅和网上营业厅的业务量占比已经达到了4:1,安徽移动掌上营业厅已经成为安徽移动最重要的业务之一。当前互联网应用的安全漏洞曝光度在加大,各大运营商,也包括移动公司多系统多次榜上有名。大量自动化的漏洞利用手段被大规模复制,攻击成本低,攻击效率却迅速提升,造成更大规模业务损失、数据损失[1]。电信业务的系统中大量的客户信息成为攻击者获取利益的诱人筹码和目标,这些客户信息的泄漏对于电信欺诈风险在某种程度上也有推波助澜的作用,愈加汹涌的欺诈风险,甚至引发了社会性问题和事件。
在上述背景下,移动集团研究制定了一系列规范要求(下称“要求”),以加强系统的安全防御能力[2]。集团要求主要从应用开发技术角度,通过加强用户验证功能(如:加强验证码的要求)进行了要求[3],产生了良好的效果。然而,在实际运行和使用中发现,道高一尺魔高一丈,甚至开始发现有绕过验证码的自动化工具出现。当前,对于这种自动化攻击工具进行漏洞利用,或者模拟合法业务操作的威胁,上述安全技术显得力不从心。
在完成传统防护手段和满足集团技术要求的基础上,研究创新技术应对新的挑战,安徽移动掌上营业厅系统构建了端到端的移动App 动态防护体系。我们通过构建端到端的移动APP 动态防护体系[4],将动态应用保护系统的保护范围扩展到移动APP 端,通过动态应用保护系统实现对各种自动化攻击的防护,防止攻击者通过自动化工具发起批量的模拟合法操作的业务攻击,以屏蔽各种业务风险。通过构建端到端的移动APP 动态防护体系,提升我司移动APP 的安全防护水平,防止由于移动APP 被逆向、挂马等,
对我司商誉造成影响。
二、技术方案及关键点
通过引入动态应用保护系统,能实现对业务访问请求/数据进行人机识别与防护。对应羊毛党[5] 发起攻击的技术门槛和成本,我们将用户行为分析也可以划分简单、中级和高级三个层级。简单行为分析,针对羊毛党注册了多个账号,但使用的设备数量较少,其不停切地换账号领取优惠(某些情况下每次换账号时可能会重装APP)。由于动态应用保护系统可以采集到APP 每次使用时的设备指纹、UserId(需调用SDK 相关接口以获取到UserId)、网络及设备环境等信息,通过关联设备及用户帐号——设备指纹与UserId,可以分析出是否存在同一设备不停切换UserId 的行为。中级行为分析,针对羊毛党可能会使用相关技术伪造设备信息,如改变IMEI、GPS 定位等信息,以使同一台设备采集到的Fingerprint 前后不一致,扰乱相关检测与拦截规则。动态应用保护系统会对客户端运行环境进行检测,终端信息伪造需要使用设备的root 权限,如出现同一帐号登录时每次采集到的设备指纹不同、运行环境频繁偏离正常用户(例如模拟器、设备root、设备信息缺失)等情况,可以判断为薅羊毛行为。高级行为分析,针对羊毛党采用控方式薅羊毛,即使用电脑控制大量手机来做自动化操作,或雇用专人操作大量设备进行薅羊毛。对于这种行为,通常外网IP 相同,设备连接同一WIFI/ 周围SSID 相同,手机型号统一(方便做自动化脚本),传感器数据相同(手机静止,放在架子上手机朝向一致)。动态应用保护系统通过动态应用保护系统对采集到到信息进行统计与分析,可以识别出控行为。
我们提出的“端到端的移动APP 动态防护体系”建设,部署分为移动Native APP 端和动态应用保护系统端,如图1:
动态应用保护系统逻辑是串联在APP 应用系统之前,作为APP 应用服务器的反向代理设备工作在网络环境中,APP 应用服务器端不需要做任何改动;物理部署时旁路在负载均衡设备下,通过负载均衡设备将访问流量导向到动态应用保护系统进行动态变换,对业务服务没有任何影响,大大降低运维压力。
移动APP 端部署,需要在APP 开发源代码里面集成动态应用保护系统SDK 包。集成动态应用保护系统的SDK,在程序启动时(例如,在application 的onCreate 方法中)调用接口类:initlize(Context ctx, String dataCollectionServer)。另外还有2 个可选接口,setUserId, connectWebView, 可以提高数据采集的价值和数据关联的能力。iOS SDK 与Android SDK类似,仅需在程序启动之初调用ASPClientLite.initialize 函数。setUserId,connectWebView 同样为可选调用函数。动态应用保护系统 SDK 会校验掌上营业厅APP 运行环境的合法性,包括模拟器环境检测——羊毛党可能在电脑上安装大量的模拟器环境运行掌上营业厅APP,以达到业务欺诈并节省硬件成本的目的。动态应用保护系统 SDK 可以检测并标记常见的Android 模拟器环境,如BlueStacks、Genymotion、海马模拟器等。检查设备是否root 或越狱——羊毛党通过移动终端进行自动化攻击需要获取设备的root 权限,Android 设备需要进行root、iOS 设备需要越狱。检查设备上是否运行常见的黑客框架及软件,获取设备root 权限后,Android 系统通常会安装Xposed、Substrate 等框架、iOS 系统会安装Cydia 等工具。通过对终端环境进
行检测,可以快速评估设备的合法性和可信度。便于在发现请求来源于可疑的终端环境时,对其使用加强的风控规则和行为分析,将自动化攻击扼杀在初期。
动态应用保护系统通过SDK 采集大量的客户端信息(包括连接建立前和连接建立后的信息采集),用于构建用户行为的模型,例如设备各项硬件信息、APP 证书/ 版本等信息、蓝牙/WLAN Mac 地址等信息、电池充电状态、加速计/ 陀螺仪信息、无线网络的IP/SSID、GPS、设备指纹等信息。动态应用保护系统SDK 通过多种方法防止自身被破解,首先SDK 经过了代码混淆、瘦身等操作,并加入了运行环境检测和反调试机制,用于对抗反编译或其他逆向分析手段;其次,SDK 会与动态应用保护系统服务端进行双向校验:即客户端对服务器进行校验防止服务端伪造,服务端也会对客户端进行签名和指纹验证,一旦出现异常都将导致通信中断。最后,对于本次部署而言SDK 仅采集信息,对用户无感知。
移动APP 和APP 应用服务器能够实现App 包体防御检查,能够检测应用程序未经授权的重新打包,自动检测手机App 是否被进行二次打包,封装的SDK 是否被移除,一旦发现,服务器端将拒绝App 通信;拦阻假冒或非法第三方应用:对连线App 来源进行校验,可有效拦阻假冒的App 或是未授权的非法第三方应用;防止中间人攻击:对App 与服务器端间的通讯数据进行动态混淆,攻击者无法识别与篡改通过中间人手法截获的数据;假冒服务器及假冒证书检查:通过App 与服务器间的双向验证,可有效防止攻击者通过假冒服务器或证书对终端进行攻击;防止页面假冒钓鱼:通过请求来源检查,防止攻击者通过链接的方式,盗用服务器端的内容,进行假冒钓鱼;越狱检查:可检查用户端环境是否已越狱,防
止攻击者利用攻击工具或终端木马绕过安全保护机制,对后台进行攻击;虚拟环境检查:可检查App 是否运行于虚拟化环境,防止攻击者利用大量虚拟机发起假冒请求或欺诈交易;不安全的操作系统版本检查:可检查终端是否运行于不安全的操作系统版本,对于有重大漏洞的运行环境,可以拒绝改终端连线;终端指纹采集:通过对终端设备的指纹采集,可有效追踪不断切换来源地址的恶意终端。端到端的移动APP 动态防护体系,可以实现从移动APP 端到APP 应用服务器端,全程的威胁透视,可以通过海量的数据分析和采集,实现业务威胁透视,主要威胁透视包括APP 运行环境检测:包括模拟器环境检测、检查设备是否root 或越狱、检查设备上是否运行常见的黑客框架及软件;客户端信息采集:包括攻击者是谁(IP/ 城市)、容易出问题的设备机型及对应的操作系统版本、异常或低信誉帐号等常见业务场景的分析结果;此外对于客户端一些更底层的系统信息如手机的运动状态(加速计、陀螺仪等)、系统属性(root / SIM 卡)、网路连接状态信息、Mac 地址或设备识别码(IMEI)等信息能够有一个分类和呈现,用于辅助风控进行决策。用户行为分析:包括设备不断切换帐号的简单行为、篡改设备指纹等操作的中级行为;对于通过控方式发起薅羊毛等攻击的场景则主要通过报表平台对数据进行关联分析与结果呈现。
三、应用情况
我司2016 年底引进了动态安全技术,实现对网上营业厅和单点登录的防护,取得了良好的成效。为了进一步保障用户权益,打击电信欺诈,针对安徽移动掌上营业厅系统,构建了端到端的移动APP 动态
防护体系,特别是针对所有向用户提供账号和密码的登录、发布促销活动活动的业务等,解决了急迫需要解决的安全风险,如: 撞库、扫号、薅羊毛等风险。此次构建端到端的移动APP 动态防护系统,对安徽移动掌上营业厅APP 应用进行保护,通过集成动态应用保护系统SDK 和部署动态应用保护系统,实现对掌上营业厅APP 和掌上营业厅APP 应用服务器的全程防护,包括端到端的全程动态防护、端到端的全程威胁透视、APP 数据展现等。
移动概述是针对集成了动态应用保护系统SDK 的一个摘要性报表页面,其呈现的数据是经过抽象之后的概括性结果,用于快速了解业务面临的移动端威胁情况。以设备指纹为主键,展示了不同场景下的威胁汇总信息,可以导出给不同部门使用,对可能存在控行为的设备选区了部分信息进行了展示,如始终充电、固定摆放设备的指纹信息,提取设备的Mac 地址与IMEI 的对应关系用与辅助决策。对于客户端设备的厂商、系统版本等信息进行了进一步细分,WIFISSID信息同样有助于跟踪设备的分布状况。
图2 是对移动场景的两种不同呈现,可以看到端到端的移动APP 动态防护体系对于可疑设备的判断有多个维度,当命中其中的预设规则时会被标记出来。
移动设备模板以设备为中心展示了与之相关的威胁信息,风险级别展示了在集成了SDK 的所有APP 中,其移动设备自身环境的可信度分布。通过动态防护系统,我们看到连接到动态应用保护系统服务器的客户端有多个,为安徽移动Android 及iOS 的客户端,全部都集成了SDK。当有多个APP 集成了SDK
时,可以通过软件包名进行数据筛选。移动用户报表模块以登录的账号为中心进行分析,旨在甄别系统中的正常账号与异常账号。界面中可以对指定账号进行筛选,查看登录的IP、设备等诸多信息,通过威胁信息的汇总表,可以详细了解到不同账号的异常行为。对不同账号,根据分析结果标记了其正常与异常程度,结果发现,仅有16.67%的账号登录完全正常。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论