记录一次akamai逆向的小细节

ps:难,不是靠听,易,不是靠说

目标网站:

  1. aHR0cHMlM0EvL3d3dy5xYXRhcmFpcndheXMuY29tL3poLWNuL2hvbWVwYWdlLmh0bWw=(自行b64解码)
  2. aHR0cHMlM0EvL3d3dy5rb3JlYW5haXIuY29tLw==(自行b64解码)

首先我们要知道akamai最后成功的显示就是Cookie中的~1~转变为~0~,也就是下图这种,好了废话不多说直接开始吧!嘟噜噜嘟嘟!
image.png
1.首先我们找到我们的目标请求,如下图gdBBBRZDQ,每天他的链接都会变的,所以你的可能跟我不一样,还有就是每周二他会更换js代码,所以我们的目标就是这个sensor_data.
imagee13a680e8fce11b8.png

2.然后通过跟栈找到我们sensor_data的生成位置,会解混淆的可以解混淆再替换分析,我不太熟练就直接来了,如下图,我们可以看到它是由一些小东西连接起来的.
image592c11e0d0424565.png

3.我们继续往上看,发现一切都是由一个58位数组生成的,这里面肯定暗藏玄坤.我的思路是通过文本比较比较每次请求的58位数组查看他们的变化,然后我们可以发现4次请求分别变化了的位数.
imageb9693c07264d51f7.png

第一次变化 1 25 53
第二次变化 1 13 23 25 39 49 51 53 57
第三次变化 1 17 23 25 41 43 45 53
第四次变化 1 9 13 17 21 23 25 53

4.所以我们先冲第1位开始看,我们定位到第1位生成的地方,我们发现是EH方法生成的,我们跟进去.我们慢慢分析可以发现,这个参数和Ua以及一些屏幕的宽高有关.
imagec06325c3281da41f.png
image0b2c015e5af6968c.png
image8199fa8b5fd7f18f.png
image093a498c8cebec35.png
image3a34be511e7aca2e.png
5.我们继续分析第25位,发现是一些时间相关的统计,还有_abck、浏览器指纹等等组合而成.
imagec8b2216907ed9ea0.png
imagecfcbac1e37149a59.png
imageec20cccd92952fd2.png
imagee065cb83efb92500.png
image2cd7b1ce268db41d.png
6.接下来继续看第53位,可以发现是一个RB方法,传入了一个有着时间记录、第1位加密数据以及鼠标移动轨迹的对象,然后生成了|分割的字符串.我们跟进去看就会发现,它只使用了对象中的startTimestamp这个数值.
imagefcfa0aa467463696.png
image7fbedd0822fa675a.png

1
2
3
4
5
6
7
8
9
10
param_90_obj = {
"startTimestamp": 1708433699852,
"deviceData": param_100,
"mouseMoveData": "",
"totVel": 11355845,
"deltaTimestamp": 492150
}
var randomCompute = Math.floor((100000 * Math.random()) + 10000);
var startTimestamp = param_90_obj['startTimestamp'] * randomCompute;
var param_90 = [parseInt(Math.sqrt(startTimestamp), 10), randomCompute].join("|");

7.接下来的几次请求也就是分别像数组中添加字体及字体数据加密、鼠标移动轨迹、点击轨迹、页面可见性、canvas指纹、固定设备固定值等等,只要你足够耐心,慢慢跟肯定没问题的啦!
8.还有就是存在的ja3指纹鸟,你可以使用tls_client或者curl_cffi库,都是可以解决的啦,刚把得哟!附上成功截图留念一下,小成功嘻嘻!
imagef53fe2aea6b2bccd.png