Почему я могу переместить исполняемый файл службы, но не удалить его?
Я узнаю о повышении привилегий и опасных конфигурациях служб в 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