Drozer – Android APP安全评估工具(附测试案例)

2014-02-21 1584214人围观 ,发现 20 个不明物体 工具终端安全

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>
run app.package.list -f
younicom.snda.youni

2、列举出 APP 的详细信息

run app.package.info -a  com.snda.youni

1.png

3、APP 攻击面分析,分析 Activity/Broadcast Receiver/Content Provider/Service 是否能被其他的的应用程序调用

run app.package.attacksurface com.snda.youni

2.png

4、列举 Content Provider 的信息(可以看到 Read/Write 的 Permission 都是 null)

run app.provider.info -a com.snda.youni

 (第一次测试的 APP 版本可以修改数据库) 

3.png

(修复之后再查看)

4.png

5、有暴露的 Provider,可以用 drozer 扫描可用的 URI(drozer 是否是通过源码静态扫描的方式发现这些 URI?通过反编译 dex->jar->class 可以查找到这些 URI)

run app.provider.finduri com.snda.youni

5.png

6、通过分析源代码可知 DataStructs 对应的是本地数据库,URI 的结构:

content://包名. 数据库/表名

(URI 不一定指向数据库,也可能是 xml 文件)

可以先在 PC 上用 sqlite broswer 分析.db 文件,例如 contacts 表中有一个 phone_number 字段;有了这些信息搜集,就可以利用 drozer 命令+参数查看数据库内容。可以看到该 APP 默认的几条内容:

6.png

7、preferences 表存储的是当前用户的一些基本信息,查询当前手机号: 

7.png

8、可以利用 drozer 直接修改数据库 

8.png

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 注入漏洞,通过在参数中提交特殊字符,触发数据库引擎的报错: 

10.png

相关推荐

这些评论亮了

  • maxcoco (5级) 回复
    作者不厚道啊,把我博客文章发上来也不注明出处。还testtest。
    )73( 亮了
  • maxcoco (5级) 回复
    @maxcoco  楼主不厚道啊,把我博客文章发上来也不注明出处。还testtest。
    )27( 亮了
  • Drizzle.Risk (3级) 18年校招开始了~ 北京甲方互联网~安全工程师~一起来搞好玩... 回复
    有一点不明白,既然因为权限分配不合理已经得到了本地数据库的读写权限,构造本地SQL注入还有什么用途?望解答。
    )7( 亮了
  • gscld (1级) 回复
    怎么测试app漏洞?求大牛详细说说
    )6( 亮了
发表评论

已有 20 条评论

取消
Loading...

这家伙太懒,还未填写个人描述!

1 文章数 4 评论数

特别推荐

推荐关注

活动预告

填写个人信息

姓名
电话
邮箱
公司
行业
职位
css.php