-
-
某v博极速版
-
发表于:
2024-7-16 14:40
4194
-
某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,最终结果

[培训]Windows内核深度攻防:从Hook技术到Rootkit实战!