在 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”只差一个不可见字符,安全方案就必须把“名字”也纳入零信任:要么在网关统一正规化,要么在编译期就把程序锁进签名壳。只有把防线前移到“命名”这一毫米,才能让摩斯密码永远发不出下一拍。
4001102288 欢迎批评指正
All Rights Reserved 新浪公司 版权所有
