cherry X移动开发系列抓包
字数 1490 2025-08-24 10:10:13

Cherry X移动开发系列抓包与解密分析教学文档

1. 背景介绍

Cherry X是一个移动应用开发第三方平台,许多银行和金融机构的移动应用基于该平台开发。这些应用在通信过程中会对传输数据进行加密处理,给安全测试和分析带来挑战。

2. 加密流量特征分析

2.1 请求包特征

典型的加密请求包示例:

POST /mstep/mstep.do?act=business HTTP/1.1
Host: xxx
Cookie: JSESSIONID=0000Nyz0Y5yeXY7-SfoX_sArd2N:1eo58lj2m; Path=/; HttpOnly
Mobileoa_design_type: 1
Content-Type: application/json; charset=utf-8
Content-Length: 731
Accept-Encoding: gzip, deflate
User-Agent: okhttp/3.12.0
Connection: close

{
  "pkgFlag": 0,
  "errCode": 0,
  "errMsg": "",
  "dataPackage": {
    "encryptFlag": 1,
    "hashFlag": 1,
    "signatureFlag": 0,
    "encryptionType": "2",
    "app_code": "Y2hlcnJ5X05hdGl2ZQ==",
    "hash": "UUJvC9ap+2uO6UfmJxWx7Q==",
    "business": "\/Al7pDY8YXxtEiD2PDG5btt0y5IlyQp0Zff92hl1RJbvZxp4HeBaoz5nqvQVd34hA75XMZYNPQZulMXcFtfBL9Vmwx+sd3HNpXtgmIF26dMjwT3oO1C0HPCruJI+nyk+h4X9dUb6lTUwdKMB+WBc9O7y9mfjy1RBQLLDpuBf+lxXxFXwINvAeM\/hXhT\/nD\/7eBASEW6tR+rbzamwnrISt5A9j7IGzvKc+D7e+ldJ6D1z1kXsQhmlFSPaB8VJeBxE+M3iaxTOMiA4UBkY7FogK9ssL4xaofZkgh3amYZbe0RHeIFeFsUj5uVrPLFrMBlHDTut2s9XrN\/gWmX1+Ru4RZpt7xsb0RFyU+I2OX834MVEapOQXSxqOxxY0macompDLPGkApYDTf7yHp\/JjN4gWonNOSNVTDj2Gjb9xqqb7TS8dGz0ap7NLOGQhB02daFfeCHnTmOE+Sf5Gq03q5Fz+v7NXmy0DORanVoG6K\/HxyxM0QmR\/1OkEkeYUjXbvng8"
  },
  "crc": 0
}

2.2 响应包特征

典型的加密响应包示例:

HTTP/1.1 200 OK
Server: nginx
Date: Wed, 15 Mar 2023 02:50:12 GMT
Content-Type: application/json;charset=UTF-8
Content-Length: 543
Connection: close

{
  "pkgFlag": 0,
  "errCode": null,
  "errMsg": null,
  "dataPackage": {
    "encryptFlag": 1,
    "hashFlag": 1,
    "hash": "D2CAD246070CCDA1033D47AB1CD9227B1CF555422F782E503165CB7309547016",
    "app_code": null,
    "business": "DuUx3Su+Yw9keZ1523gCQDsFvAX3hl/niqggId8uirPjVT4l93axsjxLlKjaJ5Tc18hz0BpJcZhPgy/MA5E3VaB+veeSzJvZjWRQHTrwkmHWQ3tmX6lXIyvviBIt2W2FEEj5rVddnghut+JJHdVwTxctE51z21oi0OOeYrgopexttNrSmEx+vjVgXF4YAVBWYXFeWQ83Z4ktCQoFY98xaMc4chV2MmrDpO5HyqFCS2I/IA+iapROqdfKsPpNrp4SzenmOVUE+9fCZAwJ+qAogMLm/rbh9G/m8g+J2EmFnqksxWZYLZUX2IT9cEUs9SSv5jHPI1IEGmPGz0bZXG+oPg=="
  },
  "crc": 0
}

3. 关键加密参数解析

3.1 主要参数说明

  1. pkgFlag: 标识包类型
  2. errCode/errMsg: 错误信息
  3. dataPackage: 包含实际数据
    • encryptFlag: 加密标志,决定使用哪种加密算法
      • 常见值:1 (3DES), 2 (RSA), 其他可能为SM4
    • hashFlag: 哈希校验标志
    • signatureFlag: 签名标志
    • encryptionType: 加密类型
    • app_code: 应用标识,Base64编码
    • hash: 数据哈希值
    • business: 加密的业务数据

3.2 加密流程判断

加密方式由encryptFlag的值决定:

  • 1: 3DES加密
  • 2: RSA加密
  • 其他: 可能为SM4加密(常见于该平台)

4. 逆向分析关键点

4.1 关键类与方法

  1. 加密相关类:

    • com.icitic.mobile.cherry.http.SecurityParams
      • decryptBusiness: 解密请求中的business数据
      • decryptResponse: 解密响应数据
      • encryptBusiness: 加密业务数据
    • com.icitic.mobile.cherry.http.SessionManager
      • 管理会话密钥
  2. 密钥获取方法:

    • getENSRKey: 获取加密密钥
    • getCRKey: 获取加密密钥
    • getSessionkey: 获取会话密钥

4.2 密钥管理特点

  • 每次登录会更换密钥(随机key)
  • 密钥存储在SessionManager类中
  • 密钥生成和使用过程可通过Hook技术拦截

5. 解密技术实现

5.1 Hook技术应用

使用Frida等工具Hook关键方法获取解密数据:

// Hook decryptBusiness方法
Java.perform(function() {
    var SecurityParams = Java.use('com.icitic.mobile.cherry.http.SecurityParams');
    
    SecurityParams.decryptBusiness.overload('java.lang.String').implementation = function(business) {
        console.log("Original encrypted business: " + business);
        var result = this.decryptBusiness(business);
        console.log("Decrypted business: " + result);
        return result;
    };
    
    SecurityParams.decryptResponse.overload('java.lang.String').implementation = function(response) {
        console.log("Original encrypted response: " + response);
        var result = this.decryptResponse(response);
        console.log("Decrypted response: " + result);
        return result;
    };
});

5.2 密钥获取Hook

// Hook SessionManager获取密钥
Java.perform(function() {
    var SessionManager = Java.use('com.icitic.mobile.cherry.http.SessionManager');
    
    SessionManager.getENSRKey.implementation = function() {
        var result = this.getENSRKey();
        console.log("ENSRKey: " + result);
        return result;
    };
    
    SessionManager.getCRKey.implementation = function() {
        var result = this.getCRKey();
        console.log("CRKey: " + result);
        return result;
    };
    
    SessionManager.getSessionkey.implementation = function() {
        var result = this.getSessionkey();
        console.log("Sessionkey: " + result);
        return result;
    };
});

6. 加密算法分析

6.1 3DES加密流程

  1. 获取会话密钥
  2. 使用3DES算法加密数据
  3. 生成哈希校验值
  4. 组合加密结果

6.2 RSA加密流程

  1. 获取公钥
  2. 使用RSA加密会话密钥
  3. 使用会话密钥加密实际数据
  4. 组合加密结果

6.3 SM4加密流程

  1. 获取SM4密钥
  2. 使用SM4算法加密数据
  3. 生成哈希校验值
  4. 组合加密结果

7. 实战步骤总结

  1. 抓包识别: 识别Cherry X平台的加密流量特征
  2. 逆向分析:
    • 定位关键类SecurityParamsSessionManager
    • 分析加密标志encryptFlag的判断逻辑
  3. Hook技术应用:
    • Hook解密方法直接获取明文
    • Hook密钥获取方法获取加密密钥
  4. 自动化处理:
    • 根据获取的密钥实现自动化解密
    • 构建中间人代理自动加解密流量

8. 注意事项

  1. 密钥每次登录会变化,需要实时获取
  2. 不同应用可能使用不同的加密算法组合
  3. 哈希校验可能影响修改后的数据重放
  4. 签名验证可能需要额外处理

9. 扩展思考

  1. 如何自动化识别不同Cherry X应用的加密参数?
  2. 在无法Hook的情况下如何通过静态分析还原加密逻辑?
  3. 如何构建通用的Cherry X流量分析工具?

通过以上分析,我们可以全面理解Cherry X平台的加密机制,并掌握有效的分析方法。实际应用中需要根据具体版本和实现进行适当调整。

Cherry X移动开发系列抓包与解密分析教学文档 1. 背景介绍 Cherry X是一个移动应用开发第三方平台,许多银行和金融机构的移动应用基于该平台开发。这些应用在通信过程中会对传输数据进行加密处理,给安全测试和分析带来挑战。 2. 加密流量特征分析 2.1 请求包特征 典型的加密请求包示例: 2.2 响应包特征 典型的加密响应包示例: 3. 关键加密参数解析 3.1 主要参数说明 pkgFlag : 标识包类型 errCode/errMsg : 错误信息 dataPackage : 包含实际数据 encryptFlag : 加密标志,决定使用哪种加密算法 常见值:1 (3DES), 2 (RSA), 其他可能为SM4 hashFlag : 哈希校验标志 signatureFlag : 签名标志 encryptionType : 加密类型 app_ code : 应用标识,Base64编码 hash : 数据哈希值 business : 加密的业务数据 3.2 加密流程判断 加密方式由 encryptFlag 的值决定: 1: 3DES加密 2: RSA加密 其他: 可能为SM4加密(常见于该平台) 4. 逆向分析关键点 4.1 关键类与方法 加密相关类 : com.icitic.mobile.cherry.http.SecurityParams decryptBusiness : 解密请求中的business数据 decryptResponse : 解密响应数据 encryptBusiness : 加密业务数据 com.icitic.mobile.cherry.http.SessionManager 管理会话密钥 密钥获取方法 : getENSRKey : 获取加密密钥 getCRKey : 获取加密密钥 getSessionkey : 获取会话密钥 4.2 密钥管理特点 每次登录会更换密钥(随机key) 密钥存储在SessionManager类中 密钥生成和使用过程可通过Hook技术拦截 5. 解密技术实现 5.1 Hook技术应用 使用Frida等工具Hook关键方法获取解密数据: 5.2 密钥获取Hook 6. 加密算法分析 6.1 3DES加密流程 获取会话密钥 使用3DES算法加密数据 生成哈希校验值 组合加密结果 6.2 RSA加密流程 获取公钥 使用RSA加密会话密钥 使用会话密钥加密实际数据 组合加密结果 6.3 SM4加密流程 获取SM4密钥 使用SM4算法加密数据 生成哈希校验值 组合加密结果 7. 实战步骤总结 抓包识别 : 识别Cherry X平台的加密流量特征 逆向分析 : 定位关键类 SecurityParams 和 SessionManager 分析加密标志 encryptFlag 的判断逻辑 Hook技术应用 : Hook解密方法直接获取明文 Hook密钥获取方法获取加密密钥 自动化处理 : 根据获取的密钥实现自动化解密 构建中间人代理自动加解密流量 8. 注意事项 密钥每次登录会变化,需要实时获取 不同应用可能使用不同的加密算法组合 哈希校验可能影响修改后的数据重放 签名验证可能需要额外处理 9. 扩展思考 如何自动化识别不同Cherry X应用的加密参数? 在无法Hook的情况下如何通过静态分析还原加密逻辑? 如何构建通用的Cherry X流量分析工具? 通过以上分析,我们可以全面理解Cherry X平台的加密机制,并掌握有效的分析方法。实际应用中需要根据具体版本和实现进行适当调整。