Можно ли скопировать привилегию с другого процесса?
От: morgot  
Дата: 16.04.22 23:26
Оценка:
Есть системный процесс, с привилегией SE_TCB_PRIV (для примера). Могу ли я открыть его и скопировать эту привилегию в токен своего процесса? Примерно реализация такая — OpenProcess, OpenProcessToken, GetTokenInformation (TokenPrivileges ) , DuplicateTokenEx, SetTokenInf..
Вроде все логично, все апи возвращают ОК, но когда доходит до вызова функции, требующей SE_TCB_PRIV , пишет что ее все же нет.
Re: Можно ли скопировать привилегию с другого процесса?
От: okman Беларусь https://searchinform.ru/
Дата: 17.04.22 12:55
Оценка: 11 (2)
Здравствуйте, morgot, Вы писали:

M>Есть системный процесс, с привилегией SE_TCB_PRIV (для примера). Могу ли я открыть его и скопировать эту привилегию в токен своего процесса? Примерно реализация такая — OpenProcess, OpenProcessToken, GetTokenInformation (TokenPrivileges ) , DuplicateTokenEx, SetTokenInf..

M>Вроде все логично, все апи возвращают ОК, но когда доходит до вызова функции, требующей SE_TCB_PRIV , пишет что ее все же нет.

Нельзя добавлять в токен привилегии, которых в нем изначально не было.
Если есть права на открытие процесса и на получение его токена, то можно сделать DuplicateTokenEx и далее ImpersonateLoggedOnUser под этим токеном.
И уже под имперсонацией пытаться делать задуманное, ну т.е. работая от имени процесса, токен которого мы получили. Такой способ сработает, но
потребуется привилегия "SE_IMPERSONATE_NAME", которая только у администраторов и служб, если не изменяет память.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.