【THM】Windows Privilege Escalation(Windows提权基础)-学习

本文相关的TryHackMe实验房间链接:https://tryhackme.com/room/windowsprivesc20

通过学习相关知识点:了解关于Windows权限提升技术的基础知识。

image

介绍

在渗透测试期间,你通常可以使用非特权用户访问某些 Windows 主机。 非特权用户将拥有有限的访问权限,可访问的范围仅包括他们名下的文件和文件夹,并且无法在主机上执行管理任务,从而使你无法完全控制目标主机。

本文介绍了攻击者在 Windows 环境中提升权限的基本技术,允许你基于主机上的任何初始非特权用户尝试升级为管理员帐户。

关于Windows 权限提升

简而言之,权限提升包括:使用“用户 A”对主机的给定访问权限,利用该权限通过滥用目标系统中的弱点来获得对“用户 B”的访问权限。 虽然我们通常希望“用户 B”拥有管理员权限,但在某些情况下,我们可能需要先升级到其他非特权帐户然后才能尝试真正获得管理员权限。

获得对不同帐户的访问权限 有时候就像在文本文件或电子表格中查找某些粗心用户未保护的凭据一样简单,但是情况并非总是如此。

根据不同的情况,我们可能需要利用以下一些弱点:

  • Windows 服务或计划任务的错误配置
  • 目标系统分配给我们帐户的一些过多权限
  • 易受攻击的软件
  • 目标系统缺少 Windows 安全补丁

在开始学习提权技术之前,让我们看一下 Windows 系统上的不同帐户类型。

Windows Users

Windows系统主要有两种用户。 根据他们的访问级别,我们可以将用户分类为以下组之一:

  • Administrators:这些用户拥有最多的权限。 他们可以更改任何系统配置参数并访问系统中的任何文件。
  • Standard Users:这些用户可以访问计算机,但只能执行有限的任务。这些用户不能对系统进行永久或必要的更改,仅限于访问他们自己名下的文件。

任何具有管理员权限的用户都将成为管理员组的一部分;另一方面,标准用户则是用户组的一部分。

除此之外,你通常还会接触到一些操作系统在提权上下文中使用的特殊内置帐户:

  • SYSTEM / LocalSystem:操作系统用来执行内部任务的帐户。 它拥有对主机上所有可用文件和资源的完全访问权限,其权限甚至高于管理员。
  • Local Service:用于以“最低”权限运行 Windows 服务的默认帐户。 它将使用网络上的匿名连接。
  • Network Service:用于以“最低”权限运行 Windows 服务的默认帐户。 它将使用计算机凭据通过网络进行身份验证。

这些帐户由Windows创建和管理,你将无法将它们用作其他常规帐户;不过,在某些情况下,你可能会因 利用特定服务而获得他们的使用权限。

答题

image

从常见存储位置获取密码

获取其他用户访问权限的最简单方法是从受感染的计算机上收集凭据。 此类凭据的存在有多种原因,可能是粗心的用户将凭据留在纯文本文件中,或者在目标机的浏览器或电子邮件客户端等软件中已经存储了凭据。

本小节将提供一些常见密码存储位置以方便在 Windows 系统上查找密码。

本小节需要启动TryHackMe房间中的目标机器,如果你想通过 RDP 连接到目标计算机,可以使用以下凭据:

User: thm-unpriv

Password: Password321

Windows的无人值守(Unattended )安装

在大量主机上安装 Windows 时,管理员可以使用 Windows 部署服务,它允许通过网络将单个操作系统映像部署到多个主机。 这些类型的安装称为无人值守安装,因为它们不需要和用户发生交互。 此类安装需要使用管理员帐户来执行初始设置,用户凭据可能存储在机器中的以下位置:

  • C:\Unattend.xml
  • C:\Windows\Panther\Unattend.xml
  • C:\Windows\Panther\Unattend\Unattend.xml
  • C:\Windows\system32\sysprep.inf
  • C:\Windows\system32\sysprep\sysprep.xml

作为这些文件的一部分,你可能会遇到如下的凭据内容:

<Credentials>
    <Username>Administrator</Username>
    <Domain>thm.local</Domain>
    <Password>MyPassword123</Password>
</Credentials>

Powershell 历史记录

每当用户使用 Powershell 运行命令时,命令记录都会被存储到一个文件中,该文件会保留过去使用的Powershell 命令的内存。 这对于快速重复使用 你以前使用过的命令很有用。 如果用户在 Powershell 命令行中直接运行包含密码的命令,则代表我们可以在 cmd.exe 提示符下使用以下命令来检索密码:

type %userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt

注意:上面的命令只能在 cmd.exe 中运行,因为 P