本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责
前言瑞数动态安全Botgate(机器人防火墙)以“动态安全”技术为核心,通过动态封装、动态验证、动态混淆、动态令牌等技术对服务器网页底层代码持续动态变换,增加服务器行为的“不可预测性”,实现了从用户端到服务器端的全方位“主动防护”,为各类Web、HTML5提供强大的安全保护。
瑞数Botgate多用于政企、金融、运营商行业,曾一度被视为反爬天花板,随着近年来逆向大佬越来越多,相关的逆向文章也层出不穷,真正到了人均瑞数的时代了,这里也感谢诸如Nanda、懒神等逆向大佬,揭开了瑞数神秘的面纱,总结的经验让后来人少走了不少弯路。
过瑞数的方法基本上有以下几种:自动化工具(要隐藏特征值)、RPC远程调用、JS逆向(硬扣代码和补环境),本文介绍的是JS逆向硬扣代码,尽可能多的介绍各种细节。
瑞数特征以及不同版本的区别对于绝大多数使用了瑞数的网站来说,有以下几点特征(可能有特殊版本不一样,先仅看主流的):
1、打开开发者工具(F12)会依次出现两个典型的无限debugger:
2、瑞数的JS混淆代码中,变量、方法名大多类似于_xx,有众多的if-else控制流,新版瑞数还可能会有jsvmp以及众多三目表达式的情况:
3、看请求,会有典型的三次请求,首次请求响应码是(瑞数3、4代)或者(瑞数5代),接着单独请求一个JS文件,然后再重新请求页面,后续的其他XHR请求中,都带有一个后缀,这个后缀的值是由JS生成的,每次都会变化,后缀的值第一个数字为瑞数的版本,比如MmEwMD=4xxxxx就是4代瑞数,bX3Xf9nD=5xxxxx就是5代瑞数:
4、看Cookie,瑞数3、4代有以T和S结尾的两个Cookie,其中以S开头的Cookie是第一次的那个请求返回的,以T开头的Cookie是由JS生成的,动态变化的,T和S前面一般会跟80或的数字,Cookie值第一个数字为瑞数的版本(为什么可以通过第一个数字来判断版本?难道相同版本第一个数字不会变吗?这些问题我们在分析JS的时候可以找到答案),比如:
FSSBBIl1UgzbN7N80T=37Na97B.nWX3....:数字80是