RDS Shadow – теневое подключение к RDP сессиям пользователей в Windows Server 2016 / 2012 R2 — Блог ITшника


With these prerequisites in place, let’s get to the practical part.


The Shadow value in the registry can be reverted either after completing the work on the machine or directly after establishing the connection to the remote machine (see next section). Depending on whether the Shadow value did not exist before or the it had a different value, the value can be reverted to the previous value using the methods described above, updating value 2 to the previous value or deleted using reg.exe or WMI.


reg.exe delete "\MYSERVERHKLMSoftwarePoliciesMicrosoftWindows NTTerminal Services" /V Shadow


Configuring rdp shadowing

Before shadowing the remote machine, first a couple of settings on the target host need to be validated, and possibly updated. There are several ways to view and change these settings and depending on the configuration of firewalls and types of traffic on the network in which you want to blend in, it is possible to choose which protocol to use.

Besides the option of using the Microsoft-DS service (445/TCP) used by commands like sc.exe, reg.exe, netsh.exe and the Microsoft Management Console (mmc.exe), configuration of the remote machine can also be performed through WinRM/WMI which are respectively running on port 5985/TCP and/or 5986/TCP and 135/TCP.

The $s variable contains the session and will be used in all subsequent sections. Alternatively WinRM can be used by removing the -SessionOption parameter.

For more information about WMI, check my previous article on Extracting credentials from a remote Windows system – Living off the Land here.


The defense section is split into a subsection which details ways to prevent attackers to use the shadowing feature and a subsection which looks into the various ways (ab)use of the shadowing feature can be monitored.

Detect backdoor creation

Detect modification of the Remote Desktop settings by monitoring the Security value in the HKLMSYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp key and the DefaultSecurity value in the HKLMSYSTEMCurrentControlSetControlTerminal ServerWinStations key.

Detect creation or changes of the shadow value

Throw an alert in case the Shadow value in the HKLMSoftwarePoliciesMicrosoftWindows NTTerminal Services key is created or modified.

Detect launching of processes responsible for shadowing

Processes spawn on shadow session connect. The following processes are spawned when a shadowing session to the system is established:


This section outlines some techniques that can be used to detect the use of Remote Desktop shadowing.

Further reading

While finalizing this article, I discovered that similar research has already been performed by Roman Maximov. Our research overlaps in certain parts while it complements in other parts. If you want to read more on this topic, make sure to also check out his interesting blog post here!


On the network level, certain DCE/RPC packets can be observed when a shadowing session is starting on a host on the network:

Option #1: reg.exe

If the RemoteRegistry service is enabled on the target host, the following command line can be used:


reg.exe query "\MYSERVERHKLMSoftwarePoliciesMicrosoftWindows NTTerminal Services" /V Shadow


reg.exe add "\MYSERVERHKLMSoftwarePoliciesMicrosoftWindows NTTerminal Services" /V Shadow /T REG_DWORD /D 2 /F

Option #1: service manager


sc.exe \MYSERVER query TermService


sc.exe \MYSERVER start TermService

Option #1: wmi


:/>  Интерфейс командной строки


Option #2: firewall manager via gui

For this to work, it is required that the Windows Firewall Remote Management (WFRM) rules have already been enabled on the remote system, otherwise we will simply shift the problem where the WFRM rules need to be enabled, in order to enable the RDP Shadow rule via the GUI.


Launch mmc.exe from the cmd.exe window which contains the appropriate security tokens. Navigate to File -> Add/Remove Snap-In (Ctrl M) and add the Windows Defender Firewall with Advanced Security snap-in to the console.

While adding the snap-in, we specify the Another computer machine name, entering the computer name or IP address you want to shadow. After loading the snap-in, navigate to Inbound Rules and locate Remote Desktop – Shadow (TCP-In).


Simply right click the rule and choose Enable Rule.

Option #2: wmi

This option requires WMI (135/TCP) or WinRM (5985/TCP or 5986/TCP) to be accessible on the remote host.



Option #3: netsh

Same prerequisites apply as enabling it via the GUI (option 2).


netsh.exe -r MYSERVER advfirewall firewall show rule name="Remote Desktop - Shadow (TCP-In)"


netsh.exe -r MYSERVER advfirewall firewall set rule name="Remote Desktop - Shadow (TCP-In)" new enable=yes

Option #3: service manager via gui


Launch mmc.exe from the powershell.exe instance created in the Authentication section so it inherits the appropriate security tokens. Navigate to File ->


Simply right click the Remote Desktop Services service and choose Start.

Rds shadow – теневое подключение к rdp сессиям пользователей в windows server 2022 / 2022 r2 — хочу знать

В Windows 2022 R2 и Windows 8.1 Microsoft вернула функционал Remote Desktop Shadowing (теневого подключения). Напомним, что режим Shadow (теневой сеанс) – может использовать администратором для просмотра и управления существующей RDP сессией любого пользователя. Этот режим работы поддерживается практически с первых версий терминального сервера Microsoft и неожиданно был убран в Windows Server 2022 (связано с переносом стека rdp из режима ядра в пользовательский режим). Функционал RDS Shadow работает и в следующих версиях ОС: Windows Server 2022 / Windows 10.

Кроме того, у режима теневого подключения RDS Shadow и RDP клиента появился ряд новых интересных возможностей. Полный список параметров RDPклиента mstsc.exe, определяющих возможность удаленного теневого подключения к сессии конечного пользователя:

Mstsc.exe [/shadow:sessionID [/v:Servername] [/control] [/noConsentPrompt]]Новые параметры mstsc в Windows 8.1

/shadow:ID – подключится к RDP сессии с указанным ID.

/v:servername – имяRDP/RDS терминального сервера (если не задано, используется текущий).

/control – возможность взаимодействия с сеансом пользователя (если не указано, используется режим просмотра сессии пользователя).

/noConsentPrompt – не запрашивать у пользователя подтверждение на подключение к сессии.

/prompt –используется для подключения под другими учетными данными. Запрашивается имя и пароль пользователя для подключения к удаленному компьютеру.

Ограничения теневых сеансов RDS в Windows 2022 R2

  • Подключаться к чужим сессиям может только администратор сервера. Делегировать эти права обычным пользователем нельзя
  • RDS Shadow не будет работать в сетях на базе рабочих групп
:/>  Тихий звук на компьютере — Возможные причины и решения неполадок

Использование Remote Desktop Shadow из графического GUI

Подключиться к сессии пользователя можно с помощью утилиты mstsc.exe или непосредственно из консоли Server Manager. Для этого в консоли Server Manager откройте коллекцию QuickSessionCollection
коллекция QuickSessionCollection

Щелкнув по сессии интересующего пользователя, выберите в контекстном меню Shadow (Теневая копия).
shadow - запуск теневой сесии

Появится окно параметров теневого подключения. Возможен просмотр (View) и управление (Control) сессией. Кроме того, можно включить опцию Prompt foruser consent (Запрашивать согласие пользователя на подключение к сессии).

mstsc - Теневая копия - Запрашивать согласие пользователя

Если выбрана опция «Запрашивать согласие пользователя», в сессии у пользователя появится запрос:

Запрос на удаленное наблюдение

Winitproadministrator запрашивает удаленный просмотр вашего сеанса. Вы принимаете этот запрос.

Winitproadministrator is requesting to view your session remotely. Do you accept the request?

Запрос пользователя о shadow подключении

Запрос на удаленное теневое наблюдение

Если пользователь подтвердит, подключение, в режиме просмотра администратор увидит его рабочий стол, но не сможет взаимодействовать с ним.
удаленное управление терминальной сесией пользователя в rds windows server 2022r2

Совет. Для отключения от сессии пользователя и выхода из shadow-режима нужно нажать ALT * на рабочей станции или Ctrl * на терминальном сервере (если не заданы альтернативные комбинации).

Если же пользователь отклонит подключение, появится окно:

Shadow Error: The operator or administrator has refused the request

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.

ошибка GPO удаленного shadow подключения

Параметры удаленного управлениями 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::

политика Установить правила удаленного управления для пользовательских сеансов служб удаленных рабочих столов

Теневое подключение RDS Shadow из PowerShell

Воспользоваться функционалом теневого подключения к сессии пользователя через теневое подключение Remote Desktop Services можно и из Powershell.

В первую очередь покажем, как получить список сессий на терминальном сервере (сессии пользователей будут сгруппированы в группы в зависимости от их статуса):

Get-RDUserSession | ft Username, UnifiedSessionId, SessionState, HostServer, ApplicationType -GroupBy Sessionstate

Get-RDUserSession Powershell

На данном сервере мы обнаружили три активных терминальных сессии. Подключимся к сессии пользователя с ID сессии 3:

Mstsc /shadow:3 /control

mstsc запуск shadow из powershell
Также для получения списка всех сессии на сервере можно выполнить команду




На экране отобразится список RDP сессий, их ID и статус: активная сесиия (Active) или отключенная (Disconnected).

qwinsta - список RDP сесиий на удаленном сервере

Для получения списка сессий на удалённом сервере выполните команду:

query session /server:servername

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


@echo off

set /P rcomp=»Enter name or IP of a Remote PC: »

query session /server:%rcomp%

set /P rid=»Enter RDP user ID: »

start mstsc /shadow:%rid% /v:%rcomp% /control

:/>  Как открыть командную строку от имени администратора в нужной папке – Вадим Стеркин

Можно поместить данный файл в каталог %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

Вы можете использовать теневое подключение к рабочим столам пользователей на компьютерах с Windows 10 и 8.1.

Как разрешить обычном пользователям использовать теневое подключение

В рассмотренных выше примерах для использования теневого подключения к терминальным сессиям необходимы права локального администратора на RDS сервере. Однако можно разрешить использовать теневое (shadow) подключение для подключения к сессиям пользователей и простым пользователям (не давая им прав локального администратора на сервере).

К примеру, вы хотите разрешить членам группы AllowRDSShadow использовать теневое подключение к сессиям пользователей, выполните команду:

wmic /namespace:\rootCIMV2TerminalServices PATH Win32_TSPermissionsSetting WHERE (TerminalName=’RDP-Tcp’) CALL AddAccount ‘corpAllowRDSShadow’,2

В январе 2022 года после установки обновления KB4056898 (патч Windows против Meltdown и Spectre) пользователи столкнулись, что в Windows Server 2022 R2 перестал работать теневой доступ. При попытке выполнить теневое подключение к чужой сессии появляется сообщение «Неопознанная ошибка» (в логах присутствует ошибка STATUS_BAD_IMPERSONATION_LEVEL). Аналогичная проблема возникала и на RDS ферме на базе Windows Server 2022.

Для решения проблемы нужно установить отдельные обновления:

  • для Windows Server 2022 — KB4057142 (от 17 января 2022)
  • для Windows Server 2022 R2 — KB4057401 (от 17 января 2022)




Shadow firewall rule

In order to access the named pipe set up by the RdpSa.exe process while initiating the shadowing session, the Remote Desktop – Shadow (TCP-In) firewall rule needs to be enabled. Similarly to the Remote Desktop Services service, we will first check if it has already been enabled, and if not, we will enable it.

Termservice service

Check if service is running using either the Service Manager (445/TCP) via sc.exe or the Microsoft Management Console (mmc.exe), or via WMI over DCOM or WinRM using the $s CimSession variable described earlier. If not, service should be started.


If you are testing Remote Desktop shadowing in your lab setup or using it in a Red Team exercise and encounter any errors, this section contains a list of common errors including the causes and potential fixes.

Использование remote desktop shadow из графического gui

Подключиться к сессии пользователя можно с помощью утилиты mstsc.exe или непосредственно из консоли Server Manager. Для этого в консоли Server Manager откройте коллекцию QuickSessionCollection

выберите в контекстном меню Shadow (Теневая копия)

Теневое подключение rds shadow из powershell

Воспользоваться функционалом теневого подключения к сессии пользователя через теневое подключение Remote Desktop Services можно и из Powershell.

В первую очередь покажем, как получить список сессий на терминальном сервере (сессии пользователей будут сгруппированы в группы в зависимости от их статуса):

Оставьте комментарий