“ 本文从协议解析的角度,对区块链社交应用Qbao进行简单分析,重点介绍聊天内容的还原。”
在正文开始前,先作几点说明:
首先,Qbao不是钱宝,而是一款区块链社交APP,请钱宝粉勿扰。
其次,协议分析是一个枯燥的过程,如果只对分析结论感兴趣,可直接跳至文末查阅。
最后,本文的协议分析过程用到了破解逆向相关的技术,有感兴趣的朋友可以对这方面进行了解,后续也会对此进行介绍。
01
—
Qbao是什么
对一个APP进行协议分析的第一步,是了解APP是做什么的,了解APP的功能,从而对APP有一个全局的印象。
Qbao官网为https://qbao.fund,其官网介绍:
要点提取:去中心化,社交,区块链技术,目标是微信第二。
官网应用场景是这样的:
图中我们标出了重点:点对点通讯,可信任社交。
本质上,这就是一个IM应用,附加了部分数字货币相关的功能。
分析的APP版本:Android V2.1.1。
登录后界面是这样的:
聊天界面是这样的:
通过对这个APP的使用,可以将这个APP归入IM类,其具备文本聊天,语音视频通话等功能,本文中,我们分析其文本聊天功能,其它功能与文本聊天功能类似,如果各位朋友感兴趣,可以自行分析,共同提高分析技能。
后续几节,我们将先对聊天数据协议进行分析,从而提取聊天内容,再对APP内部结构进行剖析,看看它的本质。
02
—
Qbao报文情况
本节我们开始使用Qbao软件,并抓取其报文进行分析。
对APP进行协议分析抓包的一般过程是:
1、打开抓包APP进行抓包;
2、打开APP开始使用;
3、对每个功能操作对比报文的产生和动作,确定每个报文与动作的关系;
4、重点分析DNS,HTTP,SSL,TCP,UDP等主流互联网协议。
对Qbao软件,有如下DNS:
是对域名www.aethercoder.com的解析,这个域名对应的IP后续承载的是SSL,根据分析,目前是无法解密的。
还有另外一个DNS,对应了一个HTTP对:
图中框出的IP PORT后续也会建链:
粗略一看,SSL呀,各位千万别被Wireshark所蒙蔽,Wireshark对SSL的判断很简单,是根据端口来判断的,是否是SSL,要根据报文内容具体情况具体分析,这才是一个协议分析人员的专业素养。
后续收发信息等产生的报文都在这条链内。
那好,我们看报文内容:
内容不是SSL,但也不是明文,那我们就试试看是否可以解密了。
03
—
Qbao协议破解
光看报文内容,如果报文没有明显的算法特征的话,我们是不可能获取到其加密算法的,另外,光有算法还是不够,还需要密钥,二者俱备,才是一个完整的解密方案。
算法和密钥,我们需要从APK安装包中去寻找答案。
使用Android逆向工具,可以从Qbao APK中提取出Qbao的实现文件,包括库文件及smali文件。
通过分析调试,最终得到聊天内容使用的加密算法:
密钥固定,算法是简单的异或。
其输入并非报文,而是报文的一部分,在TCP流中,Qbao数据按块划分,每块都有块头,内容为标记及长度,然后才是需要解密的数据,并且收发块头位数稍有差异,对比几个报文即可找到规律,并且收发的报文稍有差异。
根据算法尝试解一个发送文本单聊消息报文:
根据算法尝试解一个接收文本单聊消息报文:
根据算法尝试解一个接收群聊消息报文:
这条消息链内的数据基本就解出来了,然后根据各种标记对内容进行提取就完成了协议解析的过程。
其它相关功能解析类似,在此就不展开了。
04
—
Qbao软件结构
在使用逆向工具分析APK后,可以看到Qbao实现代码的大概情况。
使用的库文件:
软件功能相关的实现:
仍然是软件功能相关的实现:
经过分析发现,Qbao大量使用了RongIM相关的接口,例如聊天,通话等功能,RongIM相关的smali与Qbao命名的相关smali在不同的目录下,推测二者为不同的组织编写。
通过搜索,可以发现,RongIM相关的so和smali为融云提供的接口,并且Qbao部分功能直接使用融云的服务器。
因此,Qbao是在融云的基础上进行二次开发得到的一个应用,主体功能为融云提供,区块链相关功能属于二次开发。
在实现代码中,找到了一段和其代币相关的加密的过程。
在APK内寻找区块链相关的去中心化技术和点对点技术,很遗憾,没有找到,所有操作,都是与服务器交互,没有用户与用户之间的连接过程。
因此,这是一个伪区块链APP,技术薄弱,目的是种韭菜割韭菜。
05
—
Qbao分析结论
1、Qbao是一个伪区块链APP,功能为临时拼凑;
2、Qbao社交相关功能,如聊天,视频等功能,均为简单的异或加密,相当于裸奔;
3、Qbao没有去中心化,没有点到点,主页所称的亮点都有待实现;
4、Qbao协议未考虑安全性。
欢迎关注,共同探讨协议分析技术。
长按进行关注。