APP安全测试用例梳理

Android APP安全测试,本想找用APPscan扫描就行了,但系统的架构不支持APPscan扫描。

按下面的一些思路手工测试的安全:

 数据存储及敏感数据:

预置条件 测试步骤 预期结果

1、手机root
2、被测应用打开了数据业务开启或连接wifi
3、获取手机的个人数据信息:IMEI号、IMSI号、ESN号、MEID号、电话号码、电话本、短信、email、通话记录、定位信息、PIN码、PUK码

1、使用TCPTump抓IP LOG。
2、正常使用XX应用的每个功能
3、使用wireshark工具分析IP log是否包含了预制条件3中的个人数据或敏感数据,若无预制条件3 中的个人数据或敏感数据,则不用进行步骤4
4、使用wireshark工具分析IP log中包含的预制条件3中的批量个人数据(单个个人数据除外,比如:仅上传IMEI或GPS等),是否采用安全通道传输或加密后传输

3、不能包含这些数据。若有这些数据,则在界面上需要有相关明示提醒。
4、IP log中包含的预制条件3中的个人数据或敏感数据需要采用安全通道传输或加密后传输

同上 1、连接电脑,使用DDMS抓DDMS LOG。
2、正常使用XX应用的每个功能
3、分析DDMS log是否打印了预制条件3中的个人数据或敏感数据
4、查看DDMS log,检查密码是否打印

2-3、不能包含这些数据。
4、DDMS中不打印账户的密码

被测应用打开了数据业务开启或连接wifi 1、使用TCPDump抓IP包,使用wireshark确认上传敏感数据的服务器地址

1、采集的个人数据不能发送到敏感国家/地区非允许的范围的服务器地址
备注:各个国家或地区对数据转移的规定不一样,具体请与当地法务确认是否满足当地法律要求

1、手机连接DDMS
2、手机root

1、使用XX模块涉及账号密码的功能
2、使用SQLiteSpy工具打开XX数据库"/data/data/package name/"下的*.db文件,检查数据库里是否有密码明文显示
3、查看XX应用"/data/data/package name/"下文件是否有密码明文显示

2-3不允许密码明文显示(即使有权限保护,也不允许密码明文显示)

 

 

 

 

 

 

 

 

 

 

 

 

 

说明:如果数据存储类型是SharedPreferences存储数据,验证时参照:https://www.cnblogs.com/ww-xiaowei/p/11209051.html

流量的消耗

预置条件 测试步骤 预期结果

1、有现网的wifi连接
2、手机插在PC上(防止休眠),设置不灭屏
3、应用至少申请了一种联网相关权限

1、打开应用,保持应用运行,静置不用,经过24小时 1、在setting中查看应用在wifi下消耗的流量,该应用的流量不能超过0.1MB

1、有现网的移动数据连接,并勾选“始终连接数据业务”
2、手机插在PC上(防止休眠),设置不灭屏
3、应用至少申请了一种联网相关权限

同上 在setting中查看应用在数据业务下消耗的流量,该应用的流量不能超过0.1MB

 

 

 

 

 

 

说明:如果觉得24小时太长,可以测试30分钟,流量消耗不超过0.06M

其他项

系统升级

1、系统检测到有新版本,
2、应用检测到有新版本

1-2、提示用户是否需要升级以及升级可能的影响,不允许在用户不知情的情况下自动升级,且在线升级检查升级包更新的频率

不能过于频繁,不能多于1次/天。

暗码

1.准备root权限手机

2.在AndroidManifest.xml中查看

“<data android:host="2432546" android:scheme="android_secret_code"”

3、比较过滤出来的暗码和附件中的暗码表
4、检查每个暗码对应的功能,和备注中的文档比较

 
 病毒

1.安装杀毒软件(McAfee Android版),对手机进行安全扫描和实时监控。
2.打开应用XXX,进行正常的使用。

 2.应用使用正常,使用过程中杀毒软件不会报出存在病毒、木马、恶意程序等安全风险提示
 签名验证

 手机root

1.在cmd命令行中执行:jarsigner -verify -verbose -certs "D:\XXX.apk"
2.检查结果中的签名信息。

 1.签名信息,姓名、部门或公司名称这三项中保证至少有一项不为空即可,不能出现debug的签名(签名信息中含有debug字样,如CN=Android Debug等)且需保证所填信息真实有效

2.对于非谷歌官方应用,不得采用安卓公开证书Android/emailAddress=android@android.com,签名信息的每一项需保证真实有效,不能为网址、乱码等无效信息;第三方应用的签名信息一般不能签huawei

 

 调试模式  

进入设置-开发人员选项-选择调试应用,检查被测应用在不在调试应用列表中;

   

1、被测应用不在调试应用列表中(或选择调试应用菜单置灰)

targetsdk

手机已连接电脑

1.执行命令 adb shell dumpsys package 包名 ,检查targetSDK。
2.检查apk是否申请了如下权限。
(aapt dump badging[yourapp.apk])
adb shell dumpsys package com.…… | findstr versionCode

 

1、若targetSDK不小于23,则pass;若targetSDK小于23,则执行步骤2。
2、apk未申请如下权限。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

权限:

预置条件

测试步骤

预期结果

1、有手机管家且在权限管理中对该应用监控改为“提示”
2、手机root

一、

查看AndroidManifest.xml,是否有android.permission.record_audio权限

对XX模块功能进行操作,检查是否有通话录音功能,通过权限管理检查是否有后台录音功能,录音时是否给用户明示

1.若无录音权限,则忽略步骤2;
2、没有通话录音功能,不允许存在有后台录音且未明示用户的情况。

1、有手机管家且在权限管理中对该应用监控改为“提示”
2、手机root

查看AndroidManifest.xml,查看是否有android.permission.send_sms/android.permission.call_phone权限
2、在遍历XX模功能时结合权限管理监听手机行为

1、若无打电话/发短信权限,则忽略步骤2;
2、权限管理也未发现应用有偷打电话和偷发短信的行为

 手机有root权限 查看AndroidManifest.xml中,应用申请的权限   

应用程序禁止保留与业务功能不一致的敏感权限。
(举例:用于拍照的应用,不能申请发送短信的权限。)

 用户对文件的权限

1.运行应用XXX。
2.在cmd命令行输入adb shell。
3.输入ps命令。  
4.在最后一列NAME中,找到此应用,查看该应用对应的USER列显示的运行权限

 
 4.此应用(不论是自研应用,还是预置的第三方应用)在USER显示的是类似app_XX/u0_aXX的形式,如果以root或system用户运行要评估是否为必需(几乎都是非必须的)。备注:JellyBean版本上是u0_aXX的形式,I及以前的都是app_XX的形式
 reboot权限  1.检查应用中是否申请了权限:android.permission.REBOOT  1.一般都不会申请此权限,如果有申请,要确认必要性。
 用户对文件的权限  

1、遍历XX模块的功能
2、在命令行中输入adb shell
3、进入测试apk的目录下,输入:cd /data/data/package name/
4、用ls -l查看每个文件的other组权限控制,比如:-rw-rw---- u0_a93 u0_a93 566 2013-09-09 14:36 com.tigerknows_preferences.xml
5、检查有other组读写控制权限的文件是否包含隐私数据(参考预制条件2),比如(IMEI,手机号码等)

 

4、最后三位显示成---或--X(-rw-rw----, 这串字符的后三位)则没有读写控制权限,若无此文件,则忽略步骤5
5、有other组读写权限的文件不允许包含隐私数据

 

APP安全测试用例梳理

上一篇:Appium基础:Desired Capabilities详讲


下一篇:js中call、apply、bind到底有什么区别?bind返回的方法还能修改this指向吗?