红队活动 SYSTEM 权限提升

admin 2024年6月6日08:44:39评论26 views字数 1318阅读4分23秒阅读模式

在你的红队或渗透测试活动中,升级到 Windows 机器上的SYSTEM 始终是期望的目标。SYSTEM 用户是具有最高权限的特殊操作系统用户,许多后期利用技术都需要这种类型的访问权限。

当然,为了获得 SYSTEM 权限,你必须成为管理员组的一部分,或者使用一些特殊的令牌窃取/模仿技术(例如: 孤独的土豆),或者只是利用一些未修补的漏洞……

如果你有管理员权限,有很多技巧或工具可以帮助你提升权限。最常见的是 Sysinternals 的著名实用程序“psexec”,但也有其他依赖于命名管道或令牌模拟的工具。我想你们每个人都使用过 meterpreter 控制台中的“getsystem”命令😉

在本文中,我将向您展示如何使用“父进程”技术。当然,这并不是什么新鲜事,但我只是想将所有内容尽可能地放在一个 powershell 脚本中。(您知道这有多重要)。

首先介绍一点理论。通常,当一个进程启动一个子进程时,它就成为子进程的父进程。但是从 Windows Vista 开始,可以改变这种行为。如果我们创建一个新进程,同时设置父进程属性,子进程将继承指定父进程的令牌并模拟这个进程。因此,如果我们创建一个新进程,将父 PID 设置为 SYSTEM 拥有的进程,我们就成功了!

当然,我们需要拥有提升的权限才能从父进程句柄创建进程,通常是管理员拥有的seDebugPrivilege(注意:如果普通用户也拥有此权限,那么他就拥有了王国的钥匙!)。请记住,此权限仅在提升的命令提示符下可用。只需使用以下命令检查它:

PS> whoami /priv

理论就是这样,现在我们必须使用 Windows API 来完成我们的任务。

首先,我们需要在 STARTUPINFO 结构中创建一个属性,获取父 SYSTEM 进程句柄并指示 CreateProcess ()调用使用这些附加信息。

在 C++ 或 C# 中执行此操作相对容易,但在 powershell 中可能是一项棘手的任务,所以我决定将 C# 嵌入到我的 .ps1 脚本中。如您所知,可以从 powershell 执行 C# 代码,反之亦然。

该脚本可以在这里找到: https://github.com/decoder-it/psgetsystem

要执行它,请从提升的 Powershell 提示符启动:

PS> . .psgetsys.ps1PS> [MyProcess]::CreateProcessFromParent(<system_pid>,<command_to_execute>)

红队活动 SYSTEM 权限提升

我们还可以在脚本末尾添加“自动调用”:

Add-Type -TypeDefinition $mycode[MyProcess]::CreateProcessFromParent($args[0],$args[1])

并调用它:

.psgetsys.ps1 808 c:windowssystem32cmd.exe

最后但同样重要的是,如果 SeDebugPrivilege 存在但未启用怎么办?在 C# 中插入适当的指令并不难……不是吗?

就这样

Getting SYSTEMhttps://decoder.cloud/2018/02/02/getting-system/

原文始发于微信公众号(Ots安全):红队活动 SYSTEM 权限提升

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年6月6日08:44:39
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   红队活动 SYSTEM 权限提升https://cn-sec.com/archives/2818641.html

发表评论

匿名网友 填写信息