Android APP安全测试,本想找用APPscan扫描就行了,但系统的架构不支持APPscan扫描。
按下面的一些思路手工测试的安全:
数据存储及敏感数据:
预置条件 | 测试步骤 | 预期结果 |
1、手机root |
1、使用TCPTump抓IP LOG。 |
3、不能包含这些数据。若有这些数据,则在界面上需要有相关明示提醒。 |
同上 | 1、连接电脑,使用DDMS抓DDMS LOG。 2、正常使用XX应用的每个功能 3、分析DDMS log是否打印了预制条件3中的个人数据或敏感数据 4、查看DDMS log,检查密码是否打印 |
2-3、不能包含这些数据。 |
被测应用打开了数据业务开启或连接wifi | 1、使用TCPDump抓IP包,使用wireshark确认上传敏感数据的服务器地址 |
1、采集的个人数据不能发送到敏感国家/地区非允许的范围的服务器地址 |
1、手机连接DDMS |
1、使用XX模块涉及账号密码的功能 |
2-3不允许密码明文显示(即使有权限保护,也不允许密码明文显示) |
说明:如果数据存储类型是SharedPreferences存储数据,验证时参照:https://www.cnblogs.com/ww-xiaowei/p/11209051.html
流量的消耗
预置条件 | 测试步骤 | 预期结果 |
1、有现网的wifi连接 |
1、打开应用,保持应用运行,静置不用,经过24小时 | 1、在setting中查看应用在wifi下消耗的流量,该应用的流量不能超过0.1MB |
1、有现网的移动数据连接,并勾选“始终连接数据业务” |
同上 | 在setting中查看应用在数据业务下消耗的流量,该应用的流量不能超过0.1MB |
说明:如果觉得24小时太长,可以测试30分钟,流量消耗不超过0.06M
其他项
系统升级 |
1、系统检测到有新版本, |
1-2、提示用户是否需要升级以及升级可能的影响,不允许在用户不知情的情况下自动升级,且在线升级检查升级包更新的频率 不能过于频繁,不能多于1次/天。 |
暗码 |
1.准备root权限手机 2.在AndroidManifest.xml中查看 “<data android:host="2432546" android:scheme="android_secret_code"” 3、比较过滤出来的暗码和附件中的暗码表 |
|
病毒 |
1.安装杀毒软件(McAfee Android版),对手机进行安全扫描和实时监控。 |
2.应用使用正常,使用过程中杀毒软件不会报出存在病毒、木马、恶意程序等安全风险提示 |
签名验证 |
手机root 1.在cmd命令行中执行:jarsigner -verify -verbose -certs "D:\XXX.apk" |
1.签名信息,姓名、部门或公司名称这三项中保证至少有一项不为空即可,不能出现debug的签名(签名信息中含有debug字样,如CN=Android Debug等)且需保证所填信息真实有效 2.对于非谷歌官方应用,不得采用安卓公开证书Android/emailAddress=android@android.com,签名信息的每一项需保证真实有效,不能为网址、乱码等无效信息;第三方应用的签名信息一般不能签huawei
|
调试模式 |
进入设置-开发人员选项-选择调试应用,检查被测应用在不在调试应用列表中; |
1、被测应用不在调试应用列表中(或选择调试应用菜单置灰) |
targetsdk |
手机已连接电脑 1.执行命令 adb shell dumpsys package 包名 ,检查targetSDK。 |
1、若targetSDK不小于23,则pass;若targetSDK小于23,则执行步骤2。 |
权限:
预置条件 |
测试步骤 |
预期结果 |
1、有手机管家且在权限管理中对该应用监控改为“提示” |
一、 查看AndroidManifest.xml,是否有android.permission.record_audio权限 对XX模块功能进行操作,检查是否有通话录音功能,通过权限管理检查是否有后台录音功能,录音时是否给用户明示 |
1.若无录音权限,则忽略步骤2; 2、没有通话录音功能,不允许存在有后台录音且未明示用户的情况。 |
1、有手机管家且在权限管理中对该应用监控改为“提示” |
查看AndroidManifest.xml,查看是否有android.permission.send_sms/android.permission.call_phone权限 |
1、若无打电话/发短信权限,则忽略步骤2; |
手机有root权限 | 查看AndroidManifest.xml中,应用申请的权限 |
应用程序禁止保留与业务功能不一致的敏感权限。 |
用户对文件的权限 |
1.运行应用XXX。 |
4.此应用(不论是自研应用,还是预置的第三方应用)在USER显示的是类似app_XX/u0_aXX的形式,如果以root或system用户运行要评估是否为必需(几乎都是非必须的)。备注:JellyBean版本上是u0_aXX的形式,I及以前的都是app_XX的形式 |
reboot权限 | 1.检查应用中是否申请了权限:android.permission.REBOOT | 1.一般都不会申请此权限,如果有申请,要确认必要性。 |
用户对文件的权限 |
1、遍历XX模块的功能 |
4、最后三位显示成---或--X(-rw-rw----, 这串字符的后三位)则没有读写控制权限,若无此文件,则忽略步骤5 |