李网灿 丁 晋
中国电信股份有限公司江苏分公司
移动互联网时代,移动APP应用安全风险越来越值得关注。近年来,由移动APP引发的公民个人信息泄露事件时有发生,包括短信、微信、通讯录被恶意读取、定位信息泄露、支付信息被窃取等,造成了公民个人的隐私安全、财产安全、甚至人身安全受得严重威胁。江苏电信通过移动APP应用安全监测平台对接入的手机终端流量进行分析,本文则详细介绍了监测分析方法,并提出了安全加固建议。
国家计算机网络应急技术处理协调中心CNCERT发布的《2019年上半年我国互联网网络安全态势》报告指明,我国移动APP违法违规使用公民个人信息的问题非常严重,为数不少的APP存在违规收集、保存、使用个人隐私信息的行为。针对以上乱象,2019年以来中共中央网络安全和信息化委员办公室等四部委也开展了治理APP专项行动。移动APP的主要风险分析如下:
以Android操作系统为例,由于Android开源的特殊性,客户端的软件非常容易被篡改和反编译,没有进行过加壳保护的APK,可以通过以下五个小工具破解,植入木马后门,如图1所示。
图1 破解APK的五个小工具
(1)apktool: google提供的APK编译工具,用于逆向APK文件;
(2)dex2jar:安卓反编译工具,可用于将dex文件转换成jar文件;
(3)jd-gui: Java编程语言源代码反编译软件;
(4)eclipse:基于Java的可扩展开发平台;
(5)签名软件:用于给编译后的APK进行签名。
通过针对App的破解和二次打包后,应用被破解后带来的风险有:
(1)在APK中加入广告SDK赚广告费。近两年恶意广告数量增幅较大,用户每安装三个APP,其中至少有一个包含了广告。从恶意行为来看,恶意广告的趋利性更加明显。通过窃取重要隐私信息、频繁推送广告、静默下载安装其他应用、拦截短信等方式非法牟利。
(2)在APK中加入木马后门等恶意程序,添加恶意游戏链接等。
(3)支付中间人攻击,将正常链接修改为中间人链接,导致用户向篡改的支付链接进行付费;
(4)违规收集、保存、使用公众隐私信息。窃密木马会启动监听短信,读取通话记录,屏蔽回执短信等。
(5)读取金融类APP交易账号。恶意程序可能会读取手机中安装的购物客户端、银行客户端的帐号密码。
(6)恶意色情应用通过色情图片、视频等诱骗用户点击“免费注册”,安装后会在后台静默运行,不断访问恶意色情链接,消耗流量和手机资源。
移动APP应用是典型的C/S架构,除了客户端安全风险外,服务器端的安全风险也不容忽视。服务器端的安全风险除了常见的web应用端风险,比如SQL注入、XSS等,还有API安全问题。SQL注入等传统风险,可以通过WAF等防护手段进行防护,但暴露在互联网上的API接口往往没有任何防护,需要引起重视。服务端的主要漏洞包括:(1)SQL注入漏洞;(2)中间件/server漏洞;(3)代码/命令执行漏洞;(4)任意文件包含/操作漏洞;(5)敏感文件备份;(6)越权操作漏洞等。
本文介绍的移动应用分析主要通过自动化的分析平台+人工分析及渗透测试的方式来发现安全漏洞和隐患。首先进行多引擎病毒查杀,如果发现病毒则终止扫描,对恶意程序进行后续处理。如果上述过程未查杀到病毒,则可以判断没有感染已知病毒及其变种,然后进入更复杂的静态和动态检测系统,进行风险分析,并给出安全、谨慎或可疑(恶意)等级。
对可疑的应用必须由人工分析进行最终确认,对于谨慎的应用的处理可以由用户策略决定。人工分析同时包括对App应用的安全测试以及服务端的安全测试。如图2所示。
图2 移动应用安全分析流程
静态分析主要通过以下分析方式:终端能力调用安全测试、终端资源访问安全测试、网络访问安全测试、业务相关安全测试(需要遍历APP涉及业务接口滥用的测试)。
主要的安全分析项包含:
(1)用户权限检查。包括是否具备以下各项权限:发送短信、获取本机号码、读取联系人号码、读取通话时长及号码、读取短信内容及号码、定位地理位置、监听手机通话、使用话筒录音、打开摄像头、读取已安装应用列表、打开移动网络开关、打开WiFi开关、打开蓝牙开关、获取设备识别码等权限。
(2)代码保护机制。包括但不限于源码混淆保护监测、DEX文件保护监测、资源文件保护监测、XML文件保护检测、二次打包保护检测、so库文件保护检测。
(3)内置广告类型检测。给出具体的广告名称,包括积分墙、互动广告、插屏广告、功能广告、自定义广告、迷你广告等。同时进行内嵌支付接入检测、内嵌推送接入检测、内嵌统计接入检测等。
(4)开发者敏感信息检测、数据存储安全检测等。
(5)源代码安全分析。反编译后的源代码按照代码安全规范进行分析。
为进行动态分析,搭建了专用的沙箱作为动态检测系统,模拟真实的APP运行环境,实时观测APP运行时,会如何调用手机短信、微信、通讯录的资料,如何进行保存,如何进行使用,并实时记录数据调用、数据保存、数据传输等行为。动态检测系统包括黑白名单系统、IO监控、存储监控、行为监控、逃逸监控等,具体点包括:(1)监控短信、微信的发送地址、内容以及发起进程;(2)监控访问互联网的URL和payload;(3)监控APK安装过程;(4)监控IO读写事件;(5)监控读取短信、微信、通讯录事件;(6)监控上下行流量,支持突发流量告警;(7)检查客户端到服务器端,数据传输是否加密。
2.4.1 App人工分析
对于可疑文件,需要通过人工分析进行详细分析和确认。人工分析的主要任务是根据静态行为分析结果和动态分析日志,对代码逆向分析,最终判断是否为恶意软件。人工分析的主要测试项如图3所示。
图3 APP人工分析主要测试项
2.4.2 App服务端渗透测试
移动APP服务器端属于web应用端,需要防范常见的web应用漏洞,比如SQL注入、失效的身份认证、敏感信息泄露、XXE、失效的访问控制、XSS跨站脚本、安全配置错误以及不安全的反序列化等。人工渗透可以通过两种方式来找到这些接口并通过常用的针对web应用渗透测试的方式进行检测。如图4所示。
(1)反编译APP,通过反编译APP并在静态文件源码中寻找隐藏的域名/URL,API接口等信息。
(2)通过代理抓包,利用Burp suite、Fiddler、Charles等知名渗透测试套件抓包对APP的服务端进行漏洞检测。针对web app和native app采用不同的方式:
1)http[s]抓包分析(web app)
2)socket通信抓包分析(native app)
图4 APP渗透测试代理抓包示意图
抓取的链接直接提交任务到多引擎web漏洞扫描器,扫描完后再进行专门的人工渗透测试。针对web的渗透测试包括:(1)后端web渗透测试:数据传输加密、数据重放、数据篡改、SQL注入漏洞、XSS、Webservices鉴权等;(2)业务逻辑测试:账户鉴权、平行权限、密码重置、短信验证等。
安全开发过程中需要注意的事项包括用户安全登录、用户隐私保护、文件权限保护、网络通讯保护、会话标识符保护、运行时解释保护、最低授权策略、检测UGC内容、组件权限保护、通信频率限制等。
可通过第三方APP加密平台对APP加固保护,APP安全加固主要方法有:
(1)初始阶段:代码混淆;
(2)中级阶段:加密加壳(主要dex文件加壳);
(3)高级阶段:代码指令虚拟化(可执行代码转换为字节码指令系统的代码)。
主要加固内容包括了DEX文件保护(加壳)、资源文件保护(加密)、主配文件xml保护(二次签名)、so文件保护(加壳)等防止二次打包。
开发过程中可采用安全沙箱等最新安全技术实现如下内生安全:
(1)公私双域隔离
针对运行BYOD设备上的应用程序,隔离公私数据,对公有数据进行整体加密处理。
(2)数据落地保护
工作数据防止跨域拷贝/粘贴、防止截屏、数字水印控制等保障数据落地安全。
(3)文档安全阅读
系统内建安全文档阅读器,禁止工作文档通过第三方阅读器打开,防止文档泄露。
(4)双重沙箱保护
基于Linux权限模型上虚拟应用程序/Android For Work双技术架构进行双重保护。
在APP安全防护周期中,需要考虑在不同阶段关注不同的安全防护技术与手段:包括B/S架构移动国密浏览器处理、C/S架构远程虚拟化桌面管理、静态代码审计、动态渗透测试、防逆向VMP加固技术、杀毒引擎与防病毒模块、安全沙箱等技术防护、多角度APP防护SDK、APP发行渠道动态监测和APP专项加固等。
随着移动互联网的快速发展,各种手机应用软件呈爆发式增长。部分手机APP过度收集、违规使用个人信息,导致个人隐私信息泄露。本文针对移动APP安全风险提出了一系列监测分析方法,并提出了安全加固建议。江苏电信使用上述的监测分析方法,对超过100款APP进行了监测分析,将发现的安全风险及时通告客户,取得了良好效果。本文提出的方法可供移动APP开发单位、运营商以及监管单位借鉴参考。