码迷,mamicode.com
首页 > 移动开发 > 详细

使用drozer对app进行评估(转载)

时间:2015-02-03 01:50:09      阅读:1170      评论:0      收藏:0      [点我收藏+]

标签:

使用drozer对Android应用进行安全评估的测试例子

看着drozer的用户说明文档,试了几个Android App,测试发现这几个App都基本没什么问题,只好又用drozer提供的sieve来进行练习了。进行安装评估的步骤一般也就是下面的标题步骤了。

1 在Android设备上安装使用sieve

sieve是一个密码管理器App,用来展示Android应用的一些共同缺陷,可以用来练习使用drozer。https://www.mwrinfosecurity.com/system/assets/380/original/sieve.apk下载sieve.apk。 打开模拟器,安装sieve: adb intsall sieve apk 然后设置sieve,第一次使用需要设置打开sieve软件的密码和PIN码。 给sieve增加内容,添加一些要管理的帐号密码信息
技术分享

技术分享

在seting里面还有其他的功能:

技术分享

2 获取App Package信息

drozer每个模块的作用:
技术分享

获取App包信息的模块是**app.package.* **:
技术分享

2.1获取获取Android设备上的所有的安装的App的包名

命令是:

run app.package.info -a com.mwr.example.sieve

run app.package.list

这条命令会把所有的App都列出来,如果想具体查找某个App可加上-f [App关键字]的参数,如查找sieve在Android设备中的包名:

run app.package.list -f sieve

技术分享

注意:在输入命令时可以使用Tab键自动补齐 需要记住com.mwr.example.sieve的包名,以后的命令要针对这个操作

2.2获取sieve的一些基本信息

命令是:

run app.package.info -a com.mwr.example.sieve

技术分享

可以看到Sieve的版本信息,数据存储的目录,用户ID,组ID,是否有共享库,还有权限信息等。

2.3Itentify the Attack Surface(确定攻击面?)

这个测试教程主要关注的是Android 固有的IPC通信机制的脆弱性,这些特点导致了App泄漏敏感信息给同一台设备上的其它App。 查找可以进行Attack Surface的组件的命令:

run app.package.attacksurface com.mwr.example.sieve

技术分享

结果显示了潜在可以利用的组件个数: “exported”表示组件可以被其他App使用。 services is debuggable表示我们可以用adb绑定一个调试器到进程。

2.4进一步获取Attack Surface的信息

如进一步获取ativity组建的attack surface信息的命令是:

run app.activity.info -a com.mwr.example.sieve

技术分享

其中上图的MainLoginActivity是程序启动时主界面,必须是exported,其他两个activity是理论上说是不能exported的。

2.5启动Activities

上图的PWList和FileSelectActivity是exported并且不需要任何权限,我们可以用drozer启动他们,比如感觉PWList这个含金量应该大一点,所以就启动它了,命令是:

run app.activity.start –component com.mwr.example.sieve com.mwr.example.sieve.PWList

启动后的效果:

技术分享

app.activity.start的使用方法:

help app.activity.start usage: run app.activity.start [-h] [–action ACTION] [–category CATEGORY [CATEGORY …]] [–component PACKAGE COMPONENT] [–data-uri DATA_URI] [–extra TYPE KEY VALUE] [–flags FLAGS [FLAGS …]] [–mimetype MIMETYPE]

Starts an Activity using the formulated intent.

2.6从Content Provider中获取信息

接上2.3节,进一步获取content provider的attact surface的信息的命令是:

run app.provider.info -a com.mwr.example.sieve

技术分享
从上图可以看到2.3节中两个exported的content provider的具体信息,包括名字,权限,访问路径等。

2.6.1查找可以访问content provider的URI(数据泄漏)

从上节图中我们猜测DBContentProvider会有某种格式的数据库,但是我们不知道其中的数据是如何组织的。Content URI必须是 “content:///” 的形式,因此我们可以构造部分的content URIs来访问DBcontent Provider。 上图存在一个需要READ_KEYS和WRITE_KEYS权限才能读和写的“/Keys”的路径。

drozer的scanner模块提供了一些方法去猜测可能存在的content URIs:

run scanner.provider.finduris -a com.mwr.example.sieve

技术分享
上图中检测出了可以访问content的URI,接下来我们可以用drozer的其他模块和URI从content中获取,甚至更改信息。 如:

run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ –vertical

技术分享
如上图我们获取了用户名,邮箱帐号,和Base64编码的密码字符串。

2.6.2进行SQL注入

Android操作系统建议使用SQLite数据库存储用户数据。SQLite数据库使用SQL语句,所以可以进行SQL注入。 使用projection参数和seleciton参数可以传递一些简单的SQL注入语句到Content provider。如:

run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ –projection “‘”

技术分享

run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ –selection “‘”

技术分享

上面两条命令执行后Android设备返回了非常详细的错误信息。

使用Sql注入列出数据库中的所有数据表:

run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ –projection “* FROM SQLITE_MASTER WHERE type=’table‘;–“

技术分享

使用SQL注入列出数据表的内容

run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ –projection “* FROM Key;–“

技术分享

2.6.3从File System-backed Content Providers获取信息

File System-backed Content Provider提供了访问底层文件系统的方法,Android沙盒会阻止App共享文件允许,而File System-backed Content Provider允许App共享文件。 对于sieve来说,我们可以推测出的FileBackupProvider就是一个file system-backed content provider。 我们可以使用drozer的app.provider.read模块查看某个文件

run app.provider.read content://com.mwr.example.sieve.FileBackupProvider/etc/hosts

技术分享

可以使用app.provider.download下载文件

run app.provider.download content://com.mwr.example.sieve.FileBackupProvider/data/data/com.mwr.example.sieve/databases/database.db /home/user/database.db

2.6.4检查Content Provider的脆弱性

检查是否有SQL注入:

run scanner.provider.injection -a com.mwr.example.sieve

技术分享

检查是否存在遍历文件的漏洞

run scanner.provider.traversal -a com.mwr.example.sieve

技术分享

总结体会:我觉得在刚开始获取了软件包的基本信息后,就先用模块scanner里面的工具扫一扫,找到一些漏洞或者利用点后再进行下一步。

2.7和Services交互

获取是exported状态的services的命令:

run app.service.info -a com.mwr.example.sieve

技术分享

关于Services的模块:
技术分享

如向某个服务发送信息:

run app.service.send com.mwr.example.sieve com.mwr.example.sieve.CryptoService –msg 1 5 3

返回的结果:
技术分享
没搞明白为什么返回这个,段数还不够。

2.8 其他常用模块

  • shell.start 在Android设备上开启一个交互式Linux Shell
  • tools.file.upload / tools.file.download
  • tools.setup.busybox / tools.setup.minimalsu 安装busybox或者minimalsu到Android设备上

Ubuntu14.04 Drozer工具的安装和使用

2014年7月22日 没有评论

Ubuntu14.04 Drozer工具的安装和使用

1.Drozer工具简介

2.工具的安装

2.1安装前提

确保PC机的操作系统里面安装了:

  • JRE或者JDK
  • Android SDK

64位的Ubuntu14.04需要安装IA32-libs。 确保adb和java已经在系统环境变量PATH中。

2.2Ubuntu安装Drozer

可以在官网https://www.mwrinfosecurity.com/products/drozer/community-edition/下载.deb的安装包直接安装;也可以下载.egg的python包安装,此时需要自己手动下载安装protobuf和twisted包。我是直接下载的.deb包安装的。

2.3手机或者模拟器安装代理agent.apk

下载agent.apk,使用命令安装:

adb install agent.apk

3 Drozer的使用

3.1建立Drozer Console和Dorzer Agent的连接,开启一个会话

Step1建立端口转发,Drozer默认使用31415端口。 如下命令:将Ubuntu的TCP端口31415的所有数据转发到手机上31415端口:

adb forward tcp:31415 tcp:31415

Step2在Android设备上开启Agent server。 选择”Enbeded Server“那一项,然后选择”Enadble“开启Agent server。

技术分享

技术分享

Step3使用drozer Console连接Agent server。 在Ubuntu的终端中输入命令:

drozer console connect

打开效果如下: 技术分享

3.2Drozer Console的命令

Drozer Console是一个命令行环境,和bash shell相似。 Drozer Console提供了一系列的评估Android设备安全性的模块,每个模块有很明确的功能。 下图是自己根据官方文档翻译出的命令描述,可能不准确:

命令描述备注
run MODULE 运行一个drozer模块  
list或者ls 显示在当前会话中可被执行的所有drozer模块 隐藏你没有权限执行的模块
shell 在设备上的Agent进程上下文中开启一个交互式的Linux shell  
cd 跳转命令,挂载到指定的模块空间 可以避免重复输入模块的全名
clean 清除drozer保存在Android设备上的临时文件  
contributors 列出为drozer框架做出贡献的人名  
echo 在console中显示文本  
exit 结束drozer会话  
help ABOUT 显示某一个命令或者模块(ABOUT)的帮助  
load 加载并且顺序运行一个包含一系列drozer命令的文件  
module 从互联网上寻找和安装drozer的扩展模块  
permissions 显示drozer Agent获得的权限  
set 赋值运算,将一个数值存到一个变量中,这个变量可以做环境变量 如:set HOST=193.168.1.1
unset 取消赋值 ……

以下图片先用list显示了所有模块,再用cd命令进入scanner模块,然后使用了set、echo、unset命令 技术分享

下图是官方文档的命令说明: 技术分享

使用drozer对app进行评估(转载)

标签:

原文地址:http://www.cnblogs.com/bluesky4cn/p/4269031.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!