.NET 通过Junction Folder实现权限维持
攻击者在对目标系统进行权限维持时,除了常见的COM劫持技术,还可以利用Windows的Junction Folder结合CLSID 和注册表来实现持久化。这种方法通过创建连接文件夹和修改注册表,使得攻击者可以在系统启动时加载自定义的恶意DLL,从而保持对系统的控制。本文将详细介绍这种技术的原理、实现步骤以及相应的.NET代码示例。
0x01 什么是Junction Folder
Junction Folder,中文称为 "连接文件夹",是一种特殊类型的Windows文件系统对象,在NTFS文件系统中提供将一个文件夹映射到另一个位置。说白了,Junction Folder就是一种符号链接,但只能用于目录,不能用于文件。在Windows系统中,可以使用命令行工具mklink或第三方工具(如Sysinternals提供的junction工具)来创建Junction Folder。例如要将C:\LinkFolder指向D:\TargetFolder,可以使用以下命令。
mklink /J C:\LinkFolder D:\TargetFolder
0x02 .NET代码实现
利用 Junction Folder 结合 CLSID 和注册表实现权限维持,首先创建一个唯一的 CLSID,因为我们知道 CLSID 是在 Windows 注册表中用来标识特定对象