Сейчас на форуме: zombi-vadim, zds (+4 невидимых)

 eXeL@B —› Программирование —› Вопросик о процессах.
Посл.ответ Сообщение


Ранг: 110.8 (ветеран), 104thx
Активность: 0.090.01
Статус: Участник

Создано: 20 июля 2013 10:29
· Личное сообщение · #1

Возможно ли имея hToken (NT AUTHORITY\SYSTEM, NT AUTHORITY\LOCAL SERVICE) создать процесс от имени данного юзера? Системные привилегии имеются. Я полистал интернет и справочник по Native API, но по данному вопосу поиски не увенчались успехом. CreateProcessAsUser не хочет давать в диспетчере задач процессу имя пользователя SYSTEM. Но я практически уверен, что ответ где-то под носом. Знает кто на эту тему что-либо ?




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 20 июля 2013 11:12
· Личное сообщение · #2

Во-первых, зависит от токена. Не от каждого токена можно создавать процессы.
Во-вторых, есть ещё CreateProcessWithTokenW, они работают немного по-разному. CreateProcessAsUser хочет сервис, насколько помню.
В-третьих, что значит, что не хочет давать в диспетчере задач процессу имя пользователя. Брать надо Process Explorer/Process Hacker и смотреть токен, и от этого уже разбираться.




Ранг: 110.8 (ветеран), 104thx
Активность: 0.090.01
Статус: Участник

Создано: 20 июля 2013 11:27
· Личное сообщение · #3

1. Токен фулл ACCESS
2. Minimum supported client Windows Vista [Windows Store apps only] (MSDN)
3. То и значит, что в колонке user и именно TASK MANAGER'а должено быть SYSTEM.




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 20 июля 2013 12:06
· Личное сообщение · #4

1. Вообще я имел в виду не доступ к токену, а TokenPrimary или TokenImpersonation. Но коль процесс создаётся, вряд ли дело в этом.
2. А какая нужна?
3. Перефразирую вопрос. Что пишет Process Explorer/Process Hacker про токен нового процесса? Или ты предлагаешь погадать, что было сделано не так?
4. Если я правильно помню, для CreateProcessAsUser и так нужен сервис, ибо он хочет какую-то махровую привилегию, типа TCB. А коль уже в сервисе, не проще ли заспавнить обычный процесс с наследованием токена? Да, я в курсе, что ситуация может быть и другая, но уточнить не помешает.




Ранг: 110.8 (ветеран), 104thx
Активность: 0.090.01
Статус: Участник

Создано: 20 июля 2013 12:32
· Личное сообщение · #5

На самом деле действительно видимо здесь играет роль тип токена. вопрос можно ли его как-то менять ?




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 20 июля 2013 12:39
· Личное сообщение · #6

С неподходящим токеном процесс вообще не запустится. Насколько я понял, он как-то запускается. Либо ты игнорируешь коды ошибок. В любом случае мало информации и пора вызывать гадалок.
Токен можно попробовать сдублировать http://msdn.microsoft.com/en-us/library/windows/desktop/aa446617(v=vs.85).aspx




Ранг: 110.8 (ветеран), 104thx
Активность: 0.090.01
Статус: Участник

Создано: 20 июля 2013 13:09
· Личное сообщение · #7

После дупликации SetThreadToken Устанавливает новый без проблем, только процесс один хрен админовский.




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 20 июля 2013 13:15
· Личное сообщение · #8

The SetThreadToken function assigns an impersonation token. А тебе нужен primary для создания процессов. Так что проверка такая вряд ли сгодится. А вообще дальше только гадания могу предложить. Брать надо и разбираться. Ключевые точки-прямо перед созданием через Process Hacker поглядеть на токен, сразу после создания поглядеть код ошибки и создалось ли успешно, там же поглядеть на новый процесс и его токен.




Ранг: 110.8 (ветеран), 104thx
Активность: 0.090.01
Статус: Участник

Создано: 20 июля 2013 13:24
· Личное сообщение · #9

Archer пишет:
The SetThreadToken function assigns an impersonation token. А тебе нужен primary для создания процессов.

есть и тот и тот.. Да и права вроде не подводят.

Это наверное теперь уже тайна системного загрузчика и как он производит имперсонацию при запуске...




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 20 июля 2013 13:31
· Личное сообщение · #10

Да нормально он всё производит, если код нормально написан. Благо, сорцов в гугле достаточно. Брать да отлаживать надо, если нет желания нормально обрисовать проблему с информацией по шагам.


 eXeL@B —› Программирование —› Вопросик о процессах.
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати