Flutter开发安卓应用手动安全测试:工具推荐、步骤及BurpSuite抓包问题
Flutter安卓应用手动安全测试指南(步骤+工具)
一、手动安全测试步骤
- 基础环境与权限核查
- 确认应用目标SDK版本、Flutter版本,检查
AndroidManifest.xml中声明的权限,验证是否存在过度申请(如无需定位却申请ACCESS_FINE_LOCATION) - 测试权限弹窗合理性,拒绝权限后验证应用是否能正常运行,排查权限滥用行为
- 确认应用目标SDK版本、Flutter版本,检查
- 静态分析
- 提取APK中Flutter资源(
assets目录下的配置文件、静态资源),检查是否包含硬编码的API密钥、敏感URL等信息 - 反编译Dart字节码,查看业务逻辑中是否存在明文存储密码、未加密敏感数据传输等问题
- 检查应用是否启用R8/ProGuard混淆,验证混淆规则是否有效
- 提取APK中Flutter资源(
- 动态测试
- 抓包分析所有网络请求/响应,排查明文传输敏感数据、未鉴权API接口、越权访问等漏洞
- 模拟异常输入(如SQL注入Payload、超长参数),测试应用是否崩溃、泄露数据或出现逻辑异常
- 调试应用内存,检查是否存在明文存储的用户token、密码等敏感信息
- 数据安全测试
- 检查本地存储(
SharedPreferences、SQLite、文件系统)中的数据是否加密,是否明文存储隐私数据 - 测试应用卸载后数据是否彻底清除,是否残留敏感文件
- 验证剪贴板中的敏感信息是否会被其他应用读取
- 检查本地存储(
- 逆向与防篡改测试
- 修改APK资源(如替换图标、修改配置)后重新签名安装,测试应用是否能检测到篡改
- 调试应用进程,尝试绕过root检测、模拟器检测逻辑
二、推荐测试工具
- 静态分析工具
Dart Decompiler:反编译Flutter的Dart字节码,还原业务逻辑Apktool:提取APK资源与AndroidManifest.xml,分析权限、组件配置Ghidra:针对Flutter与原生交互的JNI代码进行逆向分析
- 动态测试工具
Frida:Hook应用函数,实现证书校验绕过、root检测绕过等操作Android Studio Debugger:调试Flutter应用,跟踪代码执行流程、查看变量Objection:基于Frida的自动化工具,快速完成内存dump、证书绕过等任务
- 抓包工具
Burp Suite:主流HTTP/HTTPS抓包工具,支持请求篡改、漏洞扫描Charles:轻量抓包工具,适合移动端网络请求分析
- 数据安全工具
SQLite Browser:查看应用SQLite数据库内容,验证数据加密情况adb shell:通过命令行访问应用文件目录,检查本地存储的敏感文件
三、Burp无法捕获Flutter应用流量的解决办法
Flutter默认使用自研HTTP客户端,可能忽略系统级CA证书,以下是针对性解决方法:
- 调整系统CA证书安装位置
- 安卓11及以上版本,用户安装的CA证书默认不被第三方应用信任,需移动到系统证书目录:
- 推送证书到设备:
adb push your_cert.crt /sdcard/ - 进入root权限的adb shell:
adb shell su - 生成证书哈希文件名:
openssl x509 -subject_hash_old -in /sdcard/your_cert.crt | head -1,将证书重命名为[哈希值].0 - 移动证书到系统目录:
mv /sdcard/[哈希值].0 /system/etc/security/cacerts/ - 修改权限:
chmod 644 /system/etc/security/cacerts/[哈希值].0 - 重启设备后应用即可信任该CA
- 推送证书到设备:
- 安卓11及以上版本,用户安装的CA证书默认不被第三方应用信任,需移动到系统证书目录:
- 绕过Flutter证书校验
- 使用Frida脚本Hook HTTP客户端的证书校验逻辑,示例脚本:
Java.perform(function() { var HttpClient = Java.use('io.flutter.plugins.network.HttpClient'); HttpClient.badCertificateCallback.implementation = function(chain, authType) { return true; }; }); - 运行脚本:
frida -U -f com.your.app.package -l bypass-cert.js --no-pause
- 使用Frida脚本Hook HTTP客户端的证书校验逻辑,示例脚本:
- 处理证书固定(Certificate Pinning)
- 若应用启用证书固定,需先识别固定的证书哈希,再用Frida脚本绕过固定逻辑,或修改应用代码移除固定配置
- 基础排查点
- 确认设备代理已设为Burp所在机器的IP和端口
- 检查应用是否使用自定义代理/VPN,导致流量不经过Burp
- 验证Burp已开启HTTPS拦截,并生成了正确的CA证书
内容的提问来源于stack exchange,提问作者user8166936
相关产品推荐
相关产品推荐

