eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 10 декабря!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме:
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

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


Ранг: 110.0 (ветеран)
Статус: Участник

Создано: 17 февраля 2014 15:09 · Поправил: Rainbow New!
Цитата · Личное сообщение · #1

Дано:
1. Процесс от имени локального юзера, с определенными неявными привилегиями
2. Токен пользователя с большими привилегиями, чем в п.1
3. Диспетчер задач.

Необходимо:
Изменить отображаемую в диспетчере учетку (с установкой новых привилегий) "на лету", т.е не прибегая к встроенному в win наследованию прав родительского процесса , завершению исполняющегося процесса, и созданию еще одного процесса "AS USER". Может ли процесс сам себя имперсонировать таким образом со всеми вытекающими ?


Ранг: 462.8 (мудрец)
Статус: Участник
Only One!

Создано: 17 февраля 2014 15:17 New!
Цитата · Личное сообщение · #2

Rainbow
Чтобы имперсонировать надо логиниться LogonUser или надо знать пароль или надо чтобы в реестре в ветке (если пароль пустой) HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa в параметре LimitBlankPasswordUse должен быть 0


Ранг: 110.0 (ветеран)
Статус: Участник

Создано: 17 февраля 2014 15:20 New!
Цитата · Личное сообщение · #3

OnLyOnE пишет:
Чтобы имперсонировать надо логиниться LogonUser или надо знать пароль или надо чтобы в реестре в ветке (если пароль пустой) HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa в параметре LimitBlankPasswordUse должен быть 0


Ну насколько я понял, LogonUser служит для получения токена необходимого юзера. Однако этот токен имеется по условию задачи.


Ранг: 462.8 (мудрец)
Статус: Участник
Only One!

Создано: 17 февраля 2014 15:22 New!
Цитата · Личное сообщение · #4

Rainbow пишет:
Ну насколько я понял, LogonUser служит для получения токена необходимого юзера. Однако этот токен имеется по условию задачи.


Ок. Значит вам ничего не помешает использовать ImpersonateLoggedOnUser ;)

| Сообщение посчитали полезным: Rainbow



Ранг: 110.0 (ветеран)
Статус: Участник

Создано: 17 февраля 2014 15:33 New!
Цитата · Личное сообщение · #5

Здравая мысль. Спасибо, вечерком сегодня, как появится доступ к нужным сорцам, обязательно опробую. Но тему закрывать, думаю пока что рано.


Ранг: 1967.0 (!!!!)
Статус: Модератор
retired

Создано: 17 февраля 2014 15:38 New!
Цитата · Личное сообщение · #6

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


Ранг: 110.0 (ветеран)
Статус: Участник

Создано: 17 февраля 2014 15:41 New!
Цитата · Личное сообщение · #7

Archer пишет:
Поток можно заимперсонировать на токене со всеми вытекающими, но в диспетчере вряд ли что изменится


Тогда теряется смысл этой функции, т.к. я так понимаю, в момент запуска он опрашивает систему и получает список, а значит система диктует правила игры, а не диспетчер.


Ранг: 1967.0 (!!!!)
Статус: Модератор
retired

Создано: 17 февраля 2014 15:47 New!
Цитата · Личное сообщение · #8

Ты отличай поток и процесс. Поток имперсонировать можно. Но диспетчер показывает процессы.
И определись, что нужно. Просто имперсонироваться-не вопрос, имперсонируй поток. Изменить показания диспетчера-я думаю, не выйдет.


Ранг: 110.0 (ветеран)
Статус: Участник

Создано: 17 февраля 2014 15:52 New!
Цитата · Личное сообщение · #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.

Похоже эта функа реально к потокам относится.


Ранг: 462.8 (мудрец)
Статус: Участник
Only One!

Создано: 17 февраля 2014 16:03 New!
Цитата · Личное сообщение · #10

Rainbow пишет:
Похоже эта функа реально к потокам относится.


Все верно к потокам. думаю тебя одного потока хватить?)
Ты можешь имперсонировать и текущий поток, в приципе..


Ранг: 1967.0 (!!!!)
Статус: Модератор
retired

Создано: 17 февраля 2014 16:07 New!
Цитата · Личное сообщение · #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.
Вообще говоря, этого вполне достаточно. В конце концов процесс код не выполняет, это делают потоки.


Ранг: 110.0 (ветеран)
Статус: Участник

Создано: 17 февраля 2014 16:09 New!
Цитата · Личное сообщение · #12

Ну так-то, конечно сделать темное дело хватить .

Хм. То есть право устанавливать UserName процесса, как я понял монопольно, и принадлежит системному загрузчику ? Но он же КАК-ТО это делает один хрен?


Ранг: 1967.0 (!!!!)
Статус: Модератор
retired

Создано: 17 февраля 2014 16:28 New!
Цитата · Личное сообщение · #13

Ты определись, чего хочешь для начала. А потом, что для этого есть. Если нужно сменить имя в диспетчере, скорее всего придётся перезапускать процесс. Ну можно сделать махровый андок и лезть в ядерные структуры, но прав не хватит, видимо, исходя из задачи.
А загрузчик ставит банально при создании процесса, там либо наследование токена, либо создание процесса с токеном/от другого юзера.


Ранг: 110.0 (ветеран)
Статус: Участник

Создано: 17 февраля 2014 16:34 New!
Цитата · Личное сообщение · #14

Archer пишет:
Ты определись, чего хочешь для начала. А потом, что для этого есть.


1. Ну давайте не будем хамить. Это мы все умеем
2. Задача по-моему поставлена предельно корректно.

Archer пишет:
Ну можно сделать махровый андок и лезть в ядерные структуры, но прав не хватит, видимо, исходя из задачи.


Будем считать что хватит.

Archer пишет:
А загрузчик ставит банально при создании процесса, там либо наследование токена, либо создание процесса с токеном/от другого юзера.


Вот видимо в сути процесса наследования и кроется тайна назначения имени процесса.


Ранг: 110.0 (ветеран)
Статус: Участник

Создано: 17 февраля 2014 16:49 New!
Цитата · Личное сообщение · #15

SetNamedSecurityInfo видимо мой случай...

Похоже, что флаг OWNER_SECURITY_INFORMATION, и задает именованную правовую информацию. Кто-нибудь сталкивался ?


Ранг: 1967.0 (!!!!)
Статус: Модератор
retired

Создано: 17 февраля 2014 16:50 New!
Цитата · Личное сообщение · #16

Хамства тут и не было. По крайней мере не имелось в виду.
Если считается, что прав хватит, ну тогда проще всего отдизасмить, откуда диспетчер берёт инфу, и подменять её там. Полагаю, что будет в итоге нативная апи, которая уходит в ядро и берёт инфу откуда-нить из EPROCESS.
SetNamedSecurityInfo связана с DACL/SACL и к текущему вопросу отношения вообще не имеет.

Ранг: 372.2 (мудрец)
Статус: Участник
"Тибериумный реверсинг"

Создано: 17 февраля 2014 17:41 New!
Цитата · Личное сообщение · #17

Archer пишет:
откуда диспетчер берёт инфу

если имена юзеров под процессами: помнится эта фитча не работает, если остановлена служба терминалов.
Archer пишет:
нативная апи

NtQuerySystemInfromation?

Ранг: 5.0 (гость)
Статус: Участник

Создано: 1 декабря 2014 15:29 New!
Цитата · Личное сообщение · #18

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

| Сообщение посчитали полезным: Rainbow


Ранг: 227.8 (наставник)
Статус: Участник

Создано: 1 декабря 2014 15:42 New!
Цитата · Личное сообщение · #19

17 февраля 2014
1 декабря 2014

Ранг: 5.0 (гость)
Статус: Участник

Создано: 1 декабря 2014 17:57 New!
Цитата · Личное сообщение · #20

гуглил кое-что схожее и наткнулся на эту тему и раз она не закрыта, решил что целесообразно будет добавить свою информацию


Ранг: 1967.0 (!!!!)
Статус: Модератор
retired

Создано: 1 декабря 2014 18:11 New!
Цитата · Личное сообщение · #21

Тут 80% тем незакрытых. Не надо только во все добавлять. Особенно ту информацию, что уже и так в топике была.


Ранг: 110.0 (ветеран)
Статус: Участник

Создано: 1 декабря 2014 19:25 · Поправил: Rainbow New!
Цитата · Личное сообщение · #22

TryAga1n пишет:
17 февраля 2014
1 декабря 2014


Проблема может оставаться актуальной и спустя 2 года. В данном случае все именно так.

P.S. Спасибо всем, кто откликнулся здесь и в ПМ. Т.к. возникали небольшие непонятки, уточню: речь идет об XP, юзер - юзер/гость, токен - система.
 eXeL@B —› Программирование —› Возможна ли имперсонация ?

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS