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() 遍历浏览器属性,构建数据对象。
标准参数:
- 屏幕:分辨率、颜色深度。
- 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,从而暴露虚拟化。
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:
- 修补 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
暂无评论。