[点晴永久免费OA]安全软件宿命之敌:鬼一样的符号链接
当前位置:点晴教程→点晴OA办公管理信息系统
→『 经验分享&问题答疑 』
符号链接:Windows系统中的隐形攻击通道符号链接在 Windows 系统中的存在,几乎与系统自身的历史一样悠久。而基于符号链接的漏洞利用技术,也早已不是新鲜事物——早在 1999 年,安全研究员大佬 James Forshaw 就在其分享中首次系统性地揭示了这一攻击思路(参见:https://www.slideshare.net/slideshow/abusing-symlinks-on-windows/47554612#34)。 自此之后,该技术被众多研究人员深入挖掘、不断完善,直至今天,依然是提权漏洞中的“常青树”。几乎每年都有大量相关 CVE 被披露,可以说,它始终在权限提升的战场上反复横跳,从未退场。 虽然这项技术早已被安全界所知,也有不少前辈研究过,不过到今天都很少见到有安全课程或文章真正系统地讲解它们。 说实话,我对主流热门的安全课程竟然忽视了符号链接滥用这一东西感到一些惊讶。 正因如此,决定写下这篇文章。不过今天要聊的,可不是提权那点事儿。 我们要解锁一个更带感的实战场景——如何用符号链接玩转“白加黑”攻击,甚至直接致盲 EDR。 其实早在之前,我就发过相关内容: 难绷,一种重命名+符号链接禁用EDR(Crowdstrike)的方法 具体参考Avast Free Antivirus 的任意文件删除到权限提升:https://www.zerodayinitiative.com/blog/2024/7/29/breaking-barriers-and-assumptions-techniques-for-privilege-escalation-on-windows-part-1 为了便于理解,这里大概解释下: 我们来看看下面这段伪代码Demo:
假如这是典型杀毒软件磁盘扫描功能中的一个代码片段——它获取文件路径,使用恶意软件特征库检测该文件数据,若发现有问题则删除该文件。 恶意程序可以创建一个文件,填入特定杀毒引擎能检测到的字节(例如,写入 EICAR 字符串),通过某种方式触发杀毒扫描(比如尝试读取该文件以触发实时防护扫描),随后迅速将该文件替换为指向其他文件的符号链接。 这就形成了众所周知的条件竞争:is_infected_file()处理的是一个文件,但remove_file()可能会处理另一个文件!路径虽然相同,但在这两个函数中指向了不同文件:一个是检测到有问题的常规文件,另一个是指向他处的符号链接。 So,remove_file()将删除符号链接指向的目标(该目标可由攻击者指定)。如果这个目标是杀毒软件自身的EXE,那么就会发生以下这种搞笑事情 比如有一个以NT AUTHORITY\SYSTEM身份运行的杀毒服务。黑客在设备磁盘上放置恶意的EICAR测试文件,随后开始循环检查文件的最后访问时间戳”,试图检测其文件是否被访问。当杀毒软件访问该文件并识别出恶意内容后,尝试将其从磁盘删除。然而就在此时,黑客将其文件替换为符号链接——该链接通过结合NTFS挂载点与对象管理器符号链接,最终指向杀毒软件自身的核心文件。如此一来,杀毒软件便完成了自我删除的窒息操作 见上图,存在任意文件删除漏洞的安全产品可不少呢,虽然很多都已经修复勒无法复现。但别担心,兄弟,软柿子始终都是有的,经过测试还有很多存在这种漏洞,为了避免风险,这里以Windows Defender为例...... 实战案例:Windows Defender的符号链接攻击每当有新版本更新时,WinDefend服务都会创建一个以新下载的版本命名的新文件夹,并将其放置在“ C:\ProgramData\Microsoft\Windows Defender\Platform ”文件夹中。新文件夹包含新版WinDefender的所有可执行文件。 当 Windows Defender 从旧版本过渡到新版本时会发生什么 ?
Windows Defender 始终阻止将文件写入其运行文件夹,“ Platform ”文件夹也不例外。 但是,如果是创建一个新文件夹而不是写入文件,会怎么样呢? 毋庸置疑,完全可以在“ Platform ”文件夹中创建任意名称的文件夹。 So,结合之前Windows Defender 如何过渡到新版本的信息,如果在“Platform”中创建一个以最高版本号命名的文件夹,Defender 会将这个文件夹用作其执行文件夹 之后,在“Platform”文件夹中创建一个指向新路径 (C:\temp\av) 的目录符号链接(SYMLINK )。确保 SYMLINK 名称对应于“ Platform ”中现有文件夹的最高版本号。例如,如果当前版本为“4.18.25070.5-0”,那么创建一个名为“5.18.25070.5-0”的 SYMLINK,以保证此 SYMLINK 具有最高的版本号。
重启或更新Defender服务,此时它的可执行文件位于由具有读/写访问权限的攻击者完全控制的文件夹中。 如图所见,Defender 现在使用位于“C:\temp\av”的可执行文件。在此文件夹中,我们可以完全控制执行诸如写入/删除文件之类的操作。还可以使用 DLL 侧加载技术将代码注入Defender进程以利用他的权限干坏事。 甚至还可以删除“ Platform ”中的版本文件夹和完全控制的文件夹之间的符号链接,使Defender无法找到可执行路径从而禁用它 结论符号链接攻击展示了即使是最基础的系统功能也可能成为攻击链中的关键环节。安全产品自身也可能因设计缺陷而成为攻击目标,一个简单的符号链接就能将其完全失效。 而防病毒程序和 EDR 始终以提升的权限运行,并且通常受驱动程序保护。如果这些软件存在漏洞,那么危害将是巨大的。 这也提醒我们,安全是一个持续的过程,需要从开发、部署到监控的全生命周期关注。只有通过深入理解攻击技术、实施深度防御策略,才能有效应对日益复杂的威胁环境。 对于安全研究人员和从业者来说,掌握符号链接等基础攻击技术至关重要——往往最简单的漏洞却能造成最严重的后果。 阅读原文:原文链接 该文章在 2025/9/15 13:20:27 编辑过 |
关键字查询
相关文章
正在查询... |