本文目录导读:

- 基础信息收集与静态分析(找代码层面的漏洞)
- 动态分析与运行时测试(找运行时和内存漏洞)
- 网络通信与接口安全(找传输与API漏洞)
- 业务逻辑与客户端防护(找对抗层面的漏洞)
- 自动化与工具辅助定位
- 总结:如何精准定位?
在手机软件(App)的安全测试与防护中,识别和定位“防守漏洞”通常指的是寻找App在客户端安全、数据传输、业务逻辑及服务端接口上的防御薄弱点,由于移动端特有的生态,这项工作需要结合静态分析、动态调试和网络抓包等多种技术。
以下是系统化识别与定位手机软件防守漏洞的方法和步骤:
基础信息收集与静态分析(找代码层面的漏洞)
这是“白盒”层面的第一步,目的是了解App的架构,并寻找硬编码或配置上的失误。
- 反编译与逆向
- 工具:Apktool(Android)、jadx、Ghidra、Hopper(iOS)。
- 定位漏洞:
- 检查
AndroidManifest.xml:寻找android:exported="true"的组件(Activity、Service、Receiver),看是否存在未授权的访问漏洞(如越权调用)。 - 检查
network_security_config.xml:看是否允许明文传输(HTTP)或信任了用户自定义的证书(这会导致中间人攻击)。 - 搜索硬编码敏感信息:在反编译代码中全局搜索
key、secret、password、token、AWS、API等关键字,寻找写死在客户端的密钥。
- 检查
- 签名与加固检测
- 检查App是否未加壳(未使用梆梆、腾讯御安全等加固),未加壳的App极易被反编译和篡改。
- 检查是否缺乏完整性校验(如未校验签名),导致重打包攻击。
动态分析与运行时测试(找运行时和内存漏洞)
这是“黑盒/灰盒”层面的测试,通过在真实设备或模拟器上运行App来寻找漏洞。
- 环境与Root/越狱检测绕过
- 测试点:App是否在Root/越狱设备上直接闪退?是否有反调试机制?
- 定位:使用 Frida、Xposed 等Hook框架尝试绕过检测,如果很容易被绕过,说明客户端防护薄弱。
- 本地数据存储安全
- 测试点:App是否将敏感数据(如用户Token、密码、身份证号)明文存储在本地?
- 定位:检查
/data/data/<包名>/目录下的shared_prefs、databases、files等文件夹,如果敏感信息未加密,即为漏洞。
- 组件安全测试(Android特有)
- 测试点:使用 Drozer 等工具测试导出的组件,尝试向导出的 Activity 发送恶意 Intent,或向导出的 Content Provider 查询敏感数据,看是否能越权访问。
- WebView漏洞
- 测试点:检查 WebView 是否开启了
setJavaScriptEnabled(true)且未限制访问的域名;是否存在addJavascriptInterface导致的远程代码执行漏洞。
- 测试点:检查 WebView 是否开启了
网络通信与接口安全(找传输与API漏洞)
这是移动端漏洞的重灾区,大多数业务漏洞发生在客户端与服务器的交互中。
- 抓包与中间人攻击
- 工具:Burp Suite、Charles、Fiddler + 抓包插件(如JustTrustMe、Xposed框架)。
- 定位漏洞:
- App是否未做SSL Pinning(证书绑定)?如果可以直接抓包看到明文,说明传输层防守薄弱。
- 检查传输的数据是否加密?是否存在敏感信息明文传输(如明文密码、明文身份证)。
- API 接口逻辑漏洞
- 越权漏洞:修改请求中的
userId或orderId,看能否查看或修改他人数据(水平越权);尝试访问管理员接口(垂直越权)。 - 参数篡改:修改商品价格、数量、优惠券金额等,看服务端是否做了二次校验。
- 短信/验证码轰炸:测试发送验证码的接口是否有频率限制、图形验证码校验。
- 未授权访问:去除请求头中的
Token,看接口是否依然返回敏感数据。
- 越权漏洞:修改请求中的
业务逻辑与客户端防护(找对抗层面的漏洞)
- 防重放与防篡改
- 测试点:抓取一个正常的请求,原封不动地重发(重放攻击),看服务端是否拒绝,如果服务端没有时间戳或Nonce校验,即存在重放漏洞。
- 测试点:修改请求参数后,App端是否有签名校验(Sign)?如果修改参数后服务端依然接受,说明缺乏防篡改机制。
- 人机对抗(风控)
- 测试点:使用自动化工具(如Appium、按键精灵)模拟批量操作(如批量注册、批量领券),看App是否有设备指纹识别、行为验证码或风控拦截,如果毫无阻拦,说明风控防守存在漏洞。
自动化与工具辅助定位
为了提高效率,可以引入自动化工具:
- MobSF (Mobile Security Framework):开源的自动化静态和动态分析工具,可快速生成漏洞报告(如硬编码、不安全的存储、组件暴露等)。
- Frida:动态插桩工具,用于定位内存中的数据、绕过SSL Pinning、Hook关键函数(如加密函数)来定位逻辑漏洞。
- Drozer:针对Android的全面安全测试框架,专门用于发现组件暴露漏洞。
如何精准定位?
- 看配置:Manifest/Info.plist 是否暴露了不该暴露的组件。
- 看存储:本地文件是否有明文敏感信息。
- 看流量:抓包看是否可解密,是否存在越权、重放、参数篡改。
- 看对抗:尝试Root/越狱、重打包、Hook,看App是否有反制措施。
⚠️ 安全提示:以上技术仅限用于获得合法授权的安全测试、企业自身App的安全评估或SRC(安全响应中心)的漏洞挖掘,未经授权对他人App进行逆向、抓包和攻击属于违法行为。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。