首页
社区
课程
招聘
某v博极速版
发表于: 2024-7-16 14:40 2933

某v博极速版

2024-7-16 14:40
2933

某v博极速版

声明

1
本文章中所有内容仅供学习交流使用,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系作者立即删除!

工具

1
2
3
4
5
6
7
iphone:pixel2
android:8.1.1
frida:12.8.0
jadx:1.4.5
ida:7.7
抓包工具:Charles
applink:aHR0cHM6Ly93d3cud2FuZG91amlhLmNvbS9hcHBzLzY2Mjg3MjAvaGlzdG9yeV92NTkyMA==

抓包

打开app找一篇评论较多的文章点开,抓包发现有s,gsid,aid加密参数,分别去掉gsid和s加密参数,依次请求返回
在这里插入图片描述
您的身份已失效,请重新登录
在这里插入图片描述
校验参数不存在
在这里插入图片描述
gsid应该是游客cookie,s是签名校验

设备注册

抓包定位

清空APP缓存

在这里插入图片描述

再次打开APP抓包,发现/2/guest/login请求返回正是前面抓包的评论接口的加密参数,此接口是用于游客的设备注册,有多个参数,接下来逐一分析一下
在这里插入图片描述

分析mfp

将准备好的apk拖进jadx,全局搜索mfp,很容易定位到
在这里插入图片描述
调用了native-lib这个so的generateMfp方法
在这里插入图片描述
hook一下看看是不是我们想要的东西

1
2
3
4
5
6
7
8
9
Java.perform(function () {
    var xxxcoSecurityUtils = Java.use("com.xxx.xxx.security.xxxcoSecurityUtils");
    xxxcoSecurityUtils["generateMfp"].implementation = function (context, str) {
        console.log('generateMfp is called' + ', ' + 'context: ' + context + ', ' + 'str: ' + str);
        var ret = this.generateMfp(context, str);
        console.log('generateMfp ret value is ' + ret);
        return ret;
    };
});

结果一致
在这里插入图片描述
在这里插入图片描述
将apk后缀改成zip,在lib/armeabi-v7a文件夹下找到libnative-lib.so这个文件用IDA打开搜索generateMfp,按F5查看伪代码
在这里插入图片描述
流程已经很清晰了,调用so的generateMfp方法做一些校验通过后,传入RSA公钥再调用com.xxx.xxx.security.xxxcoSecurityUtils的aaa方法加密返回结果
在这里插入图片描述

1
2
3
4
5
6
7
var xxxboIdTask = Java.use("com.xxx.xxx.security.xxxboIdTask");
xxxboIdTask["encryptRsa"].implementation = function (str, str2) {
    console.log('encryptRsa is called' + ', ' + 'str: ' + str + ', ' + 'str2: ' + str2);
    var ret = this.encryptRsa(str, str2);
    console.log('encryptRsa ret value is ' + ret);
    return ret;
};

在这里插入图片描述

1
2
3
4
5
6
7
8
9
10
11
1:系统版本
5:固定值
7:unknown
10:安卓id
13:固定值
14:设备名
15:设备储存容
16:屏幕分辨率
17:ssid
18:设备名
19:联网方式
1
2
3
4
5
固定参数
i:1234567
appkey:902784192
did:0f607264fc6318a92b9e13c65db7cd3c
checktoken:9063459ed31253b42ce5648d47809f0e

最终结果的组合是是01+RSA加密
在这里插入图片描述

分析s

分析流程和mfp基本一样,全局搜索关键词就不赘述了,同一个so文件搜索generateS
在这里插入图片描述
调用com.xxx.xxx.security.xxxcoSecurityUtils的aa4方法加密返回结果
在这里插入图片描述
最终是拼接字符串,sha512加密后再循环检索
在这里插入图片描述
综合上面分析过程,还原设备注册流程
在这里插入图片描述
测试一下,请求通过
在这里插入图片描述
有一个值得注意的点是toSecurityValue这个方法的str3参数会根据不同的接口传入不同的值,否则会报客户端身份校验失败

账密登录

打开算法助手启动APP,输入账号密码点击登录,抓包有个p加密参数
在这里插入图片描述
用算法助手搜索关键词,是RSA加密算法,相关堆栈
at com.xxx.xxx.securityxxxSecurityUtils.securityPsd
在这里插入图片描述
在这里插入图片描述

jadx全局搜索securityPsd就能定位到,调用了libnative-lib.so的securityPsd方法,跟上文mfp的流程一样,传入RSA公钥再调用com.xxx.xxx.security.xxxcoSecurityUtils的securityPsd方法加密返回结果
在这里插入图片描述
登录接口的str3入参为2599295010,最终结果
在这里插入图片描述


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 2
支持
分享
最新回复 (4)
雪    币: 19
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
极速版这个s函数不在匿名内存里吗
2024-7-16 21:17
0
雪    币: 142
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
看看大佬
2024-7-17 14:18
0
雪    币: 29
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
通过so再调用的java层
2024-7-17 14:35
0
雪    币: 1429
活跃值: (1560)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
mb_oowzftna 极速版这个s函数不在匿名内存里吗
S文章好像没有说,是吧
2024-7-22 17:44
0
游客
登录 | 注册 方可回帖
返回
//