Akamai 加密分析(一)

admin 2024年4月19日22:50:22评论11 views字数 1487阅读4分57秒阅读模式

昨天在星球看到杨如画大佬说要发akamai 的文章,给我急的,本来想把指纹数组都搞完再发,这tm再不写就没机会发出来了,58位数组的每个值还没彻底走完,就不误人子弟了,这里只说一下对数组的加密,加密我对照验证了是正确的

加密定位

请求流程和定位加密文件

请求主页面的第一个html请求,查看cookie返回,可以看到set了一堆cookie,重点关注其中的bm_sz_abck两个cookie,后面加密会用上,_abck 会被用来加密生成58个数组,bm_sz 会在加密流程中被解析成一个包含两个数字数组

请求返回的HTML文件中,直接搜<script type="text/javascript" src=",src属性的链接就是需要逆向的 js 文件链接(不是链接中带assets那个请求)

提取方式建议选择正则,而不是xpath,因为就算你失败,xpath也会提取到,而正则匹配失败会直接报错

后面可以看到请求了两次这个链接,第一次获取JS文件,同时更新cookie _abck,第二次发送了一个sensor_data的值,然后返回{"success": true},这里也会更新cookie

由于每次请求代码都会变,而且代码不仅变量会变,函数之间的位置关系也在变,后续定位比较麻烦,所以建议 固定html文件和js文件

加密分析

1.1追踪堆栈找

根据堆栈追就没啥说的,追就完了

1.2快速定位

大概瞄一眼 JS 文件,找一下类似于zU(zU(zU(zU(zU(zU( 的代码,然后搜这段代码就好,然后搜索zU(zU(zU(zU(,下一行是类似于var HU = BA();,的这个zU(zU(zU(zU(就是了

1.3固定加密和开始前的建议

先说一下加密验证,这个是参考大佬文章写的固定,但是现在还得多需要固定时间才行(注意cookie也要同步)

// Math.random = function () {
//
//     return 0.9233990436504134;
// };
// Date.now = function () {
//
//     return 1712640715051;
// };

开始前还是建议初步还原一下,不说把控制流还原出来,把那些常数计算,变量名混淆还原出来会省很多力气,而且后续版本改变也好查哪个数字变了(巨多常数)

在扣代码的时候不建议将那些常量数字写死(参考领导给的老版本akamai算法的时候发现有几个常数,变了~),这如果写死了,后面都懒得查哪个数字不一样(嘎嘎纯的纯算当我没说)

毕竟别人的纯算整个代码几百来行,我的纯算一千多行

2.1开始加密

欧克,正题开始

定位到加密点后,记住这个变量名,搜索一下,其实就只有几个地方出现了,然后都打上断点,调试一遍就能找到第一次加密——把58位数组通过分割符拼接成一个字符串

注意,生成分隔符的那个方法的那个常量数字不是固定的,会可能随版本变化

emmm,后面真没啥说的,一步步硬跟,请把你的 F9 给我一路按到死

尽量每个函数全部一步步走一遍,别看到返回值没变化就直接写死,很危险的行为嗷

Akamai 加密分析(一)

建议

  • 每次刷新的时候,牢记,那个数组是cookie加密来的,刷新一次本地也要跟着换一次

  • 细心点,特别数字处理的时候,千万注意里边有没有混入了字符串,我当时查这玩意儿查了一整天

  • 建议一步步跟,走一步看一下变量值分别都是啥,你以为的常数可能中间值就变了

  • 最后加密走完了,一定要记得固定随机数和时间戳去对比一下结果

最后推一下佬的星球,哈哈哈哈,js,安卓,ios内容都有,而且质量嘎嘎高,要不是他说要发akamai,我都不会这么急写这篇文章,哈哈哈哈哈哈

Akamai 加密分析(一)

原文始发于微信公众号(逆向成长日记):Akamai 加密分析(一)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年4月19日22:50:22
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Akamai 加密分析(一)http://cn-sec.com/archives/2647039.html

发表评论

匿名网友 填写信息