| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Как поменять права процасса |
| Автор: _sten_ 22.11.2007, 22:48 | ||||
| Как моей программе поставить права System?? Есть мисль сделать инжект DLL в процес с правами SYSTEM (например lsass.exe) и запустить с под него нужнум программу. Но не получается сделать инжект, пробывал так:
и лоадер:
с инретнетексполорером все ок, а вот с без оконными приложениями ничего не получается.... |
| Автор: dumb 23.11.2007, 02:12 |
| и не получится таким методом. пользуй CreateRemoteThread. |
| Автор: _sten_ 23.11.2007, 10:59 |
| А поподробнее можно? |
| Автор: Riply 23.11.2007, 11:07 |
А так разве получиться ? Что-то "меня терзают смутные сомнения", можно-ли таким способом можно поднять свои права (с) P.S. Сама на пробовала. |
| Автор: dumb 23.11.2007, 14:52 | ||
|
| Автор: Riply 23.11.2007, 15:27 |
Значит я не правильно поняла. Я подумала, что имеется ввиду: создаем нить в теле жертвы, облалающей более высокими правами, чем наши, а эта нить создает новый процесс уже с правами жертвы Уже собралась было писать тестовый пример, чтобы убедиться, что такой фокус не пройдет. Как я поимаю время можно не тратить ? |
| Автор: _sten_ 23.11.2007, 15:43 | ||
Да все именно так, только я не могу понять почему не получится? |
| Автор: dumb 23.11.2007, 17:02 |
| не трать. это было бы вопиющим privilege escalation. |
| Автор: Riply 23.11.2007, 17:42 |
Я тоже так считаю. Про "смутные сомнения" написала исходя из того, что (чем черт не шутит), а вдруг такой финт пройдет именно для перехода: Администратор --> Ситема ? Админские права они не совсем такие как другие. Некузяво выразилась, но надеюсь понятно, что я хотела сказать |
| Автор: _sten_ 23.11.2007, 21:25 |
| Дык сопственно что именно не получится? Внедрится в SYSTEM-процес или права не унаследуются? |
| Автор: bems 23.11.2007, 22:20 |
| пропишись в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify |
| Автор: Riply 23.11.2007, 23:25 |
| Не удержалась и набросала "на коленке" тестовый пример. Моему удивлению нет границ: попробовала сыграть такую шутку с ibserver.exe (от Borland). Проскочило... "Ничего не понимаю". (с) Работала из под админа. ibserver, и слова мне не сказав, запустил процесс из под системы. Надо привести код в божеский вид и попробовать то же самое в разных, связках, например, Power User --> Admin (уверена, что не пройдет и с разными процессами типа WinLgon. Н это так, "для очистки совести". Видимо, я была права, что "Админские права - особые права" |
| Автор: _sten_ 23.11.2007, 23:59 |
| Riply, а монжо на примерчик посмотреть? |
| Автор: Riply 24.11.2007, 01:21 |
Да я ж написала, что собирала его "на коленке". Ну и закономерный результат небрежности в написании кода: работать то он работает, только при попытке обратиться к Handle`у мною же созданной нити получаю Access is denied. А это означает, что где-то у меня напортачено, просто сразу не проявляется :( |
| Автор: Riply 24.11.2007, 13:04 | ||
| Вот что дала проверка: Этим способом можно из под Админа получить права SYSTEM. Как жертва использовался Winlogon Повысить права в других случаях - не получается (во всяком случае у меня Вот примерный код: (там используется пара простеньких функций. Я думаю, написать их самостоятельно, заинтересованным лицам не составит труда).
P.S. При работе не забываем дать себе Debud-привилегии, и внимательно относимся к параметрам при открытии целевого процесса P.S.S Можно было бы обойтись без ожидания и чтения (PROCESS_VM_READ и SYNCHRONIZE), но они дают нам возможность получить код ошибки и убрать за собой мусор |
| Автор: _sten_ 24.11.2007, 21:27 |
| Я наверное покажусь ужасно наглым, но все же можно исходник;) |
| Автор: Riply 24.11.2007, 22:17 |
А в чем проблеммы ? Если я не ошибаюсь, там не хватает двух ф-ий. Я умышленно их не привела. Своего рода страховка. Тому кто понимает, что делает их написать не сложно. А если не понимаешь, то надо идти в Help. (Эта методика и у Рихтера хорошо описана) Дело в том, что скорее всего тестирование будет на "жизненно важных" процессах. Иначе смысла в этом никакого нет. Ошибка, очень вероятно, приведет к падению системы. Или к чему по-хуже. Например, если ты попробуешь освободить память в целевом процессе раньше, чем отработает нить. Я не хочу оказаться виновной в подобных казусах. Sorry. P.S. Будут конкретные вопросы - постараюсь ответить. |
| Автор: _sten_ 26.11.2007, 11:00 |
| http://wasm.ru/article.php?article=apihook_3 нашол замечатильную сатейку про переход в 0-е кольцо безопасности, в нем полний доступ к памяти, и примеры как сделать такое безобразие как помениять PID и имя процеса. Так вот может можно подобним образом поменять права или поменять родителя, а значит и права... Возможно ли такое? И если можно то как? |
| Автор: dumb 27.11.2007, 03:05 | ||
так что можешь остыть. |