MPASS 协议大致分析
mPaaS. 移动开发平台(Mobile PaaS,简称mPaaS)是源于支付宝App 的移动开发平台,为移动开发、测试、运营及运维提供云到端的一站式解决方案
1.请求分析
流量大致为:请求参数->gzip压缩-> aes加密请求参数(rsa加密aes密钥)
1.压缩算法
使用python默认解压算法是可以解压的 压缩之后的字节头不一样
1f8b0800533bd36402ff33340200cd44534f02000000
1f8b080000000000021333340200cd44534f02000000
1f8b0800533bd36402ff是python gzip压缩信息 13加密使用信息 文件头必选部分(前10个字节) 前10个字节是必选的文件头部分
bytes[0-1]: 文件标识符 0x1f, 0x8b bytes[2]: 压缩格式,取值说明(常用: 8-deflate类型) 0-Store存储不压缩 1-compress压缩 2-pack打包 3-lzh使用lzh算法压缩 4…7-保留reserve 8-deflate使用deflate算法压缩data部分 bytes[3]: flags-字节中共有8比特,每个比特代表不同含义 0b00000001-压缩文件可能为文本格式 0b00000010-拆分多个压缩文件的其中一个部分,存在当前部分的序号 0b00000100-文件头中包含附加字段extra field. 0b00001000-文件头中包含文件名file name. 0b00010000-文件头中包含文件注释file comment. 0b00100000-文件是加密的,文件头中包含加密部分 0b11000000-6/7位保留reserve bytes[4-7]: 文件的修改时间(unix格式-4字节) bytes[8]: 附加flag(和bytes[2]压缩格式相关) bytes[9]: 操作系统类型OS Type, 取值说明参见下面,常用的有0x00-Windows,0x03-Unix/Linux
2.加密分析
var ***className*** = "DTURLRequestOperation";
var ***funcName*** = "- addHTTPBodyParameter:forKey:";
通过hook上边代码可以直接分析到数据包加密点,进一步使用tracefrida-trace -FU -m "*[DTR* *]”
可以明显看到有压缩和判断加密的地方 在进一步trace
frida-trace -FU -m "+[DTRpcUtils compressGZip:]"
压缩定位到
通过分析代码也可以大致看到
继续调用栈到加密调用地方-[DTURLRequestOperation gzipAndEncrypt:]
进一步追踪,最后太明显。
通过上述可以解密了。固定密钥之后,抓包并进行解密 红色为加密长度!绿色为密文
解密OK!!
请求解密
enc_type = bytes.fromhex(ss)[:1]
key_len = int.from_bytes(bytes.fromhex(ss)[1:4], byteorder='little')
key = bytes.fromhex(ss)[4:5 + key_len] #rsa公钥加密之后
data_len = bytes.fromhex(ss)[5 + key_len:8 + key_len]
data = bytes.fromhex(ss)[8 + key_len:]
print(gzip.decompress(aes_decode(data)).decode())
2.响应分析
1.解密分析
流量全程使用二进制传输,通过请求中的tracefrida-trace -FU -m "+[DTRpcUtils decompressGZip:]"
分析到解密在-[DTURLRequestOperation gunzipAndDecrypt:]
并且使用请求中生成加密的16位密钥,先固定固定密钥
var funcName1 = "+ generateRandom:";
var hook1 = eval('ObjC.classes.' + className1 + '["' + funcName1 + '"]');
Interceptor.attach(hook1.implementation, {
onEnter: function (args) {
}, onLeave: function (retval) {
var new_data = 'RE5EszOVJ9GVFLY3'
var new_ret = ObjC.classes.NSString.stringWithString_(new_data);
retval.replace(new_ret);
}
});
经过进一步追踪到这里,然后就很搞定了。
经过抓包之后解密一个响应:成功!!!
原文始发于微信公众号(小白技术社):MPASS 协议简单分析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论