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

实施步骤:

  1. 下载tcpdump:

    https://www.androidtcpdump.com/android-tcpdump/downloads
    
  2. 推送至设备:

    adb push tcpdump /data/local/
    
  3. 权限设置:

    adb shell
    su
    chmod 777 /data/local
    chmod 777 /data/local/tcpdump
    
  4. 开始抓包:

    tcpdump -i any -p -vv -s 0 -w capture.pcap
    
  5. 使用Wireshark分析生成的pcap文件

四、修改APP源码绕过证书校验

实施条件:

  • APK未做校验或可绕过自校验

修改方法:

  1. 修改AndroidManifest.xml:

    <application android:networkSecurityConfig="@xml/network_security_config">
    
  2. 创建/修改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>
    

五、用户证书转为系统证书

实施步骤:

  1. 系统证书目录:/system/etc/security/cacerts/
  2. 证书命名规则:<Certificate_Hash>.<Number>
  3. 计算证书hash:
    openssl x509 -subject_hash_old -in <Certificate_File>
    
  4. 将证书重命名为hash.0并放入系统证书目录

六、双向认证解决方案

实施步骤:

  1. 解包APK寻找客户端证书文件
  2. 反编译分析证书调用逻辑
  3. 找到key后导入Burp Suite

七、绕过SSL Pinning

方法1:Xposed框架+JustTrustMe

  • JustTrustMe模块会Hook各种HTTP请求库的证书校验API
  • 强制返回校验通过状态

方法2:导入根证书

  • 部分情况下可直接绕过SSL Pinning

八、高级抓包技术

Frida Hook方案

  1. 定位APP中处理网络请求/响应的函数
  2. 使用Frida进行Hook
  3. 转发参数到抓包工具
  4. 如需修改流量,可加入交互逻辑

总结

本指南涵盖了从基础到高级的APP抓包技术,测试人员应根据实际环境选择合适的方案。建议测试顺序:非root抓包工具→root环境方案→源码修改→高级Hook技术。

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: 推送至设备: 权限设置: 开始抓包: 使用Wireshark分析生成的pcap文件 四、修改APP源码绕过证书校验 实施条件: APK未做校验或可绕过自校验 修改方法: 修改AndroidManifest.xml: 创建/修改network_ security_ config.xml: 五、用户证书转为系统证书 实施步骤: 系统证书目录: /system/etc/security/cacerts/ 证书命名规则: <Certificate_Hash>.<Number> 计算证书hash: 将证书重命名为 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技术。