Почему я могу переместить исполняемый файл службы, но не удалить его?

Я узнаю о повышении привилегий и опасных конфигурациях служб в Windows.

Вот эта вещь:

  • У службы есть исполняемый файл myservice.exe, доступный для записи во всем мире (идея baaaad).
  • Служба работает с системными привилегиями
  • Когда вы пытаетесь скопировать / заменить myservice.exe во время его работы, это не будет работать. (Доступ запрещен)
  • Однако, когда вы сначала перемещаете исполняемый файл, а затем копируете второй (злой) файл myservice.exe в папку, Windows не будет жаловаться
  • В следующий раз, когда служба перезапускается, выполняется порочный service.exe.

Мой вопрос: какой процесс хранит дескриптор myservice.exe, чтобы я не мог его удалить? Как этот процесс позволяет мне переместить файл и продолжить работу?

Я попытался ответить на этот вопрос самостоятельно, используя procmon.exe из Sysinternals Suite, но пока ничего не нашел.

0 ответов

У меня нет точного ответа, но я заметил, что если вы переместите работающую службу, вы не сможете перезаписать перемещенный файл.

Пример:

Перезаписать процесс, используемый службой "Serviio":

    cd "C:\Program Files\Serviio\bin\"
    move "ServiioService.exe" "ServiioService_original.exe"

Попробуйте перезаписать новое имя файла:

copy "K:\18.2.4.1_win_add_user.exe" "C:\Program Files\Serviio\bin\ServiioService_original.
exe"
copy : The process cannot access the file 'C:\Program Files\Serviio\bin\ServiioService_original.exe' because it is
being used by another process.
At line:1 char:1
+ copy "K:\18.2.4.1_win_add_user.exe" "C:\Program Files\Serviio\bin\Ser ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Copy-Item], IOException
    + FullyQualifiedErrorId : System.IO.IOException,Microsoft.PowerShell.Commands.CopyItemCommand
Другие вопросы по тегам