Захват сеанса RDP с помощью Tscon

Дата: 09.09.2020. Автор: Игорь Б. Категории: Статьи по информационной безопасности

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

Знакомство с RDP

RDP расшифровывается как Remote Desktop Protocol (протокол удаленного рабочего стола), он работает на портах TCP / UDP номер 3389, созданных Microsoft. Позже протокол был применен и на других операционных системах. Он позволяет человеку удаленно подключаться к другому пользователю с помощью графического интерфейса. Программа идет по умолчанию с Windows, однако существует и множество сторонних инструментов, доступных для тех же целей. Этот протокол был разработан именно для удаленного управления системами и приложениями.

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

RDP 6.0 обладает различными функциями. Со всеми его возможностями можно ознакомиться ниже:

  • Приложения Windows Presentation Foundation и удаленное взаимодействие с ними;
  • Поддержка нескольких мониторов;
  • Переадресация;
  • Aero Glass Remoting;
  • Зашифрованное соединение;
  • Сокращение полосы пропускания;
  • Поддержка до 64 000 каналов для передачи данных.

Работа с RDP

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

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

Знакомство с tscon

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

Подробное руководство

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

Как можно увидеть, на изображении ниже есть два пользователя – yashika и pavan.

Теперь нужно получить IP-адрес yashika (пользователь 1) с помощью команды ipconfig точно так же, как это сделано на рисунке ниже:

Необходимо запустить приложение подключения к удаленному рабочему столу и ввести IP-адрес целевой системы, в данном случае, это IP yashika (пользователь 1), а затем нажать на кнопку «Connect», как показано на рисунке ниже:

Когда пользователь нажмет на кнопку «Connect», у него запросят учетные данные для yashika (пользователь 1), как показано ниже:

После того как пользователь ввел учетные данные, ему следует нажать на кнопку «ОК». Как только он сделает это, графический интерфейс удаленного рабочего стола будет активирован. Теперь, когда у человека есть доступ к yashika (пользователь 1), он будет использовать несколько команд из командной строки, чтобы сначала проверить информацию pavan (пользователь 2), такую как идентификатор пользователя, а затем – команду tscon для создания процесса, который будет взаимодействовать с ним (пользователь 2). Человек запустит этот процесс, чтобы включить графический интерфейс удаленного рабочего стола pavan (пользователь 2).

Синтаксис:

sc create <process_name> binpath= "cmd.exe /k tscon <user 2_ID> /dest:<session_name>"

Команды:

query user
sc create hijack binpath= "cmd.exe /k tscon 2 /dest:rdp-tcp#1"
net start hijack

Как пользователь может увидеть на изображении ниже, у него есть графический интерфейс удаленного рабочего стола pavan (user 2), который можно проверить с помощью команды whoami.

Диспетчер задач

Теперь то же самое можно сделать и с помощью Диспетчера задач. Единственное условие этого способна – нужно знать учетные данные всех пользователей. А затем, задействуя аналогичный метод, просто получить удаленный сеанс GUI yashika (пользователь 1), открыть Диспетчер задач и перейти на вкладку “user”. На вкладке «user» читатели могут увидеть yashika (пользователь 1) точно так же, как и на изображении ниже. Далее следует щелкнуть правой кнопкой мыши на pavan (пользователь 2). Появится выпадающее меню. В этом меню пользователю необходимо нажать на кнопку «Connect».

Как только пользователь нажмет на кнопку «Connect», система будет запрашивать у него учетные данные pavan (пользователя 2), как показано на рисунке ниже:

Как только пользователь введет учетные данные, графический интерфейс удаленного сеанса pavan будет инициирован, как показано на рисунке ниже. А затем он снова сможет проверить сеанс с помощью команды whoami.

Mimikatz

Еще один способ захвата RDP – с помощью Mimikatz. Это один из лучших методов, так как нет никаких особых требований. Как только пользователь соединится с yashika (user1), нужно запустить всем знакомую программу Mimikatz. Следует использовать следующую команду, чтобы получить различную информацию о пользователе:

ts::sessions

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

privilege::debug
token::elevate

А когда привилегии уже получены, человек использует следующую команду, чтобы инициировать удаленное соединение рабочего стола с pavan (пользователь 2):

ts::remote /id:1

Здесь, в id:1, 1 – это номер сеанса, который пользователь получил с помощью команды ts:: sessions.

Как только вышеуказанный набор команд будет выполнен, пользователь установит удаленное соединение с pavan (пользователь 2) через yashika (пользователь 1).

Митигирование

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

  • Следует применять различные групповые политики, такие как выход из отключенного сеанса после отключения пользователя;
  • Необходимо реализовать сегментацию сети, то есть не показывать RDP в Интернете;
  • Пользователь также может применить двухфакторную аутентификацию;
  • Отключать RDP не нужно;
  • Следует убедиться, что сотрудники знают, как осуществляется захват RDP;
  • Надо ограничить права доступа пользователя к RDP;
  • Регулярно проверять пользователей удаленных рабочих столов;
  • Заниматься мониторингом tscon.exe;
  • Следить за всеми службами, использующими cmd.exe /k или cmd.exe /c parameters в отношении RDP.

Условия для проведения практической работы

  • Для подключения к другому сеансу необходимо иметь разрешение на доступ с полным контролем или специальное разрешение на подключение;
  • Параметр /dest:<SessionName> позволяет подключить сеанс другого пользователя к иному сеансу;
  • Если пользователь не задаст пароль в параметре <Password>  и целевой сеанс принадлежит пользователю, отличному от текущего, tscon не сможет быть эффективным;
  • Пользователь не может подключиться к сеансу консоли.

TL; DR

Злоумышленники могут подключаться к различным системам/пользователям в сети с использованием протокола RDP. Этот метод известен как захват сеанса удаленного рабочего стола. Они могут использовать вариативные методы сброса учетных данных, чтобы получить их для RDP, но такие инструменты, как Mimikatz, позволяют человеку задействовать сеансы RDP, даже не зная учетных данных. Этот может быть выполнено как удаленно, так и локально как для активных, так и для отключенных сеансов. Также это можно сделать с помощью следующих команд:

query user
sc create hijack binpath= "cmd.exe /k tscon 2 /dest:rdp-tcp#1"
net start hijack

tscon.exe позволяет злоумышленнику получить сеанс RDP без наличия учетных данных. Это также можно выполнить с помощью Диспетчера задач (что описано выше в статье) или Mimikatz. Для это следует использовать следующие команды:

privilege::debug
token::elevate
ts::remote /id:1

Заключение

Захват сеанса RDP был осуществлен в больших масштабах. Многие серверы C2, такие как Cobalt Strike и Kodiac, позволяют пользователю инициировать соединение RDP, что в дальнейшем приводит к боковому перемещению, такому как захват сеанса RDP. Злоумышленник использовал эту технику в нескольких атаках высокого уровня. Например, Lazarus Group использовала RDP для распространения, WannaCry пытается выполнить себя в каждом сеансе, Leviathan нацелился на учетные данные RDP и использовал их для перемещения по сети, FIN8 применил RDP для бокового перемещения. Поэтому важно знать о таким методах и особой технике защиты. Это один из популярных методов бокового перемещения, поскольку он не создает надлежащих журналов событий, что позволяет атакующему замести свои следы. Такой способ также может указать злоумышленнику на удаленное обнаружение системы. И все это делается с помощью простых команд Windows.

Автор переведенной статьи: Yashika Dhir.

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Поделиться ссылкой

Игорь Б

Об авторе Игорь Б

Автор на портале cisoclub.ru. Добавляйте ваш материал на сайт в разделе "Разместить публикацию".
Читать все записи автора Игорь Б

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

пять × 4 =