自己动手开发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':’插件路径’ #重要
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