文件名里的摩斯密码:当“.”和“空格”成为命令执行开关

文件名里的摩斯密码:当“.”和“空格”成为命令执行开关
2025年12月29日 10:59 深盾安全

在 Windows 眼里,“.exe”与“.exe.”只差一个尾随点,却一个能跑、一个“看似”不能跑;在 Linux 眼里,“.pdf ”与“.pdf”多了个空格,文件管理器乖乖把后者当文档,而 bash 却可能把前者当脚本。这些藏在文件名里的“微符号”,被攻击者当成摩斯密码:不用改内容、不用改属性,只靠几个点、空格、Unicode 不可见字符,就能让恶意程序光明正大地躺在桌面,却一次次逃过肉眼与杀软的联合检阅。

为什么盯上“文件名”

内容检测、哈希封锁、权限基线都日渐严格,唯独“取名”依旧是用户自由高地。攻击者把后门叫做

Report\x0A.pdf

(\x0A 是换行符),Outlook 邮件图标只显示第一行,收件人看到的是一个乖巧的 PDF;双击后,系统却调用 Windows 换行截断规则,把真实扩展名

.exe

唤醒,一秒完成“文档变可执行”的幻术。

摩斯密码的三种节拍

  • 尾随点隐身:Windows 路径解析会吃掉文件名的末尾句点,

    invoice.exe........

    在资源管理器里显示成

    invoice.exe

    ,却因为没有扩展名匹配项,双击时触发“打开方式”对话框,用户随手点“运行”即落地。

  • 空格调包:Linux 下

    Evil.pdf

    (尾部空格)在 Nautilus 里被当成 PDF 预览,文件头也确实是 PDF,但攻击者把 shebang 藏在第二行,再用

    chmod +x

    赋予执行权。用户终端里

    mv Evil.pdf\ payload.sh

    一键改命,社交工程话术只需一句“请把文件重命名为 sh 后运行”。

  • RTLO 镜像:右到左覆盖符

    \u202E

    gpj.exe

    瞬间变成

    exe.jpg

    ,图标跟着走,扩展名看似图片,实际仍是可执行。邮件过滤器只看后缀字符串,就给它放行;收件人看到“图片”放心双击,UAC 弹窗时已为时过晚。

与“属性+扩展字段”打配合

时间戳先回拨、权限再设只读、扩展属性写上“版权所有”,最后把文件名用 RTLO 翻转——四连击下来,文件既“老”又“乖”还“正版”,连图标都是媒体缩略图。SOC 按“新增 exe”筛不到它,按“不可执行”又降权,双重盲区叠满。

对邮件网关的精准绕过

大多数 SEG(安全邮件网关)只解档第一层压缩包,对文件名只做黑白名单匹配。攻击者把

invoice.exe\x0A.pdf

放进 ZIP,再套一层加密 ZIP,网关只扫描外层,看到的仍是“*.pdf”。抵达终端后,Windows 解压保留换行符,资源管理器里“pdf”稳稳在前,用户放心双击,实际执行的是“exe”。

把“取名权”也关进笼子

  • 终端强制显示扩展名:通过 GPO 关闭“隐藏已知扩展名”,让尾随点、RTLO 立即现形。
  • 文件名正规化入库:邮件网关解压后,先调用

    PathCanonicalize

    统一去掉尾随点/空格,再与黑名单比对,任何“变形”都触发隔离。

  • 双击即沙箱:凡从下载目录、邮件临时目录启动的进程,一律先进轻量沙箱,判定无害才放行至真实用户会话,让“文件名幻术”失去即时威力。
  • 发布即硬化:用 Virbox Protector 对主程序加壳,启动时校验自身路径与调用链,若发现被重命名为异常名称(含 RTLO、不可见字符),立即自毁,从源头拒绝“借名还魂”。

Virbox Protector 的“防改名”机制:

  • 路径指纹:加密壳内写入原始文件名哈希,运行前比对当前路径,一旦发现 RTLO、空格、尾随点等变形就终止;
  • 父进程校验:仅允许被特定签名 launcher 调用,双击、cmd、powershell 等直接启动一律拒绝;
  • 在线令牌:即使复制到别的目录并改回“正确”名字,也因缺少云端动态令牌无法解密,让“文件名还原”失去意义。

结语

文件名本该是方便人类的标签,却成了攻击者免费使用的“魔术布”。当“ invoice.pdf ”与“invoice.exe”只差一个不可见字符,安全方案就必须把“名字”也纳入零信任:要么在网关统一正规化,要么在编译期就把程序锁进签名壳。只有把防线前移到“命名”这一毫米,才能让摩斯密码永远发不出下一拍。

财经自媒体联盟更多自媒体作者

新浪首页 语音播报 相关新闻 返回顶部