环境说明
| IP | HOSTNAME | NOTE |
|---|
| 10.10.10.88 | win10_dqy | 测试主机 |
前言
- 在渗透过程中,我们要对任意一个进程进行指定了写相关的访问权限的OpenProcess操作,只需要当前进程具有SeDebug的权限即可。
复现过程
流程及使用函数
- 打开进程访问令牌 -> 取得特权的LUID值 -> 调整访问令牌特权值
- 相关涉及的函数:
OpenProcessToken();
LookupPrivilegeValue();
AdjustTokenPrivileges();
代码示例
#include <stdio.h>
#include <windows.h>
int main(void)
{
HANDLE token_handle;
//打开访问令牌
if (!OpenProcessToken(GetCurrentProcess(), //要修改权限的进程句柄
TOKEN_ALL_ACCESS, //要对令牌进行何种操作
&token_handle //访问令牌
))
{
printf("openProcessToken error");
}
LUID luid;
if (!LookupPrivilegeValue(NULL, //查看的系统,本地为NULL
SE_DEBUG_NAME, //要查看的特权名称
&luid //用来接收标识符
))
{
printf("lookupPrivilegevalue error");
}
TOKEN_PRIVILEGES tkp;
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Luid = luid;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
//调整访问令牌权限
if (!AdjustTokenPrivileges(token_handle, //令牌句柄
FALSE, //是否禁用权限
&tkp, //新的特权的权限信息
sizeof(tkp), //特权信息大小
NULL, //用来接收特权信息当前状态的buffer
NULL //缓冲区大小
))
{
printf("adjust error");
}
printf("sucessful");
return 0;
}
