1. 从一张“图片”说起:钓鱼攻击的伪装艺术
不知道你有没有遇到过这种情况?朋友在聊天软件上发来一张“风景照”,文件名是“夏威夷海滩.jpg”,你兴致勃勃地双击打开,结果弹出来的不是碧海蓝天,而是一个命令行窗口一闪而过,或者更糟,电脑突然开始变得卡顿异常。你可能会纳闷:“我打开的明明是图片啊!” 这正是我们今天要聊的一种在红队渗透测试和实际攻击中,攻击者非常喜欢用的社工钓鱼技巧——利用RLO字符,把恶意的exe程序,伪装成一张人畜无害的jpg图片。
听起来有点魔术的味道,对吧?把一个可执行程序,变成一张图片的图标和文件名。这种攻击之所以有效,很大程度上利用了人们的视觉习惯和操作系统的显示特性。我们习惯了从左向右阅读文件名,比如“report.pdf”或者“photo.jpg”。但系统底层其实支持一种叫“从右至左覆盖”(Right-to-Left Override,简称RLO)的Unicode控制字符。这个字符原本是为了正确显示阿拉伯语、希伯来语等从右向左书写的文字而设计的。但就像任何强大的工具一样,一旦被别有用心的人利用,它就能制造出惊人的迷惑效果。
想象一下这个场景:作为红队成员,你需要对目标企业进行安全意识测试。直接发送一个“setup.exe”或者“clickme.exe”,稍有警惕的员工可能都不会点开。但如果你发送的是一个看似完全正常的图片文件,比如“公司年会合影.jpg”,中招的概率就会大大增加。这种攻击不依赖于复杂的漏洞利用,纯粹是“对人下手”,也就是我们常说的社会工程学攻击。它的核心在于欺骗,而不是强攻。接下来,我就带你一步步拆解这个“魔术”背后的原理,并亲手复现一遍。放心,整个过程就像搭积木一样,我会用最直白的话和详细的截图(文字描述)告诉你每一步该怎么做,以及为什么要这么做。
2. 核心原理揭秘:RLO字符如何“颠倒乾坤”
要理解这个伪装术,我们得先抛开“文件就是它看起来的样子”这个固有观念。在计算机世界里,一个文件是什么格式,通常由扩展名决定:.exe代表可执行程序,.jpg代表图片,.pdf代表文档。我们(和操作系统)都靠这个后缀名来识别文件类型。RLO攻击的魔法,就在于它能在文件名里“动手脚”,让扩展名的显示顺序变得“不正常”。
RLO字符(U+202E) 是一个不可见的控制字符。当它被插入到一个文件名中时,它会告诉系统:“嗨,从这里开始,后面的字符请按照从右向左的顺序显示。” 请注意,是“显示”顺序变了,文件实际的名字在系统底层并没有变。这就制造了视觉和现实的割裂。
让我们来看一个最简单的例子。假设我们有一个恶意程序,我们想把它伪装成一个PDF文档。我们给它起个具有迷惑性的名字,比如“invoice.pdf.exe”。显然,最后的.exe还是会暴露。但如果我们在这个文件名里插入RLO字符呢?比如,我们把文件名改成这样:invoice.pdf[RLO]exe。这里的[RLO]代表那个不可见的控制字符。在支持RLO显示的环境(比如Windows资源管理器)里,这个文件名会怎么呈现呢?
系统会这样处理:遇到RLO字符后,它会把后面的字符序列“exe”反向显示。因为是从右向左,所以“exe”会变成“exe”的反向,也就是“exe”本身(因为它正反读都一样)。但这还没完,RLO的效果会持续到字符串结束,所以“exe”前面的“.”和“pdf”也会被纳入反向显示的范围。整个后半部分“.pdf.exe”在视觉上就会被渲染成“exe.pdf.”。最终,用户看到的文件名很可能是

222

被折叠的 条评论
为什么被折叠?



