APP和小程序的安全测试
字数 1191 2025-08-15 21:30:45
APP和小程序安全测试指南
前言
本文详细记录APP和小程序安全测试中抓包问题的解决方案,涵盖模拟器使用、非root环境抓包、root环境抓包、证书处理、双向认证绕过等技术要点。
一、模拟器环境搭建
推荐工具:夜神模拟器
- 支持内核版本、屏幕大小、root状态等参数调整
- 兼容大多数应用检测
常见问题及解决方案
1. 软件启动后闪退
原因:模拟器检测、版本检测等
解决方案:
- 换用低版本APP(可能引发强制升级问题)
- 换用真机测试
2. 安装软件失败
排查方法:查看logcat日志分析错误原因
3. 安装成功但无法抓包
可能原因:
- 使用WebSocket协议(可用Burp Suite等代理工具抓取)
- 使用非HTTP/HTTPS协议
4. 抓包报400错误或乱码
可能原因:
- 双向认证
- 流量加密
二、非root环境抓包方案
Android设备
1. Packet Capture
- 通过VPN方式抓包
- 问题:部分SSL认证包无法抓取,存在乱码
2. HttpCanary
- 效果优于Packet Capture
- 注意:高版本需破解,低版本功能有限
iOS设备
Stream工具
- 安装后需导入并信任证书
- 配置根证书后即可开始抓包
三、root环境抓包方案
工具组合:tcpdump + Wireshark
实施步骤:
-
下载tcpdump:
https://www.androidtcpdump.com/android-tcpdump/downloads -
推送至设备:
adb push tcpdump /data/local/ -
权限设置:
adb shell su chmod 777 /data/local chmod 777 /data/local/tcpdump -
开始抓包:
tcpdump -i any -p -vv -s 0 -w capture.pcap -
使用Wireshark分析生成的pcap文件
四、修改APP源码绕过证书校验
实施条件:
- APK未做校验或可绕过自校验
修改方法:
-
修改AndroidManifest.xml:
<application android:networkSecurityConfig="@xml/network_security_config"> -
创建/修改network_security_config.xml:
<network-security-config> <base-config cleartextTrafficPermitted="true"> <trust-anchors> <certificates src="system" overridePins="true"/> <certificates src="user" overridePins="true"/> </trust-anchors> </base-config> </network-security-config>
五、用户证书转为系统证书
实施步骤:
- 系统证书目录:
/system/etc/security/cacerts/ - 证书命名规则:
<Certificate_Hash>.<Number> - 计算证书hash:
openssl x509 -subject_hash_old -in <Certificate_File> - 将证书重命名为
hash.0并放入系统证书目录
六、双向认证解决方案
实施步骤:
- 解包APK寻找客户端证书文件
- 反编译分析证书调用逻辑
- 找到key后导入Burp Suite
七、绕过SSL Pinning
方法1:Xposed框架+JustTrustMe
- JustTrustMe模块会Hook各种HTTP请求库的证书校验API
- 强制返回校验通过状态
方法2:导入根证书
- 部分情况下可直接绕过SSL Pinning
八、高级抓包技术
Frida Hook方案
- 定位APP中处理网络请求/响应的函数
- 使用Frida进行Hook
- 转发参数到抓包工具
- 如需修改流量,可加入交互逻辑
总结
本指南涵盖了从基础到高级的APP抓包技术,测试人员应根据实际环境选择合适的方案。建议测试顺序:非root抓包工具→root环境方案→源码修改→高级Hook技术。