在 linux 中,每个用户都可以创建符号链接,但在 Windows 中,我需要一个管理命令行,否则 mklink 会失败。这是为什么?
为什么您必须是管理员才能在 Windows 中创建符号链接?
默认情况下,只有管理员可以创建符号链接,因为他们是唯一拥有授予SeCreateSymbolicLinkPrivilege
权限的人Computer Configuration\Windows Settings\Security Settings\Local Policies\User Rights Assignment\
。
来自 Microsoft TechNet:Windows Vista 的新安全策略设置:
符号链接 (symlinks) 可能会暴露并非旨在处理符号链接的应用程序中的安全漏洞。
从Windows 10 Insiders build 14972(Windows 10 创建者更新 ~ 1703)开始,情况不再完全(见下文)。
但是,从博客文章下方的评论中,对其他答案中提到的问题的担忧仍然存在,并且要利用这种新行为,您需要:
- 在您的机器上启用开发者模式
- 将
SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE
标志传递给CreateSymbolicLink
API
我在 Vista 推出时找到了原因。仅针对管理员的给定原因非常简单。这不是未指明的安全问题,而是成千上万的软件必须升级才能使用在添加之前根本不存在的 API 调用,以避免在遍历符号链接时出现安全漏洞。
Windows 极易受到符号链接竞争的影响;有一些方法可以避免这种情况,但几乎没有应用程序以这种方式使用 API。甚至微软也不接受涉及符号链接竞争的安全漏洞。三个月前,我刚想报告一个。
Linux 具有分隔的文件/用户结构。这意味着“程序A”不能执行“任务B”,除非它与“磁盘空间C”有关。因此,就风险渗透而言,符号链接在逻辑上不会真正影响任何事情,因为整个操作系统都基于 action->permission 的假设。
或者换句话说,如果你是一个只有低级权限的黑客,那么制作大量的符号链接对你没有帮助。因此,在 Linux 或 MacOS 上它对您没有帮助。
但是,在 Windows 上,除了登录的人之外,您没有运行程序的“程序 A”......因此登录的人可以在任何他们喜欢的地方执行“任务 B”。因此,它绝对可以帮助您渗透到符号链接级别,因为您可以使用病毒负载覆盖常见的真实文件,并隐藏您所做的事情。
因此,如果没有symlink
保护级别,病毒可能会感染您,作为其有效负载运行许多符号链接,例如将“ explorer.exe
”重定向到假的“ exactly-as-windows-made-it-except-with-a-payload explorer.exe
”。
为什么要这么做?老实说,它是王国的钥匙。你可以将那台计算机可靠地招募到一个机器人中,理论上可以激活它进入未来的方式等等。有上百万种方法为什么这比仅仅“感染”要好,因为大多数人在看到它们时就会将它们移除,而这可能是隐藏的。