天天看点

【安全测试】Drozer安装及使用

一、Dorzer安装

     需要用到如下两个工具:如以前安装过mercury,这两个工具应该已经有了。

         Java Runtime Environment (JRE) or Java Development Kit (JDK)

          Android SDK

     下载安装后需要把adb和java工具路径写入PATH环境变量中

1、下载:打开此下载地址,windows环境选择drozer (Windows Installer)并下载

https://www.mwrinfosecurity.com/products/drozer/community-edition/

2、安装:解压zip文件并点击setup安装,一路默认安装就行;它会自动安装到C:\drozer文件夹下。

3、检测是否安装成功:

打开cmd窗口,键入C:\drozer\drozer.bat , 如出现如下提示说明安装成功。

4、安装agent客户端到手机:

确保手机debug模式开启,通过USB连接到PC上,通过如下命令安装agent.apk客户端。

adb install agent.apk

安装完成后启动drozerAgent

点击右下角“开启”按钮,开启Agent

5、建立session连接:

保持手机与PC通过USB连接正常,然后通过cmd窗口键入如下命令

       adb forward tcp:31415 tcp:31415

      drozer console connect 或 C:\drozer\drozer.bat console connect

出现android头像及:

dz>

命令提示符表示连接成功

6、具体安装步骤和使用方法详见文件:mwri_drozer-users-guide_2013-09-11.pdf

https://www.mwrinfosecurity.com/system/assets/559/original/mwri_drozer-users-guide_2013-09-11.pdf

修复连接时java路径找不到问题:

1、创建如下文件并命名为:1.txt (如果为winXP,则可以直接命名为.drozer_config)

2、写入内容如下几行内容:此处为java.exe文件的安装位置,具体情况具体处理。

[executables]

java =C:\Program Files\Java\jdk1.7.0_40\bin\java.exe

javac =C:\Program Files\Java\jdk1.7.0_04\bin\javac.exe

dx =F:\Android\android-sdk_r18-windows\android-sdk-windows\platform-tools\dx.bat

3、把此文件放入个人目录下文件夹:

英文:C:\Users\<youruser name>\

中文:C:\用户\<你的用户名名称>\

4、通过cmd命令重命名此文件为:.drozer_config

rename  C:\Users\d00218136\1.txt .drozer_config

二、android组件安全分析

service组件风险分析

Service是后台运行服务,它不在UI界面显示,其安全相关特征:

     Exported设置为Ture就表示可以外部调用,暴露状态;False为不可外部调用。

          如果至少含有一个intent-filter,则其默认exported状态为Ture。

          如果一个intent-filter也没有,则其默认exported状态为False。

    Permission设置,有此设置则只有申请此permission的应用才可以访问。

风险Service的情况:

     与某项功能或服务有联系,恶意应用通过伪造intent信息进行Server欺骗攻击来控制某项功能或服务。

     应用内部通过隐式消息(implicitintent)来调用其Service,使其含有潜在的Service劫持风险。

Content Provider组件风险分析

Contentprovider组件相当于应用的数据库接口,应用通过此组件进行查询更新其数据库中的数据;其安全相关特征:

Exported设置为True就表示可以外部调用,暴露状态;False为不可外部调用。

         不同于其他三个组件:它不受到intent-filter的影响。

         Exported默认为True: 当 minSdkVersion 或targetSdkVersion设置为"16"或更低时。

         Exported默认为False: 当 minSdkVersion 或targetSdkVersion设置为"17"或更高时。

Permission设置,有此设置则只有申请此permission的应用才可以访问。

同时还可单独设置读写权限:Read/Writepermission;如果这两个权限没有设置(也即其读写权限为null),则表示访问此content provider不需要读写权限。

三、Drozer使用

获取apk信息

  •1)查找终端设备所有APK信息

             Run app.packege.list –f过滤信息

•(2)具体查看某个APK信息

             Run app.package.info –a apk名

•(3)查找APK存在的攻击面(activity、contentprovider、service)

             Run app.package.attacksurface  apk名

绕过Activity鉴权

•(1)收集Activity的信息进行收集,查找暴露的Activity

             Run app.activity.info –a apk包名

   (2)构造intent信息绕过鉴权直接运行Activity

           Run app.activity.start –-componentcom.mwr.example.sieve包名

利用ContentProvider攻击

•(1)收集ContentProvider的信息进行收集,查找暴露的ContentProvider

    Run app.provider.info –a apk包名

•(2)发现暴露的ContentProvider后,可以对数据库进行探测。探测出可以查询的URI

    Run scanner.provider.finduris –aapk包名

•(3)查看数据库中的内容

    Run app.provider.query URI –vertical

•(4)对数据库表进行插入操作

    Run app.provider.insert URI对应数据表中的字段

•(5)对数据库表进行删除操作

    Run app.provider.delete URI–-selection “条件”

SQL注入

•(1)查看URI对应的数据库表

    Run app.provider.query URI–-projection “ ‘ ”

    Run app.provider.query URI–-selection “ ‘ ”

•(2)可以通过返回的错误信息展示出改Content准备执行的语句,获取数据库中的信息

    Run app.provider.query URI–projection “* From SQLITE_MASTER WHERE type=‘table’;--”

    Run app.provider.query URI–-selection “_id = ?”

预防

(1)进行权限控制,对此组件进行exported=“false”或者设置调用需要申请的权限

(2)SQLiteStatementsqLiteStatement =db.compileStatement("insertinto chat(fromuid,touid,msg) values(?, ?, ?)");

    sqLiteStatement.bindLong(1, 12);

    sqLiteStatement.bindLong(2, 13);

    sqLiteStatement.bindString(3,text);

    long newRowId =sqLiteStatement.executeInsert();

四、使用示例

http://www.freebuf.com/tools/26503.html

http://www.freebuf.com/articles/terminal/33127.html

转自:http://blog.csdn.net/zsch591488385/article/details/38423627

继续阅读