使用 LNK 文件在 Windows 上进行权限提升(第 3 部分)

admin 2024年11月5日16:02:46评论13 views字数 3425阅读11分25秒阅读模式

使用 LNK 文件在 Windows 上进行权限提升(第 3 部分)

概括

本文讨论了一种在 Windows 系统上使用 LNK 文件提升权限的方法,以管理员身份运行程序,而不会触发防病毒或端点检测和响应 (AV/EDR) 系统。

抽象的

本文是“红队 101”系列的一部分,在前几篇文章的基础上,演示了如何利用 LNK 文件在 Windows 环境中提升权限。它解释了 LNK 文件中“以管理员身份运行”功能缺乏文档的原因,以及攻击者如何利用此功能。作者提供了一个 PowerShell 脚本来识别和修改 LNK 文件中控制提升权限设置的特定字节,从而允许以管理员权限执行程序。红队成员青睐这种技术,因为它具有隐蔽性、自动化能力、精确度和绕过限制的能力。本文还介绍了防御者如何通过监视 LNK 文件更改、限制其创建和审核提升的权限来防范此类攻击。

观点

作者强调了了解 Windows LNK 文件的未记录方面对于安全测试和红队的重要性。

由于其提供的隐秘和自动化优势,人们明显更喜欢在二进制级别操作 LNK 文件,而不是使用文件属性对话框。

文章指出,微软缺乏有关 LNK 文件内部的公开文档,这无意中帮助了攻击者利用这些文件来提升权限。

作者提倡负责任地使用这些技术,并强调这些技术只能在获得许可的情况下使用,并且只能用于改善安全实践。

该文章鼓励采取主动的安全方法,防御者需要实施监控和限制以减轻与恶意 LNK 文件相关的风险。

作者致力于在网络安全社区内分享知识,这从要求读者参与内容和期待该系列的下一部分可以看出。

在Red Teaming 101系列的前两部分中,我们展示了如何创建恶意 LNK 文件(快捷方式)-https://readmedium.com/red-team-tips-initial-access-part-1-569f0f42fc32以及如何使用 ZIP 文件技巧绕过 Windows 上的 Web 标记 (MotW)-https://readmedium.com/red-teaming-101-bypass-mark-of-the-web-motw-on-windows-part-2-0527800bef1e。在本部分中,我将演示一种通过以管理员身份运行 LNK 文件而不引起 AV/EDR 警报来提升权限的棘手方法。但在深入研究之前,请鼓掌并关注我,以鼓励我继续分享我所学到的最好的知识!

免责声明:本文仅用于教育目的。所讨论的技术旨在提高对潜在漏洞的认识并改善安全实践。在测试或利用任何系统之前,请务必征得许可。

使用 LNK 文件进行权限提升

权限提升是红队行动中的关键步骤,攻击者或测试人员的目标是获得系统上的更高级别权限(例如管理员权限),以进一步渗透或控制目标环境。在 Windows 上,一种经常被忽视的权限提升方法是通过操纵 LNK 文件以提升权限运行它们。虽然 LNK 文件被广泛使用,但它们的内部工作原理,尤其是“以管理员身份运行”的存储方式,并没有很好的记录。

在 Windows 上以管理员身份运行:

Windows 中的“以管理员身份运行”功能虽然被广泛使用,但其在 LNK 文件中的底层实现却没有得到很好的记录。微软没有提供详细的公开文档,说明此选项如何存储在 LNK 文件的二进制结构中,例如控制提升设置的特定字节标志。这种缺乏透明度的情况为红队或恶意活动留下了漏洞利用的空间,攻击者可以操纵 LNK 文件来提升权限,而无需通过旨在监控 LNK 行为的安全工具进行清晰的观察。

如何找到以管理员身份运行的标志?

识别LNK 文件中的“以管理员身份运行”标志的一种有效方法是比较同一文件的两个版本 - 一个启用了“以管理员身份运行”选项,另一个未启用。通过比较两个文件的字节,可以找出差异。在本例中,该标志存储在字节位置 21(从零开始的数组中的索引 20)。以下是比较两个 LNK 文件的 PowerShell 代码片段:

$lnk1 = [System.IO.File]::ReadAllBytes("C:pathtolnk1.lnk")
$lnk2 = [System.IO.File]::ReadAllBytes("C:pathtolnk2.lnk")

for ($i = 0; $i -lt [Math]::Min($lnk1.Length, $lnk2.Length); $i++) {
    if ($lnk1[$i] -ne $lnk2[$i]) {
        Write-Host "Byte position $i: $($lnk1[$i]) vs $($lnk2[$i])"
    }
}
该脚本突出显示字节差异,帮助识别负责“以管理员身份运行”设置的字节。

使用 LNK 文件在 Windows 上进行权限提升(第 3 部分)

字节位置 21 负责以管理员身份运行

如何激活以管理员身份运行标志?

要在 LNK 文件中激活“以管理员身份运行”选项,您可以修改字节 22(从零开始的数组中的索引 21)以设置正确的标志。负责此设置的字节使用0x20位(十进制为 32),设置后可启用“以管理员身份运行”功能。要修改此字节,您可以使用以下 PowerShell 代码片段:

$lnkPath = "C:pathtoshortcut.lnk"
$bytes = [System.IO.File]::ReadAllBytes($lnkPath)

# Set the "Run as Admin" flag by setting the 0x20 bit at byte position 21 (index 20)
$bytes[21] = $bytes[21] -bor 0x20

# Write the modified bytes back to the file
[System.IO.File]::WriteAllBytes($lnkPath, $bytes)

为什么我们不使用属性选项来激活“以管理员身份运行”?

虽然你可以通过文件的属性手动启用“以管理员身份运行”选项,但红队成员更喜欢修改 LNK 文件的二进制结构,原因如下:

1. 隐秘手动更改文件属性可能会留下可见的痕迹,从而引起系统管理员或安全团队的警惕。使用脚本以编程方式编辑 LNK 文件有助于通过在字节级别操作文件来逃避检测,从而绕过专注于用户界面或文件属性更改的监控工具。

2. 自动化 红队行动通常涉及在多个系统或环境中部署有效载荷。通过 PowerShell 脚本修改 LNK 文件允许跨多个目标自动提升权限,而无需人工干预。这在传递**多个恶意 LNK 文件**时尤其有用,使攻击者能够一次性以提升的权限大规模分发这些快捷方式,从而简化攻击并避免手动配置每个文件的需要。

3. 绕过限制 在许多环境中,由于组策略或安全设置,用户可能被限制修改快捷方式或文件的属性。直接修改文件的二进制内容可以绕过这些限制,即使在标准用户界面被锁定的情况下也可以实现权限提升。

4. 精确度 这种方法可以精确控制文件的结构和内容。由于 LNK 文件不仅包含 **以管理员身份运行** 标志,因此红队成员可以操纵其他元素或属性(例如文件路径、工作目录或执行上下文),而这些元素或属性无法通过标准属性 UI 轻松访问。

实际应用:

在实际情况下,您可能会制作一个恶意的 LNK 文件,该文件会以管理员权限启动有效负载(例如反向 shell)。通过自动创建这些经过修改的 LNK 文件并在网络上分发,您可以在多台计算机上提升权限,避免被安全工具检测到并绕过本地限制。

例如,您可以使用 PowerShell 脚本扫描目录,修改所有 LNK 文件以启用“以管理员身份运行”,然后将其部署到多个用户桌面 - 无需任何手动配置即可实现权限提升。

防御者如何防范这种攻击

虽然这种技术非常强大,但防御者可以通过以下方式缓解它:

监控 LNK 文件变化:跟踪对快捷方式文件的修改,特别是那些具有提升权限的修改。- 限制 LNK 文件创建:强制执行策略以限制在关键目录中创建 LNK 文件。- 审核提升的权限:定期审核快捷方式和二进制文件以检查提升标志。总之,脚本 LNK 修改不仅可以增强隐身性和绕过限制,而且还提供自动化功能,使其成为在红队交战期间在多个系统之间有效地传递多个恶意 LNK 文件的理想选择。

结论

通过以编程方式修改 LNK 文件,红队成员可以高效、隐秘地提升权限,绕过常见限制并自动在多个系统之间传递恶意文件。编写这些修改脚本不仅有助于逃避检测,还可以提高攻击媒介的精确度和控制力。

请继续关注第 4 部分,我将向您展示如何使用社会工程学欺骗目标来执行恶意 LNK 文件。如果您发现本指南有用,请鼓掌、关注,并在评论中随意分享您的想法或问题。请继续关注Red Teaming 101 系列的更多内容!

原文始发于微信公众号(Ots安全):使用 LNK 文件在 Windows 上进行权限提升(第 3 部分)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月5日16:02:46
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   使用 LNK 文件在 Windows 上进行权限提升(第 3 部分)https://cn-sec.com/archives/3358426.html

发表评论

匿名网友 填写信息