返回首页

PhaaS collector.js:指纹识别沙箱

文章分析了使用浏览器指纹识别过滤沙箱的 PhaaS 平台和 collector.js。描述了 WebGL GPU 检测、WebRTC IP 泄漏、防机器人修补和两阶段架构。提供了 IOC 和针对 SOC 的建议。

PhaaS 如何通过浏览器指纹识别过滤沙箱
Advertisement 728x90

PhaaS 平台拆解:collector.js 指纹识别绕过沙箱

一封关于 Gmail Workspace 邮件延迟的邮件通过 SendGrid 发送,SPF、DKIM 和 ARC 均通过验证。发件人:sandeep@oesplindia[.]com,回信地址:td@sevensounds[.]ae。链接指向 maxillae890[.]bitnest[.]za[.]com/testatrix449/*email@victim。该 bitnest[.]za[.]com 域名使用 Cloudflare 通配符 DNS,将任意子域名解析到 CDN IP 188[.]114[.]96[.]11 或 188[.]114[.]97[.]11。

基础设施采用两阶段设计:登陆页收集指纹,后端据此决定是否显示表单。该域名的 SPF 记录为 v=spf1 -all,排除合法邮件的可能性。

分析 collector.js:指纹采集

collector.js?v=21e981d0 脚本首先加载,通过 collect() 函数收集数据。它使用 Object.getOwnPropertyNames() 遍历浏览器属性,构建数据对象。

Google AdInline article slot

标准参数:

  • 屏幕:分辨率、颜色深度。
  • Navigator:User-Agent、语言、平台、硬件并发数、插件。

WebGL 用于 GPU 指纹

代码提取 GPU 信息:

var gl = d.createElement("canvas").getContext("webgl"),
    ext = gl.getExtension("WEBGL_debug_renderer_info");
data.webgl = {
  vendor: gl.getParameter(ext.UNMASKED_VENDOR_WEBGL),
  renderer: gl.getParameter(ext.UNMASKED_RENDERER_WEBGL)
};

在沙箱环境中,渲染器报告 SwiftShader 或 llvmpipe,从而暴露虚拟化。

Google AdInline article slot

WebRTC 用于 IP 泄露

通过 STUN 绕过 VPN:

var RTC = w.RTCPeerConnection || w.webkitRTCPeerConnection;
var pc = new RTC({
  iceServers: [{ urls: "stun:stun.l.google.com:19302" }]
});
pc.createDataChannel("");
pc.onicecandidate = function(e) {
  if (e.candidate) {
    var p = e.candidate.candidate.split(" ");
    data._rtc.push({ i: p[4], t: p[7], p: p[2] });
  }
};
pc.createOffer().then(function(o) { return pc.setLocalDescription(o); });

HTTP IP 与 WebRTC IP 不匹配,即表明存在代理。

反检测技术

脚本检查自动化和 DevTools:

Google AdInline article slot
  • 修补 Array.prototype.includes 用于 canPlayType:
var orig = Array.prototype.includes;
Array.prototype.includes = function() { data.proto = true; };
try { d.createElement("video").canPlayType("video/mp4"); } catch (e) {}
Array.prototype.includes = orig;

这会在 Puppeteer 中触发。

  • DevTools 检测 通过 toString:
var fn = function() {}, cnt = 0;
fn.toString = function() { ++cnt; return ""; };
console.log(fn);
data.tostring = cnt;

打开 DevTools 时,日志记录会调用 toString。

其他:触摸事件、iframe 检测、visibilityState、pagehide。

数据提交与后端

120 ms 后,数据通过 POST 表单发送至 demo[.]bitnest[.]za[.]com/testatrix449/:

  • analytics:JSON 指纹。
  • _h:URL 哈希。
  • _p:受害者邮箱。

后端返回钓鱼表单或拒绝访问。许可证过期显示“Your license has expired”。

基础设施关联与 IOC

IP 91[.]193[.]42[.]16 托管 sevensounds[.]ae 和 exquisite[.]za[.]com。域名 oesplindia[.]com 在 170[.]10[.]163[.]134 暴露 FTP/MySQL/SNMP 端口。

关键 IOC:

  • 域名:bitnest[.]za[.]com、oesplindia[.]com、sevensounds[.]ae。
  • IP:188[.]114[.]96[.]11、149[.]72[.]123[.]24 (SendGrid)。
  • 脚本:collector.js?v=21e981d0。
  • STUN:stun.l.google.com:19302。
  • SendGrid:user_id=60417945。

关键要点

  • 两阶段设置:登陆页跳过表单,规避扫描器。
  • 许可模式:PhaaS 如 SaaS 般运行,访问权限有时效。
  • 沙箱绕过:WebGL 渲染器、WebRTC IP 泄露、DevTools toString 检查。
  • 通配符 DNS:Cloudflare 下快速部署活动。
  • MITRE 策略:T1566.002(鱼叉式网络钓鱼)、T1217(浏览器发现)。

— Editorial Team

Advertisement 728x90

继续阅读