数瑞Cookie混淆是如何工作的

本文详细介绍了瑞数Cookie混淆的工作原理,包括HTML文件携带的加密Cookie、动态解密过程以及前端反调试机制。通过分析JS文件,利用格式化工具、劫持与、模拟执行等手段,逐步揭示了解密逻辑,最终提出了解决方案,涉及Cookie劫持、dev-tools调试技巧和模拟执行环境的构建。
摘要由CSDN通过智能技术生成

我的样本文件在此

本次分析文件特征

  • 请求HTML文件包含: set-cookie: 36501JSESSIONIDset-cookie: lD01YhBPHVTHO, 在dev-tools的应用面板中查到cookie: lD01YhBPHVTHP

  • HTML引入JS文件cIZgBeQvEQK9/AiHJXIs5GyJH.dee59c7.js

  • JS文件开头为$_ts...$_ts['dee59c7'], 其中dee59c7为版本

  • HTML中JS多为如下形式

    function _$lt(_$EZ) {
         
      var _$aS = _$EZ.length;
      var _$$N,
        _$VC = new _$XD(_$aS - 1),
        _$vC = _$EZ.charCodeAt(0) - 97;
      for (var _$Vw = 0, _$JP = 1; _$JP < _$aS; ++_$JP) {
         
        _$$N = _$EZ.charCodeAt(_$JP);
        if (_$$N >= 40 && _$$N < 92) {
         
          _$$N += _$vC;
          if (_$$N >= 92) _$$N = _$$N - 52;
        } else if (_$$N >= 97 && _$$N < 127) {
         
          _$$N += _$vC;
          if (_$$N >= 127) _$$N = _$$N - 30;
        }
        _$VC[_$Vw++] = _$$N;
      }
      return _$yn.apply(null, _$VC);
    }
    
大致工作原理
  • 获取HTML文件, HTML文件携带两个Cookie
  • HTML请求JS文件(JS文件为乱码)
  • HTML中JS解密JS文件, 得到JS字符串
  • 使用eval执行JS字符串, JS字符串计算并设置加密Cookie(lD01YhBPHVTHP)
  • 离谱的是RUISHUTESTFUNCTIONENTRY每次请求获取值不同(其中除了$_ts之外变量名都是变化的, 但是保证每次计算结果相同)
解决思路

将代码从压缩(单行)形式转为格式化后的多行模式, 方便debug

准备工作(解决动态JS)

由于JS与HTML中变量都是动态的, 打开网站后Ctrl+S保存全部文件. 在VSCode中打开HTML文件, 使用格式化工具格式化, 得到如下形式HTML

<!DOCTYPE html>
<html lang="en">
<head>
  <!-- ... -->
  <meta content="{qXVS74Mnw/*...*/03336qqqqqqqq">
  <script type="text/javascript" src="../cIZgBeQvEQK9/AiHJXIs5GyJH.dee59c7.js"></script>
  <script>
    (function () {
     
    var _$XI = 16,
    // _$_0 = [
      // [14, 10, 13, 15, 12, 1, 0, 8, 5, 12, 7, 3, 2, 9, 12, 11, 5],
      // [
    })()
  </script>
</head>
<!-- ... -->

其中

  • <meta>中字符串参与加密
  • 第一个<script>请求乱码JS
  • 第二个<script>中的立即执行函数是"解码器"

为了方便分析, 我们将立即执行函数分离到outer.js并引入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Liukairui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值