Имперсонация NETWORK SERVICE и LOCAL SERVICE
От: AviDen  
Дата: 21.12.09 17:20
Оценка:
Возникла необходимость олицетворения потоком произвольной учетной записи, в т.ч. и системной. Пользуюсь LogonUser. С учетками, созданными вручную, проблем нет, зато со встроенным учетными записями (в частности, NT AUTHORITY\NETWORK SERVICE и NT AUTHORITY\LOCAL SERVICE) ничего не получается.

ОС: WinXP SP2, в домене. Пользователь, под которым запускается приложение имеет права локального администратора. Пробовал разные комбинации Username / Domain (напр., Username = "NT AUTHORITY\NETWORK SERVICE", Domain = Null или Username = "NETWORK SERVICE", Domain = "NT AUTHORITY" или "."), разные типа логона (LOGON32_LOGON_NETWORK, LOGON32_LOGON_SERVICE).

При одних комбинациях сообщает "Ошибка операционной системы. Код: 5. Отказано в доступе", при других — "Ошибка операционной системы. Код: 1326. Вход в систему не произведен: имя пользователя или пароль не опознаны".

То ли я всё-таки что-то путаю с параметрами, то ли привилегий не хватает, то ли изначально что-то не так, может кто-то сможет подсказать?

P.S. Насчёт привилегий: учитывая примечание в статье MSDN про LogonUser, попробовал сначала проверить наличие у процесса привилегий SE_TCB_NAME и SE_CHANGE_NOTIFY_NAME (хотя для моей ОС, согласно той же статьи, они не нужны). Первой привилегии у token'а процесса нет вообще (и, соотв., включить её нет возможности), вторая есть и уже enabled.
logonuser network service local service impersonate
Re: Имперсонация NETWORK SERVICE и LOCAL SERVICE
От: ononim  
Дата: 22.12.09 03:20
Оценка:
врядли при помощи LogonUser можно создать токен этих юзеров
эти токены создаются операционкой при помощи NtCreateToken задолго до того как появляется lsass, который собственно заведует всякими там логинами и паролями
Как много веселых ребят, и все делают велосипед...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.