Найти в Дзене
Эникей на передержке

Безопасная паралелльная работа RDP-сессий | Windows 10/11

Необходимо "тихо" подключиться к ПК, когда за ним работает пользователь или разрешить работу нескольких пользователей по RDP одновременно? Это возможно без стороннего ПО и подозрительных отчётов в антивирусах! Теория За входящие подключения к удаленному рабочему столу Windows отвечает служба "TermService", она же "Службы удаленных рабочих столов": Для ее работы используется библиотека termsrv.dll (расположена в C:\Windows\System32), отредактировав которую, можно разрешить работу нескольким пользователям. Для редактирования потребуется простой HEX-редактор (я буду редактировать онлайн с помощью hexed.it). Плюсы На компьютер не требуется установка стороннего ПО, на которое часто срабатывают антивирусы. Минусы После каждого обновления потребуется патчить файл (или использовать предыдущую пропатченную версию). На самом деле подобное придётся делать и в сторонних приложениях. В нашем случае на основе изложенных ниже команд можно создать скрипт и установить его автоматическое выполнение в п
Оглавление

Необходимо "тихо" подключиться к ПК, когда за ним работает пользователь или разрешить работу нескольких пользователей по RDP одновременно? Это возможно без стороннего ПО и подозрительных отчётов в антивирусах!

Теория

За входящие подключения к удаленному рабочему столу Windows отвечает служба "TermService", она же "Службы удаленных рабочих столов":

Службы удаленных рабочих столов
Службы удаленных рабочих столов

Для ее работы используется библиотека termsrv.dll (расположена в C:\Windows\System32), отредактировав которую, можно разрешить работу нескольким пользователям. Для редактирования потребуется простой HEX-редактор (я буду редактировать онлайн с помощью hexed.it).

Плюсы

На компьютер не требуется установка стороннего ПО, на которое часто срабатывают антивирусы.

Минусы

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

На самом деле подобное придётся делать и в сторонних приложениях. В нашем случае на основе изложенных ниже команд можно создать скрипт и установить его автоматическое выполнение в планировщике.

Практика

Редактирование termsrv.dll

Переходим на сайт https://hexed.it и открываем termsrv.dll из C:\Windows\System32

Открытие termsrv.dll  в HEX-редакторе
Открытие termsrv.dll в HEX-редакторе

Теперь нам необходимо перейти к адресу 0x0001E6A5, с него должна начинаться последовательность вида "39 81 3C 06 00 0F 84 85 45 01 00":

Поиск последовательности вида "39 81 3C 06 00 0F 84 85 45 01 00"
Поиск последовательности вида "39 81 3C 06 00 0F 84 85 45 01 00"
Обращаю внимание, что данная последовательность актуальна на 24.03.2023 для Windows 10 22H2, cборка ОС 19045.2728.
Для Windows 11 22H2 (сборка ОС 22621.525) последовательность начинается с адреса 0x0001C130 и имеет вид: "39 81 3C 06 00 00 0F 84 75 7A 01 00"

Заменяем содержимое последовательности на "B8 00 01 00 00 89 81 38 06 00 00 90":

Редактирование termsrv.dll
Редактирование termsrv.dll
Последовательность "B8 00 01 00 00 89 81 38 06 00 00 90" актуальна для любой версии Windows 10/11.

Осталось сохранить отредактированный файл в любое доступное место (сохранить файл в C:\Windows\System32 не получится):

Сохранение termsrv.dll в Загрузки
Сохранение termsrv.dll в Загрузки

Замена termsrv.dll

Внимание! Для замены файла потребуется остановка службы "TermService". Если вы подключены к компьютеру в режиме удалённого рабочего стола, создайте на основе описанных ниже команд скрипт ps1 или подключитесь с использованием стороннего ПО.

Запускаем PowerShell от имени Администратора и создаём резервную копию файла termsrv.dll:

Copy-Item -Path .\termsrv.dll -Destination .\termsrv.dll.bak;

*обратите внимание, что рабочая директория: C:\Windows\system32

Останавливаем службу "TermService" зависящую от неё службу "UmRdpService" командами:

Stop-Service "UmRdpService" -Force;
Stop-Service TermService -Force;

*символ ' ; ' обозначает конец команды

Чтобы удалить оригинальный файл, нам придётся стать его владельцем. После замены, владельцем пропатченной библиотеки будет являться ваша учётная запись. Чтобы не снижать безопасность, перенесём текущие права на новый файл с помощью PowerShell.

Скопируем в переменную $fileacl дескриптор оригинального файла:

$fileacl = Get-Acl .\termsrv.dll;

Установим владельцем файла группу Администраторы, выполнив поочерёдно следующие команды:

Задаём нового владельца файла:

$owner = "BUILTIN\Администраторы";
Через графический интерфейс это выглядело бы так
Через графический интерфейс это выглядело бы так

Открываем полный доступ к файлу:

$rights = "FullControl";
Аналогичное действие с помощью GUI
Аналогичное действие с помощью GUI

Тип прав: "Разрешить"

$type = "Allow";
Устанавливаем тип прав доступа
Устанавливаем тип прав доступа

Дескриптор безопасности представляет из себя объект, включающий информацию о владельце, правах и типе доступа. Добавим информацию о них в общий список аргументов:

$accessArguments = $owner, $rights, $type;

Создадим объект на основе указанных данных:

$accessRule = New-Object -TypeName System.Security.AccessControl.accessRule -ArgumentList $accessArguments;

*это одна длинная команда

Создадим переменную '$newfileacl', в которой сохраним новые права доступа:

$newfileacl.SetAccessRule($accessRule);

Применим новые права доступа к исходному файлу:

Set-Acl -Path \termsrv.dll -AclObject $newfileacl;

Заменяем оригинальную библиотеку пропатченной:

Move-Item -Path "$Env:USERPROFILE\Downloads\termsrv.dll" -Destination ".\termsrv.dll" -Force;

Устанавливаем права доступа как у оригинального файла:

Set-Acl -Path ".\termsrv.dll" -AclObject $fileacl

Запускаем службы:

Start-Service "UmRdpService";
Start-Service "TermService";

После запуска служб пользователи смогут подключаться к компьютеру и работать одновременно.

Завершение

Помните, что Windows 10 - ОС для рабочих станций и не способна заменить сервер. Я рекомендую использовать данный патч для специфических задач, например, для каких-то разовых проектов.

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

Спасибо, что дочитали статью до конца. Поддержите канал лайком и подпиской, чтобы чаще видеть в ленте подобный контент. Всего вам доброго!)

UPD от 06.2023: Полная автоматизация действий