User Token

Тема в разделе "WASM.WIN32", создана пользователем Sallax, 17 окт 2011.

  1. Sallax

    Sallax New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2011
    Сообщения:
    12
    Доброго времени суток.
    Есть необходимость на терминальных серверах запускать программу в чужой сессии и делать скрин рабочего стола определенного юзера. Все эти вопросы здесь неоднократно рассматривались с кучей примеров. Но у меня проблема немного в другом, чтобы запустить процесс в другой сессии или сделать скрин рабочего стола нужно иметь токен юзера над которым нам нужно проделывать все эти действия. Для того чтобы получить токен юзера необходимо иметь привилегию SE_TCB_NAME которая есть только у сервисов. Возможно ли как-то еще получить юзер токен не делая свой сервис?
     
  2. 100gold

    100gold New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2010
    Сообщения:
    165
    А в какой процесс ты собрался получать токен пользователя? Если ты хочешь в процесс с правами обычного пользователя получить токен другого пользователя, то так нельзя.
     
  3. Sallax

    Sallax New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2011
    Сообщения:
    12
    К примеру запустить калькулятор в сессии другого пользователя и с его правами, т.е. как будто он сам запустил этот калькулятор. Моя учетка входит в группу администраторов но как понимаю этого мало чтобы получить токен другого юзера, а сервис не очень хочется делать чтобы заполучить заветную SE_TCB_NAME привилегию.
     
  4. Sallax

    Sallax New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2011
    Сообщения:
    12
    А как ProcessExplorer получает юзер токен?
     
  5. Hellspawn

    Hellspawn New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2006
    Сообщения:
    310
    Адрес:
    Москва
    а если открыть процесс explorer.exe (например) другого пользователя и дёрнуть токен, или прав не хватит?
    у ProcessExplorer драйвер есть, может через него и получает.
     
  6. Sallax

    Sallax New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2011
    Сообщения:
    12
    В том-то и дело что у обычного приложения нет привилегии SE_TCB_NAME которая позволяет дергать токен. Попробовал запустить свою программу в нулевой сессии и уже из нулевой сессии запустить любое приложение в выбранной сессии все нормально проходит, но этот фокус прокатывает только потому что моя прога запущена от сервиса и имеет необходимые права. Ка бы теперь добиться этого в обычной терминальной сессии...
     
  7. Sallax

    Sallax New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2011
    Сообщения:
    12
    Немного покрутив привилегии и функцию OpenProcessToken удалось выдрать токен из чужого процесса (не системного), теперь вот в раздумьях к какому бы процессу цеплять динамически чтобы выдирать оттуда токен? winlogon не подходит т.к. к нему не могу добраться без привилегии SE_TCB_NAME.
     
  8. Hellspawn

    Hellspawn New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2006
    Сообщения:
    310
    Адрес:
    Москва
    HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell не покатит?
     
  9. Sallax

    Sallax New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2011
    Сообщения:
    12
    В принципе тоже думал об этом, решение конечно же с этими токенами немного кривовато, но пока нет времени долго размышлять т.к. заказчик долго ждать не будет поэтому сделаю пока так и разберусь как все таки кашерно сделать получение токена. Была мысль запускать свою программу из сервиса, но работа программы от имени систем уж больно опасная штука для рядовых пользователей.
    P.S. Предложения и соображения по сабжу все еще принимаются, возможно кто-то серьезно ковырялся с этим вопросом и есть какие-то мысли в какую сторону нужно копать.
     
  10. Sallax

    Sallax New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2011
    Сообщения:
    12
    Странное получается, в ProcessExplorer вижу что функция OpenProcessToken тянет правильный токен, а внутри программы токен не правильный, сравнивал с результатом который выдает WTSQueryUserToken. Как такое может быть?
     
  11. Sallax

    Sallax New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2011
    Сообщения:
    12
    Изменение владельца процесса может как-то помочь в получении токена?