Удаленное управление сеансом пользователя windows server. Удаленное управление пользовательским сеансом Windows — используем стандартные средства. Как разрешить обычном пользователям использовать теневое подключение
Кроме того, у режима RD Shadow и rdp клиента появился ряд новых интересных возможностей. Полный список опций rdp клиента mstsc.exe, определяющих возможность удаленного подключения к сессии конечного пользователя:
/shadow:ID — подключится к терминальной сессии с указанным ID
/v:servername — имя терминального сервера (если не задано, используется текущий)
/control — возможность взаимодействия с сеансом пользователя (если не указано, используется режим просмотра сессии пользователя).
/noConsentPrompt — не запрашивать у пользователя подтверждение на подключение к сессии
Ограничения теневых сеансов RDS в Windows 2012 R2
- Подключаться к чужим сессиям может только администратор сервера. Делегировать эти права обычным пользователем нельзя
- RDS Shadow не будет работать в сетях на базе рабочих групп
Установка служб RDP
(установка служб удаленных рабочих столов)
В «Диспетчере серверов» выберите «Управление» и «Добавить роли и компоненты«:
На первым шаге «Мастера добавления ролей и компонентов» и нажимаем «Далее«:
На втором шаге выбираем «Установка служб удалённых рабочих столов«:
В следующем шаге мастер попросит Вас выбрать тип развертывания. Выберите «Стандартное развертывание» и нажимаем «Далее«:
Выберите сценарий «Развертывание рабочих столов на основе сеансов» и “Далее”:
Нажмите «Далее«:
Здесь нужно выбрать сервер «Посредник подключений к удалённому рабочему столу«, выбираем сервер в «Пуле серверов» и нажимаем «Далее«.
На этом этапе выберите сервер из списка «Пул серверов» и нажмите «Далее«:
Укажите сервер «Узла сеансов удалённых рабочих столов» выбрав сервер из списка “Пул серверов” и нажмите “Далее”:
Поставте галочки напротив пункта “Автоматически перезапускать конечный сервер, если это потребуется” и нажмите «Развернуть«:
Дождитесь установки выбраных ролей, после чего компьютер будет перезагружен.
После перезагрузки автоматически запустится «Мастер добавления ролей и компонентов«, который настроит установленные службы.
Дождитесь окончания настройки и нажмите “Закрыть”:
На этом установка «Службы удалённых рабочих столов» окончена.
⚙️ Какие порты использует теневое копирование служб удаленных рабочих столов
Функция теневого копирования служб удаленных рабочих столов не использует порт 3389/TCP (RDP), вместо этого он использует порт 445/TCP (SMB) и эфемерные порты, также известные как динамический диапазон портов (RPC). Так же на удаленном компьютере, куда вы будите производить подключения должны быть добавлены правила:
- Первое правило называется «File and Printer Sharing (SMB-In)», которое позволяет подключаться к порту 445/TCP;
- Второй есть «Remote Desktop — Shadow (TCP-In)». Это позволяет %SystemRoot%system32RdpSa.exe двоичному файлу обрабатывать входящие соединения на любом локальном TCP-порту. Динамический диапазон портов в Windows обычно включает TCP-порты с 49152 по 65535.
Abusing the Shadow Registry Key and the NoConsentPrompt Parameter
I haven’t mentioned the Shadow registry key yet, because it doesn’t exist by default.
The Shadow key doesn’t exist by default
In this case the behavior is the same as when the key value is set to 1 (described below). In other words, a shadowee must explicitly give permission to allow their session to be shadowed.
To be able to shadow it without permission, you must intentionally override this with a group policy, for example, using GUI application called Local Group Policy Editor ( gpedit.msc ) set the Set rules for remote control of Remote Desktop Services user sessions policy value to allow session shadowing without user permission. It is located at Local Computer Policy → Computer Configuration → Administrative Templates → Windows Components → Remote Desktop Services → Remote Desktop Session Host → Connections.
The policy setting window of the Local Group Policy Editor management console
It can also be set manually with a command line interpreter by issuing the following command:
where the value of the /d parameter is one of the following:
- 0 – No remote control allowed;
- 1 – Full Control with user’s permission;
- 2 – Full Control without user’s permission;
- 3 – View Session with user’s permission;
- 4 – View Session without user’s permission.
Selecting the Not Configured value or the Disabled value deletes the Shadow registry key.
Full Control also allows to connect in the View Session mode, but to avoid a situation with the mistakenly specified /control parameter it is safer to set the Shadow value to 4.
Note: to get the current value of the Shadow key issue the following:
to remove the Shadow key type
Defining the Shadow parameter on the remote host, it is possible to shadow a session without a user’s consent as follows:
- /v parameter lets specify the value that is an IP address or a hostname of a remote host;
- /shadow parameter is used to specify the value that is a shadowee’s session ID;
- /noconsentprompt parameter allows to bypass a shadowee’s permission and shadow their session without their consent;
- /prompt parameter is used to specify a user’s credentials to connect to a remote host.
Another way to specify user’s credentials without having to constantly type them in the pop-up window is to use the runas command as follows:
and in the new command line interpetator window run the mstsc utility
The same works for qwinsta and quser .
Sometimes you can face the following general error:
which can mean anything, but in some cases it may mean that
- the user in whose context the current command is issued doesn’t exist on a remote host;
- the specified user credentials are incorrect;
- you are trying to shadow a session to which you don’t have permissions.
This behavior is pretty much the same for qwinsta :
In a workgroup environment you can use any of the local accounts if this account is also present on a remote host.
Moreover, if you are trying to shadow a session (or list sessions using qwinsta or quser ) with an unprivileged user account on a remote host, then you are able to connect only to the session (to list only information about a session) related to this user.
You will get the same behavior if you’re using a non-RID 500 administrator account, but UAC remote restrictions are enabled on the remote host, more precisely it means that the LocalAccountTokenFilterPolicy registry key is set to 0 or the key doesn’t exist (by default).
In the first screenshot UAC remote restrictions are enabled and in the second one they are disabled
The qwinsta command output while UAC remote restrictions are enabled The qwinsta command output while UAC remote restrictions are disabled
This is a well-known security mechanism that strips out the administrator access token when a user is connected remotely. More details are at https://docs.microsoft.com/en-us/troubleshoot/windows-server/windows-security/user-account-control-and-remote-restriction.
To disable it change the value to 1 with the following command:
Note: to get the current value of the LocalAccountTokenFilterPolicy key, issue the following:
to remove the LocalAccountTokenFilterPolicy key type
It’s important that if you are lucky and the built-in RID 500 administrator account is enabled (by default it is disabled) on the remote host you are able to shadow a session using it since the LocalAccountTokenFilterPolicy key doesn’t affect it. There is another FilterAdministratorToken registry key that might restrict this account if it is set to 1, but by default it is set to 0.
So, in a workgroup (as well as in a domain) environment a local administrator is the only local user that can access other local user’s sessions (if the LocalAccountTokenFilterPolicy and the FilterAdministratorToken registry keys are set to the appropriate values).
In a domain environment any domain administrator is able to shadow sessions of both local and domain users.
I don’t know when it might be useful, but it is possible to enumerate the existence of a session using mstsc itself by simply incrementing the value
If there is no such session, then the following error occurs:
The session you’re trying to connect to doesn’t exist
Alternatively, if a session exists, but nobody is connected to it or you have no necessary permissions you get one of the following errors:
The session exists, but nobody is connected to it Not enough permissions to shadow a session
Otherwise, you are granted permissions and a viewer’s window is opened
A successfully established shadowing connection
Теневое подключение RDS Shadow из PowerShell
Воспользоваться функционалом теневого подключения к сессии пользователя через теневое подключение Remote Desktop Services можно и из Powershell.
В первую очередь покажем, как получить список сессий на терминальном сервере (сессии пользователей будут сгруппированы в группы в зависимости от их статуса):
Get-RDUserSession | ft Username, UnifiedSessionId, SessionState, HostServer, ApplicationType -GroupBy Sessionstate
На данном сервере мы обнаружили три активных терминальных сессии. Подключимся к сессии пользователя с ID сессии 3:
Mstsc /shadow:3 /control
Также для получения списка всех сессии на сервере можно выполнить команду
На экране отобразится список RDP сессий, их ID и статус: активная сесиия (Active) или отключенная (Disconnected).
Для получения списка сессий на удалённом сервере выполните команду:
query session /server:servername
Для более удобного теневого подключения к сессиям можно использовать следующий скрипт. Скрипт предложит ввести имя удаленного компьютера и выведет список всех сеансов и предложит указать сеанс, к которому нужно подключится:
query session /server:%rcomp%
set /P rid=»Enter RDP user ID: «
Можно поместить данный файл в каталог %Windir%System32, в результате для теневого подключения достаточно выполнить команду shadow .
Для подключения к консольной сессии можно использовать такой скрипт:
@echo off
set /P rcomp=»Enter name or IP of a Remote PC: «
for /f «tokens=3 delims= » %%G in («query session console /server:%rcomp%») do set rid=%%G
start mstsc /shadow:%rid% /v:%rcomp% /control
Использование Remote Desktop Shadow из графического GUI
Подключиться к сессии пользователя можно с помощью утилиты mstsc.exe или непосредственно из консоли Server Manager. Для этого в консоли Server Manager откройте коллекцию QuickSessionCollection
Щелкнув по сессии интересующего пользователя, выберите в контекстном меню Shadow (Теневая копия).
Появится окно параметров теневого подключения. Возможен просмотр (View) и управление (Control) сессией. Кроме того, можно включить опцию Prompt for user consent (Запрашивать согласие пользователя на подключение к сессии).
Если выбрана опция «Запрашивать согласие пользователя», в сессии у пользователя появится запрос:Запрос на удаленное наблюдение
Winitproadministrator запрашивает удаленный просмотр вашего сеанса. Вы принимаете этот запрос.Winitproadministrator is requesting to view your session remotely. Do you accept the request?
Если пользователь подтвердит, подключение, в режиме просмотра администратор увидит его рабочий стол, но не сможет взаимодействовать с ним.Совет. Для отключения от сессии пользователя и выхода из shadow-режима нужно нажать ALT+* на рабочей станции или Ctrl+* на терминальном сервере (если не заданы альтернативные комбинации).
Если же пользователь отклонит подключение, появится окно:Shadow Error: The operator or administrator has refused the request
Если попытаться подключиться к сессии пользователя без запроса подтверждения, появится ошибка, сообщающая, что такое это запрещено групповой политикой:Shadow Error: The Group Policy setting is configured to require the user’s consent. Verify the configuration of the policy settings.
Параметры удаленного управлениями RDS сессиями пользователя настраиваются политикой Set rules for remote control of Remote Desktop Services user sessions (Установить правила удаленного управления для пользовательских сеансов служб удаленных рабочих столов), которая находится в разделе Policies -> Administrative Templates -> Windows components -> Remote Desktop Services -> Remote Session Host -> Connections (Административные шаблоны –> Компоненты Windows –> Службы удаленных рабочих столов – Узел сеансов удаленных рабочих столов –> Подключения) в пользовательской и «компьютерной» секциях GPO. Данной политике соответствует dword параметр реестра Shadow в ветке HKLMSOFTWAREPoliciesMicrosoftWindows NTTerminal Services.
Этой политикой можно настроить следующие варианты теневого подключения через теневое подключение RD Shadow::
- No remote contol allowed — удаленное управление не разрешено (значение ключа реестра Shadow = 0);
- Full Control with users’s permission — полный контроль с разрешения пользователя (1);
- Full Control without users’s permission — полный контроль без разрешения пользователя (2);
- View Session with users’s permission – наблюдение за сеансом с разрешением пользователя (3);
- View Session without users’s permission – наблюдение за сеансом без разрешения пользователя (4).
Групповые политики управления теневыми подключениями к RDS сессиям в Windows
Параметры для удаленного управления сеансами RDS пользователя настраиваются с помощью отдельного параметра групповой политики «Установить правила для управления сеансом пользователя служб удаленных рабочих столов». Этот параметр находится в разделе «Политики» -> «Административные шаблоны» -> «Компоненты Windows» -> «Службы удаленных рабочих столов» -> «Узел удаленного сеанса» -> «Подключения» в разделах «Пользователь» и «Компьютер» объекта групповой политики. Эта политика соответствует параметру DWORD теневого реестра в ветке HKLM SOFTWARE Policies Microsoft Windows NT Terminal Services (в скобках указаны значения этого параметра, соответствующие параметрам политики).
С помощью этой политики вы можете настроить следующие параметры подключения к теневому удаленному рабочему столу:
-
Дистанционное управление запрещено – дистанционное управление запрещено (значение регистрового параметра
После изменения настроек не забудьте обновить настройки групповой политики на хосте RDP / RDS.
вы можете настроить правила для удаленного подключения в домене из консоли
, используя рассматриваемый параметр политики, или групповую политику, которая вносит изменения непосредственно в реестр (последний вариант позволяет более точно настроить таргетинг политики на компьютеры с помощью Group Таргетинг на уровень элемента политики).
Эксплуатация
Теперь я покажу, как выглядит сама эксплуатация.
Продолжение доступно только участникам
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее