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

首先,从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测试源码和日志输出、数据包都在附件中。

网络协议分析(某国外社交软件)相关推荐

  1. PYTHON黑帽编程1.5 使用WIRESHARK练习网络协议分析

    Python黑帽编程1.5  使用Wireshark练习网络协议分析 1.5.0.1  本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks At ...

  2. java xmpp协议_GitHub - zhengzhi530/xmpp: 基于Xmpp协议的即时通讯社交软件(客户端+服务端)...

    yyquan 开源一个自己去年写的基于Xmpp协议的即时通讯社交软件 (客户端+服务端) 本项目仅供参考,对于正在学习Xmpp以及javaweb后台的同学,可以看一下. 做这个项目纯属个人兴趣爱好,所 ...

  3. 网络协议分析(最全)

    网络协议分析 1.基于Fiddler的HTTP/HTTPS协议分析 关于Fiddler:      Fiddler是一款由C#开发的免费http调试代理软件,有.net 2和.net 4两种版本.Fi ...

  4. 【放置江湖】弱联网手游,网络协议分析修改。每天签到可获得35元宝

    [放置江湖]弱联网手游,网络协议分析修改教程. 每天签到可获得35元宝,开启方法,WLAN ->已连接的wifi (>)小图标 -> 代{过}{滤}理 ->代{过}{滤}理自动 ...

  5. 网络协议分析作业(江西理工大学期末复习)

    网络协议分析 作业 1 1.TCP/IP分层结构有几层软件层构成,各自的功能是什么? 我的答案:(已完成)有四层软件层 自上向下依次为应用层,传输层,IP层,网络接口层: 应用层的功能为对客户发出的一 ...

  6. 计算机网络实验: 使用Wireshark抓包工具进行网络层和链路层网络协议分析(IP部分)

    目录 实验名称: 实验介绍: 实验目的: 背景知识和准备: 实验过程: 一. IP协议分析 二. Ethernet & ARP 协议分析 实验名称: 网络层和链路层网络协议分析 实验介绍: 本 ...

  7. 计算机网络协议教案,计算机网络实验教案(6)网络协议分析-IP协议3.pdf

    计算机网络实验教案(6)网络协议分析-IP协议3.pdf (2页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 <计算机网络实验> ...

  8. 网络协议分析工具Ethereal的使用

    大学时计算机网络课的实验报告,当时提不起兴趣,今天看来还挺有用的.可以学习下怎样抓数据包,然后分析程序的通信协议. 一:学习使用网络协议分析工具Ethereal的方法,并用它来分析一些协议. 实验步骤 ...

  9. 网络协议分析与仿真课程设计报告:网络流量分析与协议模拟

    公众号:CS阿吉 网络协议分析与仿真课程设计报告  题  目:网络流量分析与协议模拟 专业名称:         网络工程 班    级: 学生姓名:           阿吉 学号(8位): 指导教 ...

  10. [转]常用网络协议分析工具

    1:TCPDUMP,老牌的分析工具,最先在linux平台使用,现在也可以用于windows平台.命令行方式,2000年以前参加工作者最喜爱的工具,缺点无法分析四层以上协议.常用于检测2-3层网络问题. ...

最新文章

  1. Java:判断一个字符串中是否存在另一个字符子串以及判断一个字符串中是否存在指定字符
  2. 多名分析师上调苹果目标股价,网络推广外包下苹果发展前景仍可观
  3. 【Java 虚拟机原理】Class 字节码二进制文件分析 三 ( 访问和修饰标志 | 类索引 | 父类索引 | 接口计数器 | 接口表 | 字段计数器 | 字段表 )
  4. 2.Linux技能要求
  5. python 从字符串中提取数字 re.findall()
  6. 嵌入式笔录(5)-FM解调
  7. 官狼服务器临时维护,官狼三分钟新模式,跑跑狼人杀如何边跑边杀
  8. 四种类型转换 cast
  9. 项目版本管理的最佳实践:云效飞流Flow篇
  10. Python常用正则表达式语法和写法
  11. C语言输出菱形不是梦
  12. AMD64(x86_64)架构abi文档:中
  13. 更改服务器进bios修改启动项,bios设置修改开机启动项的方法
  14. 无刷直流电机与永磁同步电机比较
  15. 【转载】三十而已,信智依然 | 田溯宁:写在亚信科技30华诞
  16. P0负载能力为 8 个 LSTTL 电路,P1-P3负载能力为4个 LSTTL 电路
  17. flutter去除阻尼效果
  18. 交叉销售功能介绍-功能
  19. java基础_题库详解
  20. jquery,js实现手机端全屏轮播图手动滑动+自动切换(autoplay)

热门文章

  1. 如何才能使其输入/输出的参数个数不限
  2. 解决this._data.$$state...“Error: [vuex] do not mutate vuex store state outside mutation handlers.“ 报错
  3. 右值引用调用-汇编码分析
  4. c语言常考的笔试题1
  5. Android调用系统原生分享组件
  6. Java研发岗面试复盘总结附答案+考点
  7. matlab非平稳信号小波和FFT去噪
  8. 《数学之美》中的模型及启示总结
  9. 移动端APP闪退的主要原因总结
  10. 行式数据库 VS 列式数据库