APP安全测试用例梳理

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

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

 数据存储及敏感数据加密传输:

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

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

1、打开PC端wireshark并开启抓IP log 开关。(详细指导书见备注列附件)然后正常使用该应用的每个功能;

2、保存wireshark的log。使用wireshark打开IP包,查看被测APK的传输是否使用安全的通道,例如“https“,如果是安全通道,可直接pass;

3、若测试APK采用的非安全通道,例如“http”,则需要搜索相应的关键字(如输入的密码)。

1、能成功抓取IP log

2、被测APK的传输使用的是安全的通道,若不满足,查看第3步

3、密码数据已加密,未搜索到打印的账户密码、定位信息(关键字:lat、lon、或当地经纬度)、IMEI号、IMSI号、ESN号、MEID号、电话号码、电话本、短信、email、通话记录、模块登陆密码信息、PIN码、PUK码、

1.LOG中不能打印任何形式的口令、密钥

2、LOG中不能默认打印个人数据   如logcat打印的日志信息中包含账户名密码,如果必须打印,则进行匿名,加密的处理

1.连接adb,打开logcat日志(adb shell logcat -v time > D:\logcat.txt)。然后正常使用该应用的每个功能(包含接打电话、收发短信、收发邮件,地图定位操作)。2、保存logcat日志,搜索关键字检查否打印了账户的密码、定位信息、IMEI号、IMSI号、ESN号、MEID号、电话号码、电话本、短信、email、通话记录、模块登陆密码信息、PIN码、PUK码

1、能成功抓取logcat日志

2、未打印上述口令、密钥或个人数据

被测应用打开了数据业务开启或连接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.00208MB(该数据未经过严格推敲,目前只是罗列了测试点和方法)

其他项

系统升级

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

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

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

暗码

1.准备root权限手机

2.在AndroidManifest.xml中查看

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

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

 暗码只能比附件中的少,不能多,请参考附件TAB页  
 病毒

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

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

应用禁止推送恶意广告,比如:

广告中有恶意病毒,木马地址等。

 

打开该应用,进行正常的使用,遍历每一个应用中显示的一级菜单功能。扫描是否有恶意广告行为。

 

1、强制使用性:未明确提示用户或未经用户许可,强制安装并弹出,且广告条尺寸大于480*60px;

 

2、安装隐蔽性:恶意广告捆绑在应用程序中,用户难以察觉。

 

3、自启动性:后台自动运行,如主动弹出对话框引导用户进行软件预装、业务定制(用户无法关闭定时弹出对话框);未经用户许可,在通知栏弹出广告等。

 

4、商业利益性:通过推送广告、增加下载流量获取商业利益。

 

无恶意广告行为(关注应用不存在以下行为:匿名或频繁推送广告;

未经用户允许在通知栏弹出广告;广告无法关闭;

主动弹出用户无法关闭的对话框引导或强制用户进行软件下载预装或业务定制等情况。)

 签名验证

 手机root

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

 1、签名信息,姓名、部门或公司名称这三项中保证至少有一项不为空,签名信息的每一项需保证真实有效,不能为网址、乱码等无效信息;

2.不能出现debug的签名(签名信息中含有debug字样,如CN=Android Debug等)

3、非谷歌官方应用,不得采用安卓公开证书Android/emailAddress=android@android.com,第三方应用的签名信息一般不能签huawei

 

 调试模式  

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

2.打开APK遍历各个界面是否存在调试账户或者公用账户的提示语(如:试用账号admin/123456,调试账号admin/admin等等)

   

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

2、不存在未知的隐藏账号、隐藏口令

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.一般都不会申请此权限,如果有申请,要确认必要性。
应用中不能存在可以ROOT系统的接口

1、运行该应用,若有弹框权限提示,点击允许。遍历每一项功能查看是否有提示ROOT系统的功能提示。

2、在cmd命令行输入adb shell。

3、输入ps命令。

4、在返回值中在最后一列NAME中,找到此应用,查看该应用对应的USER列显示的运行权限

1、该应用运行正常,没有ROOT系统的功能和提示。

2、adb连接成功

3、能正常返回查询值

4、此应用在USER显示的是类似u0_aXX的形式则PASS。如果以root或system权限运行为Fail(若已经在华为安全TMG评审评审通过,Fail后可以报备为通过)

 用户对文件的权限  

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组读写权限的文件不允许包含隐私数据

posted @ 2019-07-22 15:51  幸福在今天  阅读(2521)  评论(0编辑  收藏  举报