一般在App客户端发布之前,公司除了会进行业务测试之外,如公司建有安全团队的话,会在发布之前进行对App客户端及服务端进行安全测试,既针对APP实施渗透测试并出具安全测试报告及修复建议,其中也会涉及到业务设计缺陷。
安全渗透测试小组成员,根据项目大小,人员在3-5人。渗透测试小组会利用前言的攻击技术,使用成熟的黑客攻击手段,同时集成软件测试技术(标准)对指定服务器、App实施入侵攻击测试,以此在App发布或更新前,发现App和服务器存在的安全漏洞和风险。
测试流程
1.信息收集:进行必要的信息收集,如 IP 地址、DNS 记录、软件版本信息、IP 段等。
2.渗透测试:根据第一阶段获得的信息对网络、系统进行渗透测试。
- 缺陷利用:尝试由普通权限提升为管理员权限,获得对系统的完全控制权。在时间许可的情况下,必要时从第一阶段重新进行。
4.成果收集:对前期收集的各类弱点、漏洞等问题进行分类整理,集中展示。
5.威胁分析:对发现的上述问题进行威胁分类和分析其影响。
6.输出报告:根据测试和分析的结果编写直观的渗透测试服务报告。
这里我们仅仅关注在App和服务器测试的测试项目。
App自身安全测试:
1.抗反编译能力测试。
我们都知道,Android客户端的APK文件,使用相关工具,可以对测试APK进行反编译。通过反编译可以查看Java源代码。
为了防止APK被反编译,很多公司都会采取对APK进行加壳加固,使的攻击者对APK文件进行反编译的难度增加,有效的减缓攻击者使用代码审查的方式进行漏洞挖掘。
2.代码混淆防护测试。
代码没有被混淆的话,攻击者共同反编译APK文件, 将可以对代码进行审查挖掘漏洞。所以对代码混淆防护,就很有必要,通过混淆代码,攻击者反编译后的代码,也将难以阅读。
3.验证程序签名测试。
该项测试是为了测试APK的签名状态是否正常。
4.程序完整性测试。
该项测试是为了测试APK的程序完整性是否正常。
5.Content Providers数据泄露测试
通过测试工具连接手机查看部分content URI:,确保APP没有可以利用的URI。
6.本地SQL注入测试
通过工具连接手机查看其是否存在本地SQL注入的安全问题。
7.本地目录遍历测试
通过工具连接手机尝试目录遍历扫描,确认不存在不存在敏感文件夹。
8.本地数据文件权限设置测试
通过工具查看系统下app存储文件夹相关权限,确保本地文件及目录权限符合安全配置要求。
9.本地静态信息泄露测试
通过文件浏览工具连接手机查看本地存储目录文件,如有存储文件,如数据库文件或文本信息时,必须保证文件信息非明文,否则将导致信息泄露。
10.抗截/录屏能力测试
在一些特殊的APP应用场景,涉及用户敏感信息或金融安全的时候,要保障APP无法通过截图功能进行屏幕抓取和录屏。
11.内存信息泄露测试
通过测试工具,对应用运行后内存数据进行查看,确定内存数据未包含敏感信息内容,通过内存查看工具,搜索当前登录的手机号、密码相关信息,未明显的信息泄露问题。
12.组件劫持测试
攻击者可通过对受害手机植入后门,从而在应用进行登录时触发劫持,使得用户在不知不觉的情况下将登陆凭据输入伪造的登陆界面中。
13.键盘记录测试
在一些输入界面,敏感信息(登录密码或支付密码),确保用户在输入阶段,不会受到键盘记录工具的攻击,导致密码泄露。
14.LogCat信息泄露
最后就是日志输出,APP在发布时,应该关闭日志输出,确保日志输出中,没有敏感信息的泄露。
以上,仅仅是安全测试团队中的常规测试项,以确保APP自身的安全性。其实很多安全厂商或应用分发渠道,都有一套安全渗透测试,Android开发团队,也完全可以通过平台提供的工具进行安全测试,提高APP自身安全性。