APP客户端安全评估工具分享
所有工具都在APP客户端安全评估工具.zip中,需要的转存到夸克网盘自行下载,及时保存防止失效
https://pan.quark.cn/s/a7fa88275300
反编译保护评估工具
apkscanpkid_jb51.rar
jadx-gui-1.5.3-with-jre-win.zip
安装包签名校验工具
keytool.exe
APP测试神器AndroidKiller(后续很多测试都是用的这款工具)
androidkiller_69033
组件安全测试必备工具(drozer低版本比较稳定)
drozer-installer-2.3.4.zip
夜神模拟器安装包(手机测试效果更佳,有些应用会检测虚拟环境)
夜神模拟器_bh231786891.exe
APP客户端安全评估思路
客户端程序安全
1.反编译保护
双击运行解压出来的jadx-gui-1.5.3.exe

将apk包拖入即可

2.安装包签名
使用keytoll.exe即可查看签名
keytool -printcert -jarfile xxxxxx.apk

3.应用完整性校验(可以重新打包是高风险)
配置工具
Android Killer、apktool(官网下载最新版本即可)
替换Android Killer 里的apktool为最新版

新增test.txt看能否重新打包即可


4.程序数据任意备份
查找android:allowBackup
当在AndroidManifest.xml文件中未设置android:allowBackup属性值或,设置android:allowBackup="true"时,可对应用程序私有目录下的所有数据进行备份。
5.程序可被任意调试
查找android:debuggable
当在AndroidManifest.xml文件中设置android:debuggable="true"时,应用程序可以以调试模式启动,并被任意调试器附加调试。
6.资源文件保护
Android apk中的资源主要分为assets资源和res资源两类.Assets资源存放在APP的assets目录下,该类文件是一些原始文件,APP打包时并不会对其进行编译,而是直接打包到APP中,对于这一类资源文件的访问,应用层代码需要通过文件名对其进行访问。Res资源则存放在APP的res目录下,该类资源在APP打包时大多会被编译,变成二进制文件,并会为每个该类文件赋予一个resource id。对于该类资源的访问,应用层代码则是通过resource id进行访问的.Android apk开发过程中公司大都提倡命名规范化,因此通过文件名称非常容易理解其含义,这样有利于开发者理解和维护应用,但是同时也给应用破解者提供了方便,破解者通过这些命名很容易便可找到他们需要的文件位置,并理解这些文件的意图。
看反编译后的代码有没有进行混淆
组件安全
测试工具准备
Android Killer、apktool(官网下载最新版本即可)、夜神模拟器(安装包在压缩包中)
首先运行setup.exe安装drozer程序

夜神模拟器安装并运行agent
在夜神模拟器上安装agent.apk,安装完成后运行,点击右下角显示为"关闭"的按钮使其转变为"开启"状态:

进行adb连接
打开夜神模拟器的bin目录,该目录中有adb程序nox_adb.exe,打开命令行运行以下命令:>nox_adb.exe forward tcp:31415 tcp:31415
打开drozer的安装目录,打开命令行运行以下命令进行连接:
>drozer console connect
1.Activity组件越权
待测APP的包名在工程信息中,com.xxx.xxx.xxx
列出可被调用的activity组件
run app.activity.info -a [package name]
2.Activity拒绝服务
在模拟器中打开测试app,然后在drozer命令行中使用以下命令逐个调用activity组件,观察是否会引起app崩溃,造成拒绝服务:
逐个调用activity组件
run app.activity.start --component [package name] [component name]
3.Activity劫持
Activity劫持是指当启动某个窗口组件时,被恶意应用探知.若该窗口界面是恶意程序预设的攻击对象,恶意应用将启动自己仿冒的界面覆盖原界面。用户在毫无察觉的情况下输入登录信息,恶意程序在把获取的数据返回给服务端。
使用Activity劫持测试工具,网上自行搜索
4.Service组件越权
列出待测app可被外部调用的Service组件列表
run app.service.info -a [package name]
逐个调用Service,检查是否会能进行进程管理或其他越权操作
run app.service.start --component [package name] [component name]
5.Service拒绝服务
逐个调用Service组件,观察是否会引起app崩溃,造成拒绝服务
run app.service.start --component [package name] [component name]
6.BroadcastReceiver组件越权
列出待测app可被外部调用的Receiver组件列表
run app.broadcast.info -a [package name]
7.BroadcastReceiver拒绝服务
逐个调用Receiver组件,观察是否会引起app崩溃,造成拒绝服务:
run app.broadcast.send --component [package name] [component name]
8.Content Provider SQL注入
列出待测app可被外部调用的Provider组件列表:
run app.provider.info -a [package name]
使用以下命令查看有哪些uri可以访问
run scanner.provider.finduris -a [package name]
检测是否存在本地SQL注入漏洞
run scanner.provider.injection -a [package name]
9.Content Provider目录遍历
列出待测app可被外部调用的Provider组件列表:
run app.provider.info -a [package name]
使用以下命令可检测是否存在目录遍历漏洞:
run scanner.provider.traversal -a [package name]
10.WebView远程代码执行
检测是否有调用addJavascriptInterface接口:
全局搜索关键字Landroid/webkit/WebView;->addJavascriptInterface(,检查是否有使用addJavascriptInterface接口。
11.WebView未移除系统默认接口
检查是否处在漏洞影响范围
该漏洞影响范围为Android 4.2及以下,即SDK 17及以下,所以首先检查待测APK限制的最低SDK版本是否是17或以下。
运行环境检测
1.Root环境检测
2.Ptrace注入检测
3.网络环境监测
4.模拟器运行检测
敏感信息安全
1.SharedPreferences明文保存敏感信息
2.SharedPreferences未作加密保护
3.SQLite明文保存敏感信息
4.SQLite未作加密保护
5.Log输出敏感信息
网络通信安全
1.通信加密检测
2.关键字段加密
3.安全退出检测
4.网络切换保护
5.开放端口检测
6.证书有效性
安全策略设置
手势密码安全性
资料来源内部文档,不能提供特别详细教程请见谅
可以看看我的面试题,入职看完整版
https://blog.csdn.net/2301_79090248/article/details/156995183