Как стать автором
Обновить

Как протокол RDP (почти) вырвался из проприетарного рабства

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров33K
Всего голосов 41: ↑36 и ↓5+43
Комментарии33

Комментарии 33

citrix тут совсем не у дел?

Кто сейчас помнит про Sybase SQL, из которого вырос MS SQL?

Увы, они не успели за прогрессом. Постепенно большую часть их ключевых функций внедрили у себя МС и встал вопрос - а зачем citrix ?

В связи со сложностью проприетарного протокола и внедрением новых функций и закрытым исходным кодом в RDP постоянно находят новые уязвимости.

Можно "улучшить сон" если "спрятать" RDP за SSH или Wireguard туннелем.

Так и не понял из статьи про "вырывание (почти) из рабства"...

Есть опенсорсная реализация как сервера, так и клиента, что для проприетарного протокола уже (почти) хорошо

И чем наличие опенсорсных реализаций делает протокол менее проприетарным?
Или вышла какая-то свежая реализация? Xrdp с 2004го года живет потихоньку...

так этим "почти" MS RDP аналогам сто лет в обед. А если сравнить их качество с MS RDP - как пешком до луны

Да, только они работают а-ля VNC (тупо гоняют битмапы).
Проприетарный же RDP несколько быстрее, так как передаёт по сети GDI-примитивы.

BSOD в WIN10 все еще синий
BSOD
BSOD

Но да, так же часто как в XP, еще до выхода SP3, он не падает.

Кстати, есть видео из первых рук (ну ладно, из вторых) о том, как BSOD эволюционировал: https://www.youtube.com/watch?v=KgqJJECQQH0

Microsoft Remote Desktop (находится в Microsoft Store, отличается от MSTSC).

Внутри использует COM компонент и написан на C#.
Поэтому его легко реверсануть и написать свою реализацию.
(Про остальные не знаю, не изучал)

Но наличие решений испольующих этот компонент, не приближает открытости решения, как это НЕ произошло с Trident'ом...
Думается мне, единственный вариант появления открытого решения - если бизнес начнёт платить за реверс, как это произошло с Biff8.

Это одна из причин, почему админы часто ставили Windows Server даже на персоналки. Они тогда говорили, что Windows Server 2012 даже работает стабильнее, чем обычная Windows 7, почти никогда не падает.

Почему в прошедшем времени? И сейчас 2022 сильно приятней 10/11, не надо постоянно бороться с системой, один раз настоил и вперёд. Удобно, что нужные компоненты можно добавить в несколько кликов, а не наоборот, отковыривать от клиентской версии ненужный шлак...

Единственная проблема, с которой я пока что столкнулся

— запоротый драйвер I²C-периферии, так что не на все ноуты можно воткнуть сервер. Драйвер от 10ки удалось запихнуть, но стартовать он почему-то отказывается

Кстати до недавнего времени Microsoft Remote Desktop App из Microsoft Store был уязвим к MitM (легко реализуется через https://github.com/GoSecure/pyrdp) при повторных подключениях к серверу с самоподписанным сертификатом без NLA из-за того, что при указании галки "Don't ask about this certificate again" сохранял в качестве идентификатора trusted сертификата его серийный номер, а не отпечаток.

Ссылка на CVE: https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2023-28290

Исправляли уязвимость полгода (зарепортил 2022-12-03, закрыта 2023-05-25). В какой-то момент после моего репорта на странице заметок о релизах https://aka.ms/rdwinupdates добавилась формулировка "We're no longer updating the Remote Desktop app for Windows with new features"

Благодаря RDP, можно подключиться к другой системе и работать за ней словно за своим компьютером. То же самое делают, например, AnyDesk и TeamViewer, у которых протоколы схожей функциональности.

Всё же не стоит сравнивать RDP со всякими там энидесками. Задачи у них разные. RDP — это удалённая работа в первую очередь, терминальный режим. А тимвьюверы — это удалённое управление, подключение к существующей сессии, проход NAT'а.

anydesk и teamviewer принципиально отличаются от rdp, работают совсем по другому. и открытые клоны (возможно не все) работают так же как anydesk и teamviewer, не используют главный козырь настоящего rdp - передачу изображения в виде векторов

передачу изображения в виде векторов

Не изображений в виде векторов, а GDI-примитивов, подобно тому как xpra или ssh -X пробрасывают отрисовку на клиента.
И которую вам радостно поломают 1С, Autodesk, Adobe, 3DS, любой аудиоплеер или браузер, или даже штатный dwm.

браузер играющий ютуб не ломает. ААА игры тоже

Потому что туда уже лет дохренадцать как впилили AVC с 4:2:2 и 4:4:4, гоняют по нему видеопоток.
Передача примитивов осталась с классической темой XP.

Однажды нехороший мамкин хакер зашел на мой виндоус сервер по RDP и украл около 100к рублей с аккаунта. Сервак был в одном из популярных хостингов и был защищен стандартным паролем. Может быть кому-то пригодится мой совет: максимально защищайте RDP-сервера

Дефолтные пароли нанесли ущерба заметно больше 100к. Да и в среднем надо всё защищать по максимуму, разве что кроме honeypot.

H.264

А откуда дровишки? Насколько знаю там повсеместно используется хитрый вариант RLE.

А зачем RDP использовать? В смешанных стеках одни проблемы. Может посмотреть в стороны VNC или какого-то другого открытого протокола?

Забыли упомянуть RDP-сервер, встроенный в гипервизор VirtualBox. Хотя конечно VNC в нём был бы уместнее.

  • Функция слежки за пользовательскими сессиями со стороны администратора возвращена обратно

Это что за функция? rdp shadow? Так её нельзя использовать для этого на несерверной винде, или подразумевается какая-то другая функция?

можно, даже на Windows 7, только т-с-с-с

вы про нарушение лицензии путём разрешения одновременной работы несколькими пользователями?

нет

Тогда расскижите о методе, мне интересно.

На ОС, к которой надо подключаться, надо разрешить RemoteRPC: HLMK\SYSTEM\CurrentControlSet\Control\Terminal Server, параметр AllowRemoteRPC значение 1 (тип REG_DWORD).

Ну и ещё там же fDenyTSConnections , но подразумеваем, что он включён.

Также можно добавить настройки политики для Shadow, чтобы у пользователя не спрашивать разрешения на подключение:
HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services , параметр Shadow, значение 2 (тоже REG_DWORD).

После этого можно подключаться с удалённых компьютеров.

Если надо подключаться к Windows 7, то придётся найти/создать донора с Windows 2008 R2, затем залогиниться на нём по RDP (роль сервера УРС не нужна, админский сеанс подойдёт), и там выполнить:
shadow console /server:pc-win7

Для ОС после Windows 7 можно откуда угодно и с локального сеанса:
mstsc /v:pc-win10 /shadow:1 /noConsentPrompt /control

Может речь про то что предоставляет sccm? Кажется условный RDP shadow, с подключением поверх юзера управление его манипуляторами удаленно?

Заголовок про одно, статья про другое, чистый кликбейт. Текст чисто про работу RDP. Редко хочется поставить дизлайк, это тот случай.

Предлагаю поменять название статьи на "Протокол RDP и его свободные реализации".


Также из текста статьи был не совсем понятен вот этот переход:


На сервере стоит устройство видеозахвата, которое записывает видео, сжимает его кодеком H.264 — и отправляет клиенту.

На сервере RDP использует собственный видеодрайвер для рендеринга вывода изображения на экран, внедряя информацию о рендеринге в сетевые пакеты с помощью протокола RDP и отправляя их по сети на клиент. На клиенте RDP получает данные рендеринга и интерпретирует пакеты в соответствующие вызовы API интерфейса графических устройств Microsoft Windows (GDI).

Потерялось самое важное — что передаётся в виде видео, а что в виде GDI вызовов, и где у них грань между видео и передачей GDI. Возможно, этой информации нет в том источнике, на основе которого вы готовили статью, но всё равно было бы интересно это узнать, т.к. в этом самая соль "родной реализации RDP".

Зарегистрируйтесь на Хабре, чтобы оставить комментарий