MPASS 协议简单分析

admin 2024年10月7日19:14:29评论55 views字数 2027阅读6分45秒阅读模式
MPASS 协议简单分析

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* *]”MPASS 协议简单分析可以明显看到有压缩和判断加密的地方 在进一步trace frida-trace -FU -m "+[DTRpcUtils compressGZip:]" 压缩定位到

MPASS 协议简单分析
file

通过分析代码也可以大致看到MPASS 协议简单分析

继续调用栈到加密调用地方-[DTURLRequestOperation gzipAndEncrypt:]MPASS 协议简单分析

进一步追踪,最后太明显。MPASS 协议简单分析

通过上述可以解密了。固定密钥之后,抓包并进行解密 红色为加密长度!绿色为密文MPASS 协议简单分析

解密OK!!

MPASS 协议简单分析
file

请求解密

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位密钥,先固定固定密钥

MPASS 协议简单分析
file
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 协议简单分析

经过抓包之后解密一个响应:成功!!!

MPASS 协议简单分析
file

原文始发于微信公众号(小白技术社):MPASS 协议简单分析

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月7日19:14:29
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   MPASS 协议简单分析https://cn-sec.com/archives/2025276.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息