SeImpersonate from High To System

从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS Red Team Expert)

其他支持HackTricks的方式:

代码

以下代码来自这里。它允许将一个进程ID作为参数,并且将以指定进程的用户身份运行的CMD将被运行。 在高完整性进程中运行,您可以指定一个以System身份运行的进程的PID(如winlogon、wininit),并以system身份执行cmd.exe。

impersonateuser.exe 1234
impersonateuser.cpp
#include <Windows.h>
#include <iostream>

int main()
{
    HANDLE hToken;
    if (OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &hToken))
    {
        if (ImpersonateLoggedOnUser(hToken))
        {
            // Your code to be executed as the impersonated user
            RevertToSelf();
        }
        CloseHandle(hToken);
    }

    return 0;
}

错误

在某些情况下,您可能尝试模拟系统,但会出现以下输出:

这意味着即使您在高完整性级别上运行,权限仍不足。 让我们使用Process Explorer(或者您也可以使用Process Hacker)检查svchost.exe进程的当前管理员权限:

  1. 选择一个svchost.exe进程

  2. 右键单击 --> 属性

  3. 在“安全”选项卡中,点击右下角的“权限”按钮

  4. 点击“高级”

  5. 选择“管理员”并点击“编辑”

  6. 点击“显示高级权限”

上图显示了“管理员”对所选进程的所有权限(如您所见,对于svchost.exe,他们只有“查询”权限)

查看“管理员”对winlogon.exe的权限:

在该进程中,“管理员”可以“读取内存”和“读取权限”,这可能允许管理员模拟此进程使用的令牌。

最后更新于