文章总结: 本文揭示SYLK文件格式可被武器化滥用,攻击者通过嵌入Excel4.0/XLM宏绕过受保护视图、邮件网关及AMSI检测实现宏静默执行。关键发现包括默认信任机制、CSV伪装及跨平台攻击能力。建议将.slk纳入高危扩展名监控并加强XLM宏行为分析。 综合评分: 81 文章分类: 漏洞分析,恶意软件,渗透测试,威胁情报,安全运营
SYLK 文件格式的武器化滥用
原创
Flying Flying
Ghost Wolf Lab
2026年5月18日 02:09 北京
在小说阅读器读本章
去阅读
摘要
在攻击者与防御者的持续军备竞赛中,最新锐的攻击手法总是被紧盯,而最古老的合法功能却常常成为完美的隐匿空间。SYLK 文件格式正是这一规律的最新注脚。
SYLK 诞生于 1980 年代,设计目标是仅使用可显示的 ANSI 字符,让不同应用程序之间能可靠地交换表格数据。它的文件扩展名 .slk 至今仍被 Microsoft Office 默认映射到 Excel,涵盖 2010、2013、2016 乃至更新版本。此前,安全研究员 Matt Nelson 已演示过将 DDE(动态数据交换)攻击与 SYLK 结合的方法,且该方法已被多起真实恶意软件样本所采用。
本文则进一步揭示一个更严重的滥用维度:SYLK 可以直接承载 Excel 4.0/XLM 宏,且这一能力在当前安全生态中几乎未被充分认知和检测。在 VBA 宏已受到层层监视的今天,XLM 宏在 .slk 容器中的复活,为攻击者提供了一条低风险、高成功率的新通道。
SYLK特权
在对攻击面进行任何深入拆解之前,必须首先理解 SYLK 在网络防御体系中的特殊地位——它不是靠漏洞获得特权,而是靠“默认信任”。
受保护视图沙箱的豁免
当文件从互联网或不受信任来源下载时,Windows 会为其附加“网络标记”(Mark of the Web, MotW)。对于常规 Office 文件,这会触发受保护视图沙箱,阻止宏执行并显示醒目的安全警告。然而,SYLK 文件格式并不适用此沙箱。用户双击打开恶意 .slk 文件时,不会看到受保护视图的屏障。
邮件与浏览器网关的通行证
在典型的攻击链中,.slk 文件在传输阶段几乎不被拦截:
- MS Outlook 阻止附件列表:不包含 .slk。
- OWA(Outlook Web Access)默认阻止扩展名列表:同样不包含 .slk。
- Chrome 安全浏览的文件类型黑名单:未将 .slk 标记为危险文件类型。
这意味着,一个武器化的 .slk 文件可以通过电子邮件附件或云存储链接,以极高的送达率出现在目标用户的收件箱中。
嵌入 XLM 宏
VBA 无法嵌入 SYLK,但 Excel 4.0/XLM 宏可以通过手工构造记录行的方式原生嵌入。 Excel 的“另存为”功能主动剥离了宏代码,但手工编写的 .slk 文件绕过了这个剥离过程,Excel 在解析时直接执行了嵌入的宏指令。
在记事本中输入以下内容,保存为 poc.slk,双击打开,启用内容后计算器弹出:
ID;P
O;E
NN;NAuto_open;ER101C1
C;X1;Y101;EEXEC("CALC.EXE")
C;X1;Y102;EHALT()
E
逐行解析:
| 行 | 记录 | 含义 |
| — | — | — |
| 1 | ID;P | 声明文件类型为 SYLK。ID标识文件格式,P表示这是生产型 SYLK 文件。 |
| 2 | O;E | O 记录设置全局选项。E子记录指明“此文档包含宏”,相当于 Excel 工作簿的“启用宏”标记。 |
| 3 | NN;NAuto_open;ER101C1 | NN 定义命名区域。将第 101 行第 1 列(R101C1)的单元格命名为Auto_ope——XLM 宏的自动执行事件触发器(等同于VBA的Auto_Open)。 |
| 4 | C;X1;Y101;EEXEC(“CALC.EXE”) | C 定义单元格内容。X1;Y101定位到第 1 列第 101 行;E 记录定义该单元格的表达式值为 XLM 宏函数EXEC("CALC.EXE")。 |
| 5 | C;X1;Y102;EHALT() | 同上,第 1 列第 102 行单元格执行HALT(),终止宏执行。 |
| 6 | E | 文件结束符。 |
关键约束:
- SYLK 文件每行不得超过 260 字符,否则 Excel 将拒绝解析该行。
- Auto_open 是语言相关的触发器名称。在荷兰语版本中须写为
Auto_openen,在德语中为Auto_öffnen。跨语言攻击需适配本地化名称。
当然,EXEC() 和 HALT() 仅是 XLM 宏的冰山一角。在课程中我们可以学习 利用 SYLK 注入 Shellcode:
- 动态下载与执行远程载荷(URLDownloadToFile + EXEC)
- 向其他进程注入 shellcode(通过调用 Windows API)
- 文件系统的完整操作(写入、删除、编码/解码)
- 反分析与反沙箱检测(通过 GET.WORKSPACE 检测鼠标移动、最近文件列表等)
SYLK 作为 XLM 宏的传输容器,直接继承了上述全部攻击能力。可以说,武器化的.slk文件等价于一个携带完整后门逻辑的轻量级恶意文档,且其攻击链中几乎每一步都享有防御豁免。
攻击面扩展
伪装为 CSV
SYLK 文件的一个极其危险的特性是:Excel 会依据文件内容而非扩展名来识别 SYLK 格式。 具体规则为:如果一个文件以 ID;P 开头,即使扩展名是 .csv(逗号分隔值),Excel 也会识别它为 SYLK 文件,并向用户弹出对话框:“此文件是 SYLK 格式,但扩展名是 CSV。是否以 SYLK 格式打开?”
如果用户点击“是”,文件将以 SYLK 格式解析,嵌入的 XLM 宏随之激活。攻击者因此可以:
- 制作一个以 ID;P 开头的恶意文件。
- 将其扩展名设为 .csv,伪装成“客户名单”、“交易记录”等看似无害的表格。
- 利用用户对 CSV 文件的低警惕性(一般认为 CSV 是纯文本,不可能携带宏),配合对话框的误导性文本,达成宏执行。
跨平台覆盖
Microsoft Office for Mac 同样原生支持 SYLK 格式与 XLM 宏。.slk 扩展名默认映射到 Mac 版 Excel,且Auto_open触发器在 Mac 环境下完全有效。
更严重的是,Microsoft Office for Mac 2011 存在一个已被公开但永不修复的漏洞:打开包含宏的 SYLK 文件时,不显示任何安全警告,宏直接静默执行。由于该版本已终止生命周期支持,此漏洞成为永久性零日。尽管 Office 2011 的用户量在逐年下降,但研究人员仍不时发现部分 Mac 用户运行着这一过时版本,构成一条持续开放的未修复攻击路径。
规避
理论上,SYLK 文件是完全基于 ANSI 文本的,结构简单,安全产品理应对其进行高效扫描。然而实际测试表明,大多数主流杀毒软件对恶意 .slk 文件的检测签名和启发式规则都严重滞后。原因可能包括:
- .slk 在野样本量相对较小,未引起足够关注。
- XLM 宏的语法与 VBA 完全不同,基于 VBA 特征的检测引擎无效。
- SYLK 文件可以高度混淆(通过冗余记录、注释、空白填充等),进一步降低了启发式引擎的有效性。
反恶意软件扫描接口(AMSI)是 Windows 内置的关键防御层,它为杀毒软件提供了对脚本、宏、PowerShell 等动态内容的可见性。但在 SYLK 的攻击场景中,AMSI 完全不起作用——原因是 AMSI 的宏扫描引擎仅与 VBA(Visual Basic for Applications)交互,无法理解 Excel 4.0/XLM 宏的语法与执行上下文。
当恶意宏通过 SYLK 文件的 XLM 指令执行时,AMSI 根本看不到任何可疑活动。这构成了一个完整的、从文件传输到代码执行的 AMSI 盲区攻击链。
结语
SYLK 文件格式的滥用并非零日漏洞,而是一种对“历史信任”的利用。它只需要一个古老的、未被充分审视的文件格式,加上一层被现有安全工具系统性忽略的宏执行引擎。
在我们的课程中还有100+文件格式可以利用。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:Ghost Wolf Lab Flying Flying《SYLK 文件格式的武器化滥用》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论