windows下 进行app测试分三步(个人理解)
- 安装功能点测试 类似web (过)
- adb调试 框架检测
- 反编译查找不安全的配置
环境:
adb安卓调试器
夜神模拟器
drozer环境
https://labs.mwrinfosecurity.com/tools/drozer/
下载adb之后 添加环境变量 就可以使用adb命令
drozer 下载后 点击setup安装到windows ,agent.apk 安装到模拟器
配置drozer
#连接模拟器 adb connect 127.0.0.1:62001 # 本地端口转发模拟器 adb forward tcp:31415 tcp:31415 # 查看是否连接成功 adb devices # 进入drozer 进入之前 先打开模拟器里的客户端 然后进入安装目录 drozer console connect
进入后 是这个样子
第一次进入的时候 会报错 如下图
提示 java环境变量找不到 需要在当前用户下创建一个.drozer_config文件
[executables] java=C:\Program Files\Java\jdk1.8.0_201\java.exe javac=C:\Program Files\Java\jdk1.8.0_201\javac.exe
重新连接 就可以了。
安装apk
adb install apk包
获取手里里安装包的名称 如果中文乱码了 修改package.py源码
run app.package.list
找到测试的安装包 -f 指定包名
run app.package.list -f sieve
获取应用的基本信息
run app.package.info -a 包名
是否有暴露的组件攻击面,组件暴露可能导致敏感信息泄露、拒绝服务、权限提升绕过,界面劫持、远程代码执行等安全漏洞
run app.package.attacksurface 包名
根据测试的返回信息可以看出暴露了3个activity组件,2个provisers组件,2个services组件,并且可被调试。
对暴露的activity组件进行攻击
run app.activity.info -a 包名
启动组件信息
run app.activity.start –-component 包名 组件名 run app.activity.start –-component com.mwr.example.sieve com.mwr.example.sieve.FileSelectActivity run app.activity.start –-component com.mwr.example.sieve com.mwr.example.sieve.MainLoginActivity run app.activity.start –-component com.mwr.example.sieve com.mwr.example.sieve.PWList
测试后发现 第一个是显示系统文件/目录
第二个是进入登录界面
第三个是登录后创建的测试数据
获取Content Provider信息
可以获取到该app还和哪些应用程序有交互,使它指定的一些数据集提供给其他应用程序。那这里可以看到应该是有一些数据库交互,文件备份之类的信息。
run app.provider.info -a 包名
获取所有可以访问的Uri
run scanner.provider.finduris -a 包名
获取各个Uri的数据
run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords
获取了个人信息 很像mysql 数据结构 尝试是否有sql注入
列出所有表:
run app.provider.query URI --projection "* FROM SQLITE_MASTER WHERE type='table';--"
获取某个表(如Key)中的数据:
run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "* FROM Key;--"
同时检测SQL注入和目录遍历
run scanner.provider.injection -a packgeName run scanner.provider.traversal -a packgeName
列出指定文件路径里全局可写/可读的文件
run scanner.misc.writablefiles --privileged 安装目录 run scanner.misc.readablefiles --privileged 安装目录
大致组件漏洞这么多了,还有其他的可自行百度。
第二块 就是反编译了
使用apktool.jar 将apk 解包
查看xml文件 是否有非安全的配置
数据任意备份
android:allowBackup属性值是否设置为false 当属性为true 数据会被导出
程序被任意调试
android:debuggable=”true”
加壳保护
然后使用工具反编译java代码
重命名apk 为zip 解压后有class.dex 使用dex-tools 转换jar包
d2j-dex2jar.bat classes.dex
使用jd-gui打开jar包
并没有加壳
查看是否做了代码混淆
包中 并没有a b c d ab cd 之类的都没有 没有做任何混淆
个人经验大致就这么多,后续粉丝们 可以投稿 深入交流。