B站login-极验逆向
声明
本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!
目标网站
https://www.bilibili.com/ 登录分析
分析过程
极验分析
直接查看login的极验的调用的js,点击去看看发现俩个文件全部混淆了
我解开看看,肯定有好东西呢!
先分析click文件
某些字符串是转义序列,此时我们需要转换。
tips:当这些 Unicode 编码以 "\uXXXX" 的形式出现时(其中 XXXX 是 4 位十六进制数),它们通常被用作字符串中的转义序列,表示一个特定的 Unicode 字符。
还发现了调用了个解密函数,输入对应的number即可输出解密的字符串
还发现了for-switch结构中用死数组的来判断执行的每个case。
被吓到了。
解密效果如下
发现w参数在哪里了!
继续分析
分析o参数的来源
通过设置原型代理去hook找到set-key,即可找到整个对象设置的过程
继续溯源
发现原来是请求响应体拿到
很傻哈哈,很低效率,不过细节全收入囊中,值得的
点击坐标this.$_BIFO.$_BHDz
这里的t是判断点击在哪里(按钮为3,其他为1),dt是当前时间-初始化时间
属性来源
取domracet的右减去左
基本上o对象的所以属性都解析的差不多了,剩下的都是就是组成业务逻辑了!
还原后的click.js已放到星球,以方便各位相关调试,寻找算法、检测点学习
b站login-password分析
往上追溯是个异步,从控制流找到个异步,单步追踪
拿请求的hash和pubkey(RSA加密(
猜测))
不过这里有个坑,即使固定了随机数,难以与本地做出验证,Rsa加密还是每次都随机
后面问了零点大佬,指出变化点(万分感谢大佬的帮助)
雀氏RSA的机制每次都会把这个this做出一定的改变来影响整个整体随机,于是我直接找了个Rsa的开源项目,照猫画虎的源码的this每次进行初始化,通过对比每次结果,后面大致看了看基本是些常规操作随机、位运算,猜测这个RSA是没有魔改的,Nice,后面通过原生加密也可以被私钥进行解密,算是过关了,虽然省不了多长扣代码的时间,但是总有收获所在!
后续得去了解rsa底层加密步骤才能好好玩耍。
//极验
var u = n.$_CAAz();
var h = X.encrypt(ae.stringify(o), n.$_CABL());
var p = w.$_EFO(h);
var d = {
"gt": r.gt,
"challenge": r.challenge,
"lang": o.lang,
"pt": n.$_BGJB,
"client_type": n.$_BHAv,
"w": p + u
}
// b站
r(s.encrypt(o.data.hash + t)))
解决方案
思路:
通过上述逻辑,分析接口流程
hash,public_key=token, challenge, gt = passport-login/captcha 携带上gt请求gettype.php 携带上gt、challenge请求ajax.php 图片data =携带上gt、challenge请求get.php data["pic"],c = data["c"],s = data["s"]执行点选请求url = ’https://static.geetest.com+["pic"]’ validate, token, challenge=生成w、携带上gt、challenge请求ajax.php 携带上述hash、public_key生成password参数请求b站web/login的link
直接放出最后login成功图!(后续实现个花光所有硬币的计划)
番外预告某音ab
思路是对每个vmp的循环插桩,即可判断是哪个vmp最终生成目标算法,避免日志过大,在位置9进行断住ab,分析位运算符日志(纯算不多讲,PS:我基本全参考了星云牛马这位博主的插桩log点)
成功图
预告:全参补环境检测图
参考链接:
[1] 某音ab纯算参考。
[2] 极验3文字点选参考。
[3] b站login极验用于魔改优化风控。
Next-Target
后期思路是讲补环境去通杀某音ab,xb,xhs全参等等,尽量避免用插桩分析还原算法去对抗jsvmp脏活。 阿里140 瑞数456vmp 主动调用Android-Wechat文本信息
最近想法
我开了个知识星球,把本期的成品已放到了里面,有需要的小伙伴可以自行去取,jd的参数,阿里bxet纯算、快手滑块,Pdd—Anti,ikuai,b站login之-极验3文字,某音ab等等,主要是某些大佬加我问成品,很多人都打着白嫖的手段去加我好友为目的,问完基本就以后没有任何的交集,这样的交好友雀氏没有任何意义。不如我直接开个星球,里面直接放我逆向的成品以及逆向的思路,这样大家各取所需,我也有点收益,意义更明确点,免得浪费大家的时间。星球如果你们遇到了什么问题的话,也可以直接提出来,我肯定以我最大的能力去回答,后续的话,随着知识星球的作品越来越多,涨价是必然的。至于一些没有特殊难点的站或app,我会直接把思路以及成品到星球里面,同时也欢迎各位大佬的技术合作,有技术,有想法的一起交流成长。