网络协议分析(某国外社交软件)

13 篇文章 0 订阅
12 篇文章 0 订阅

由于网站无法上传附件,本帖子完整内容请点击此处

首先,从coco.apk提取dex文件,利用dex2jar将dex转化为jar,拖到jd-gui中,发现有如下几个可疑点:
com.azus.android.tcplogin.CryptUtil.rsaEncrypt
com.azus.android.tcplogin.CryptUtil.aesDecrypt
com.azus.android.tcplogin.CryptUtil.aesEncrypt
com.azus.android.tcplogin.CryptUtil.getRSAPublic

接下来,使用XPOSED框架,编写hook代码并输出日志,同时用wireshark抓包,最终得出如下加解密逻辑:

(1)客户端生成一个随机16位uuid(在com.instanza.cocovoice.bizlogicservice.b,com.instanza.cocovoice.bizlogicservice.impl,com.instanza.cocovoice.httpservice.d等类中均有此接口)

在这里插入图片描述

(2)客户端从安装程序的assets目录下读取rsapubkey.dat文件,并把文件内容当做rsa公钥加密上述16字节的uuid
在这里插入图片描述

在这里插入图片描述

Rsa公钥为:
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv6wVtSeHU8gJWchcFfe4
qu9JNqDrPLBSfDwZ4NW9f+Qp5OI3FAsd19r5FM95wzdTPb6k/tTDnsPkdnTiEwTI
28PYffP/87BIraQrcgCWmbpugZ0l892LFUYweepp/R54OAlTaPLHMcaHxLnWX3Fq
wghOAjCNvAnXC3TWNJJnlHJ5e32n22nPMdCMNzwXV+zHHP+0sJyBQJd8yoBFFLh+
AZwy/F1xFkAWl9r3emdKhSIpPpT4nTEVD1ieGnMq5DxGPNpihP6jbZOI3UEwOTki
wpdOdR5j9lfe5tRis7pGyPHj+IOHzXRsZGC4r5xEhOKiCOckWJPVgCJWS3ruy5xJ
nwIDAQAB
-----END PUBLIC KEY-----

(3)构造登录包。此数据包分成三个部分:
包头;ras公钥加密后的密钥(即16字节的uuid,此密钥是一个aes密钥); 客户端用aes密钥(uuid)和aes算法加密后的用户登录信息(其中也包含上述uuid)。

此程序的服务器端口是tcp 1088(有时也会使用443等端口),登录数据包如下所示:
在这里插入图片描述

可以看出,此数据包第20字节开始是”qauth”字符串。
整个数据包可分为如下几个部分:从开头到12 80 02的部分是第一部分,从12 80 02到1a d0 02是第二部分,从1a d0 02开始到20 01 2a的是第三部分。剩下的包尾的是第4部分。第一部分字段暂时未详细研究;第二部分是用rsa公钥加密uuid后的数据值;第三部分是用aes算法和密钥uuid加密后的客户端登录信息;第四部分是用户登录信息段中的deviceid字段和publickey的md5值。整个结构应该是tlv结构来表示的,具体的的字段含义未分析。
在这里插入图片描述

以下是客户登录信息加密前的信息,其中划红线的正好是aes加密的密钥,这样数据包解密之后,可以用本字段验证aes加解密的结果是够正确。

在这里插入图片描述

如此来说,本程序的破解流程应该是,接收到登录数据包后,先用服务器端的rsa私钥解密出上图第2部分的值,解密结果是一个aes密钥,然后用此aes密钥解密上图中第二部分的登录信息,至此数据包解密完毕。另外值得一提的是,该aes密钥是本次用户和服务器之间所有的文本、语音、图片等通信数据的密钥。

以下是程序的核心加解密算法反编译源码:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

通过xposed对以上函数的hook输出,可以看到客户端输入的文本、发送的图片和语音(以0x789c开头的zlib压缩数据),通过以上几个函数加密,变成数据包中的数据的过程。

比如发送消息nihao之后的加密过程:

在这里插入图片描述

“nihao”加密后的数据包:
在这里插入图片描述

本程序样本、Xposed测试源码和日志输出、数据包都在附件中。

源程序下载地址:https://download.csdn.net/download/m0_37567738/88415580?spm=1001.2014.3001.5501

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值