Drozer – Android(安卓)APP安全评估工具(附测试案例)
Drozer原名mercury,是一款不错的Android APP安全评估工具。现在有社区版/专业版两个版本。
具体的使用说明可以参考https://www.mwrinfosecurity.com/system/assets/559/original/mwri_drozer-users-guide_2013-09-11.pdf
测试案例
某Android APP由于Content Provider的控制不严,导致可读写APP私有的数据库,具体的步骤和思路:
1、查找APP完整的包名字(某些命令只能输入完整的包名才能执行):
dz>runapp.package.list-fyounicom.snda.youni
2、列举出APP的详细信息
runapp.package.info-acom.snda.youni
3、APP攻击面分析,分析Activity/Broadcast Receiver/Content Provider/Service是否能被其他的的应用程序调用
runapp.package.attacksurfacecom.snda.youni
4、列举Content Provider的信息(可以看到Read/Write的Permission都是null)
runapp.provider.info-acom.snda.youni
(第一次测试的APP版本可以修改数据库)
(修复之后再查看)
5、有暴露的Provider,可以用drozer扫描可用的URI(drozer是否是通过源码静态扫描的方式发现这些URI?通过反编译dex->jar->class可以查找到这些URI)
runapp.provider.finduricom.snda.youni
6、通过分析源代码可知DataStructs对应的是本地数据库,URI的结构:
content://包名.数据库/表名
(URI不一定指向数据库,也可能是xml文件)
可以先在PC上用sqlite broswer分析.db文件,例如contacts表中有一个phone_number字段;有了这些信息搜集,就可以利用drozer命令+参数查看数据库内容。可以看到该APP默认的几条内容:
7、preferences表存储的是当前用户的一些基本信息,查询当前手机号:
8、可以利用drozer直接修改数据库
9、漏洞利用。结合该APP的一个功能:通过手机号转账给他人。假设Max安卓手机里装了该APP,Coco也申请了这个APP的账号并且在Max的联系
人名单中,ID就是Coco的手机号,APP显示给Max是昵称。Max的手机不小心中了木马,木马通过上述漏洞修改了APP私有数据库
(Contacts表)中Coco的手机号,改为攻击者的手机号。Max通过APP的转账功能给Coco转账,就转到攻击者的账户中。实际测试通过。
10、以上漏洞利用只是一个攻击思路,Content Provider的暴露应该可以带来更大的危害。
11、Content Provider也可能造成本地SQL注入漏洞,通过在参数中提交特殊字符,触发数据库引擎的报错:
更多相关文章
- Android(安卓)Post请求SQL数据库
- Android系列之SQLite与Android(安卓)Studio的数据交互
- [Android] SQlite数据库
- android 获得手机号相关
- Android(安卓)ormlite 框架介绍
- 提高android ContentProvider的效率
- Android通讯录管理(获取联系人、通话记录、短信消息)(二)
- [置顶] Android(安卓)SimpleAdapter,SimpleCursorAdapter,ArrayAda
- Android(安卓)LitePal介绍与使用说明