js逆向之补环境过瑞数4.0 某房地产

瑞数简介
整体流程
补环境详解
总结
出于安全考虑,本章未提供完整流程,调试环节省略较多,只提供大致思路,具体细节要你自己还原,相信你也能调试出来.
5.0,加速乐,极验已经实现,后续有空会持续更新.
由于本人第一次写博客,加上写作水平有限,如有讲解不到位或者讲解错误的地方,还请各位大佬在评论区多多指教,共同进步.如有需要代码的可以加本人微信
声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除!
引用某博主的一段话
瑞数简介
瑞数动态安全 (机器人防火墙)以“动态安全”技术为核心,通过动态封装、动态验证、动态混淆、动态令牌等技术对服务器网页底层代码持续动态变换,增加服务器行为的“不可预测性”,实现了从用户端到服务器端的全方位“主动防护”,为各类 Web、HTML5 提供强大的安全保护 。瑞数多用于政企、金融、运营商行业,一度被视为反爬天花板.目前版本有4.0,5.0,6.0,本章针对4.0,其本质上大差不差,无非是这几个流程(从上至下)
1. 一个meta标签,其内容很长且是动态的(每次请求会变化),会在eval执行第二层JS代码时使用到;
2.一个外链js文件,一般同一页面中其内容是固定的,下面的自执行函数会解密文件内容生成eval执行时需要的JS源码,也就是第二层vm代码;
3.一个大自执行函数(每次请求首页都会动态变化),主要是解密外链JS内容,给添加一些属性如$_ts,会在vm中使用;
4. 生成80T这个再带上第一次请求返回的80S,注意:4.0有一个生成假的过程,扣代码的话要注意真假,如果是补环境的话可以不用管,直接调用最后生成的.即可.
整体流程
1.找到的生成位置,可以hook 的生成位置,油猴,,浏览器插件都行
(function() {'use strict';var cookieTemp = '';Object.defineProperty(document, 'cookie', {set: function (val) {debugger;console.log('Hook捕获到cookie设置->', val);cookieTemp = val;return val;},get: function () {return cookieTemp;},})})();
2往上跟栈,定位到生成VM的位置,通常是VM下面的那几个栈,找到.call方法,5.0,6.0可能会混淆,仔细观察一下就能找到
3. 固定住一份静态代码方便调试,因为它每次请求内容都会替换,到时候方便在node里跑,能找到报错位置,接下来就是补环境了,只要我们补的浏览器环境足够完美,使得在这些动态JS看来,我们补的环境===浏览器环境,那么我们补的环境执行这些动态JS,同样也能生成可用的 ,然后我们再通过.将 提取出来不就好了
补环境详解
1.把浏览器固定的静态代码中的,外链js和自执行函数粘到node里,会在生成的VM里用到,扣代码的话可以发现,这里就不扣了,同一页面的外链js一般是一样的
2.直接运行一下,不出意外的报错了,应为浏览器的环境和node的环境还是差别挺大的
3.常被检测的环境中有,,,,,等浏览器指纹的检测和node环境的检测(待会会用到). 手动补环境通常是缺啥补啥,比如上面的 is not ,可以补上 = ,但是像抖音web端,今日头条等等都具备深度检测浏览器环境身份的功能,单靠报错来补环境是不可靠的,因为如果最终返回一个或者长度不对就不知道该怎么办了. 此时可以使用Proxy脚本让node自动吐出环境,再到浏览器去调试(Proxy有需要可以联系我)