【安全测试】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”或者设置调用需要申请的权限

2SQLiteStatementsqLiteStatement =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

Drozer – Android APP安全评估工具(附测试案例)



你可能感兴趣的:(android)