吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3885|回复: 16
收起左侧

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

[复制链接]
西枫游戏 发表于 2024-1-23 15:15
本帖最后由 西枫游戏 于 2024-2-16 16:10 编辑

前言
简单分析{某点评}TCP私信协议,本帖只负责分析交流切勿他用。若侵犯了权益,麻烦管理帮忙删除,谢谢!
--------------------------------------------------------------------------------------------------------------------------------------------------------
TCP交互流程
TCP协议交互理解:
  • 请求服务器共享密钥,或本地按规则生成一组key【篇文比较长分段开始】
  • RSA公钥加密并且组包发送到服务器统一加密密钥({某小破站登陆协议一样})【暂时先分析统一密钥
  • 登陆服务器:组包数据包括 1. 登陆的设备id  2. 附带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脚本 hook  java 层的系统加解密并且打印堆栈。
  • adb 命令 运行frida-server 并且端口转发。
  • 发送私聊信息 “123456789”  触发 hook 加解密算法 发现一个可疑的算法堆栈
  • 1.png
  • 跟进堆栈之后发现是一个AES加解密算法,可以确定的是 TCP协议组完包后 对称算法 AES   AES/CTR/NoPadding   加密后再发送的。现在目的是看看key是从哪里来。
  • 2.png 3.png
  • Key参数的来源,由b方法的参数传进来的。HOOK  b方法打印堆栈之后  跟到了一个接口   【b方法是传进去key   c方法是加密 e方法是解密】
  • 4.png 5.png
  • 继续往下跟加密算法,看看是那个调用是这个加密。。。
  • 6.png
  • 继续跟进key是从哪里赋值的。
  • 7.png
  • 8.png
  • 跟进去后发现key是由本地的【PBKDF2WithHmacSHA1】  算法得到得的。 直接定义64个随机字母就可以。key的由来已经搞定了,是本地生成的,对称加解密的话肯定是要上传的服务器统一密钥。所以现在开始寻找上传key的地方。
  • 9.png
  • 继续跟进 【com.sankuai.xm.base.proto.protosingal.d】 dVar.g 这个方法  。发现   marshall()  方法 调用了【 dVar.g = RSA加密后的结果   dVar.h = p.getBytes(); 】这两个已知参数。
  • 10.png
  • 继续跟进X方法后  记住这个this.f87924b 这个   【public ByteBuffer f87924b】肯定下  这个是把已知参数传进去然后开始组包。所以继续跟进  【super.marshall()
  • 11.png
  • 12.png
  • 目前理顺一下。【当前组好统一密钥的数据包后,发送到服务器。这个密钥就统一好了】简单的参数我就不列举了,略微带过 第一次同步密钥的情况下是不需要加密。-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

二进制数据包解析:
  • 密钥:【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】 目前统一密钥分析完毕。【仅供学习交流 若侵犯了权益,麻烦管理帮忙删除,谢谢】



免费评分

参与人数 7威望 +1 吾爱币 +25 热心值 +7 收起 理由
shaosir2024 + 1 + 1 谢谢@Thanks!
LedaLeda + 1 谢谢@Thanks!
qtfreet00 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
chinawolf2000 + 1 + 1 热心回复!
luoziyi + 1 + 1 我很赞同!
阿清 + 1 我很赞同!
漁滒 + 2 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

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
顶你个肺
 楼主| 西枫游戏 发表于 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 需要过检测的。其他的都简单
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 09:28

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表