首页
社区
课程
招聘
[原创] X-Young认证协议分析
发表于: 2019-9-5 12:32 5904

[原创] X-Young认证协议分析

2019-9-5 12:32
5904

此次分析基于Mac端

​ 这种上网方式一直需要连着网线而且使用它自己定制的软件,只要网线一断就没网了。然而无线AP的网非常非常慢,于是想着逆向PC端的网络协议,将它移植到路由器上,这样就方便很多。

​ 软件使用的是http协议,没有启用https。直接wireshark抓取一下重要的http协议。

认证过程分为下面几个步骤:

下面看一个各个请求中的字段。

第一个GET请求没啥东西,wlanuserip是获取到的内网IP,mscgip是外网IP,wlanusermac是一个mac地址,userlocation可能是记录网络接口物理位置的参数

分析ticket.cgi

里面POST的内容是突然多出来的,看这个格式像hexstr,分析可能是加密过的。于是去程序中分析这个POST data的由来。通过这个Headers里面的字段去定位这个data的生成。
分析程序的一个字符串表,看到有个getTheTicket的,在drawAndCheckQRCode

objc_msgSend就是这个调用getTheTicket函数的。这个函数不在程序中,调用的是动态链接库的,我们切换到动态链接库去查看。 分析这个getticket函数,其实这里我没有分析多少,这里它的日志没有关闭,我们直接可以查看到他的日志。

这里的他原始生成的其实是一个xml序列。
他这个xmlDataWithDic其实就是生成这个xml序列。然后调用encodeData对这个xml序列进行加密,最后得到的这个值就是POST的数据。分析这个encodeData。

里面有一个比较重要的函数keyCode。猜测可能是对数据进行加密的。这里可以直接在这里下个断点,然后查看相应的数据,看是否为原始数据。跟进这个Keycode。

这里发现其实是使用dlopen打开一个动态链接库,然后寻找到Code的函数,进行加密。

这个openZsmModule其实是写一个so文件,然后dlopen这个so文件。在这里下个断点直接将SO库拷贝出来即可。文件名是client.dylib。这里有了这个so文件,就可以去分析里面的Code函数。

code函数有三个加密rc4,aes,des3。我们这里直接采用动态调试的方式,查看getticket的时候会进入哪一个case。分析过后其实是进入的aes这里面去了。aes需要一个key和一个iv。跟着上下文进行分析,发现v7就是我们需要的key。 拿到key,iv还不知道。但是iv其实在aes中只会影响第一段后面的序列,还有一些模式不需要用到IV,就比如ECB模式,直接在线测试。 最后发现其实是一段ECB模式的加密。那么拿到这个加密过后就可以对getticket的响应进行解密了。此时会得到一个ticket。生成的二维码我们可以直接用手机扫一下,其实就是一个URL。

就是这样的一个序列,cctp://[ticket]@主机名'mac。

此时直接生成二维码,用手机客户端去扫描即可。

刚刚我们分析的POST data的生成,报文中还有一个比较重要的字段:CDC-checkSum,通过对程序的分析其实就是一个对POST data的MD5。

最后要注意的是几个重要的点:

​ 整个协议挺简单的,不复杂。注意就是在测试的时候每个参数应该大致知道他的由来,不然模拟报文发送的时候不能正常模拟,又得花费很长时间去查找出错的原因。

 
 
 

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 3
支持
分享
最新回复 (7)
雪    币: 26205
活跃值: (63302)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
2
感谢分享!
2019-9-5 13:38
0
雪    币: 4
活跃值: (781)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
你这个在线加密解密是哪个?还支持key HEX?
2019-9-5 14:13
0
雪    币: 4485
活跃值: (1904)
能力值: ( LV12,RANK:209 )
在线值:
发帖
回帖
粉丝
4
https://gchq.github.io/CyberChef/#input=MTIz
2019-9-5 15:21
0
雪    币: 316
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
之前搞过win端的,没弄出来。不过直接逆向手机端的协议上网更方便
2019-9-17 19:08
0
雪    币: 4485
活跃值: (1904)
能力值: ( LV12,RANK:209 )
在线值:
发帖
回帖
粉丝
6
TTups 之前搞过win端的,没弄出来。不过直接逆向手机端的协议上网更方便
哈哈哈哈  ,手机上加了壳,没有环境脱壳。所以直接搞了PC端的。
2019-9-17 20:57
0
雪    币: 29
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
老哥最近还研究这个么,我们学校目前mac端天翼校园走的就是这个流程,最近一直想逆向看看密钥然后写个程序挂路由器上,可mach-o用ida逆向一直出问题,老哥您能帮忙看看么?
2020-12-12 18:34
0
雪    币: 4485
活跃值: (1904)
能力值: ( LV12,RANK:209 )
在线值:
发帖
回帖
粉丝
8
liamluo 老哥最近还研究这个么,我们学校目前mac端天翼校园走的就是这个流程,最近一直想逆向看看密钥然后写个程序挂路由器上,可mach-o用ida逆向一直出问题,老哥您能帮忙看看么?
最近没在弄,已经用不到了。
2020-12-15 10:39
0
游客
登录 | 注册 方可回帖
返回
//