После успешного вызова как LogonUser и ImpersonateLoggedOnUser она не кажется, что мой процесс работает как новый пользователь ...ImpersonateLoggedOnUser не появляется на работе
системы («WHOAMI»);
печатает: Chris-PC \ Chris
, когда он должен быть: Chris-PC \ LimitedGuy
Есть функция, я не звонить или что-то?
Мой код:
if(argc == 6) // impersonate
{
printf("[~] Logging in as %ws\\\\%ws..\n", argv[3], argv[4]);
if(!LogonUser(argv[4], argv[3], argv[5], LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, &logonToken))
{
printf("[!] Failed to login as %ws. Error Code: %X\n", argv[4], GetLastError());
return 1;
}
if(!ImpersonateLoggedOnUser(logonToken))
{
printf("[!] ImpersonateLoggedOnUser failed with error code: %X\n", GetLastError());
return 1;
}
LoadUserProfile(logonToken, &plinfo);
system("whoami");
printf("[~] Login successful!\n");
}
Когда я использую CreateProcessAsUser для запуска cmd.exe, он все равно терпит неудачу, когда я набираю «whoami». Есть ли способ заставить запущенный процесс взять атрибуты безопасности, которые я хочу? –
Я просто пробовал быстрый тест с использованием CreateProcessWithLogonW, и он работал как ожидалось - whoami дал имя пользователя учетной записи, процесс был запущен не у исходного пользователя. Это может иметь какое-то отношение к блокам среды или что-то в этом направлении, хотя это кажется маловероятным. Возможно, вы можете опубликовать свой код CreateProcessAsUser. –