Re[11]: Процесс от имени другого пользователя
От: IT Россия linq2db.com
Дата: 06.08.01 23:13
Оценка:
Здравствуйте Alex Fedotov, вы писали:

AF>Здравствуйте IT, вы писали:


AF>>>Превосходно. Только это будет работать если имя пользователя и пароль известны заранее. Если они становятся известны только непосредственно перед запуском, то этот метод работать не будет. Вот мы опять вернулись к тому, что сначала надо разобраться с постановкой задачи.


IT>>Да, ты прав при такой постановке задачи это не вариант. Тогда пойдём другим путём :) Я ни разу не работал с CoSetProxyBlanket, но что-то мне подсказывает, что это оно. В MSDN есть статейка "Setting Authentication Using C++", может поможет. В этом случае Identity нужно установить в launching user.


AF>CoSetProxyBlanket, пожалуй будет слишком поздно (процесс уже запущен), а вот выставить нужные credentials в COAUTHINFO при вызове CoCreateInstanceEx должно быть в самый раз.


Ты опять прав, но я настаиваю: MSDN->"Changing the Authentication Credentials" :)
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Процесс от имени другого пользователя
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.12.01 22:23
Оценка:
Здравствуйте Alex Fedotov, Вы писали:

AF>В NT 4 единственный известный мне способ — это сделать свой сервис в LocalSystem,

AF>из которого вызывать LogonUser и CreateProcessAsUser.

А что мешает просто дать привелегию конкретному экаунту?

Более того, мне кажется что, экаунт автоматом получит данную привелегию если под ним запустить сервис. По крайней мере я даже незнаю где в NT4 задается эта привелегия, а у моего экаунта она установлена. Поднобнее здесь http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1007568516&n=5
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Процесс от имени другого пользователя
От: Alex Fedotov США  
Дата: 13.12.01 22:42
Оценка:
Здравствуйте VladD2, Вы писали:

VD>Здравствуйте Alex Fedotov, Вы писали:


AF>>В NT 4 единственный известный мне способ — это сделать свой сервис в LocalSystem,

AF>>из которого вызывать LogonUser и CreateProcessAsUser.

VD>А что мешает просто дать привелегию конкретному экаунту?


Только соображения безопасности. SE_TCB_NAME означает полный контроль над системой.

VD>Более того, мне кажется что, экаунт автоматом получит данную привелегию если под ним запустить сервис.


Не получит.

VD>По крайней мере я даже незнаю где в NT4 задается эта привелегия, а у моего экаунта она установлена. Поднобнее здесь http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1007568516&n=5


В NT4 привилегии управляются в User Manager (musrmgr.exe), меню Policies|User Rights..., если мне память не изменяет.
-- Alex Fedotov
Re[4]: Процесс от имени другого пользователя
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.12.01 23:01
Оценка:
Здравствуйте Alex Fedotov, Вы писали:

VD>>А что мешает просто дать привелегию конкретному экаунту?


AF>Только соображения безопасности. SE_TCB_NAME означает полный контроль над системой.


Ну, не столь уж и полный. Да и если такой экаунт будет использоваться только для запуска сервиса, то ничего страшного этом нет (под системом же запускают). Зато такой экаунт и в сетку может вылезти и другие действия делать. Главное пароли на стикерах по офису не расклеивать.

VD>>Более того, мне кажется что, экаунт автоматом получит данную привелегию если под ним запустить сервис.


AF>Не получит.


Да? Тогда объясни как у меня оказалась эта привелегия если я ее сам не ставил (а кроме меня некому)? Может COM+ ее забабахивает?

VD>>По крайней мере я даже не знаю где в NT4 задается эта привилегия, а у моего экаунта она установлена. Поднобнее здесь http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1007568516&n=5


AF>В NT4 привилегии управляются в User Manager (musrmgr.exe), меню Policies|User Rights..., если мне память не изменяет.


Да я вроде знаю, но вот когда полез ее там высматривать, то не нашел ее там. Так что привилегия есть, а выключить ее...
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Процесс от имени другого пользователя
От: Alex Fedotov США  
Дата: 13.12.01 23:15
Оценка:
Здравствуйте VladD2, Вы писали:

VD>>>А что мешает просто дать привелегию конкретному экаунту?


AF>>Только соображения безопасности. SE_TCB_NAME означает полный контроль над системой.


VD>Ну, не столь уж и полный.


Полный. Имея эту привилегию можно выполнять действия от лица любого пользователя, даже не зная его пароля. Можно загружать произвольный код в ядро, и многое чего еще.

VD>Да и если такой экаунт будет использоваться только для запуска сервиса, то ничего страшного этом нет (под системом же запускают). Зато такой экаунт и в сетку может вылезти и другие действия делать. Главное пароли на стикерах по офису не расклеивать.


Можно и так. Общепринятая практика состоит в том, чтобы держать весь код, который требует TCB-привилегию, в LocalSystem. На самом деле эта привилегия не так часто и нужна.

Кстати, начиная с XP, LogonUser больше не требует эту привилегию, поскольку сама по себе LogonUser никакой опасности не представляет.

VD>>>Более того, мне кажется что, экаунт автоматом получит данную привелегию если под ним запустить сервис.


AF>>Не получит.


VD>Да? Тогда объясни как у меня оказалась эта привелегия если я ее сам не ставил (а кроме меня некому)? Может COM+ ее забабахивает?


Я не знаю, кто ее забабахиват, но факт создания службы с некоторым аккаунтом никак не влияет на набор привилегий этого аккаунта.

AF>>В NT4 привилегии управляются в User Manager (musrmgr.exe), меню Policies|User Rights..., если мне память не изменяет.


VD>Да я вроде знаю, но вот когда полез ее там высматривать, то не нашел ее там. Так что привилегия есть, а выключить ее...


"Act as part of the operating system", как обычно. Не забудь включить галочку "Show advanced user rights".
-- Alex Fedotov
Re[6]: Процесс от имени другого пользователя
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.12.01 23:25
Оценка:
Здравствуйте Alex Fedotov, Вы писали:

AF>Полный. Имея эту привилегию можно выполнять действия от лица любого пользователя, даже не зная его пароля. Можно загружать произвольный код в ядро, и многое чего еще.


Может поделишься как? Это и мне и другим будет интересно!

VD>>Да и если такой экаунт будет использоваться только для запуска сервиса, то ничего страшного этом нет (под системом же запускают). Зато такой экаунт и в сетку может вылезти и другие действия делать. Главное пароли на стикерах по офису не расклеивать.


AF>Можно и так. Общепринятая практика состоит в том, чтобы держать весь код, который требует TCB-привилегию, в LocalSystem. На самом деле эта привилегия не так часто и нужна.


Ну, да почти половина низкоуровневых функций защиты. Кто их использует...

AF>Кстати, начиная с XP, LogonUser больше не требует эту привилегию, ...


Я в курсе (MSDN почитываем).

AF>поскольку сама по себе LogonUser никакой опасности не представляет.


Ну, если админ установил разумное ограничение на количество повторных неудачных логинов.

VD>>Да? Тогда объясни как у меня оказалась эта привелегия если я ее сам не ставил (а кроме меня некому)? Может COM+ ее забабахивает?


AF>Я не знаю, кто ее забабахиват, но факт создания службы с некоторым аккаунтом никак не влияет на набор привилегий этого аккаунта.


Проверял, или это только твое мнение? Так COM+ влет приделывает к экаунту привелегию "запускать как бачь жоп".

AF>>>В NT4 привилегии управляются в User Manager (musrmgr.exe), меню Policies|User Rights..., если мне память не изменяет.


VD>>Да я вроде знаю, но вот когда полез ее там высматривать, то не нашел ее там. Так что привилегия есть, а выключить ее...


AF>"Act as part of the operating system", как обычно. Не забудь включить галочку "Show advanced user rights".


Блтин я про "Show advanced user rights" сам много раз читал и (давным давно) сам видел, а тут открыл диаложик, и нифига его не увидел. Кто глючит? Я или ОСь?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Процесс от имени другого пользователя
От: Alex Fedotov США  
Дата: 13.12.01 23:35
Оценка:
Здравствуйте VladD2, Вы писали:

AF>>Полный. Имея эту привилегию можно выполнять действия от лица любого пользователя, даже не зная его пароля. Можно загружать произвольный код в ядро, и многое чего еще.


VD>Может поделишься как? Это и мне и другим будет интересно!


См. LsaLogonUser, параметр LocalGroups.

AF>>поскольку сама по себе LogonUser никакой опасности не представляет.


VD>Ну, если админ установил разумное ограничение на количество повторных неудачных логинов.


VD>>>Да? Тогда объясни как у меня оказалась эта привелегия если я ее сам не ставил (а кроме меня некому)? Может COM+ ее забабахивает?


AF>>Я не знаю, кто ее забабахиват, но факт создания службы с некоторым аккаунтом никак не влияет на набор привилегий этого аккаунта.


VD>Проверял, или это только твое мнение? Так COM+ влет приделывает к экаунту привелегию "запускать как бачь жоп".


Проверял. Когда добавляешь сервис через GUI, то GUI добавляет привилегию "Logon as a service". Но если создавать сервис с помощью CreateService, то никакие привилегии не модифицируются. Ты, наверное, в курсе, там у меня статья про сервисы в обсуждении болтается

AF>>>>В NT4 привилегии управляются в User Manager (musrmgr.exe), меню Policies|User Rights..., если мне память не изменяет.


VD>>>Да я вроде знаю, но вот когда полез ее там высматривать, то не нашел ее там. Так что привилегия есть, а выключить ее...


AF>>"Act as part of the operating system", как обычно. Не забудь включить галочку "Show advanced user rights".


VD>Блтин я про "Show advanced user rights" сам много раз читал и (давным давно) сам видел, а тут открыл диаложик, и нифига его не увидел. Кто глючит? Я или ОСь?


Ничем не могу тут помочь. У меня и диаложек, и галочка, и привилегия на месте.
-- Alex Fedotov
Re[8]: Процесс от имени другого пользователя
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.12.01 00:39
Оценка:
Здравствуйте Alex Fedotov, Вы писали:

VD>>Может поделишься как? Это и мне и другим будет интересно!


AF>См. LsaLogonUser, параметр LocalGroups.


Поглядим...

AF>Проверял. Когда добавляешь сервис через GUI, то GUI добавляет привилегию "Logon as a service". Но если создавать сервис с помощью CreateService, то никакие привилегии не модифицируются.


Интересно какой процент людей запускает сервисы и делает другие операции из кода и скрптов, а не через визуальный интерфейс?

AF>Ты, наверное, в курсе, там у меня статья про сервисы в обсуждении болтается


К великому прискорбию, был так загружен здачей очередного номера, что даже не распечатал... ни то что прочел... ну, да ладно... пйду исправляться. Хотя тебя не часто можно поправить.

AF>Ничем не могу тут помочь. У меня и диаложек, и галочка, и привилегия на месте.


— Будем искать...
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Процесс от имени другого пользователя
От: SergH Россия  
Дата: 17.12.01 01:15
Оценка:
Здравствуйте Alex Fedotov, Вы писали:

AF> Ты, наверное, в курсе, там у меня статья про сервисы в обсуждении болтается :)


Пожалуйста, подскажи, где конкретно. А то я не нашёл.
Делай что должно, и будь что будет
Re[9]: Процесс от имени другого пользователя
От: Alex Fedotov США  
Дата: 17.12.01 02:49
Оценка:
Здравствуйте SergH, Вы писали:

AF>> Ты, наверное, в курсе, там у меня статья про сервисы в обсуждении болтается


SH>Пожалуйста, подскажи, где конкретно. А то я не нашёл.


Это нормально. Статья (точнее, ее первая часть) пока внутри группы обсуждается, именно это обсуждение я имел в виду.

Когда она появится на сайте? Скоро, а может быть даже раньше. Я надеюсь, что в этом году.
-- Alex Fedotov
Re[10]: Процесс от имени другого пользователя
От: Аноним  
Дата: 15.05.03 08:17
Оценка:
Могу я подытожить говоренное?
Лично я использовал CreateProcessWithLogon, но посвольку сабж требовал LogonUser (типа для NT), то слегка изменил один мой старенький кодец.
Короче смысл в следующем.
1) Привилегии SE_TCB_NAME имеют системные процессы (winlogon, spoolsv и т.п.). Я использовал spoolsv;
2) Пишем обычную DLL, в DLLmain — создание потока. В потоке — LogonUser и CreateProcessAsUser. Можно другой код — он выполниться с правами системы
3) Подключаем нашу DLL к процессу [spoolsv у меня] — он выполняет Dllmain -> поток и LogonUser отрабатывает на УРА! Надеюсь внедрять DLL В процесс все умеют...

С уважением, man2002ua
Re[11]: Процесс от имени другого пользователя
От: Alexey Shirshov Россия http://wise-orm.com
Дата: 15.05.03 09:25
Оценка:
Здравствуйте, Аноним, Вы писали:

[]

А чем это
Автор: Alexey Shirshov
Дата: 12.05.03
не устраивает?
Re[12]: Процесс от имени другого пользователя
От: Аноним  
Дата: 15.05.03 11:05
Оценка:
Здравствуйте, Alexey Shirshov, Вы писали:

AS>Здравствуйте, Аноним, Вы писали:


AS>[]


AS>А чем это
Автор: Alexey Shirshov
Дата: 12.05.03
не устраивает?


ХЕЗ почему, но у меня не выполняется условие


if (OpenProcessToken(hProcess,
TOKEN_DUPLICATE|TOKEN_ASSIGN_PRIMARY|TOKEN_QUERY,&hTok)){
STARTUPINFO si = {sizeof(STARTUPINFO)};
GetStartupInfo(&si);
PROCESS_INFORMATION pi = {0};
CreateProcessAsUser(hTok,NULL,_T("notepad.exe"),NULL,NULL,FALSE,
0,NULL,NULL,&si,&pi);
CloseHandle(pi.hThread);


Все требуемые (и возможные) привилегии есть...

ОС W2K.
Re[13]: Процесс от имени другого пользователя
От: Alexey Shirshov Россия http://wise-orm.com
Дата: 15.05.03 11:33
Оценка:
Здравствуйте, Аноним, Вы писали:

[]

На сколько я понимаю, ощибка 5 — Access Deny. Если так, значит ты все-таки не все привелегии включил.
Re[14]: Процесс от имени другого пользователя
От: Аноним  
Дата: 15.05.03 11:41
Оценка:
Здравствуйте, Alexey Shirshov, Вы писали:

AS>Здравствуйте, Аноним, Вы писали:


AS>[]


AS>На сколько я понимаю, ощибка 5 — Access Deny. Если так, значит ты все-таки не все привелегии включил.


Хмм... у меня, как пользователя такие account rights:

SeLoadDriverPrivilege
SeShutdownPrivilege
SeDebugPrivilege
SeCreateTokenPrivilege
SeAssignPrimaryTokenPrivilege
SeIncreaseQuotaPrivilege
SeSecurityPrivilege
SeSystemProfilePrivilege
SeIncreaseBasePriorityPrivilege
SeCreatePermanentPrivilege
SeChangeNotifyPrivilege
SeRestorePrivilege
SeSystemtimePrivilege
SeRemoteShutdownPrivilege
SeTakeOwnershipPrivilege
SeSystemEnvironmentPrivilege
SeProfileSingleProcessPrivilege
SeCreatePagefilePrivilege
SeUndockPrivilege

а вот token privileges для тек. процесса:

SeLoadDriverPrivilege
SeShutdownPrivilege
SeDebugPrivilege
SeCreateTokenPrivilege
SeAssignPrimaryTokenPrivilege
SeIncreaseQuotaPrivilege
SeSecurityPrivilege
SeSystemProfilePrivilege
SeIncreaseBasePriorityPrivilege
SeCreatePermanentPrivilege
SeChangeNotifyPrivilege
SeBatchLogonRight

Чего не хватает? У тебя работает пример — на какой оси?
Re[15]: Процесс от имени другого пользователя
От: Alexey Shirshov Россия http://wise-orm.com
Дата: 15.05.03 11:50
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Alexey Shirshov, Вы писали:


[]

А они все включены? Я то включаю только SeDebugPrivilege.

А>Чего не хватает? У тебя работает пример — на какой оси?


Win2k Prof.
Re[16]: Процесс от имени другого пользователя
От: Аноним  
Дата: 15.05.03 12:02
Оценка:
Здравствуйте, Alexey Shirshov, Вы писали:

AS>Здравствуйте, Аноним, Вы писали:


А>Здравствуйте, Alexey Shirshov, Вы писали:


AS>[]


AS>А они все включены? Я то включаю только SeDebugPrivilege.


А>Чего не хватает? У тебя работает пример — на какой оси?


AS>Win2k Prof.


Не проверял какие включены, но включаю в run-time SeDebugPrivilege, SeIncreaseQuotaPrivilege, SeAssignPrimaryTokenPrivilege... у меня SP3, может из-за него заплатка появилась?
Re[17]: Процесс от имени другого пользователя
От: Alexey Shirshov Россия http://wise-orm.com
Дата: 16.05.03 10:53
Оценка:
Здравствуйте, Аноним, Вы писали:

[]

А>Не проверял какие включены, но включаю в run-time SeDebugPrivilege, SeIncreaseQuotaPrivilege, SeAssignPrimaryTokenPrivilege... у меня SP3, может из-за него заплатка появилась?


Зачем для этого заплатка? Это behavior by design.
У меня тоже SP3.
Re[18]: Процесс от имени другого пользователя
От: Аноним  
Дата: 16.05.03 11:22
Оценка:
Здравствуйте, Alexey Shirshov, Вы писали:

AS>Здравствуйте, Аноним, Вы писали:


AS>[]


А>>Не проверял какие включены, но включаю в run-time SeDebugPrivilege, SeIncreaseQuotaPrivilege, SeAssignPrimaryTokenPrivilege... у меня SP3, может из-за него заплатка появилась?


AS>Зачем для этого заплатка? Это behavior by design.

AS>У меня тоже SP3.

Ну да ладно — не работает так, работает как я сделал
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.