逆向百例之腾讯防水墙

admin 2024年11月7日11:55:04评论7 views字数 2222阅读7分24秒阅读模式

    特别声明:本文章只作为学术研究,不做其他用途;如有侵权请联系我删除文章

逆向百例之腾讯防水墙

目录:

    一、前言

    二、逆向分析

    三、插装点

    四日志分析

    五、明文顺序

逆向百例之腾讯防水墙

逆向百例之腾讯防水墙

、前言

这个算是之前做的,一直放了很久,但是瞅了一下发现还行,能直接用,这里也就当逆向百例中国内的开篇吧。还是那句话,本文章我只做学习使用,不做其他用途

二、逆向分析

这里直接开控制台抓包,腾讯滑块其实比较简单,一共两个验证,一个是请求底图,另外一个就是验证包了。

逆向百例之腾讯防水墙

    其中collect与sess就是我们要分析的值,话不多说,开始处理

逆向百例之腾讯防水墙

三、插装点

之前有人说kasada太水,那么这里直接写的详细一点吧,直接放出10个插装点,这个直接能插装出来我们所有想要的日志了,同时大家也可以根据映射去找到之前kasada的插装点。

逆向百例之腾讯防水墙

逆向百例之腾讯防水墙

逆向百例之腾讯防水墙

逆向百例之腾讯防水墙

逆向百例之腾讯防水墙

逆向百例之腾讯防水墙

逆向百例之腾讯防水墙

逆向百例之腾讯防水墙

逆向百例之腾讯防水墙

逆向百例之腾讯防水墙

四、日志分析

  1. 日志追踪

  2. 通过打印的日志,我们开始逐步得到我们想要的信息,拉到最后最后可以看到以下的关信息。

    逆向百例之腾讯防水墙

    其中这种操作一共有四处,就是说有四段明文经过加密之后得到四个密文,最后把密文拼接就是最终的collect了,明文部分先按下不表,来分析明文是怎么通过一系列操作得到密文的。
  3. 日志还原

  4. 我们在上一张截图的往回追溯一下,能看到更多想要的信息

    逆向百例之腾讯防水墙

    可以看到那一串看着像乱码的东西是四个数字经过fromCharCode得到,然后再逐个拼接的,并且这里也可以得到这四个数字的由来。

    逆向百例之腾讯防水墙

    这个时候就需要再往上走,看下8591073566是怎么来的,从这里开始多加个插桩点,也就是文章的开头,但是插装点过多会导致控制台崩溃,进而无法进行调试了。
  5. 日志分析

    这里选择把部分日志copy到本地进行分享,这时候就会出现,根本找不到这个数字由来的算法,再往上倒推开始异常困难了,十几万行日志根本遭不住,换个思路,找到明文然后往下推,上文提到的四处明文,发现开头一直都是{“cd”:,那就全局搜他
  6. 逆向百例之腾讯防水墙

    很明显{–>123,"–>34,是经过charCodeAt得到,结合看到的<< 0、8、16、24,这里就可以得到我们想要的算法了

    逆向百例之腾讯防水墙

    并且可以在当前日志往下看个十几行发现也有这种操作,很明显这是两个四位字符串为一组去做加密的。

    逆向百例之腾讯防水墙

    这两个四位字符串最终得到的两个数字分别是1684218491、844839458,接下来就是tx的难点xtea算法了,这里建议先找个tea算法了解个大概,对一些符号运算混个眼熟,然后再看下面的日志。

    现在开始解剖tea,这里开始先对num2(844839458)进行了操作

     844839458 '<<' [4] 'result is' 632529440 844839458 '>>>' [5] 'result is' 26401233 632529440 '^' [26401233] 'result is' 606174193 606174193 '+' [844839458] 'result is' 1451013651 得到左边的算法-->((num2 << 4) ^ (num2 >>> 5)) + num2)

    将上面得到的数字与key亦或后再累加num1(1684218491)就得到第一轮的num1了

    逆向百例之腾讯防水墙

    通过上面两张图的分析可以得到以下算法

    //这里的sum初始值为0num1 += (((num2 << 4) ^ (num2 >>> 5)) + num2) ^ (sum + key[sum & 3]);

    接着分析,这里出现了一下关键数字delta–>2654435769,就是通过这个数字确定xtea算法的

    逆向百例之腾讯防水墙

    由上面这张图可以得到以下算法

     sum += delta; num2 += (((num1 << 4) ^ (num1 >>> 5)) + num1) ^ (sum + key[(sum >>> 11) & 3]);

    这时候大致的算法已经出来了,然后再耐心的往下翻翻日志,会发现他一直在循环这个操作,直至明文取完(还会补位空字符)

    function teaEncryptBlock(num_lis) {    var num1 = num_lis[0];    var num2 = num_lis[1];    var sum = 0;    key = [1466852942, 1768312662, 1715955288, 1498245202];    var delta = 2654435769;    for (var i = 0; i < 32; i++) {        num1 += (((num2 << 4) ^ (num2 >>> 5)) + num2) ^ (sum + key[sum & 3]);        sum += delta;        num2 += (((num1 << 4) ^ (num1 >>> 5)) + num1) ^ (sum + key[(sum >>> 11) & 3]);    }    return [num1, num2];}

    其实到这里已经清晰明了,没啥好说的了,就接下来开始分析明文了

五、明文顺序

先来看看明文长什么样,atr2和atr4都是轨迹,其他文章常说的tx38位数组其实就是atr1+atr3+atr4拼接而成的

逆向百例之腾讯防水墙

到了这里,其实就是腾讯滑块最变态的地方,通过多次调试会发现,这38位数组每次的顺序都不一样,这里只能开补,目前而言tx滑块没办法做到真正意义上的纯算,这里的处理方式是先让这个js跑起来,然后通过正则在js里添加点内容最后返回明文再对明文做点处理最后走算法,这样减少一些dom环境的检测,让我们补环境时间大大节俭

逆向百例之腾讯防水墙

其实到这里,腾讯的防水墙算是完结,已经没有啥可以继续讲的了,后续更新的强度保持在一周两更,同时也会弄一些其他文章,不在专注与web方向了。

逆向百例之腾讯防水墙

既然已经看到这里了,不妨留个关注吧

原文始发于微信公众号(二进制科学):逆向百例之腾讯防水墙

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月7日11:55:04
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   逆向百例之腾讯防水墙https://cn-sec.com/archives/3368064.html

发表评论

匿名网友 填写信息