利用Drozer对Android app进行安全测试

发表于:2018-1-16 15:24

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:张子超_0cb1    来源:51Testing软件测试网采编

  前期环境的搭建
  Android SDK的安装
  adb的安装
  java jdk的安装
  备注:其中文章中xx.xx.xx是指该应用的包名
  一、安装
  第一步:从http://download.csdn.net/detail/zzcliang/9886118下载Drozer
  第二部:在windows机器上进行安装,并把agent.apk安装到要测试的android机器上面
  第三部:验证安装是否成功
  (1)打开cmd,运行adb forward tcp:31415 tcp:31415,如图所示
  (2)在Android设备上开启Drozer Agent,如图所示:
  (3)在pc端cmd切换到drozer安装目前,然后运行 drozer console connect,如图所示:
  这时手机上该drozer处于监听状态,如图所示:

  二、测试步骤
  (1)获取要测试应用的包名
  dz>run app.package.list -f xxx ,其中xxx代码你应用包名里面的某个字段,它是模糊拼配,会列出包含该字段的所有包名
  (2)获取应用的基本信息
  run app.package.info -a com.xx.xx?? ,info后面跟的是具体包名
  可以看到应用的版本信息,数据存储的目录,用户ID,组ID,是否有共享库,还有权限信息等
  (3)确定存在可能被攻击的界面
  run app.package.attacksurface xx.xx.xx????? xx.xx.xx指具体包名
  显示了潜在可以利用的组件个数: “exported”表示组件可以被其他App使用。 services is debuggable表示我们可以用adb绑定一个调试器到进程
  (4)获取activity
  run app.activity.info -a com.newborntown.android.solo.fitness
  启动activity
  run app.activity.start --component com.newborntown.android.solo.fitness com.newborntown.android.solo.fitness.main.SplashActivity
  如果组件存在拒绝服务就会产生异常,导致APP停止运行。
  同样可以通过其他组件的start模块调用相应的组件进行测试
  如果任何模块有疑问的或者不会使用的,可以通过-h(help)来查看相应的帮助信息
  备注:该命令是一条命令component 后面跟的是上一步查出的包名和activity
  (5)获取Content Provide信息
  1、run app.provider.info -a com.newborntown.android.solo.fitness
  content provider的具体信息,包括名字,权限,访问路径等。
  2、获取所有可以访问的Url(数据泄露)
  run scanner.provider.finduris -a com.newborntown.android.solo.fitness
  run app.provider.query content://xx.xx.xx.DBContentProvider/Passwords/ --vertical
  查询到数据说明存在漏洞
  3、同时检测SQL注入和目录遍历
  run scanner.provider.injection -a xx.xx.xx
  run scanner.provider.traversal -a xx.xx.xx
  (6)intent组件触发(拒绝服务、权限提升)
  利用intent对组件的触发一般有两类漏洞,一类是拒绝服务,一类的权限提升。拒绝服务危害性比较低,更多的只是影响应用服务质量;而权限提升将使得没有该权限的应用可以通过intent触发拥有该权限的应用,从而帮助其完成越权行为。
  尝试权限提升
  权限提升其实和拒绝服务很类似,只不过目的变成构造更为完整、更能满足程序逻辑的intent。由于activity一般多于用户交互有关,所以基 于intent的权限提升更多针对broadcast receiver和service。与drozer相关的权限提升工具,可以参考IntentFuzzer,其结合了drozer以及hook技术,采用 feedback策略进行fuzzing。以下仅仅列举drozer发送intent的命令:
  (1)获取service详情
  run app.service.info -a xx.xx.xx
  不使用drozer启动service
  am startservice –n 包名/service名
  (2)权限提升
  run app.service.start --action xx.xx.xx.SEND_SMS --extra string dest 11111 --extra string text 1111 --extra string OP SEND_SMS

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号