声明:
本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
前言
老代码基本歇b了。修补了一下。
分析过程
用的vm2沙箱补的图个方便。
这次更新增加了很多监测点需要慢慢上代理和不上代理分开分析。在vm2和node环境对比进行分析。测了维普和药监局。监测点是不一样的,通杀时代已经结束不过具体差别也不大。我记随便截几张图来示例怎么补。
document.documentElement.getAttribute=function(){return null}
location={}浏览器的全部值。 维普这个不需要后缀这么补就可以过了。
document.all.length=3或者4
最后基本没什么差别。如果用了vm2需要注意他检测了vm2。
后缀部分以为再说主要就是重xmlhttprquest.open,然后就是全部navigator检测直接套上去。
window.XMLHttpRequest.open = function () { } window.XMLHttpRequest.send = function () { } window.self = window navigator = { "appCodeName": "Mozilla", "appName": "Netscape", "appVersion": "5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36", "cookieEnabled": true, "language": "zh-CN", "languages": ["zh-CN"], "maxTouchPoints": 0, "platform": "Win32", "product": "Gecko", "productSub": "20030107", "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/53", "vendor": "Google Inc.", "vendorSub": "", "webkitPersistentStorage": { "length": 0 }, "webkitTemporaryStorage": { "length": 0 }, "webdriver": false, "getBattery": function getBattery() { let promise = new Promise((resolve, reject) => { resolve({ }); }); return promise; }, "getGamepads": function getGamepads() { console.log('navigator.getGamepads', arguments) }, "getHardwareConcurrency": function getHardwareConcurrency() { console.log('navigator.getHardwareConcurrency', arguments) }, "getInstalledRelatedApps": function getInstalledRelatedApps() { console.log('navigator.getInstalledRelatedApps', arguments) }, "getLanguages": function getLanguages() { console.log('navigator.getLanguages', arguments) }, "getManifest": function getManifest() { console.log('navigator.getManifest', arguments) }, "getNetworkInformation": function getNetworkInformation() { console.log('navigator.getNetworkInformation', arguments) }, "getPlugins": function getPlugins() { console.log('navigator.getPlugins', arguments) }, "getProductSub": function getProductSub() { console.log('navigator.getProductSub', arguments) }, "getStorageUpdates": function getStorageUpdates() { console.log('navigator.getStorageUpdates', arguments) }, "getWakeLock": function getWakeLock() { console.log('navigator.getWakeLock', arguments) }, "webkitRequestFileSystem": function webkitRequestFileSystem() { console.log('navigator.webkitRequestFileSystem', arguments) }, connection: { } }