自己动手开发Drozer插件之AutoAttack

自己动手开发Drozer插件之AutoAttack

图/文 360捉虫

1、Drozer是什么

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

2、Drozer的插件

         关于drozer的使用这里不再赘述,网上已有文档教程,这里我们重点学习Drozer的插件模式。众所周知,Drozer不仅本身功能强大,而且提供了插件接口方便开发者自己写插件增强功能,官方也自带了几个插件,https://github.com/mwrlabs/drozer/tree/develop/src/drozer/modules,并且还提供了第三方开发者的插件https://github.com/mwrlabs/drozer-modules。

3、插件的开发格式

       我们先来看一个插件的代码片段:


这是MWR官方的搜索app可读文件的插件。一般来说,一个app以单独用户进程运行,其他进程是没有权限读写data目录下的文件的,但是如果编码不当,导致data目录下的文件可读写,如果是比较重要的配置文件将会导致信息泄漏等安全问题。


我们来逐行解释代码,第1行,首先导入需要用到的drozer的模块类common和Module;第3行,定义类名继承至多个类;接下来是插件的固定格式,先看几个常量:
  • ‘name':’插件名’,
  • ‘description':’插件描述,详细介绍插件用途’,
  • ‘examples':’插件使用例子说明’,
  • ‘author':’作者’,
  • ‘date':’日期’,
  • ‘licence':’许可’,
  • ‘path':’插件路径’  #重要
其中重要常量path决定了你添加插件时的路径,如果没有按照你设计的路径添加将会找不到插件;再接下来是方法add_arguments:添加你插件的参数和帮助说明或默认值、execute可以理解为插件的入口方法。至于execute的详细代码内容不在本篇文章讨论之列,大家可自行阅读看看drozer是怎么扫描可读文件的。

4、编写一个自己的插件

        明白了插件格式,接下来就可以自己写一个插件了。手头这个example是几个月前刚接触drozer时写的一个半自动化的插件,当时测试启动app的每个导出组件时都是手动的命令一条条输入,所以之后想改善一下就在官方代码上稍微加工了一下。

        大致思路是这样的:获取每个被导出的组件名,以及它的intent-filter,然后封装一个intent发送给这个组件尝试启动它,目的是测试app是否会产生拒绝服务。插件代码片段如下:



首先获取被导出的activity,然后获得这个activity的action。因为启动组件,比如activity和service都有两种启动方式,一种通过设置component的显式启动,另一种是通过设置action的隐式启动,所以方法attack里我覆盖了这两种方法,一是直接启动组件名,不带action测试;另外是只发送action测试无组件的情况。


5、安装插件

        安装drozer插件的命令为 module install 插件的绝对路径 比如我的就是“module install /home/hg/drozer_module/hg.test.test”,文件名与插件中的path变量有关,比如path是[‘hg’,’test’],我们的文件就要命名为hg.test.xxx,xxx是可以自定义的;另外一种方式就是目录形式的,建立目录hg,子目录test,里面文件名就可以是xxx.py了。安装与运行如图所示:



这里我只测试了导出的activity,像broadcast和service以及provider也是一样的原理,希望大家看后都能写出自己的强大的drozer插件。


相关下载

链接: http://pan.baidu.com/s/1bnm44hD 密码: e4d0


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值