Сейчас на форуме: Rio, tyns777, zombi-vadim (+7 невидимых) |
eXeL@B —› Программирование —› Возможна ли имперсонация ? |
Посл.ответ | Сообщение |
|
Создано: 17 февраля 2014 15:09 · Поправил: Rainbow · Личное сообщение · #1 Дано: 1. Процесс от имени локального юзера, с определенными неявными привилегиями 2. Токен пользователя с большими привилегиями, чем в п.1 3. Диспетчер задач. Необходимо: Изменить отображаемую в диспетчере учетку (с установкой новых привилегий) "на лету", т.е не прибегая к встроенному в win наследованию прав родительского процесса , завершению исполняющегося процесса, и созданию еще одного процесса "AS USER". Может ли процесс сам себя имперсонировать таким образом со всеми вытекающими ? |
|
Создано: 17 февраля 2014 15:17 · Личное сообщение · #2 |
|
Создано: 17 февраля 2014 15:20 · Личное сообщение · #3 OnLyOnE пишет: Чтобы имперсонировать надо логиниться LogonUser или надо знать пароль или надо чтобы в реестре в ветке (если пароль пустой) HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa в параметре LimitBlankPasswordUse должен быть 0 Ну насколько я понял, LogonUser служит для получения токена необходимого юзера. Однако этот токен имеется по условию задачи. |
|
Создано: 17 февраля 2014 15:22 · Личное сообщение · #4 Rainbow пишет: Ну насколько я понял, LogonUser служит для получения токена необходимого юзера. Однако этот токен имеется по условию задачи. Ок. Значит вам ничего не помешает использовать ImpersonateLoggedOnUser ;) ----- aLL rIGHTS rEVERSED! | Сообщение посчитали полезным: Rainbow |
|
Создано: 17 февраля 2014 15:33 · Личное сообщение · #5 |
|
Создано: 17 февраля 2014 15:38 · Личное сообщение · #6 |
|
Создано: 17 февраля 2014 15:41 · Личное сообщение · #7 |
|
Создано: 17 февраля 2014 15:47 · Личное сообщение · #8 |
|
Создано: 17 февраля 2014 15:52 · Личное сообщение · #9 Archer пишет: Ты отличай поток и процесс То есть ты хочешь сказать, что все имперсонирующие функции предназначаются для потоков ? Че-то с трудом верится. Кстати да, цитата из MSDN: The ImpersonateLoggedOnUser function lets the calling thread impersonate the security context of a logged-on user. The user is represented by a token handle. Похоже эта функа реально к потокам относится. |
|
Создано: 17 февраля 2014 16:03 · Личное сообщение · #10 |
|
Создано: 17 февраля 2014 16:07 · Личное сообщение · #11 Если есть сомнения, что для потоков, можно глянуть в мсдн http://msdn.microsoft.com/en-us/library/windows/desktop/aa376391(v=vs.85).aspx Impersonation is the ability of a thread to execute using different security information than the process that owns the thread. Вообще говоря, этого вполне достаточно. В конце концов процесс код не выполняет, это делают потоки. |
|
Создано: 17 февраля 2014 16:09 · Личное сообщение · #12 |
|
Создано: 17 февраля 2014 16:28 · Личное сообщение · #13 Ты определись, чего хочешь для начала. А потом, что для этого есть. Если нужно сменить имя в диспетчере, скорее всего придётся перезапускать процесс. Ну можно сделать махровый андок и лезть в ядерные структуры, но прав не хватит, видимо, исходя из задачи. А загрузчик ставит банально при создании процесса, там либо наследование токена, либо создание процесса с токеном/от другого юзера. |
|
Создано: 17 февраля 2014 16:34 · Личное сообщение · #14 Archer пишет: Ты определись, чего хочешь для начала. А потом, что для этого есть. 1. Ну давайте не будем хамить. Это мы все умеем 2. Задача по-моему поставлена предельно корректно. Archer пишет: Ну можно сделать махровый андок и лезть в ядерные структуры, но прав не хватит, видимо, исходя из задачи. Будем считать что хватит. Archer пишет: А загрузчик ставит банально при создании процесса, там либо наследование токена, либо создание процесса с токеном/от другого юзера. Вот видимо в сути процесса наследования и кроется тайна назначения имени процесса. |
|
Создано: 17 февраля 2014 16:49 · Личное сообщение · #15 |
|
Создано: 17 февраля 2014 16:50 · Личное сообщение · #16 Хамства тут и не было. По крайней мере не имелось в виду. Если считается, что прав хватит, ну тогда проще всего отдизасмить, откуда диспетчер берёт инфу, и подменять её там. Полагаю, что будет в итоге нативная апи, которая уходит в ядро и берёт инфу откуда-нить из EPROCESS. SetNamedSecurityInfo связана с DACL/SACL и к текущему вопросу отношения вообще не имеет. |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 17 февраля 2014 17:41 · Личное сообщение · #17 |
|
Создано: 01 декабря 2014 15:29 · Личное сообщение · #18 У потоков в любом процессе изначально нет своего маркера доступа. Но присвоить этот маркер им можно. Как раз таки этот самый маркер и позволяет отдельным потокам имитировать маркер доступа другого процесса. Это работает как на локальной машине, так и на удаленной. | Сообщение посчитали полезным: Rainbow |
|
Создано: 01 декабря 2014 15:42 · Личное сообщение · #19 |
|
Создано: 01 декабря 2014 17:57 · Личное сообщение · #20 |
|
Создано: 01 декабря 2014 18:11 · Личное сообщение · #21 |
|
Создано: 01 декабря 2014 19:25 · Поправил: Rainbow · Личное сообщение · #22 |
eXeL@B —› Программирование —› Возможна ли имперсонация ? |