drozer是一款针对Android系统的安全测试框架。drozer可以通过与Dalivik VM,其它应用程序的IPC端点以及底层操作系统的交互,避免正处于开发阶段,或者已经部署的android应用程序和设备暴露出不可接受的安全风险。
drozer提供了很多Android平台下的渗透测试exploit供使用和分享。对于远程漏洞,drozer能够生产shellcode帮助部署drozer代理作为一个远程管理工具,最大化对设备的利用。drozer可以大大缩减Android安全评估的耗时,通过攻击测试暴露Android App的漏洞。
drozer运行在Android模拟器和真实设备上,它不需要USB调试或其他开发即可使用。drozer有很多扩展模块,可以找到进行测试以发现Android安全问题。
项目地址:https://github.com/WithSecureLabs/drozer
安装jdk-7u80-windows-x64,设置javac环境变量,C:\Program Files\Java\jdk1.7.0_80\bin
必须安装Python2.7,drozer不支持Python3,python-2.7.15.amd64这个版本可以安装。如计算机里安装多个Python版本,在Python2.7安装完之后,可设置临时path变量,每次在执行之前,在cmd下执行set path=C: \Python27;C:\ Python27\Scripts;%path%
必须和Python安装在同一个目录,安装完之后,drozer相关程序在C:\ Python27\Scripts目录,见下图:
执行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安装完成。
*虚拟机无法安装模拟器
在模拟器里安装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会显示如下信息:
sieve.apk是一个样本App,可供测试。
1. 找出应用程序
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显示出来:
此时,可以使用其它的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交互
执行drozer console connect命令前,确认是否py2、py3环境共存的,共存需要设置临时路径或者改drozer.bat的文件执行路径。
drozer可以用docker,超方便。
docker run -it withsecurelabs/drozer console connect --server 手机IP
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