|
@方洪波师傅授权发布,感谢分享!
drozer是一款针对Android系统的安全测试框架。drozer可以通过与Dalivik VM,其它应用程序的IPC端点以及底层操作系统的交互,避免正处于开发阶段,或者已经部署的android应用程序和设备暴露出不可接受的安全风险。
项目地址:https://github.com/WithSecureLabs/drozer
1. 安装jdk
安装jdk-7u80-windows-x64,设置javac环境变量,C:Program FilesJavajdk1.7.0_80bin
2. 安装Python
必须安装Python2.7,drozer不支持Python3,python-2.7.15.amd64这个版本可以安装。如计算机里安装多个Python版本,在Python2.7安装完之后,可设置临时path变量,每次在执行之前,在cmd下执行set path=C: Python27;C: Python27Scripts;%path%
3. 安装drozer
必须和Python安装在同一个目录,安装完之后,drozer相关程序在C: Python27Scripts目录,见下图:
4. 安装依赖库
执行drozer console connect报错,执行
pip install protobuf
继续报错,执行
python -m pip install --upgrade pip
再次执行
pip install protobuf
继续执行
drozer console connect
报错,执行
pip install pyopenssl
继续执行
drozer console connect
报错,执行
pip install twisted
继续执行
drozer console connect
执行
pip install service_identity
继续执行
drozer console connect
drozer安装完成。
5. 安装MuMu模拟器
*虚拟机无法安装模拟器
在模拟器里安装drozer-agent-2.3.4.apk,并启动;然后在模拟器adb所在目录执行以下命令:
adb_server.exe devices
adb_server.exe connect 127.0.0.1:7555
adb_server.exe devices
adb_server.exe forward tcp:31415 tcp:31415
drozer console connect
drozer执行成功后,agent会显示如下信息:
6. 解决包名乱码
7. 显示App包名
8. 测试sieve
sieve.apk是一个样本App,可供测试。
2.列出应用程序基本信息
此处列出信息包括应用程序版本,应用程序数据存储路径,应用程序安装路径,相关权限等;
3. 确定攻击面
此处显示了一些潜在的攻击方向,这个应用程序输出了一些activities,content providers和services。注意到服务是可调式的,这意味着可以将调试器附加到进程上,进行逐步调试。
4. 启动activities
可以通过特定的命令深入这个攻击面。例如,可以查看任何一个activities的详细信息。
此处,PWlist很特别。由于这个activity被输出并且不需要任何权限,可以使用drozer启动它:
此处在后台制定了一个合适的意图,并且通过'startActivity'call将其传递给了系统。可以确定,已经成功绕过了授权并且查看到了用户凭证列表。
5. 从Contend Provider读取信息
可以确定,这两个content provider都不需要任何特殊的权限才能和它们交互,除了DBContentProvider的/keys路径。
a. 基于数据库的Content Provider(数据泄露)
很容易可以猜测出,名为DBContentProvider的Content Provider必然存在某种形式的数据库。然而,由于不知道Content Provider是如何组织的,还需要花一番功夫去提取信息。可以重建部分内容URIS,以进入Content Provider。
此时,可以使用其它的drozer模块从这些内容URIs中提取信息,甚至更改数据库中的数据。
b. 基于数据库的Content Provider(SQL注入)
通过操纵传递给Content Provider的投影或选择字段,很容易测试程序是否存在SQL注入漏洞:
Android返回一段冗长的错误信息,显示它视图执行的整个查询。可以利用这个漏洞列出数据库中的所有表:
或者查询其它受保护的表:
c. 基于文件系统的Content Provider
由于可以合理的假设FileBackupProvider是一个基于文件系统的content provider,并且路径组件代表想要打开的文件位置,可以容易的猜测到它的content URIs并且使用drozer的模块去读取这个文件:
前面已经知道了应用程序数据库所在的路径,由此可以获得更多信息:
此处将应用程序的数据库从设备拷贝到了本地机器上,现在可以通过SQLite提取用户的加密密码和他们的主密码。
d. Content Provider漏洞检测
drozer提供模块自动检测这些简单的漏洞案例:
e. 与Services交互
9. 其他师傅补充
docker run -it withsecurelabs/drozer console connect --server 手机IP
10. 参考技术文档
https://www.cnblogs.com/zhaoyixiang/p/11236458.html
https://www.cnblogs.com/lsdb/p/9441813.html
https://blog.csdn.net/lmh666888/article/details/125644667
https://blog.csdn.net/weixin_43525479/article/details/125282379
https://www.secpulse.com/archives/5228.html
https://mp.weixin.qq.com/s/9O5zW3d-OKB6k1s3htH57A
原文始发于微信公众号(网安探险家):APP安全 | Drozer工具安装与使用
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论