Изменить исполняемый файл службы
Обновлено: 21.11.2024
Нередко APT-группы модифицируют существующую службу на скомпрометированном хосте, чтобы выполнить произвольную полезную нагрузку при запуске или завершении службы в качестве метода сохранения. Это позволяет им спрятать свое вредоносное ПО в месте, которое будет выполняться в контексте службы. Модификация существующих служб требует привилегий администратора или уровня SYSTEM и обычно не используется красными командами в качестве метода сохранения. Однако полезно использовать этот метод в качестве отправной точки во время оценок фиолетовой команды в средах с менее зрелыми средствами контроля обнаружения. Злоумышленник может манипулировать тремя местами, чтобы выполнить какую-либо полезную нагрузку:
- binPath
- Путь к изображению
- Команда отказа
binPath
«binPath» — это расположение, указывающее службе на двоичный файл, который необходимо выполнить при запуске службы. Metasploit Framework можно использовать для создания произвольного исполняемого файла.
Metasploit — создание исполняемого файла
Созданный файл необходимо поместить на диск, что создает криминалистический артефакт. Утилита командной строки «sc» может управлять службой и выполнять такие действия, как запуск, остановка, пауза, изменение двоичного пути и т. д. Служба факсов по умолчанию не используется в установках Windows 10 и поэтому является хороший кандидат на модификацию двоичного пути, так как он не будет прерывать обычные операции пользователя.
Изменить существующую службу — binPath
Когда служба запустится в системе, будет выполнена полезная нагрузка и откроется сеанс.
Изменить существующую службу — binPath Meterpreter
Службу можно изменить так, чтобы она запускалась автоматически при запуске Windows и с привилегиями системного уровня, чтобы сохраняться при перезагрузке.
Изменить существующую службу — запустить автоматически
Путь к изображению
Информация о каждой службе в системе хранится в реестре. Раздел реестра «ImagePath» обычно содержит путь к файлу образа драйвера. Перехват этого ключа с помощью произвольного исполняемого файла приведет к тому, что полезная нагрузка будет выполняться во время запуска службы.
Изменить существующую службу — ImagePath
Изменить существующую службу — ImagePath Meterpreter
Команда отказа
Windows предоставляет функциональные возможности для выполнения определенных действий, когда служба не запускается или процесс ее переписки завершается. В частности, команда может быть выполнена, когда служба убита. Раздел реестра, управляющий этим действием, называется «FailureCommand», и его значение определяет, что будет выполнено.
Изменить существующую службу — FailureCommand
Выполнение приведенной выше команды изменит раздел реестра вредоносным исполняемым файлом, который запустится, когда процесс будет уничтожен.
Изменить существующую службу — ключ реестра FailureCommand
В качестве альтернативы то же самое действие можно выполнить с помощью утилиты «sc» и указав параметр «failure».
Изменить существующую службу — параметр отказа
Параметр «Запустить программу» на вкладке «Восстановление» службы будет заполнен произвольной полезной нагрузкой. Следует отметить, что для параметра «Первый сбой» должно быть установлено значение «Запустить программу», а для других параметров — значение «Не предпринимать никаких действий». “.
Изменить существующую службу — действие восстановления
Когда связанный процесс будет уничтожен, полезная нагрузка будет выполнена с теми же привилегиями, что и служба, и откроется сеанс Meterpreter.
Изменить существующую службу — средство интерпретации состояния сбоя
При запуске службы «Факс» инициируется процесс «svchost» (PID 2624). Поскольку этот процесс играет роль триггера, завершение процесса создаст новый произвольный процесс, который может быть легко обнаружен синей командой.
Изменить существующую службу — завершить процесс
Империя
Empire также может выполнять модификации сервисов в рамках своего модуля повышения привилегий. Однако, если Empire используется в качестве C2 в кампании, а агент работает с повышенными привилегиями (Администратор, СИСТЕМА), то следующий модуль можно использовать для изменения существующей службы, которая будет запускать программу запуска.
Изменить существующую службу – Империя
Я хотел бы изменить путь к моему приложению, но это нарушает его работу, поскольку служба по-прежнему указывает на старое местоположение.
Перейдя в «Администрирование» > «Службы», вы можете открыть диалоговое окно свойств и просмотреть путь к исполняемому файлу, но изменить его невозможно.
Есть ли способ, которым пользователь может изменить путь службы без переустановки приложения?
10 ответов 10
Это требует редактирования реестра, но служебную информацию можно найти в HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services. Найдите службу, которую вы хотите перенаправить, найдите подраздел ImagePath и измените это значение.
Хотя в конечном итоге это приводит к данным реестра, я должен упомянуть, что существуют специальные функции Windows API для работы со службой. Следует избегать прямого изменения реестра (поскольку вы не можете быть уверены, что еще Windows изменяет, когда она изменяет путь к exe, например), если вы не абсолютно уверены в том, что делаете.
@lospejos "Я должен упомянуть, что существуют специальные функции Windows API для работы со службой" . какой будет?
Если кто-то не видит обновленный путь службы в Services.msc, попробуйте убить mmc.exe "taskkill /F /IM mmc.exe" в cmd
Службы Windows никогда не требуют редактирования реестра. Использование sc или sc.exe намного лучше и менее рискованно
Этот подход также наблюдается в SuperUser, который использует командную строку sc вместо изменения реестра:
Примечание: пробел после binPath= важен. Вы также можете запросить текущую конфигурацию, используя:
Это отображает вывод, аналогичный следующему:
[SC] QueryServiceConfig УСПЕШНО
ИМЯ_СЛУЖБЫ: Имя_службы
Я бы рекомендовал этот подход вместо прямых изменений в реестре. Для многих путей требуются строки в кавычках, которые можно ввести следующим образом, например, для MS SQL Server: sc config mssqlserver binPath= "\"F:\SQL DATA\MSSQL10.MSSQLSERVER\MSSQL\Binn\sqlservr.exe\" -sMSSQLSERVER"
Кроме того, в сценарии развертывания это, вероятно, немного лучше, чем метод прямого изменения реестра.
Сладкий. Чище, чем возиться в reg. ** Примечание. Вам нужно будет закрыть и открыть services.msc, чтобы увидеть изменения.
Вы также можете сделать это с помощью PowerShell:
Откройте Run(win+R), введите «Regedit.exe», чтобы открыть «Редактор реестра», перейдите к
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
найдите «Apache2.4», откройте папку, найдите «ImagePath» с правой стороны, откройте «ImagePath» в разделе «значение данных» и укажите следующий путь:
Просто нажмите «Пуск» -> «Выполнить» и введите «Regedit» (без кавычек). Затем вам нужно перейти к HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\[Name of Service]. Чтобы изменить местоположение исполняемого файла, просто измените ключ ImagePath.
Как изменить путь к исполняемому файлу в службах MSC?
** Примечание. Вам нужно будет закрыть и открыть службы. msc, чтобы увидеть изменения... Чтобы быть точным.
- Введите службы в Windows.
- Найдите MongoDB (или службу, которую вы хотите изменить) и откройте ее, убедившись, что она остановлена.
- Запишите имя службы (не отображаемое имя)
- Найдите и скопируйте «Путь к исполняемому файлу» и скопируйте его.
Как сделать исполняемый файл службы Windows?
Чтобы создать сервис:
- Открыть командную строку Windows от имени администратора.
- Введите sc.exe create ИМЯ СЛУЖБЫ binpath= «ПОЛНЫЙ ПУТЬ СЛУЖБЫ»
- не оставляйте пробел в ИМЯ УСЛУГИ.
- После binpath= и перед ” должен быть пробел.
- в SERVICE FULL PATH укажите полный путь к исполняемому файлу службы.
- Пример:
Как изменить путь к exe в Windows 10?
HKLM\System\CurrentControlSet\Services\ServiceName Найдите строковый объект с именем «Путь к изображению». Дважды щелкните его и измените значение на правильное расположение исполняемого файла. Нет необходимости перезагружать компьютер.
Что такое Nssm EXE?
nssm — это сервисный помощник, который не отстой. srvany и другие программы-помощники сервисов — отстой, потому что они не обрабатывают сбои приложения, работающего как сервис. nssm регистрирует свой прогресс в системном журнале событий, чтобы вы могли понять, почему приложение ведет себя не так, как должно.
Что такое конфликты путей в MySQL?
Если папка установки по умолчанию или папка данных (требуется сервером MySQL) для продукта, который нужно установить, уже существует на хосте, мастер отображает шаг Конфликт пути, чтобы идентифицировать каждый конфликт и дать вам возможность предпринять действия, чтобы избежать наличия файлов в существующая папка перезаписывается новой установкой.
Изменяет значение записей службы в реестре и в базе данных Service Control Manager.
Синтаксис
Параметры
- own — указывает службу, которая работает в своем собственном процессе. Он не использует исполняемый файл совместно с другими службами. Это значение по умолчанию.
- share — указывает службу, которая работает как общий процесс. Он использует исполняемый файл совместно с другими службами.
- ядро – определяет драйвер.
- filesys — указывает драйвер файловой системы.
- rec — определяет драйвер, распознаваемый файловой системой, который идентифицирует файловые системы, используемые на компьютере.
- adapt – указывает драйвер адаптера, который идентифицирует аппаратные устройства, такие как клавиатуры, мыши и дисководы.
- interact — указывает службу, которая может взаимодействовать с рабочим столом, получая данные от пользователей. Интерактивные службы должны запускаться под учетной записью LocalSystem. Этот тип должен использоваться в сочетании с type= own или type= shared (например, type=interacttype=own). Использование type=interact само по себе приведет к ошибке.
- boot — указывает драйвер устройства, загружаемый загрузчиком.
- system — указывает драйвер устройства, который запускается во время инициализации ядра.
- auto — указывает службу, которая автоматически запускается каждый раз при перезагрузке компьютера и работает, даже если никто не входит в систему.
- demand — указывает службу, которую необходимо запустить вручную. Это значение по умолчанию, если start= не указано.
- disabled — указывает службу, которую невозможно запустить. Чтобы запустить отключенную службу, измените тип запуска на другое значение.
- delayed-auto — указывает службу, которая запускается автоматически через некоторое время после запуска других автоматических служб.
- normal — указывает, что ошибка заносится в журнал и отображается окно сообщения, информирующее пользователя о том, что не удалось запустить службу. Запуск продолжится. Это настройка по умолчанию.
- серьезная — указывает, что ошибка регистрируется (если возможно). Компьютер пытается перезагрузиться с последней удачной конфигурацией. Это может привести к тому, что компьютер сможет перезагрузиться, но служба по-прежнему не сможет работать.
- критическая — указывает, что ошибка регистрируется (если возможно). Компьютер пытается перезагрузиться с последней удачной конфигурацией. Если последняя известная удачная конфигурация дает сбой, запуск также завершается ошибкой, а процесс загрузки останавливается со стоп-ошибкой.
- игнорировать — указывает, что ошибка регистрируется и запуск продолжается. Пользователю не выдается никакого уведомления, кроме записи ошибки в журнале событий.
Примечания
Каждая опция командной строки (параметр) должна включать знак равенства как часть имени опции.
Между параметром и его значением требуется пробел (например, type= own. Если пробел опущен, операция завершится ошибкой.
Создает подраздел и записи для службы в реестре и в базе данных Service Control Manager.
Синтаксис
Параметры
- own — указывает службу, которая работает в своем собственном процессе. Он не использует исполняемый файл совместно с другими службами. Это значение по умолчанию.
- share — указывает службу, которая работает как общий процесс. Он использует исполняемый файл совместно с другими службами.
- ядро – определяет драйвер.
- filesys — указывает драйвер файловой системы.
- rec — определяет драйвер, распознаваемый файловой системой, который идентифицирует файловые системы, используемые на компьютере.
- interact — указывает службу, которая может взаимодействовать с рабочим столом, получая данные от пользователей. Интерактивные службы должны запускаться под учетной записью LocalSystem.Этот тип должен использоваться в сочетании с type= own или type= shared (например, type=interacttype=own). Использование type=interact само по себе приведет к ошибке.
- boot — указывает драйвер устройства, загружаемый загрузчиком.
- system — указывает драйвер устройства, который запускается во время инициализации ядра.
- auto — указывает службу, которая автоматически запускается каждый раз при перезагрузке компьютера и работает, даже если никто не входит в систему.
- demand — указывает службу, которую необходимо запустить вручную. Это значение по умолчанию, если start= не указано.
- disabled — указывает службу, которую невозможно запустить. Чтобы запустить отключенную службу, измените тип запуска на другое значение.
- delayed-auto — указывает службу, которая запускается автоматически через некоторое время после запуска других автоматических служб.
- normal — указывает, что ошибка заносится в журнал и отображается окно сообщения, информирующее пользователя о том, что не удалось запустить службу. Запуск продолжится. Это настройка по умолчанию.
- серьезная — указывает, что ошибка регистрируется (если возможно). Компьютер пытается перезагрузиться с последней удачной конфигурацией. Это может привести к тому, что компьютер сможет перезагрузиться, но служба по-прежнему не сможет работать.
- критическая — указывает, что ошибка регистрируется (если возможно). Компьютер пытается перезагрузиться с последней удачной конфигурацией. Если последняя известная удачная конфигурация дает сбой, запуск также завершается ошибкой, а процесс загрузки останавливается со стоп-ошибкой.
- игнорировать — указывает, что ошибка регистрируется и запуск продолжается. Пользователю не выдается никакого уведомления, кроме записи ошибки в журнале событий.
Примечания
Каждая опция командной строки (параметр) должна включать знак равенства как часть имени опции.
Между параметром и его значением требуется пробел (например, type= own. Если пробел опущен, операция завершится ошибкой.
Примеры
Чтобы создать и зарегистрировать новый двоичный путь для службы NewService, введите:
Читайте также: