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

 eXeL@B —› Программирование —› Мини-шелл
Посл.ответ Сообщение

Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

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

Появилась необходимость сделать запуск программ с полными привилегиями из под учетной записи обычного user (Windows) в обход runas, паролей и администраторов. Первое, что пришло в голову - написать службу Windows (запускалась сначала из под LocalService), которая, после получения сигнала, запускала сам шелл с GUI(расчет на то, что шелл унаследует привилегии процесса-родителя), ну и в текстбокс вбивалась команда и все исполнялось типа из под админа
Службу реализовал, однако фейл наступил с другой стороны - процесс шелла запускается, но GUI не видно. Мутил с параметрами CraeteProcess - тоже ничего не дало. LocalSystemAccount - из под user ничего не выполняется. Короче, стало ясно, что дело в аккурантах.
Собственно, есть ли вариант - решить проблему или нужно все менять конструктивно?




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

Создано: 15 июня 2013 10:32
· Личное сообщение · #2

Вообще поиск в гугле на тему "запуск процесса из сервиса" выдаст полно всего. Хотя бы http://blogs.msdn.com/b/winsdk/archive/2009/07/14/launching-an-interactive-process-from-windows-service-in-windows-vista-and-later.aspx Если кратко, скорее всего дело в том, что в виста+ изоляция сессий. И десктоп для 0 сессии не связан с твоим юзерским десктопом. И надо либо брать токен залогиненого админа (по понятным причинам не всегда сработает) и запускать от него, либо воровать чей-то токен (отвратительно), либо менять SessionId в токене.
З.Ы. Ну и как бэ LocalService-это не админ, это более привилегированная муть.
З.З.Ы. Я думаю, ты догадываешься, что всю систему безопасности ты сливаешь в сортир при этом.

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

Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 15 июня 2013 10:53 · Поправил: ELF_7719116
· Личное сообщение · #3

Archer
Всё! Я понял, что нужно токен выстаскивать.
Я думаю, ты догадываешься, что всю систему безопасности ты сливаешь в сортир при этом.
Спасибо кэп!

add: вопрос еще такого плана - STARTUPINFO.lpDesktop по идеи можно заполнить так, чтоб он выходил сразу на нужный декстоп?! Не вкурю, как открыть нужный десктоп юзера, который залогинился.




Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

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

ELF_7719116
Ну ты ведь потом выложишь это сюда? Мне самому писать влом потому что!

-----
One death is a tragedy, one million is a statistic.





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

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

Десктопы уникальны только в пределах станции, так что просто указание десктопа само по себе тебе не поможет запустить интерактивный процесс из сервиса. Но вообще на какой-то винде вопреки мсдн (2к8 х64, что ли) десктоп не наследуется нефига от сервиса, если он интеративный, а надо указать явно, так что лучше укажи WinSta0\Default



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 15 июня 2013 14:02
· Личное сообщение · #6

Вообщем, через подмену SessionId оно работает(по крайней мере - в 2k3). Запускаемся как local system(там же есть SE_TCB_PRIVELEGE). Из под обычного ограниченного юзера запускаем cmd -> whoami и наслаждаемся NT AUTHORITY\LocalSystem.
Жду Ваших предложений.
ZaZa пишет:
Ну ты ведь потом выложишь это сюда? Мне самому писать влом потому что!

Всем, кроме ZaZa, качать можно Хотя я знаю, что он все таки скачает ...

adf7_15.06.2013_EXELAB.rU.tgz - NVSHL.zip

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


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