• 区块链社交APP协议分析:Qbao


     本文从协议解析的角度,对区块链社交应用Qbao进行简单分析,重点介绍聊天内容的还原。


    在正文开始前,先作几点说明:


    首先,Qbao不是钱宝,而是一款区块链社交APP,请钱宝粉勿扰。


    其次,协议分析是一个枯燥的过程,如果只对分析结论感兴趣,可直接跳至文末查阅。


    最后,本文的协议分析过程用到了破解逆向相关的技术,有感兴趣的朋友可以对这方面进行了解,后续也会对此进行介绍。


    01

    Qbao是什么


    对一个APP进行协议分析的第一步,是了解APP是做什么的,了解APP的功能,从而对APP有一个全局的印象。


    Qbao官网为https://qbao.fund,其官网介绍:

    0?wx_fmt=png


    要点提取:去中心化,社交,区块链技术,目标是微信第二。


    官网应用场景是这样的:

    0?wx_fmt=png


    图中我们标出了重点:点对点通讯,可信任社交。


    本质上,这就是一个IM应用,附加了部分数字货币相关的功能。


    分析的APP版本:Android V2.1.1。

    登录后界面是这样的:

    0?wx_fmt=jpeg

    聊天界面是这样的:


    0?wx_fmt=png


    通过对这个APP的使用,可以将这个APP归入IM类,其具备文本聊天,语音视频通话等功能,本文中,我们分析其文本聊天功能,其它功能与文本聊天功能类似,如果各位朋友感兴趣,可以自行分析,共同提高分析技能。


    后续几节,我们将先对聊天数据协议进行分析,从而提取聊天内容,对APP内部结构进行剖析,看看它的本质


    02


    Qbao报文情况


    本节我们开始使用Qbao软件,并抓取其报文进行分析。

    对APP进行协议分析抓包的一般过程是:

    1、打开抓包APP进行抓包;

    2、打开APP开始使用;

    3、对每个功能操作对比报文的产生和动作,确定每个报文与动作的关系;

    4、重点分析DNS,HTTP,SSL,TCP,UDP等主流互联网协议。


    对Qbao软件,有如下DNS:

    0?wx_fmt=png


    是对域名www.aethercoder.com的解析,这个域名对应的IP后续承载的是SSL,根据分析,目前是无法解密的。

    还有另外一个DNS,对应了一个HTTP对:

    0?wx_fmt=png

    图中框出的IP PORT后续也会建链:

    0?wx_fmt=png

    粗略一看,SSL呀,各位千万别被Wireshark所蒙蔽,Wireshark对SSL的判断很简单,是根据端口来判断的,是否是SSL,要根据报文内容具体情况具体分析,这才是一个协议分析人员的专业素养。


    后续收发信息等产生的报文都在这条链内。


    那好,我们看报文内容:

    0?wx_fmt=png

    内容不是SSL,但也不是明文,那我们就试试看是否可以解密了。


    03


    Qbao协议破解


    光看报文内容,如果报文没有明显的算法特征的话,我们是不可能获取到其加密算法的,另外,光有算法还是不够,还需要密钥,二者俱备,才是一个完整的解密方案。


    算法和密钥,我们需要从APK安装包中去寻找答案。


    使用Android逆向工具,可以从Qbao APK中提取出Qbao的实现文件,包括库文件及smali文件。


    通过分析调试,最终得到聊天内容使用的加密算法:


    0?wx_fmt=png

    密钥固定,算法是简单的异或。

    其输入并非报文,而是报文的一部分,在TCP流中,Qbao数据按块划分,每块都有块头,内容为标记及长度,然后才是需要解密的数据,并且收发块头位数稍有差异,对比几个报文即可找到规律,并且收发的报文稍有差异。


    根据算法尝试解一个发送文本单聊消息报文:

    0?wx_fmt=png

    根据算法尝试解一个接收文本单聊消息报文:

    0?wx_fmt=png

    根据算法尝试解一个接收群聊消息报文:

    0?wx_fmt=png

    这条消息链内的数据基本就解出来了,然后根据各种标记对内容进行提取就完成了协议解析的过程。


    其它相关功能解析类似,在此就不展开了。



    04


    Qbao软件结构


    在使用逆向工具分析APK后,可以看到Qbao实现代码的大概情况。

    使用的库文件:

    0?wx_fmt=png

    软件功能相关的实现:

    0?wx_fmt=png


    仍然是软件功能相关的实现:

    0?wx_fmt=png


    经过分析发现,Qbao大量使用了RongIM相关的接口,例如聊天,通话等功能,RongIM相关的smali与Qbao命名的相关smali在不同的目录下,推测二者为不同的组织编写。


    通过搜索,可以发现,RongIM相关的so和smali为融云提供的接口,并且Qbao部分功能直接使用融云的服务器。


    因此,Qbao是在融云的基础上进行二次开发得到的一个应用,主体功能为融云提供,区块链相关功能属于二次开发。


    在实现代码中,找到了一段和其代币相关的加密的过程。

    0?wx_fmt=png


    在APK内寻找区块链相关的去中心化技术和点对点技术,很遗憾,没有找到,所有操作,都是与服务器交互,没有用户与用户之间的连接过程。


    因此,这是一个伪区块链APP,技术薄弱,目的是种韭菜割韭菜。



    05


    Qbao分析结论


    1、Qbao是一个伪区块链APP,功能为临时拼凑;

    2、Qbao社交相关功能,如聊天,视频等功能,均为简单的异或加密,相当于裸奔;

    3、Qbao没有去中心化,没有点到点,主页所称的亮点都有待实现;

    4、Qbao协议未考虑安全性。


    欢迎关注,共同探讨协议分析技术。

    0?wx_fmt=jpeg

    长按进行关注。





  • 相关阅读:
    AAC音频格式分析与解码
    SIGPIPE信号
    可变参数的宏定义
    Makefile条件编译debug版和release版
    Linux下查看内存使用情况
    Trie树 字典树
    C/C++随机数生成 rand() srand()
    关于编译安装Thrift找不到libthriftnb.a的问题
    Linux下使用popen()执行shell命令
    WebSocket协议分析
  • 原文地址:https://www.cnblogs.com/protosec/p/11673362.html
Copyright © 2020-2023  润新知