你不知道的Android SDK安全测试

anglia

作者介绍:anglia,2014年加入腾讯TEG,一直致力于信鸽和MTA两款产品的移动终端

引言

作为Android手机用户中的一枚残粉,假如突然手机掉了,脑电波蹦出的第一个念想是见鬼,还是您的理财产品上的钱不安全呢?

假如最新下载的app,进去时不仅弹出各种无聊广告,而且通知栏还会冒出意想不到的推送,您会想到这可能是钓鱼推送,马上卸载app?

假如X渡全家桶事件,您卸载了所有的X渡app,但乌云暴漏的X渡WH事件,无论是 wifi或3G/4G 蜂窝网络,只要手机在联网状态都有可能受到攻击,你是否会考虑换掉Android手机呢?

米厂狂热已经冷却,花厂手机开始跟着Android生态发展攻陷全球,物美价廉的Android手机走入寻常百姓家。面对Android安全漏洞认知不足的用户,如何保证我们的app给用户安心的体验?Android生态安全漏洞有哪些?Android安全测试技术探新在哪儿?如何将安全常规测试流程化?

Android常见安全漏洞汇总

首先,Android操作系统拥有开源的开发红利,也暗藏着后天发展的安全畸形,如:Android系统设计了沙箱系统(即虚拟机),但是底层却出现一个又一个漏洞让恶意程序(或工具)获取root权限以打破沙箱的限制。如同pc时代,没有绝对安全的pc操作系统,移动互联网时代,也没有有绝对安全的移动操作系统。Android开源生态的安全隐患,就像染血的警钟,敲击在每位Android开发者的心里。

其次,Android APP/SDK开发过程中的安全隐患就像未知黑洞,永远都不知道安全对抗的终点在哪,攻击者是谁,终结者又是谁,如何防御。

最后,常见的、可识别的用户层面的安全漏洞行为有哪些。

以上三个维度的已知安全漏洞总结如下:

信鸽Android版安全测试实例

漏洞原因概述

信鸽Android版SDK的一个可选组件,在本地开启了一个随机端口,用于监控java层service是否存活,但java层跟组件通讯时,未对输入参数做严格检验,导致在调用linux系统“system()”函数时,被填充攻击代码,从而被恶意利用。

如下截图是模拟端口被攻击后,在应用组件intent进行通信过程中,修改了url内容,webview显示乱码的情况:

漏洞潜在安全危害

Android APP的四大应用组件:activity、receiver、service和provider,以及应用组件通过intent进行IPC通信等安全角色,暂不发散。借助与信鸽漏洞相关点,展示APP侧相关的攻击维度如下图:

由于Android APP本地应用环境,网络socket先天缺乏细粒度的认证授权机制,因此,如果把Android客户端当做服务器,利用逆向代码搜索信鸽本地随机端口号,主动向端口发送攻击,就潜伏着如下安全危害:

1. 本地命令执行: 当嵌入信鸽应用的Packagename指定为应用自身,Componentname指定为应用的activity时,可以启动该应用的任意activity,包括受保护的未导出activity,从而造成安全危害。如,通过HTTP请求,逐一启动若干未导出的activity,可以发现拒绝服务漏洞。

2. 命令控制修改应用权限:通过开放socket端口传入启动Android应用组件的intent,然后以被攻击应用的权限执行启动activity、发送广播等操作。由于通过socket传入的intent,无法对发送者的身份和权限进行细粒度检查,绕过了Android提供的对应用组件的权限保护,能启动未导出的和受权限保护的应用组件,对安全造成危害

3. 敏感信息泄露,控制手机:本地某service打开UDP的端口监听,接收特定的命令字后,可返回手机的敏感信息。如百度手机管家,远程管理手机的secretKey,进而未授权的攻击者可通过网络完全管理手机。

信鸽Android安全测试执行

信鸽Android安全加固版本优化点

1. Native层和Java层增加对系统命令检查,特殊字符检查过滤

2.JNI Watchdog守护进程 socket通信加密

3. 本地通知功能,添加url、intent、activity的特性验证,防止点击通知后,跳转到恶意链接

4.修改Packagename在应用本地的存储位置

5.增加在线配置功能

以上是此次安全加固优化的重要需求点。

专项安全测试

如果按照常规的系统测试或者性能测试,只需要根据变动需求,进行正向的测试便可,但对于安全测试,保证SDK安全的健壮性需要进行逆向专项测试,模拟各种安全攻击手段,针对修改点发散测试用例。

Android常规的安全流程回归测试

1. 隐私数据:外部存储安全和内部存储安全;用户名、密码、聊天记录、配置信息等隐私信息是否被保存在本地,是否加密保存;使用数据前都判断信息是否被篡改;

2. 权限攻击:检查App所在的目录,其权限必须为不允许其他组成员读写;检查系统权限是否收到攻击;

3. Android组件权限保护:禁止App内部组件被任意第三方程序调用: 禁止Activity被任意第三方程序调用,禁止Activity劫持;Broadcast的接收和发送安全,只能接收本程序发出的广播,发送的内容不想让第三方获得;禁止恶意的启动或者停止service;Content provider的操作权限;若需要供外部调用的组件,应检查对调用者是否做了签名限制;

4. 升级:检查是否对升级包的完整性、合法性进行了校验,避免升级包被劫持;

5. 3rd库:如果使用了第三方库,需要跟进第三方库的更新并且检查第三方库的安全性;

6. ROM安全:使用官方ROM或者权威团队提供的ROM,避免ROM中被添加了植入广告、木马等;

7. 对抗反破解:对抗反编译,即无法通过反编译工具对其进行反编译,或者反编译之后无法得到正确的反汇编代码;对抗静态分析,采用代码混淆技术,代码加密;对抗动态调试,在软件中加入检测调试器和模拟器的代码;防止重编译,检查签名、校验编译之后dex文件的Hash值。

信鸽Android版,安全专项测试和常规流程测试完后,针对信鸽现有的功能、新旧版本兼容性、以及不同Android操作系统版本的兼容性,进行滚动回归测试。

总结

相对于普通的性能和系统功能测试用例,安全测试用例需要更全面的理解Android生态系统,如:用例需要覆盖到用户安全表象层面、应用系统本地和远程攻击层面、以及操作系统本身漏洞层面,且更多的需要设计逆向攻击思维的测试用例。

如果说开发的出发点是安全对抗防御,那么测试的出发点却是黑客攻击的思维,如何设计攻击场景的测试用例,攻击测试的技术如何实现,决定了SDK安全的健壮性。

原文发布于微信公众号 - 腾讯技术工程官方号(Tencent_TEG)

原文发表时间:2016-11-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算D1net

从各“瘫痪”事件看如何安全备份数据库到云存储

近几周互联网企业频繁暴出各类“瘫痪”事件,网易、支付宝也身负重伤,而5月28日携程网站服务及App全站瘫痪,从事故发生至恢复长达近12小时,造成的损失不言而喻。...

3829
来自专栏BeJavaGod

分布式系统的那些事儿(四) - MQ时代的通信

之前在讲RPC通信的各种好处,特别好用,但是RPC并不是万能的,也并不是适用于各种场景的,因为他是同步的;现如今很多场景下的调用都是异步的,系统A调用B后,并不...

3584
来自专栏企鹅号快讯

bt、磁力怎么下载?老司机飙车终极思路……

百度云解析失败,迅雷也是如此?无法下载BT!5大高分下载神器,你用过几个? ——wit小学生 最近好多小伙伴们向小学生吐槽,下载的BT不是没进度就是提示敏感资源...

7.4K10
来自专栏云鼎实验室的专栏

【黑客解析】黑客是如何实现数据库勒索的 ?

前言 每一次重要通用漏洞的爆发总是会带来一片腥风血雨,任何微小的漏洞,基于43亿IPv4地址这个大基数,总是可以被放大! 从MongoDB开始到MySQL,黑客...

2.2K7
来自专栏ml

本本如何快速设置无线路由....,让其他人使用...

1、使用管理员身份运行CMD 2、使用命令netsh wlan set hostednetwork mode=allow ssid=建立的无线网名称最好是英文 ...

2605
来自专栏FreeBuf

恶意软件Darkleech大肆感染Apache服务器

假设每台服务器十个站点的话,至少有20000个网站被感染,其中包括知名网站如《洛杉矶时报》。 Darkleech主要使用了Apache的模块注入iframe到受...

1926
来自专栏FreeBuf

iPhone的Wi-Fi芯片漏洞利用POC公布,赶紧更新系统吧

本周,谷歌 Project Zero 项目的研究员 Gal Beniamini 公布了 iPhone Wi-Fi 固件的漏洞利用 POC。这个漏洞(CVE-20...

2408
来自专栏黑白安全

微软正式停止支持 Windows 10 一周年更新

在“周二更新补丁日”,微软今天宣布停止支持 Windows 10 version 1607,也就是 Windows 10一周年更新 14393 版本,包括 Wi...

1042
来自专栏安恒信息

超过1万台Linux服务器感染了恶意程序

杀毒软件公司Eset的研究人员披露了一个正在进行中的恶意程序攻击,被取名为Operation Windigo(PDF) 的恶意攻击感染了超过1万台L...

3025
来自专栏北京马哥教育

Hadoop运维记录 | Zeppelin启用https和Hack内核的过程

本文是在工作过程中讲Zeppelin启用https过程和Hack内核以满足客户需求的记录。 原因是这客户很有意思,该客户中国分公司的人为了验证内网安全性,从国...

3749

扫码关注云+社区

领取腾讯云代金券