-
-
某v博极速版
-
发表于:
2024-7-16 14:40
2934
-
某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期)