本文目录导读:

在手机软件(App)中,所谓的“防守漏洞”通常指安全防护机制的缺失或薄弱点,可能导致数据泄露、权限绕过、代码被篡改等风险,识别和定位这些漏洞,需要结合静态分析、动态分析、网络抓包、逆向工程等多种手段,下面按流程梳理一套系统化的方法。
明确“防守”的维度
手机App的防守体系一般包括:
| 维度 | 典型防护 | 可能的漏洞 |
|---|---|---|
| 通信安全 | HTTPS/SSL Pinning | 中间人攻击、证书校验绕过 |
| 本地存储 | 加密存储、Keychain | 明文存储、硬编码密钥 |
| 代码保护 | 混淆、加固、反调试 | 反编译、动态调试、内存Dump |
| 权限控制 | 最小权限、运行时校验 | 越权访问、组件暴露 |
| 身份认证 | Token、生物识别 | 逻辑绕过、重放攻击 |
| 完整性校验 | 签名校验、Root检测 | Hook绕过、二次打包 |
静态分析(不运行App)
反编译与代码审计
- Android:
apktool反编译资源,jadx/JEB反编译Dex为Java。 - iOS:
class-dump导出头文件,Hopper/IDA分析Mach-O。 - 关注点:
- 硬编码的密钥、API Key、密码
WebView的setJavaScriptEnabled、addJavascriptInterfaceSharedPreferences/NSUserDefaults明文写入- 日志输出敏感信息(
Log.d、NSLog) exported=true的组件(Android四大组件)
配置文件检查
AndroidManifest.xml:权限、组件暴露、debuggable、allowBackupInfo.plist:URL Scheme、ATS配置network_security_config.xml:是否允许明文流量
第三方SDK与依赖
- 检查是否有已知CVE的库版本
- 检查SDK是否过度收集数据
动态分析(运行时检测)
抓包分析
- 工具:
Charles、Fiddler、mitmproxy、Burp Suite - 步骤:
- 配置代理,安装CA证书
- 若抓不到包 → 可能存在 SSL Pinning
- 使用
Frida脚本绕过 Pinning(如frida-ssl-pinning-bypass) - 分析请求参数、Token、签名算法
Hook与插桩
- Frida:动态Hook Java/Native函数,修改返回值
- Xposed:模块化Hook
- 常见目标:
isRooted()、checkSignature()、isDebuggerConnected()- 加密函数
encrypt()、sign() - 认证函数
login()、verifyToken()
内存与存储分析
adb shell run-as查看私有目录objection导出Keychain、SharedPreferences- 内存Dump查找明文密钥
调试与逆向
IDA Pro/Ghidra分析Native层(.so)lldb/gdb动态调试- 检测反调试机制(
ptrace、sysctl)
逻辑漏洞定位
技术防护之外,业务逻辑漏洞往往更致命:
| 类型 | 测试方法 |
|---|---|
| 越权 | 修改用户ID、订单ID,测试水平/垂直越权 |
| 重放 | 抓包后重复发送请求 |
| 参数篡改 | 修改金额、数量、角色字段 |
| 验证码绕过 | 空验证码、万能验证码、回显 |
| 支付逻辑 | 修改价格、负数、并发请求 |
工具:Burp Suite 的 Intruder、Repeater,配合自动化脚本。
自动化与工具链
| 工具 | 用途 |
|---|---|
| MobSF | 自动化静态+动态分析 |
| Frida | 动态Hook |
| objection | 运行时探索 |
| apktool/jadx | 反编译 |
| Burp/mitmproxy | 抓包改包 |
| Drozer | Android组件安全测试 |
| idb | iOS逆向辅助 |
定位漏洞的通用流程
信息收集 → 反编译、抓包、权限清单
2. 攻击面识别 → 暴露组件、API接口、本地存储
3. 静态审计 → 硬编码、配置错误、已知CVE
4. 动态验证 → Hook、抓包、内存分析
5. 逻辑测试 → 越权、重放、参数篡改
6. 漏洞验证 → PoC复现、影响评估
7. 修复建议 → 加固、加密、校验、最小权限
常见“防守漏洞”示例
- SSL Pinning未做 → 抓包直接看到明文
- 硬编码AES密钥 → 反编译即得,可解密本地数据
- WebView JS桥暴露 → 可执行任意JS调用Native
- 导出组件无权限校验 → 任意App可调用
- Token无过期/无签名 → 可伪造/重放
- Root检测可绕过 → Frida一行代码搞定
- 日志泄露 →
adb logcat看到密码
合规与伦理提醒
- 仅在授权范围内测试(自己开发的App、SRC、渗透测试合同)
- 遵守《网络安全法》《数据安全法》
- 不破坏生产环境、不窃取真实用户数据
如果你有具体的App类型(如金融、社交、游戏)或具体场景(如想绕过某检测、想审计某SDK),可以进一步说明,我能给出更针对性的思路和工具组合。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。