某佳缘Http,TCP全套协议
2020-06-15 23:21:09 Author: bbs.pediy.com(查看原文) 阅读量:501 收藏

我有个朋友呀 (不是我我才18岁) 30多岁还是单身 于是勒他就去市面上的一些相亲交友网站到处相亲 然后勒上面骗子还多 各种机器人聊天引流的 我都看不下去了

于是我们这篇就来分析分析一下市面上的一些相亲机器人的工作原理 机器人归根揭底无非就是协议 协议嘛一般大型app都是会有很多加密的 各种so层 ollvm混淆啥的 各种风控 不过都问题不大 这里勒我们先来个简单的平台分析一下他的协议算法

某佳缘 拿到app首先抓包看看加密字段信息
图片描述

标红线的地方都是加密的密密麻麻的

我们接着来看看他是否加壳 加壳咱就脱问题不大
图片描述

比较幸运 这个没壳

我们首先从java层开始分析一波 打开我们的jadx-gui直接进行反编译

然后我们搜索他的url 因为他请求这个网站信息 肯定会在本地进行构造 我们直接搜索/sign/signoninfo.php?
图片描述
图片描述

发现这里是个类 我们可以看看d.b是什么

图片描述
这里就是我们url的构造 跟我们抓包出来的是一样的 那我们就往上层看一下调用

图片描述

发现有3处调用位置 我们一一点过去看

((b) ((b) ((b) ((b) ((b) ((b) ((b) ((b) ((b) ((b) this.b.c(c.f4555a)).a("登录请求")).a("reallogin", "1")).a("logmod", "1")).a("userinfotypes", com.jiayuan.c.a.a())).a("name", this.c)).a("secucode", str)).a("channel", e.b())).a("logtype", "thirdparty")).a("ylcode", this.d)).x().a(new o(this.c)

最终我们确定了这里就是在构造这些参数

首先我们来看userinfotypes 字段是如何来的
图片描述
就是在com.jiayuan.c.a这类里面 点过去发现都是写死的jSONArray的一个数组

图片描述
图片描述
解码之后一对比果然如此
图片描述
紧接着第二个参数secucode

这里的str得往上面看

图片描述
图片描述

接着往下层看来到了getNewCode 方法 这里下面加载了一个"jyn" 的so库文件 我们打开ida将这个so拖进去反编译
图片描述

发现采用的java_的静态注册 传入了两个str 的值
图片描述

直接切换伪代码 将第一个参数改为JNIEnv * 然后这些参数就正常识别出来了 不过我们发现这里应该是有4个参数的 但是这里只有3个 你问我为什么有4个 不是2个吗 我只能推荐你去学习一下ndk开发方便的知识了 第一个是env 第二个是jobject(java有静态关键字修饰的就为jclass) 第三个 第四个就是我们java层传进来的

这里识别有问题 我们大概看一下这里的意思

图片描述
ARM汇编我就不细说了 这里就是取一下我们传入的str支付串的长度 类型转换一下 然后md5加密一下 他传入的信息是什么勒 我们可以借助frida hook 来一波
图片描述

两个参数分别是一个固定的字段(这个字段根据版本的不同而不同是写死的)加上我们的手机号
“3BEF981061D37872D103E21D7BE8ED03”+”1888888888” 然后md5

Frida脚本我就不贴上来了 就一个简单的java层hook 当然你hook他so的第三四的参数也行 返回值就是我们抓包出来的内容

第三个字段就是我们的password 密码字段 其实想这种的一眼就看出来了 密码我设置的是123456 一般的校验加密无非就是md5 sha系列 加密出来都是一样的 这里的密码就用的是sha1加密的我们的密码

其他的traceid android_id deviceid mac都是我们的设备信息 取随机的就行

然后我们就可以用代码实现登陆了
图片描述

这里的滑动我们可以采用本地识别的方式 这里我以后有空教你们怎么编写本地识别库吧 这里我就不说了

图片描述
这样就成功登陆了 然后我们来看看一些人聊天是怎么处理的 我们接着用fiddler抓聊天的数据包 我们发现没有包 这里我们就采用鲨鱼或者是其他的抓包工具 一般聊天都是采用的tcp的通讯

图片描述

00 00 00 bc 7b 22 75 73  65 72 22 3a 22 39 38 34  
33 31 39 34 34 22 2c 22  6e 61 6d 65 6f 72 75 69  
64 22 3a 22 38 36 26 31  38 36 36 30 31 38 30 30  
31 35 22 2c 22 68 61 73  68 22 3a 22 39 32 32 63  
30 38 66 64 63 61 33 39  61 65 63 64 36 36 39 64  
61 30 34 66 32 32 39 62  33 61 34 65 33 35 31 64  
62 35 38 37 22 2c 22 6d  69 64 22 3a 22 61 6e 64  
72 6f 69 64 5f 63 63 31  37 33 38 62 30 39 35 63  
35 61 64 34 63 22 2c 22  63 69 64 22 3a 22 31 33  
22 2c 22 76 65 72 22 3a  22 38 2e 30 22 2c 22 63  
6c 69 65 6e 74 69 64 22  3a 22 31 33 22 2c 22 63  
68 61 6e 6e 65 6c 69 64  22 3a 22 30 32 35 22 7d

这是进入聊天室的包

39 38 34 33 31 39 34 34 这里就是我们登陆成功返回的用户的id 98431944

38 36 26 31 38 36 36 30 31 38 30 30 31 35 这里是我们的设备信息 86&18660180015

39 32 32 63 61 65 63 64 36 36 39 64 61 30 34 66 32 32 39 62 30 38 66 64 63 61 33 39 61 65 63 64 36 36 39 64 61 30 34 66 32 32 39 62 33 61 34 65 33 35 31 64 62 35 38 37

```   这个就是我们登陆成功返回的 hash这个字段

922caecd669da04f229b08fdca39aecd669da04f229b3a4e351db587


然后就是聊天发消息的包
00 00 00 ab 7b 22 63 6d  64 22 3a 31 32 32 2c 22
74 6f 22 3a 31 37 30 33  38 36 39 36 2c 22 63 68
61 74 6d 73 67 22 3a 22  31 31 31 31 31 31 31 22
2c 22 69 6e 73 6b 22 3a  31 35 39 31 39 34 37 35
30 39 33 39 38 2c 22 70  61 79 22 3a 30 2c 22 6d
73 67 74 79 70 65 22 3a  30 2c 22 73 72 63 22 3a
33 2c 22 65 78 74 22 3a  22 7b 5c 22 62 75 62 62
6c 65 5f 6c 69 6e 6b 5c  22 3a 5c 22 5c 22 2c 5c
22 62 75 62 62 6c 65 5f  6e 6f 5c 22 3a 5c 22 72
50 47 55 6a 5a 44 39 38  5c 5c 5c 2f 4d 55 47 79
67 68 68 6e 41 75 78 77  3d 3d 5c 22 7d 22 7d

```

解包我们一眼就可以看到31 31 31 31 31 31 31 这些其实就是我们要发送的信息我们这里发送的是111111

以及31 37 30 33 38 36 39 36 我们要私聊的用户id 17038696

31 39 34 37 35 30 39 33 39 38 以及我们自己用户的id 1947509398

这些数据包解密出来了我们就可以编写对应的机器人了 好了这章就讲这么多 最后说一句 相亲有风险交友需谨慎

最后老规矩放上成品截图,不知道能不能骗个精
图片描述
图片描述

[培训]科锐逆向工程师培训(6月24日远程教学开班, 第38期)!

最后于 3天前 被乌云科技团队编辑 ,原因:


文章来源: https://bbs.pediy.com/thread-260062.htm
如有侵权请联系:admin#unsafe.sh