Комплекс программных средств KernelExplorer GUI (с графическим интерфейсом пользователя)

Добавлен функционал создания процессов в сервисных учетных записях: LocalService и NetworkService.

Сначала немного скриншотов для разъяснения что это вообще такое.

Как можно видеть создано четыре процесса ProcessHacker.exe - два в учетной записи NT AUTHORITY\СИСТЕМА, один в учетной записи NT AUTHORITY\LocalService, и один в учетной записи NT AUTHORITY\NetworkService.

Начнём с процесса ID 10048

Эта учётная запись NetworkService, её рабочая станция называется Service-0x0-3e4$

Далее процесс с ID 10008

Учётная запись LocalService, рабочая станция называется Service-0x0-3e5$

Затем процесс с ID 4132

Учётная запись LocalSystem, рабочая станция называется Service-0x0-3e7$

И наконец процесс с ID 6096

Также учётная запись LocalSystem, но рабочая станция называется WinSta0

Все четыре процесса стабильно работают каждый в своей учетной записи на своей рабочей станции.

Это первый инструмент, который даёт возможность запустить любой ПРОЦЕСС (а не только СЕРВИС) в любой учетной записи.

Что это значит? Управлять процессом гораздо проще, чем сервисом или драйвером.

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

Стоит напомнить, что рабочие станции Service-0x0-3e4$, Service-0x0-3e5$ и Service-0x0-3e7$ являются не интерактивными и не имеют какого-либо GUI интерфейса.

Теперь о нюансах создания процессов в учетных записях LocalService и NetworkService.

Эти учетные записи очень ограничены как в функционале, так и в доступе.

Чтобы создать в них процесс, нужна определенная переменная среды.

Проще говоря, создать процесс из своей рабочей учетной записи (под которой вы сейчас сидите) просто не получится.

Эти учетные записи (LocalService и NetworkService) не видят ни пользовательские, ни администраторские учетные записи.

Но в Windows есть места (папки), которые всё таки расшаренны для всех ученых записей. В первую очередь это системные папки.

Например:

- учётная запись LocalSystem расположена в C:\Windows\System32\config\systemprofile, здесь находится всё окружение

- учётный записи LocalService и NetworkService расположены в C:\Windows\ServiceProfiles\LocalService и C:\Windows\ServiceProfiles\NetworkService соответственно, и имеют точно такое же окружение

Так вот чтобы запустить процесс в учетных записях LocalService и NetworkService нужно поместить исполняемые файлы программы (exe, dll, sys, com и прочие) именно в те папки переменные среды.

Вот только забивать эти папки лишним мусором совсем не хотелось бы.

Поэтому есть ещё одна папка с общим доступом, и это - C:\Users\Public

В ней есть подпапки, предлагаю использовать папку Documents

Кстати, если вы туда зайдёте, то наверняка обнаружите там папку Steam, Creative и ещё какие-нить. Почему? Всё просто это SHARED папка (FOLDERID_PublicDocuments, CSIDL_COMMON_DOCUMENTS).

Итак, вы поместили программу в папку C:\Users\Public\Documents (C:\Пользователи\Общие\Общие документы), теперь запустите

KernelExplorer

, обязательно проверьте обновления!

Файл -> Создать процесс -> открываем программу, которая расположена в общей папке C:\Users\Public\Documents

и затем выбираем в какой учетной записи нужно создать процесс

Обратите внимание!

В учетных записях LocalService, NetworkService и LocalSystem с рабочей станцией Service-0x0-3e7$ (не путайте LocalSystem с рабочей станцией WinSta0) можно создавать только системный процесс, и только на рабочем столе Default.

Я уже говорил, что рабочий стол Default является общим для всех рабочих станций

И лишь только рабочая станция WinSta0, помимо рабочего стола Default, имеет ещё два рабочих стола Winlogon и Disconnect.

В общем как-то так.

Следующая рабочей станции к которой будет получен доступ это msswindowstation (с рабочим столом mssrestricteddesk).

Я уже нашёл их, осталось произвести захват.