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 主要参数说明
- pkgFlag: 标识包类型
- errCode/errMsg: 错误信息
- dataPackage: 包含实际数据
- encryptFlag: 加密标志,决定使用哪种加密算法
- 常见值:1 (3DES), 2 (RSA), 其他可能为SM4
- hashFlag: 哈希校验标志
- signatureFlag: 签名标志
- encryptionType: 加密类型
- app_code: 应用标识,Base64编码
- hash: 数据哈希值
- business: 加密的业务数据
- encryptFlag: 加密标志,决定使用哪种加密算法
3.2 加密流程判断
加密方式由encryptFlag的值决定:
- 1: 3DES加密
- 2: RSA加密
- 其他: 可能为SM4加密(常见于该平台)
4. 逆向分析关键点
4.1 关键类与方法
-
加密相关类:
com.icitic.mobile.cherry.http.SecurityParamsdecryptBusiness: 解密请求中的business数据decryptResponse: 解密响应数据encryptBusiness: 加密业务数据
com.icitic.mobile.cherry.http.SessionManager- 管理会话密钥
-
密钥获取方法:
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加密流程
- 获取会话密钥
- 使用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平台的加密机制,并掌握有效的分析方法。实际应用中需要根据具体版本和实现进行适当调整。