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

使用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命令 

下图是官方文档的命令说明: 

时间: 2024-08-24 13:59:23

使用drozer对app进行评估(转载)的相关文章

iOS冰与火之歌番外篇 - 在非越狱手机上进行App Hook(转载)

作者简介:郑旻(花名蒸米),阿里巴巴移动安全部门资深安全工程师,香港中文大学移动安全(Android & iOS)方向博士,曾在腾讯.百度以及硅谷的FireEye实习.在博士期间发表了多篇移动安全方向的论文(BlackHat.AsiaCCS等),去过10多个不同的国家做论文演讲. 曾帮助Apple公司修复了多处iOS安全问题,并且Apple在官网表示感谢.同时也是蓝莲花战队和Insight-labs的成员,在业余时间多次参加信息安全竞赛(Defcon.AliCTF.GeekPwn等),并取得优异

移动APP测试(转载,后续自己完善)

1. 功能测试 安装.卸载.启动.运行.清除缓存/数据运行看是否正常 交互:运行时接电话.收短信.锁屏.充电.闹铃看是否正常 和第三方软件兼容 边界测试 等价类测试 安全性测试 2. 兼容性测试 系统版本兼容 分辨率兼容 3. 性能测试 客户端:启动时间.页面加载时间.占用的CPU.内存.流量.耗电量.电流.电池温度及与同类相比较是否有优势等 服务器:利用接口对服务器施加压力,重点关注响应时间.吞吐量.并发数.事物通过率 4. 易用性测试(界面整洁,简单) 用户的操作习惯,如大部分习惯用右手操作

移动APP测试 【4】-- 专项测试

如下问题: Crash 设备兼容 流量使用过多 APP 导致用户手机电量消耗过快 在不同网络情况下不稳定,比如 卡死 和 白屏的问题 针对某个特殊方面或者问题的,称之为 专项测试 如 兼容性测试,流量测试, 电量测试, 弱网络测试, 稳定性测试, 安全性测试 和 环境相关的测试 一 兼容性测试 也是功能性测试,只不过侧重在不同的软硬件环境 1 环境准备 针对APP通常会考虑: OS version , 屏幕分辨率 , 不同厂家的ROM,网络类型 2 基于 UI 自动化脚本的云测试方案 如 Tes

自建APP ,互联网创业的必备技能!

手机APP是企业进入营销时代的敲门砖,他为我们实现了诸多便捷的功能,又将碎片化的时间效用最大化,无论是行业巨头,还是中小企业,都在为自己的企业自建APP,让自己可以在移动的世界里面有一席地位.但是,对于中小企业来说,现实往往不是想的那么容易的.虽然目前大环境下,支持创业,支持中小企业发展.但是市场竞争的残酷却没有因为支持而减弱.对于绝大部分中小企业来说,进军移动互联网.开辟手机APP战场最主要的拦路虎有两只,一是资金问题,二是技术支持. 很多企业或创业者想要自建一个专属APP,却由于缺乏专业知识

【原】博客园第三方客户端-i博客园App开源

[原]博客园第三方客户端-i博客园App开源 本文转载请注明出处 —— polobymulberry-博客园 1.前言 目前i博客园App已经更新到2.0.0版本了,使用了最新的博客园Web API.相比于第一个版本,添加了很多新的功能,也修改了很多功能.整体来说改动比较大,代码也比较混乱.所以趁着清明假期,把代码好好整理了一番.目前基本的架构已成型(当然,后期还需要不断优化),但App基本功能方面还有很多需要添加的,后面会集中把App功能完善. 上面简单介绍了下目前App的情况,回到开源的话题

APP定制满足一切需求的不二之选

APICloud的 App定制平台,以快速.高效.成熟的APICloud移动应用开发技术作为基础,能够帮助客户快速完成App全链条的开发和上线.App定制平台结合服务于数万企业客户的丰富经验,目前已有上万款APP基于APICloud平台开发并发布到苹果等各大应用商店. APICloud用标准Web技术开发iOS.Android原生应用,减少开发人员投入,提高开发效率,使得APP的开发成本.迭代成本都低于传统开发模式.同时拥有标准化APP开发流程,以保障开发品质.流程分为需求评估.产品原型设计.U

高效高性价比的APP开发公司是怎样的?

APICloud是中国领先的"云端一体"的移动应用云服务提供商,推行"云端一体"的理念,重新定义了移动应用开发,帮开发者搞定一切.是专注于高效的APP开发公司. APICloud的 App定制平台能够帮助客户快速完成App全链条的开发和上线.以快速.高效.成熟的APICloud移动应用开发技术作为基础,结合服务于数万企业客户的丰富经验,目前已有上万款APP基于APICloud平台开发并发布到苹果等各大应用商店. APICloud 作为高效的APP开发公司,用标准We

到底为什么你的APP项目烂尾了?

你正在经历迷茫.纠结,或者愤怒.痛苦的情绪,因为,你的APP项目已经或将要烂尾了. 目前的状况只有3种: 项目一直拖到现在,并且很可能继续拖下去 项目在开发期间不断上涨成本 项目完成,BUG多多,不能使用 这三种状况把你困在了一个尴尬的境地,你一方面心疼你已经花费的时间和精力,希望这个项目完成下去:另一方面你看着无限拖延的时间和无限增加的成本,其实心里清楚这个项目是完成不了了. 至于为什么你现在会经历目前的状况?只有复盘项目流程才能清楚. 情景一:初次和APP开发公司见面,对方异常热情.你刚刚把

App开发+App定制平台 APICloud

一.APICloud总介绍(www.apicloud.com) APICloud拥有App开发平台和App定制平台.从开放App开发技术,到提供App定制服务,APICloud为个人开发者和企业提出围绕App开发需求的一站式解决方案. 英特尔.春秋航空等知名企业选用APICloud技术服务进行App开发,已经成功上线至苹果等各大应用商店中. 现在APICloud平台中拥有30多万用户,已经创建了50多万个App,每天生成超过5千个App安装包. 二.APICloud的App定制平台介绍(app.