一封没有附件的钓鱼邮件,是怎么绕过所有杀软的·安全攻防
[00] 前提:一封没有附件的邮件
七月二十三号,晴。乙方的红队项目,目标是一家金融科技公司的外部边界。
规则很简单:三个鱼叉模板,一周时间,突破邮件网关+终端防护两道防线。
前两个模板都挂了。第一个是伪装成HR的简历PDF——邮件网关直接拦了,规则里写着"PDF含可执行嵌入对象"。第二个是假的供应商发票.zip——沙箱跑了三分钟,标记了可疑宏,进了隔离区。
时间还剩两天,我打开了记事本,新建了一个HTML文件。
没有附件。没有压缩包。没有宏。只有一个合法的HTML网页。
它穿过了邮件网关。穿过了沙箱。甚至穿过了终端的实时扫描。
因为这个恶意文件,在服务器上根本不存在。
它是在你的浏览器里,在它到达你桌面之前的那0.3秒里,从一串base64字符串中"长"出来的。
[01] HTML走私:一个明明不新鲜,但至今有效的攻击技术
HTML走私(HTML Smuggling)不是一个新概念。微软在2021年就发出过警告,MITRE把它收进了ATT&CK框架,编号T1027.006。但三年过去了,KnowBe4在2025年初发布的报告里说:HTML走私在钓鱼攻击中的使用量增长了85.6%。
为什么一个2021年就被命名的技术,到2026年还在大规模有效?
答案很简单:因为它攻击的不是技术漏洞,而是防御体系的设计盲区。
整个邮件安全体系的设计逻辑是:检查附件。解压附件。在沙箱中引爆附件。如果附件是恶意的——拦截。如果附件看起来正常——放行。
HTML走私的巧妙之处在于:它根本没有"恶意附件"这一步。
恶意载荷是一段base64编码的字符串,嵌在HTML页面的JavaScript代码里。当页面通过邮件安全网关时,网关看到的只是一段文本。它不会——也不能——执行这段JavaScript来看看这段文本解码以后是什么。
真正的"武器化"发生在受害者打开页面、浏览器执行JavaScript的那一刻。
[02] 拆一个样本:不到2KB的代码,凭什么绕过一整套安全体系
┌─[root@kali]─[~/payload]
└──╼ # html_smuggling_template.html
<html>
<body>
<script>
// 解码base64载荷
function b64toBuf(b64) {
var bin = atob(b64);
var len = bin.length;
var buf = new Uint8Array(len);
for (var i = 0; i < len; i++) {
buf[i] = bin.charCodeAt(i);
}
return buf.buffer;
}
// 这里就是整个攻击的"弹药库"
var payload = "TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQ...";
// 在浏览器内存中重建文件
var blob = new Blob([b64toBuf(payload)], {
type: 'application/octet-stream'
});
// 生成下载链接 —— 触发浏览器的原生下载行为
var url = URL.createObjectURL(blob);
var a = document.createElement('a');
a.href = url;
a.download = '2026年Q2财报摘要.iso';
document.body.appendChild(a);
a.click();
// 清理痕迹
setTimeout(function() {
URL.revokeObjectURL(url);
a.remove();
}, 100);
</script>
</body>
</html>
[03] 这条链路上,每一层防御都在看错地方
把这条攻击链拆开,看看每一层防御在面对它的时候为什么集体失灵:
第一层 · 邮件安全网关: 网关收到的是一封带HTML附件的邮件。HTML文件本身在任何杀软看来都是干净的——它不包含已知恶意签名、不调用系统API、不写注册表、不创建进程。它的"恶意性"需要被JavaScript引擎解析以后才会暴露,而邮件网关的设计目标不包括运行一个完整的浏览器引擎。
第二层 · 沙箱(Sandbox): "那就把HTML扔进沙箱跑一下?"理论上是。但实际问题很多:沙箱不一定装了完整的浏览器引擎;即使有,JavaScript执行后的"下载"行为在很多沙箱环境中会被当成正常的浏览器交互;而且很多高级货会在代码里加环境检测——检测到虚拟机/沙箱就不触发。
第三层 · 终端AV: 终端防护软件看到的是:浏览器进程创建了一个下载文件。这是一个完全正常的行为——用户每天都在用浏览器下载文件。而且这个文件没有经过网络传输的"附件"标记(Mark of the Web),Windows甚至不会给它打上"来自互联网"的标签。
第四层 · 用户: 下载完了,文件名是"Q2财报摘要.iso"。双击挂载,里面是个lnk快捷方式或者直接一个exe,图标长得跟PDF一模一样。用户点开。游戏结束。
[04] 真实世界里,谁在用HTML走私
这不是实验室里的学术概念。HTML走私是过去三年里多起重大供应链攻击和APT活动的核心交付技术:
▸ APT29(NOBELIUM): 2021年起将HTML走私作为鱼叉钓鱼的标准手法,用ISO镜像嵌套在HTML中投递,配合DLL侧加载完成初始访问。这个组织到现在还在用。
▸ DCRat木马活动(2024): 针对俄语用户,伪装成TrueConf和VK的登录页面,HTML页面自动触发密码保护的ZIP下载,用户输入页面上的密码后解压出DCRat。
▸ JS#SMUGGLER(2025年12月): Securonix记录到的一波攻击,攻击者在被黑的网站上注入走私代码,通过mshta.exe调用PowerShell投递NetSupport RAT。设备指纹识别、反沙箱检测一应俱全。
▸ 还有一个细节值得注意: 2024年HP Wolf Security报告中发现,部分HTML走私代码有明显的AI生成特征——注释风格、变量命名模式、代码结构都表明攻击者已经开始用AI批量生产变种。多态化+自动化=检测难度指数级上升。
[05] 怎么防:五条具体可执行的操作
前面说了这么多"防不住",但HTML走私不是没有解法。以下是经过验证的、可以今天就在你环境里落地的防御措施:
① 邮件网关:直接阻断HTML附件。 大多数企业的业务流里根本不需要收HTML附件。如果做不到全局阻断,至少标记为高风险——Outlook和Gmail都可以做。如果一个员工收到了.html附件,让他走审批流程才能下载。
② 启用Microsoft ASR规则(如果用的是Defender): 以下三条规则直接对标HTML走私的每个阶段:
• "阻止JavaScript或VBScript启动已下载的可执行内容"
• "阻止执行可能已混淆的脚本"
• "阻止来自电子邮件客户端和Webmail的可执行内容"
这三条全部切成Block模式,不是Audit模式。Audit只是记日志,Block才会拦。
③ Mark of the Web(MOTW)保护不要关。 HTML走私产出的文件通常会丢失MOTW标记——这正是它的"免杀"机制之一。如果你的终端策略是"来自互联网的文件需要SmartScreen检查才能运行",那走私来的文件会因为没有MOTW而被允许直接运行。该关掉的不是MOTW策略,而是"允许没有MOTW的文件绕过检查"这个选项。
④ 监控浏览器进程链: 在EDR/SIEM里盯以下行为模式的告警:浏览器进程(chrome.exe/msedge.exe/firefox.exe)→短时间内触发文件写入→文件类型为.iso/.vhd/.vhd/.zip/.lnk。正常的浏览器下载不会在几毫秒内完成从打开页面到触发下载的全过程。
⑤ 员工培训要有"诱导密码"这一项。 现在很多HTML走私样本不再自动触发下载,而是弹一个"文件已加密,请输入密码解锁"的界面。密码就写在页面上一行灰色小字里。用户以为自己在解密一份机密文件,实际上是在手动解除防御的唯一保护层。
[06] 写在最后
这次红队项目的结果:第三封邮件投递了那个HTML文件。三个收件人中,有一个点开了它,下载了那个ISO,双击了里面的lnk文件。从邮件发送到拿到第一个shell,28分钟。
不是因为他们安全意识差。恰恰相反——他们的安全意识培训做得很好,员工知道不要点.exe附件,不要开来源不明的压缩包。但没有人告诉过他们:一封连附件都没有的邮件,也可能是一次攻击。
HTML走私之所以难以防御,是因为它攻击的不是你有的防御,而是你没有的——那个在"邮件检查"和"浏览器执行"之间的灰色地带。
安全防护就像盖房子。你花大价钱装了最坚固的门锁,但攻击者如果找到了一扇你没注意到的窗户,锁再贵也没用。
HTML走私,就是那扇窗户。
▸ 关键结论:HTML走私攻击的不是你有的防御,而是你没有的——那个在"邮件检查"和"浏览器执行"之间的灰色地带。防御的关键不是升级杀软,是补上那个盲区:阻断HTML附件、启用ASR规则、监控浏览器进程链、保护好MOTW标记。
以上。
攻击者在不断找你的窗户。你的任务不是把窗焊死,而是知道每一扇窗在哪。
$ read -p "你有什么想问的?" input
点赞 · 在看 · 转发
DISCLAIMER
本文中所有攻击手法描述均来自公开安全研究报告和MITRE ATT&CK框架。
技术仅供安全研究和授权测试参考。未授权渗透测试属于违法行为。
愿每一双手,都用来建造而非拆毁。
#网络安全 #技术 #kali #CYLOG #钓鱼 #社工 #黑客日记 #渗透测试
文章标题:一封没有附件的钓鱼邮件,是怎么绕过所有杀软的·安全攻防
文章链接:https://jiacy.cn/yfmyfjddyyj-szyrgsysrd-aqgf.html
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明来自CY !
如果觉得文章对您有用,请随意打赏。
您的支持是我们继续创作的动力!
微信扫一扫
支付宝扫一扫