安卓渗透框架-Drozer架构浅析--架构组成和自定义模块

安卓渗透框架-Drozer架构浅析--架构组成和自定义模块

标签(空格分隔): Drozer Android Security


1. Drozer 简介

Drozer是MWR Labs开发的一款针对Android系统的安全测试框架。Drozer可以通过与Dalivik 虚拟机,以及其它应用程序的IPC端点以及底层操作系统的交互,避免正处于开发阶段,或者部署于你的组织的android应用程序和设备暴露出不可接受的安全风险。


2. Drozer的使用

网上关于Drozer如何使用的文章很多,这里贴出来一两篇比较好的:
中文版:http://www.freebuf.com/tools/26503.html
英文版:https://www.mwrinfosecurity.com/system/assets/937/original/mwri_drozer-user-guide_2015-03-23.pdf


3. Drozer 组成

Drozer 总共由以下几个部分组成:

  1. Drozer Console ---- Drozer 的pc端用户操作接口

  2. Drozer agent ---- 安装在安卓手机上的Drozer代理应用

  3. Drozer Modules ---- Drozer所包含的可以被利用的模块,Exploit,Payload

  4. Drozer API ---- Drozer提供的 customize module 接口,用来编写自定义module或者exploit,payload

  5. Drozer Common ---- 在console和agent之间传输和共享数据的一些组件

  6. Other: (optional)
    ----------Rogue agent:提供了远程管理工具的代理
    ----------JAR agent:对Rogue agent进行了jar打包
    ----------Weasel: 可以理解为提供的和Rogue agent配套的高级payload


4. Drozer Console

Drozer Console 是用python编写而成的一个命令行工具,使用者可以通过console连接到agent上对Dalvik VM 进行操作。

接口是通过python的官方模块cmdreadline等模块实现,通过shlex解析命令,通过argparse解析参数。感兴趣的可以阅读Drzer Console的相关源码:

github地址:https://github.com/mwrlabs/drozer


5. agent

agent 是一个安装在测试安卓机上轻量级app,并且只申请一个权限,是为了用来和pc进行连接的。这个agent应用要求 Android API leven 7,兼容于Andriod 2.1以及以上的版本

(1) agent和console的连接方式

1. 直连方式(Direct Mode):

这一种链接方式,是需要在pc机上安装adb工具,并且使用数据线将测试机链接在pc机上实现的,agent会在测试机上开启一个服务器,然后通过adb开启一个本地tcp通路:
adb forward tcp:31415 tcp:31415
这样就可以连接上agent的服务器了。具体操作请看使用教程。

2. 网络链接方式(Infrastructure Mode):

这种方式是用过局域网去链接的,pc机开启一个server,然后在agent上配置和server建立tcp链接,再使用终端链接上去。具体请查看使用教程。

(2) 具体连接形式(connections)

drozer 的connections是通过一种通用的二进制消息传输形式(protobuf,具体请查看google的protobuf开源项目)来传输Frame信息,在console端是一个python的线程,在agent端是java的一个线程,他们传输的消息有以下几种:

1. 如果是SYSTEM_REQUEST,就传输的是SystemMessageHandler消息,SYSTEM_REQUEST指的是agent和console之间进行连接,交换状态的消息,她可以分为两种,SystemRequestSystemResponse

2. 如果是REFLECTION_REQUEST,就传输的是 ReflectionRequestHandler消息,REFLECTION_REQUEST指的是用户在使用相关的exploit或者payload命令的时候传输的消息,也有两种:ReflectionRequestReflectionResponse

agent源码:https://github.com/mwrlabs/drozer-agent
传输消息格式和类型:https://github.com/mwrlabs/mercury-common

(3) 消息传输session

和http一样,drozer的console和agent之间的传输也有session,当console和angent链接成功的时候,agent便会生成一个session,它是一个256位的hash字符串,后面的每一次通信都必须带上该session id


Drozer Modules

drozer拥有很多可以直接利用的Module, Exploit, Payload.这些你可以在drozer console中使用list命令查看相关module,也可以在bash下使用drozer exploit list查看相关exploit,也可以使用drozer payload list 来查看相关payload。具体使用方式请查看相关帮助。

所有的module源码可以在这里查看:
https://github.com/mwrlabs/drozer-modules


Drozer API

Drozer 提供了module编写接口,在安装好drozer之后,就可以使用python来用相关的库了.
相关可以查看官方文档和相关博客:

  1. https://github.com/mwrlabs/drozer/wiki/Writing-a-Module

  2. http://appscan.360.cn/blog/?p=45


SoulReaper
菜鸟一枚...想飞!!

A dream,lots of accumulation

699 声望
11 粉丝
0 条评论
推荐阅读
Mac下安装apache waf模块modsecurity
mods在yum源(centos)以及apt源(ubuntu)下都有现成的安装包。只需要类似 apt-get install 或者yum install 即可。 但是在mac的osx系统下,没有任何二级制安装包,如果想在osx上玩mods,那就需要从源码编译

LoftySoul阅读 3.6k

「持续兼容」微信H5选择照片(图片&视频)及拍照&录像
做过H5调用手机相册或者拍照的同学可能深有体会,在不同型号手机和不同的浏览器上表现各有差异,实属头疼。由于手机自带浏览器或者第三方浏览器实在太多,结合最近正在做的项目用户群体P90在微信上,文本单从兼容...

wuwhs5阅读 669

封面图
程序员英语学习指南
动机为什么程序员要学习英语?工作:我们每天接触的代码都是英文的、包括很多技术文档也是英文的学习:最新最前沿的技术最开始都是只有English版本就业:学好英语让你的就业范围扩大到全球,而不只限于国内目标读...

九旬6阅读 664

安卓逆向之破解某成人APP播放次数限制
某成人水果APP非VIP用户存在播放次数限制,每天只能播放3次。超过3次需要购买VIP。 由于过于贫穷,于是抽空,对其安卓APP进行了逆向分析,最终成功破解了其播放次数限制。

悖论3阅读 1.4k评论 3

封面图
http 和 https 的通信过程及区别
🎈 两者的区别端口: http 端口号是80, https 端口号是443传输协议: http 是超文本传输协议,属于明文传输; https 是安全的超文本传输协议,是经过 SSL 加密后的传输协议安全性: https 使用了 TLS/SSL 加密,...

tiny极客2阅读 2.8k评论 2

封面图
这一次,解决Flutter Dialog的各种痛点!
4.0版本做了重大调整,迁移请参照: SmartDialog 3.x 迁移 4.0本文内容已更新,文中内容及其代码皆为4.0用法前言Q:你一生中闻过最臭的东西,是什么?A:我那早已腐烂的梦。兄弟萌!!!我又来了!这次,我能自信...

小呆呆6661阅读 3.5k

封面图
uni-app中安卓包检查更新、新版本下载、下载进度条显示功能实现
如果想要做一个app的话,可以有很多种选择方案,uni-app是其中的一个性价比高一些(坑多一些)的方案。本文记录一下,uni-app打安卓包以后,需要检查并下载更新,且显示进度条的功能。

水冗水孚2阅读 760

A dream,lots of accumulation

699 声望
11 粉丝
宣传栏