Сейчас на форуме: jinoweb (+4 невидимых) |
eXeL@B —› Программирование —› Как запустить процесс от SYSTEM в NT5 ? |
Посл.ответ | Сообщение |
|
Создано: 18 марта 2020 22:11 · Личное сообщение · #1 Тестил 1 прогу и задумался над такой вещью - почему-то не получается запустить процесс с правами Системы в XP/2000. Как бы оно уже никому не надо, но почему так? Мой код возвращает ACCESS_DENIED, популярные тулзы тоже вылетают с ошибкой. Почему-то на десятке даже можно скопировать токен winlogon'a (ес-но от админа), и запустить софт с правами системы, а на ХР нельзя? Как служба - понятно, можно, но если без службы? Копал кто-то эту тему или может знает, в чем причина? |
|
Создано: 18 марта 2020 23:20 · Поправил: BlackCode · Личное сообщение · #2 morgot пишет: Как служба - понятно, можно, но если без службы? Если только первоначально процесс запущен от администратора с привилегией отладки. Тогда можно открыть целевой процесс службы, дублировать токен и имперсонировать его себе. Таким образом вы получите большинство привилегий системного процесса. Но не все. Code:
Code:
Code:
| Сообщение посчитали полезным: morgot |
|
Создано: 18 марта 2020 23:44 · Личное сообщение · #3 |
|
Создано: 19 марта 2020 00:10 · Поправил: BlackCode · Личное сообщение · #4 morgot Только сейчас проверил под ХР. Разница только в флаге открытия процесса. В ХР надо OpenProcess с флагом PROCESS_ALL_ACCESS выполнить а не с PROCESS_QUERY_LIMITED_INFORMATION. И OpenProcessToken отрабатывает как надо P.S. И вообще, вот исходники тулз RunAsEx, ZAccessMan, ZTokenMan для ХР. Там все понятно 69bb_19.03.2020_EXELAB.rU.tgz - RunUser_src.zip |
|
Создано: 19 марта 2020 00:19 · Личное сообщение · #5 |
|
Создано: 19 марта 2020 00:23 · Поправил: BlackCode · Личное сообщение · #6 morgot пишет: но повышения нет Посмотри права процесса в ProcessHacker-е к примеру, если права скопировались, то они должны появиться в твоем процессе, после имперсонации. Ты процесс запускаешь от учетки пользователя с правами админа, надо перезапускать процесс с дублированным токеном. (CreateProcessAsUser) Только тогда процесс будет запущен от учетки, чей токен ты дублировал. Или перезапустить самого себя с дублированным токеном. |
|
Создано: 19 марта 2020 00:36 · Личное сообщение · #7 BlackCode в SetUserSystem написал invoke CreateProcessAsUser,hNewToken,chr$("C:\windows\system32\cmd.exe"),edx,edx,edx,edx,CREATE_NEW_CONSOLE,edx,edx,addr s_i,addr p_i cоздает обычную консоль.. Не могу я с этим разобраться, или усталость ,или не знание какой-то матчасти. Добавлено спустя 1 минуту p.s. за сорцы спасибо, не видел сразу. Щас буду разбираться. |
|
Создано: 19 марта 2020 00:40 · Поправил: BlackCode · Личное сообщение · #8 morgot пишет: Не могу я с этим разобраться Посмотри исходники которые я выше дал. Там все понятно, и последовательность вызова АПИ тоже. Смотри исходники RunAsEx. Там есть скомпилированный ехешник. Под ХР он запускается. morgot пишет: не знание какой-то матчасти Главное - это желание разобраться Добавлено спустя 48 минут Вот еще что. Самое главное, для создания полноценного процесса с дублированным токеном от процесса запущенного от сторонней учетной записи, в данном случае SYSTEM, необходимо чтобы процесс который дублирует токен и в последствии создает дочерний процесс с данным токеном имел привилегию SeTcbPrivilege. Эта привилегия присутствует только у процессов сервисов (служб) соответственно работающих от учетки SYSTEM. У юзермодных процессов этой привилегии нет априори. Это получение дубликата токена из процесса сервиса. Code:
И еще! Процесс созданный из под сервиса, не имеет доступа к рабочему столу, по этому для того чтобы окно запущенного приложения отображалось, необходимо открыть доступ к рабочему столу для данного приложения. Code:
Код 64-битный, под х86 легко партируется Это все привилегии которые необходимо разрешить для создания полноценного процесса с дублированным токеном, помимо SeTcbPrivilege. Code:
|
|
Создано: 19 марта 2020 18:32 · Личное сообщение · #9 |
|
Создано: 19 марта 2020 21:28 · Личное сообщение · #10 |
|
Создано: 20 марта 2020 06:55 · Личное сообщение · #11 |
|
Создано: 20 марта 2020 09:17 · Поправил: BlackCode · Личное сообщение · #12 |
|
Создано: 20 марта 2020 09:26 · Личное сообщение · #13 |
|
Создано: 20 марта 2020 09:29 · Личное сообщение · #14 |
|
Создано: 20 марта 2020 09:33 · Личное сообщение · #15 |
eXeL@B —› Программирование —› Как запустить процесс от SYSTEM в NT5 ? |