西枫游戏 发表于 2024-1-23 15:15

简单的分析:某点评 TCP协议 算法-初始化密钥(一)

本帖最后由 西枫游戏 于 2024-2-16 16:10 编辑

前言
简单分析{某点评}TCP私信协议,本帖只负责分析交流切勿他用。若侵犯了权益,麻烦管理帮忙删除,谢谢!
--------------------------------------------------------------------------------------------------------------------------------------------------------
TCP交互流程
TCP协议交互理解:

[*]请求服务器共享密钥,或本地按规则生成一组key【篇文比较长分段开始】
[*]RSA公钥加密并且组包发送到服务器统一加密密钥({某小破站登陆协议一样})【暂时先分析统一密钥】
[*]登陆服务器:组包数据包括 1. 登陆的设备id2. 附带APP版本号   3. 附带该账号的uid   4. 附带该账号的令牌{token,CK}之类

--------------------------------------------------------------------------------------------------------------------------------------------------------
工具
[*]样本 11.12.14
[*]frida - 16.1.11
[*]objection - 1.11.0
[*]jadx-gui
[*]小米note7

--------------------------------------------------------------------------------------------------------------------------------------------------------
分析流程


[*]作为TCP协议,抓包工具一般都难搞两个方向: 1 . objection 批量搜索“Socket” 或者其他关键字并复制下来 然后批量hook这些类2. frida脚本 hookjava 层的系统加解密并且打印堆栈。
[*]adb 命令 运行frida-server 并且端口转发。
[*]发送私聊信息 “123456789”触发 hook 加解密算法 发现一个可疑的算法堆栈
[*]
[*]跟进堆栈之后发现是一个AES加解密算法,可以确定的是 TCP协议组完包后 对称算法 AES   AES/CTR/NoPadding   加密后再发送的。现在目的是看看key是从哪里来。
[*]
[*]Key参数的来源,由b方法的参数传进来的。HOOKb方法打印堆栈之后跟到了一个接口   【b方法是传进去key   c方法是加密 e方法是解密】
[*]
[*]继续往下跟加密算法,看看是那个调用是这个加密。。。
[*]
[*]继续跟进key是从哪里赋值的。
[*]
[*]
[*] 跟进去后发现key是由本地的【PBKDF2WithHmacSHA1】算法得到得的。 直接定义64个随机字母就可以。key的由来已经搞定了,是本地生成的,对称加解密的话肯定是要上传的服务器统一密钥。所以现在开始寻找上传key的地方。
[*]
[*]继续跟进 【com.sankuai.xm.base.proto.protosingal.d】 dVar.g 这个方法。发现   marshall()方法 调用了【 dVar.g = RSA加密后的结果   dVar.h = p.getBytes(); 】这两个已知参数。
[*]
[*]继续跟进X方法后记住这个this.f87924b 这个   【public ByteBuffer f87924b】肯定下这个是把已知参数传进去然后开始组包。所以继续跟进【super.marshall()】
[*]
[*]
[*]目前理顺一下。【当前组好统一密钥的数据包后,发送到服务器。这个密钥就统一好了】简单的参数我就不列举了,略微带过 第一次同步密钥的情况下是不需要加密。-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

二进制数据包解析:

[*]密钥:【3f7cdf7a1c29ec3166af5d63b3b52c58c1f2c7500d03fd388dd897d5d9579c86】
[*]公钥:【MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCkDUifT/SK+x6eeutgOrOzaKnG3GnAog74NSkKsm8smkZXhOSzZa7E7irOxcwB60WawGAQR8BHbO7kosYlz6SJyR8ZIGfVa+jV3uBfylP+uIl/6JvdK8h7yhbLbMSsQkCnMIEWCP9YEtHxjo1cxyUlQL2yIly9eY015EiYp1Z8swIDAQAB】
[*]二进制数据组包:{0,0,0,227,0,3,0,124,0,0,0,0,143,104,25,231,0,0,0,1,0,0,0,0,0,5,0,128,7,177,17,195,30,164,186,28,119,182,2,34,143,158,251,19,38,173,176,161,46,123,97,48,95,140,209,35,149,122,147,4,121,101,113,219,29,81,215,249,237,193,188,99,223,81,58,119,207,227,135,115,40,175,107,140,19,180,204,72,9,195,192,70,18,237,30,145,127,62,136,44,184,129,16,254,33,56,222,46,245,102,182,162,241,176,184,18,245,133,59,172,193,119,34,255,114,3,59,156,159,60,117,240,156,119,96,145,148,73,23,204,180,198,212,252,209,100,80,212,179,223,198,237,236,212,20,229,0,69,32,112,97,115,115,112,111,114,116,58,49,57,49,53,57,56,52,52,52,53,95,116,105,109,101,58,50,48,50,52,58,48,49,58,50,51,32,49,52,58,53,55,58,49,54,58,55,55,49,115,101,115,115,105,111,110,73,68,58,50,54,51,52,52,52,53,48,52,53}
[*]{0,0,0,227}// 数据包长度
[*]{0,3,0,124}//固定【196732】类似于标签
[*]{143,104,25,231}// CRC32 签名
[*]{128}//RSA加密后的AES_CTR_KEY的数据长度
[*]{7,177,17,195,30,164,186,28,119,182,2,34,143,158,251,19,38,173,176,161,46,123,97,48,95,140,209,35,149,122,147,4,121,101,113,219,29,81,215,249,237,193,188,99,223,81,58,119,207,227,135,115,40,175,107,140,19,180,204,72,9,195,192,70,18,237,30,145,127,62,136,44,184,129,16,254,33,56,222,46,245,102,182,162,241,176,184,18,245,133,59,172,193,119,34,255,114,3,59,156,159,60,117,240,156,119,96,145,148,73,23,204,180,198,212,252,209,100,80,212,179,223,198,237,236,212,20,229}// RSA加密后的AES_CTR_KEY的数据
[*]{69} // 明文数据长度
[*]{32,112,97,115,115,112,111,114,116,58,49,57,49,53,57,56,52,52,52,53,95,116,105,109,101,58,50,48,50,52,58,48,49,58,50,51,32,49,52,58,53,55,58,49,54,58,55,55,49,115,101,115,115,105,111,110,73,68,58,50,54,51,52,52,52,53,48,52,53}// 明文数据
[*] 明文数据【passport:1915984445_time:2024:01:23 14:57:16:771sessionID:2634445045】 // 包含uid // time // 以及uuid的CRC32签名
[*] 服务器 【103.x.x.49 : 8500】 目前统一密钥分析完毕。【仅供学习交流 若侵犯了权益,麻烦管理帮忙删除,谢谢】



lengong 发表于 2024-1-23 20:19

不检测frida吗

moruye 发表于 2024-1-23 20:52

bhwxha 发表于 2024-1-24 15:28

这不是阿里系的,这是美团的,大众点评

hjsen 发表于 2024-1-24 18:53

shequ123 发表于 2024-1-24 23:14

有意思,这个比较经典的算法

alongzhenggang 发表于 2024-1-26 08:38

顶你个肺{:1_927:}

西枫游戏 发表于 2024-1-28 00:10

bhwxha 发表于 2024-1-24 15:28
这不是阿里系的,这是美团的,大众点评

谢谢你的提醒哈,已经更改了。

midnight091 发表于 2024-3-5 20:36

我遇到个apk游戏加密方式和你这文章里写的非常像,苦于不会hook,怎么办

西枫游戏 发表于 2024-3-5 21:48

midnight091 发表于 2024-3-5 20:36
我遇到个apk游戏加密方式和你这文章里写的非常像,苦于不会hook,怎么办

HOOK 需要过检测的。其他的都简单
页: [1] 2
查看完整版本: 简单的分析:某点评 TCP协议 算法-初始化密钥(一)