drozer安装使用教程(Windows)

drozer和adb一样,又不是新出的工具,本不该出了这么久还要由我这样半懂不懂的再写篇东西了。但是还是一样每次使用都得百度和筛选半天,所以记下来算给自己看。以后看到我还写些老掉牙的东西都是这个原因,不再重复。

drozer的基本功能感觉就是通过分析AndroidManifest.xml,看四大组件中有没有可export的,如果有那么就去详细查看这些可export的组件是不是真有问题。

本教程第一大节讲安装,第二大节讲使用drozer连接手机,第三大节讲通过drozer检测app安全性。本教程主要参官方github主页说明官方文档

 

一、安装

1.1 电脑下载安装依赖

python2.7----drozer使用python2.7编写不支持python3.x,所以只能装python2.7,。使用minicoda版python时一直报“ImportError: No module named drozer.cli.console”,改装官方版python2.7未出现问题未深究原因。

python其他库----pip install protobuf pyOpenSSL Twisted service_identity

jdk1.7----Java是安卓的主要开发语言,应该是与手机交互时使用。jdk安装可参考链接

adb----Android Debug Bridge,一般在Android SDK安装目录下的platform-tools文件夹下就有,也可以另外下载安装。安装使用可参考链接

 

1.2 电脑下载安装drozer

下载链接:https://github.com/mwrlabs/drozer/releases/

选择系统相应的包,我这里选windows的msi安装包

双击下载的安装程序

drozer是python2.7写的,如果没在环境变量中配置python2.7的路径,那么就要手动指定

另外drozer不支持python3.x,所以如下图即便安装程序识别出了python3.x也要自己指定python2.7的位置

另外可能有小伙伴到这里就会感觉到drozer感觉就是python的第三方库那直接用pip安装不更省事?

第三方库是对的,pip中也可以找到drozer但实际发现使用pip安装时没有drozer.bat运行不起来,至于为什么不直接加上drozer.bat还是这两种途径有更深的区别没深究。

 

1.3 下载安装手机agent

使用usb线将手机连接到电脑(或开启一个模拟设备),使用adb将agent安装到手机。

agent下载地址:https://github.com/mwrlabs/drozer/releases/download/2.3.4/drozer-agent-2.3.4.apk

到手机打开启agent,如下图确保右下角按钮显示为“开启”(如果显示为关闭,在其上点击将其切换为开启即可)

 

二、连接

2.1 环境变量配置

首先,python需要加入到环境变量,不然在执行drozer.bat console connect时会报“'python.exe' 不是内部或外部命令,也不是可运行的程序或批处理文件。”

其次,drozer会和其他第三方python库一样安装到python的各文件夹下,其中主要执行的drozer.bat在$PYTHON_HOME\Scripts文件夹下,所以scripts为了方便也加入到环境变量。

可以直接编缉环境变量,但修改环境变量比较麻烦,而且我已安装python3.7不想影响python版本所以这里使用set path来临时修改环境变量。

我修改命令如下,修改成自己的目录。要注意最后的%path%,不然原先的path的值就被覆盖了。至于大小写,cmd不区分大小写。

set path=D:\Language\Python27;D:\Language\Python27\Scripts;%path%

 

2.2 切换到drozer安装目录

如果cmd的当前路径和drozer.bat如果不在同一驱动器(比如cmd当前在c盘,drozer.bat在d盘),那么虽然使用drozer.bat console connect也可以进入drozer控制台,但是执行run时会报错。

比入我这里drozer安装在D盘,在我当前路径是“C:\Users\ls”,直接进入drozer控制台。报错“unknown module: 'app.package.list'”,如下图所示:

处理这个问题,只要将cmd路径切换到drozer.bat同驱动器下即可(比如我这里要做的就是切换到D盘)。

结合网上说法,为了确保万无一失,这里直接接切换到drozer.bat所在的“D:\Language\Python27\Scripts”目录

 

2.3 使用drozer连接手机

有些文档说如果是真机,dorzer.bat console connect后要加上ip,ip那是网络连接通过usb连接后并不需要ip(所以,我也不懂adb forward tcp:31415 tcp:31415这句有什么用

adb forward tcp:31415 tcp:31415
drozer.bat console connect

 如果报错“[Errno 10054]”那应该是手机agent处于关闭状态,请按1.3中的说明去开启。

 

 三、使用drozer对app进行测试

官方直接给出的drozer支持命令及其命令说明列表如下

CommandDescription
run Executes a drozer module
list Show a list of all drozer modules that can be executed in the current session. This hides modules that you do not have suitable permissions to run.
shell Start an interactive Linux shell on the device, in the context of the Agent process.
cd Mounts a particular namespace as the root of session, to avoid having to repeatedly type the full name of a module.
clean Remove temporary files stored by drozer on the Android device.
contributors Displays a list of people who have contributed to the drozer framework and modules in use on your system.
echo Print text to the console.
exit Terminate the drozer session.
help Display help about a particular command or module.
load Load a file containing drozer commands, and execute them in sequence.
module Find and install additional drozer modules from the Internet.
permissions Display a list of the permissions granted to the drozer Agent.
set Store a value in a variable that will be passed as an environment variable to any Linux shells spawned by drozer.
unset Remove a named variable that drozer passes to any Linux shells that it spawns.

 

 

 

 

 

 

 

 

 

 

 

当然也可以在drozer console中直接使用help查看;然后进一步使用help command可查看各命令更具体的使用方法。

按我理解,简单来说drozer的基本用法就是:

首先,使用list查看支持哪些模块;

然后,使用help module_name,或者run module_name -h查看各module的用法;

最后,通过run module_name module_options来对app进行检测。

dorzer的使用基本流程就是以下3.1-3.6。

 

3.1 通过app.package.list模块获取要检测的app的包名

要检测的app可以通过手机市场安装,也可以使用adb install package_path安装这里就不赘述了。

 run app.package.list -f filter_str

 

3.2 使用app.package.info模块查看apk基本信息

run app.package.info -a package_name

 

3.3 使用app.package.attacksurface模块识别攻击面

所谓攻击面,应该就是指可export的安卓四大组件(activaty、broadcast receiver、content provider、service)

如果查看到四大组件中有可export的,就去具体看可export的组件有没有问题(后续3.4、3.5、3.6就是干这事,为什么没有receiver没深究)

run app.package.attacksurface package_name

 

3.4 使用app.activity.info模块查看activity组件信息

run app.activity.info -a package_name

 

3.5 使用app.provider.info模块查看content provider组件信息

 run app.provider.info -a package_name

 

3.6 使用app.service.info模块查看service组件信息

run app.service.info -a package_name

 

参考:

https://github.com/mwrlabs/drozer

https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf

https://blog.csdn.net/qq_23212697/article/details/69177654

http://www.360doc.com/content/16/0405/14/25472073_548029178.shtml

 

posted on 2018-08-08 17:34  诸子流  阅读(25065)  评论(1编辑  收藏  举报