一、客户端安全测试
1.1反编译保护检测
使用工具APKScan、jadx-gui查看APP
是否进行加壳保护,大部分代码是否进行混淆。
1.2安装包签名检测
使用工具jadx-gui反编译查看APK signature中的企业签名信息(主题),v1为不安全
1.3应用完整性校验检测
使用ApkToolBox将APP解包(反编译apk)
随便找一个资
源文件修改(建议
LOGo图标),再用ApkToolBox重新打包(回编译apk)
对文件进行签名,重新卸载安装APP查看是否
正常运行
1.4程序数据任意备份
使用工具jadx-gui反编译,查看And
ROIdManifest.
XMl文件中android:allowBackup属性值是否为true(true为不合规)
1.5程序可被任意调试
使用工具jadx-gui反编译,查看AndroidManifest.x
ML文件中android:debuggable属性值是否为true(true为不合规,没发现字段则合规)
二、组件安全
2.1 Activity越权检测
进入drozer
run app.activity.info -a com.nfjj.mh(查看所有activity)
run app.activity.start --component com.nfjj.mh(包名) aaa.bbb.ccc(组件名) [越权调用activity组件查看是否有敏感信息]
2.2 Activity拒绝服务检测
run app.activity.info -a com.nfjj.mh(查看所有activity)
run app.activity.start --component com.nfjj.mh(包名) aaa.bbb.ccc(组件名) [调用activity组件默认发送畸形的intent,调完查看APP是否正常运行]
run app.activity.info -a com.
test.uihijack(查看劫持专用APP的组件名)
run app.activity.start --component com.test.uihijack com.test.uihijack.M
ainActivity(组件名) [查看APP页面被劫持后是否出现APP已退出到后台字样]
2.4 Service越权检测
run app.service.info -a com.nfjj.mh(查看所有service)
run app.service.start --component com.nfjj.mh aaa.bbb.ccc(组件名) [和activity劫持同理]
2.5 Service拒绝服务检测
run app.service.info -a com.nfjj.mh(查看所有service)
run app.service.start --component com.nfjj.mh aaa.bbb.ccc(组件名) [和activity拒绝服务同理]
run app.
broadcast.info -a com.nfjj.mh(查看所有
reveiver)
run app.broadcast.send --action aaa.bbb.ccc(组件名) [可直接只输入组件名]
2.7 Receiver拒绝服务检测
run app.broadcast.info -a com.nfjj.mh(查看所有reveiver)
run app.broadcast.send --action aaa.bbb.ccc(组件名) [可直接只输入组件名]
run app.provider.info -a com.nfjj.mh(查看可被导出的provider组件)
run scanner.provider.injection -a com.nfjj.mh(注入检测)
2.9 Provider目录遍历检测
run app.provider.info -a com.nfjj.mh(查看可被导出的provider组件)
run scanner.provider.traversal -a com.nfjj.mh(目录遍历检测)
2.10 WebView代码执行检测
使用jadx-gui查看AndroidManifest.xml文件中android:minSdkVersion属性值是否小于等于17(大于17为合规)
run scanner.misc.checkjavascriptbridge -a com.nfjj.mh(命令检测)
2.11 WebView未移除接口检测
使用jadx-gui查看AndroidManifest.xml文件中android:minSdkVersion属性值是否小于等于17(大于17为合规)
三、运行环境安全
3.1 Root环境检测
在已Root的手机/模拟器中打开APP,查看是否有Root运行
风险提示
四、敏感信息安全
4.1 SQLite加密检测
.db文件默认路径:/data/data/包名/databases/xxxx.db
导出
文件命令: adb.exe pull /data/data/com.nfjj.app/databases/xxx.db D:
4.2 SQLite敏感信息检测
.db文件默认路径:/data/data/包名/databases/xxxx.db
导出文件命令: adb.exe pull /data/data/com.nfjj.app(包名)/databases/xxx.db D:
通过navicat查看数据库是否可以看到敏感信息
查看sharedpreferences文件夹下的xml文件是否存在敏感信息
默认路径:/data/data/com.nfjj.app(包名)/sharedpreferences/xxx.xml
导出文件命令: adb.exe pull /data/data/com.nfjj.app(包名)/sharedpreferences/xxx.xml D:
4.4 Log敏感信息检测
adb.exe logcat > log.txt
点击APP所有功能后查看log.txt中是否存在敏感信息
4.5 敏感信息检测
查看/data/data/com.nfjj.app(包名)/(shared_prefs、databases、files、cache)下的文件是否存在敏感信息
五、网络通信安全
5.1 网络通信安全
使用burp抓取APP的请求包,查看是否为https协议
5.2 关键字加密
使用burp抓取APP的请求包,查看登录、交易等关键操作的字段是否进行加密
5.3 安全退出检测
记录登录状态的请求包,用户注销后再次尝试请求,查看是否成功
5.4 网络切换保护
5.5 开放端口检测
六、安全策略安全
6.1 密码复杂度策略
查看设置密码复杂度(123456类似密码是否可注册成功)
登录次数过多锁定策略
6.3 账号登录限制
6.4 登录信息模糊处理
账户
错误提示"输入账户错误",密码错误提示"输入密码错误",可爆破
切换APP时,敏感信息是否会清空或模糊处理
6.6 键盘记录保护