Этот вопрос является продолжением и продолжением этого вопроса о проблеме с привилегиями, с которой я сейчас сталкиваюсь.
Краткое описание проблемы:
Я запускаю программу под учетной записью администратора домена, у которой нет привилегии Debug programs (SeDebugPrivilege)
, но она мне нужна на локальном компьютере.
Клугей Раствор:
Программа может установить себя в качестве службы на локальном компьютере и запустить службу. Указанная служба теперь работает под учетной записью SYSTEM
, что позволяет нам использовать нашу привилегию SeTCBPrivilege
для создания нового токена доступа, который имеет SeDebugPrivilege
. Затем мы можем использовать вновь созданный токен для повторного запуска исходной программы с повышенными правами.
Мне лично не нравится это решение. Я чувствую, что у Администратора должна быть возможность получить необходимые привилегии без необходимости вносить изменения в систему, такие как установка службы (даже если это только временно).
Я надеюсь, что существует решение, которое сводит к минимуму модификации системы и предпочтительно может быть сделано на лету (то есть: не требует перезапуска). Я безуспешно пытался LogonUser
как SYSTEM
и пытался OpenProcessToken
на известном системном процессе (например, csrss.exe) (который завершается неудачно, потому что вы не можете OpenProcess
с PROCESS_QUERY_INFORMATION
, чтобы получить дескриптор процесс без привилегий я пытаюсь приобрести).
Я просто нахожусь в своем уме, пытаясь найти альтернативное решение этой проблемы. Я надеялся, что есть простой способ получить привилегированный токен на хост-машине и выдать его за эту программу, но я не нашел способа.
Если кто-нибудь знает способ обойти это или даже есть предложения о том, что может работать, пожалуйста, дайте мне знать. Я очень ценю помощь, спасибо!