Drozer实战指南:从环境搭建到渗透测试全流程解析

张开发
2026/4/11 5:13:11 15 分钟阅读

分享文章

Drozer实战指南:从环境搭建到渗透测试全流程解析
1. 环境准备搭建Drozer渗透测试基础平台Drozer作为安卓安全测试的瑞士军刀环境搭建是新手遇到的第一个门槛。我见过太多人卡在环境配置这一步就放弃了其实只要掌握几个关键点就能轻松搞定。先说说我的环境选择Windows 10系统 Python 2.7.18 Java 8 夜神模拟器7.0.5.8这套组合经过我20多次不同环境测试最稳定。1.1 Python环境避坑指南Python版本选择是个大坑最新版Python 3.x完全不兼容Drozer必须使用Python 2.7.x系列。实测2.7.18版本问题最少其他版本可能会遇到缺少pip模块尤其是2.7.9之前的版本protobuf库安装失败这个错误提示非常隐晦twisted库版本冲突安装时记得勾选Add python.exe to Path这样能省去手动配置环境变量的麻烦。安装完成后一定要验证python --version pip --version如果出现不是内部命令的提示说明环境变量没配好。这时候需要手动添加Python安装目录和Scripts目录到系统Path中比如我的路径是C:\Python27 C:\Python27\Scripts1.2 Java环境配置细节推荐使用JDK 8jdk1.8.0_201这是与Drozer兼容性最好的版本。安装时注意三点不要用默认的Program Files路径建议直接装到D:\Java\jdk1.8.0_201配置三个关键环境变量JAVA_HOME D:\Java\jdk1.8.0_201 CLASSPATH .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; Path追加 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin验证时用管理员权限运行cmd执行java -version javac -version常见错误是分号用中文标点或者路径中有空格没加引号。有次我遇到验证通过但Drozer报错的情况最后发现是同时安装了多个Java版本导致冲突。1.3 模拟器选择与优化虽然可以用真机测试但模拟器更方便批量操作。夜神模拟器对Drozer支持最好但要注意必须使用Android 5.0-7.1之间的系统镜像分配至少2核CPU和2048MB内存关闭模拟器的root权限与实际攻击场景更吻合安装后先在模拟器设置里开启开发者选项连续点击版本号7次然后启用USB调试。有个小技巧在模拟器属性里把使用独立显卡勾上能显著提升运行流畅度。2. 核心组件安装与配置2.1 ADB工具链部署ADB是连接模拟器的桥梁推荐使用独立adb工具包而不是Android Studio自带的版本。关键步骤下载adb.zip解压到Python的Scripts目录下配置环境变量Path追加C:\Python27\Scripts\adb测试连接adb connect 127.0.0.1:62001 # 夜神默认端口 adb devices常见问题adb版本冲突的解决方法很巧妙把下载的adb.exe重命名为nox_adb.exe替换掉夜神模拟器bin目录下的原文件。这个坑我踩过三次才找到解决方案。2.2 Drozer主程序安装从GitHub下载drozer-2.4.4.msi时要注意安装路径必须指定到Python目录下如C:\Python27安装完成后检查是否生成drozer.bat文件配套的agent.apk要安装到模拟器直接拖入窗口自动安装有个容易忽略的细节首次运行前需要安装Python依赖库python -m pip install protobuf pyopenssl twisted service_identity如果下载慢可以加豆瓣源pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com protobuf3. 渗透测试实战入门3.1 建立测试连接启动顺序很重要先打开模拟器并解锁屏幕在drozer-agent应用中开启服务执行端口转发adb forward tcp:31415 tcp:31415启动控制台drozer.bat console connect成功连接会显示设备ID和提示符dz。我遇到过连接超时的情况通常是端口被占用重启模拟器就能解决。3.2 基础信息收集连接成功后先运行这几个命令run app.package.list # 列出所有应用 run app.package.info -a com.example.app # 查看目标应用详情 run scanner.misc.native # 检测native组件这些信息能帮我们快速定位攻击面。有个实用技巧用grep过滤结果比如找含bank关键字的应用run app.package.list | grep bank3.3 组件漏洞探测Drozer最强大的功能是四大组件测试run app.activity.info -a com.example.app # 暴露的Activity run app.provider.info -a com.example.app # 可访问的Content Provider run app.service.info -a com.example.app # 运行中的Service run app.broadcast.info -a com.example.app # 广播接收器对于发现的暴露组件可以直接发起攻击测试。比如启动未保护的Activityrun app.activity.start --component com.example.app com.example.app.AdminActivity4. 常见问题深度解析4.1 Python环境疑难杂症protobuf库报错是最常见的问题症状是ImportError: cannot import name symbol_database解决方法分三步卸载现有版本pip uninstall protobuf安装指定版本pip install protobuf2.6.1清理.pyc缓存文件4.2 ADB连接异常处理当出现device offline时可以尝试重启adb服务adb kill-server adb start-server检查模拟器端口夜神62001MuMu 7555蓝叠5555关闭电脑上的手机助手类软件4.3 Drozer控制台闪退这种情况通常是因为Python路径包含中文或空格缺少VC 2008运行库防火墙拦截了31415端口建议的排查步骤以管理员身份运行cmd检查环境变量PATH中的Python路径查看Windows事件查看器中的错误日志5. 进阶渗透技巧5.1 自动化攻击脚本Drozer支持Python脚本扩展比如自动化检测SQL注入from drozer.modules import Module class SQLiScanner(Module): def execute(self, arguments): providers self.get_providers() for provider in providers: self.test_sqli(provider) def test_sqli(self, uri): try: self.contentResolver.query(uri , None, None, None, None) self.stdout.write(Vulnerable: %s\n % uri) except: pass保存为sqli_scanner.py通过以下命令加载module import /path/to/sqli_scanner.py run scanner.sqli5.2 权限提升漏洞挖掘检查应用导出的Content Provider是否存在权限绕过run app.provider.query content://com.example.app.provider/users --projection * FROM SQLITE_MASTER WHERE typetable;--如果返回数据库结构说明存在SQL注入漏洞。更隐蔽的方法是检测File Provider目录穿越run app.provider.read content://com.example.app.fileprovider/../../../../etc/hosts5.3 绕过SSL证书校验在测试HTTPS通信时可以用Drozer的中间人攻击模块run auxiliary.webmitm配合Burp Suite使用效果更好。记得先在模拟器安装Burp的CA证书并将代理设置为电脑IP:8080。6. 实战案例演示6.1 银行APP漏洞挖掘以某银行APP为例已获授权测试完整流程反编译APK获取包名com.example.bank查找暴露的Activityrun app.activity.info -a com.example.bank发现未受保护的AdminActivityrun app.activity.start --component com.example.bank com.example.bank.AdminActivity成功进入后台管理界面6.2 数据泄露漏洞利用通过Content Provider获取用户数据run app.provider.query content://com.example.app.provider/users如果返回Permission Denied尝试URI绕过run app.provider.query content://com.example.app.provider/users/..6.3 组合攻击案例结合多个漏洞完成攻击链通过Activity跳转绕过登录利用File Provider下载配置文件从配置文件中获取数据库密码通过SQL注入导出全部数据这种实战场景下Drozer的批处理模式特别有用drozer.bat console connect -c run script.py7. 安全防护建议7.1 开发防护方案根据Drozer的检测结果开发者应该为所有组件设置android:exportedfalse对导出的组件实施签名级权限控制使用StrictMode防止File Provider穿越对Content Provider输入做严格过滤7.2 测试优化技巧提升测试效率的方法使用--no-color参数减少输出干扰通过-o report.html生成可视化报告结合frida进行动态hook编写自定义模块实现自动化测试7.3 持续学习资源推荐进阶学习路径官方文档https://labs.withsecure.com/tools/drozerGitHub上的社区模块https://github.com/drozer/modulesOWASP Mobile Testing Guide每年更新的Mobile PENTEST标准记得每次测试前都要获取书面授权我在某次企业测试中曾因未授权测试差点引发法律纠纷。实际使用时建议搭配Genymotion模拟器和Burp Suite组成完整的移动安全测试环境。

更多文章