Аудит безопасности RDP


Оглавление: Всё о RDP: от настройки до взлома

1. Удалённый рабочий стол RDP: как включить и как подключиться по RDP

2. RDP в Linux: запуск сервера и подключение к Windows

3. Аудит безопасности RDP

3.1 Как обнаружить компьютеры с Remote Desktop Protocol (RDP)

3.1.1 Поиск RDP по открытым портам

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

3.2 Брут-форс RDP

3.2.1 crowbar (levye)

3.2.2 patator

3.2.3 rdesktop-brute

3.3 Сбор информации об RDP и через RDP

3.3.1 rdp-sec-check для получения характеристик настроек безопасности RDP службы

3.3.2 Скрипты Nmap для сбора информации и аудита RDP

3.4 Атака человек-посередине на RDP

3.4.1 Responder

3.4.2 pyrdp

3.4.3 seth

3.5 Прочие программы

3.5.1 sensepost-xrdp

3.5.2 sticky-keys-hunter



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

Как обнаружить компьютеры с Remote Desktop Protocol (RDP)

Поиск RDP по открытым портам

По умолчанию RDP сервер прослушивает TCP-порт 3389 и UDP-порт 3389, поэтому компьютеры с включённым удалённым рабочим столом можно искать с помощью Nmap командой вида:

sudo nmap -p 3389 -sU -sS СЕТЬ

Например:

sudo nmap -p 3389 -sU -sS --open 192.168.0.0/24

Для сбора баннеров можно добавьте опции -sV —script=banner (Рецепты Nmap):

sudo nmap -p 3389 -sU -sS -sV —script=banner 192.168.0.0/24

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

Проверить наличие запущенной службы RDP можно и обычными утилитами.

В Windows:

В Linux:

xfreerdp /f /u:ИМЯ-ПОЛЬЗОВАТЕЛЯ /p:ПАРОЛЬ /v:ХОСТ[:ПОРТ]
rdesktop -u ПОЛЬЗОВАТЕЛЬ -p ПАРОЛЬ ХОСТ

Брут-форс RDP

crowbar (levye)

Программа crowbar, которая раньше называлась levye, это инструмент брут-форса, который поддерживает sshkey, vnckey, rdp, openvpn.

Особенность программы — это её простота и эффективность.

Установка crowbar в Kali Linux

sudo apt install crowbar freerdp2-x11 openvpn nmap

Установка crowbar в BlackArch

sudo pacman -S crowbar freerdp openvpn nmap

В качестве цели можно указать диапазон IP адресов в формате CIDR (опция -s), либо файл с такими диапазонами (опция -S). Если нужно указать только одну цель (один IP адрес), то просто используйте маску /32, например, 192.168.0.101/32.

Опцией -U указывает файл со списком имён пользователей, а опцией -u можно указать одного пользователя.


Опцией -C указывает файл со списком паролей, а опцией -c можно указать один пароль.

С опцией -b нужно указать протокол для атаки, в данном случае это -b rdp.

С опцией -p можно изменить стандартный порт протокола.

Опция -d делает так, что предварительно проверяется проверка, открыты ли порты на указанных целях (т. е. указанных с помощью опций -S и -s). Проверка делается программой nmap.

Все опции crowbar: https://kali.tools/?p=3636

Пример успешной атаки на RDP:

sudo crowbar -b rdp -U user.txt -C passwords.txt -s 192.168.0.101/32

Программа levye также работает, но в ней чуть другие опции, пример запуска:

levye -b rdp -u logins.txt -c passwords.txt -s 192.168.0.101/32

patator

patator это мощнейшая программа для брут-форса множества сетевых служб.

Пример запуска брут-форса RDP:

patator rdp_login host=192.168.0.101 user=FILE0 password=FILE1 0=user.txt 1=passwords.txt -x ignore:fgrep='ERRCONNECT_LOGON_FAILURE'

Более подробно об использовании patator смотрите в карточке программы https://kali.tools/?p=269, а также по ссылкам на инструкции внизу карточки программы.

rdesktop-brute

Это модифицированная версия уже рассмотренной программы rdesktop, которая является клиентом для подключения к Windows Remote Desktop. Эта версия отличается от оригинальной тем, что добавлен патч для брут-форса.

Напомню, что программа rdesktop требует дополнительной настройки в случае включённой проверки подлинности на уровне сети (NLA), поэтому пользоваться её не очень удобно.

Сбор информации об RDP и через RDP

rdp-sec-check для получения характеристик настроек безопасности RDP службы

Инструмент rdp-sec-check проверяет, какие используются алгоритмы шифрования и методы аутентификации, а также некоторые другие настройки безопасности. В конце проверки rdp-sec-check подводит краткий итог о возможных проблемах безопасности службы удалённого рабочего стола.


Установка rdp-sec-check в Kali Linux

sudo cpan
install Encoding::BER
Ctrl+d
wget https://raw.githubusercontent.com/portcullislabs/rdp-sec-check/master/rdp-sec-check.pl
chmod +x rdp-sec-check.pl
./rdp-sec-check.pl --help

Установка rdp-sec-check в BlackArch

sudo pacman -S rdp-sec-check

Команда для запуска очень простая:

rdp-sec-check ХОСТ

Например:


rdp-sec-check 192.168.0.101

На скриншоте вы можете видеть используемые на удалённом RDP сервере методы обеспечения безопасности. Можно увидеть, что после строки [+] Summary of security issues (краткий перечень проблем безопасности) ничего нет, значит явных проблем не выявлено.

Проверим другой, менее защищённый хост:

rdp-sec-check 192.168.0.89

Здесь мы видим следующие проблемы безопасности сервера RDP:

[+] Summary of security issues

[-] 192.168.0.89:3389 has issue NLA_NOT_SUPPORTED_DOS
[-] 192.168.0.89:3389 has issue SSL_SUPPORTED_BUT_NOT_MANDATED_MITM

В них сказано, что не используется NLA и поэтому возможна атака DOS. От себя добавлю, что если не используется NLA, то ещё и возможна атака человек-посередине. Далее сказано, что SSL поддерживается, но не является обязательной, что делает возможной атаку MITM (человек-посередине).

Скрипты Nmap для сбора информации и аудита RDP

Полный перечень скриптов: https://nmap.org/nsedoc/

Среди них я нашёл 3, имеющих отношение к RDP:

rdp-enum-encryption

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

rdp-ntlm-info

Этот скрипт перечисляет информацию от удалённых служб RDP с включённой аутентификацией CredSSP (NLA).

rdp-vuln-ms12-020

Проверяет, является ли машина уязвимой для уязвимости MS12-020 RDP.

Для запуска нужно использовать опцию —script, после которой можно указать скрипт, либо несколько скриптов через запятую:

sudo nmap -p 3389 -sU -sS --script rdp-enum-encryption,rdp-ntlm-info,rdp-vuln-ms12-020 192.168.0.101

Также можно задействовать все скрипты следующим образом:

sudo nmap -p 3389 -sU -sS --script 'rdp-*' 192.168.0.101

Пример поиска серверов RDP в локальной сети и получение информации с помощью NSE скриптов:

sudo nmap -p 3389 -sU -sS --script 'rdp-*' 192.168.0.0/24

Атака человек-посередине на RDP

Responder

Responder это комплексный инструмент для выполнения атаки человек-посередине в отношении методов аутентификации Windows. Среди прочих жульнических серверов, в программе имеется RDP сервер.

Смотрите пример использования Responder в статье «Взлом сетевой аутентификации Windows».

pyrdp

pyrdp — это инструмент для атаки человек-посередине и библиотека для работы с RDP написанные на Python 3.

Включает в себя три инструмента:

  • pyrdp-clonecert
  • pyrdp-mitm
  • pyrdp-player

В pyrdp отсутствует собственный спуфер, поэтому перенаправление трафика нужно выполнять сторонними инструментами, такими как bettercap, Ettercap или MITMf.

Автор pyrdp создал свою собственную версию bettercap, главное отличие от оригинальной, которая при атаке перенаправляет весь трафик, в том, что эта версия перенаправляет только RDP трафик. Подробности об этом здесь: https://github.com/GoSecure/pyrdp/blob/master/docs/bettercap-rdp-mitm.md

Пример запуска атаки человек-посередине на RDP с помощью pyrdp:

pyrdp-mitm 192.168.0.101

Ошибка «ImportError: cannot import name 'RsaKey' from 'Crypto.PublicKey.RSA'»

Возможно возникновение следующей ошибки:

Traceback (most recent call last):
  File "/usr/bin/pyrdp-mitm", line 16, in <module>
    from pyrdp.core import settings
  File "/usr/lib/python3.8/site-packages/pyrdp/core/__init__.py", line 9, in <module>
    from pyrdp.core.FileProxy import FileProxy, FileProxyObserver
  File "/usr/lib/python3.8/site-packages/pyrdp/core/FileProxy.py", line 10, in <module>
    from pyrdp.core.observer import Observer
  File "/usr/lib/python3.8/site-packages/pyrdp/core/observer.py", line 7, in <module>
    from pyrdp.pdu import PDU
  File "/usr/lib/python3.8/site-packages/pyrdp/pdu/__init__.py", line 28, in <module>
    from pyrdp.pdu.rdp.connection import ClientChannelDefinition, ClientClusterData, ClientCoreData, ClientDataPDU, \
  File "/usr/lib/python3.8/site-packages/pyrdp/pdu/rdp/connection.py", line 10, in <module>
    from Crypto.PublicKey.RSA import RsaKey
ImportError: cannot import name 'RsaKey' from 'Crypto.PublicKey.RSA' (/usr/lib/python3.8/site-packages/Crypto/PublicKey/RSA.py)

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

sudo pip3 uninstall PyCrypto
sudo pip3 uninstall PyCryptodome
sudo pip3 install PyCryptodome

Ошибка «The server failed the negotiation. Error: The server requires that the client support Enhanced RDP Security»

Также возможна такая ошибка:

[2020-04-17 15:37:52,717] - INFO - Joyce154823 - pyrdp.mitm.connections.tcp - New client connected from 192.168.0.53
[2020-04-17 15:37:52,717] - INFO - Joyce154823 - pyrdp.mitm.connections.x224 - Cookie: mstshash=Tester
[2020-04-17 15:37:52,718] - INFO - Joyce154823 - pyrdp.mitm.connections.tcp - Server connected
[2020-04-17 15:37:52,723] - INFO - Joyce154823 - pyrdp.mitm.connections.x224 - The server failed the negotiation. Error: The server requires that the client support Enhanced RDP Security (section 5.4) with CredSSP (section 5.4.5.2).
[2020-04-17 15:37:52,725] - INFO - Joyce154823 - pyrdp.mitm.connections.tcp - Server connection closed. Connection to the other side was lost in a non-clean fashion: Connection lost.

Причина её в том, что на данный момент программа не поддерживает Network Level Authentication (NLA), то есть проверку подлинности на уровне сети. Чуть подробнее об этом сказано здесь: https://github.com/GoSecure/pyrdp/issues/168

Network Level Authentication (NLA) является хорошим способом дополнительной защиты RDP, поскольку без знания атакующим пароля пользователя Windows становится невозможно выполнить атаку человек-посередине на RDP.

seth

seth выполняет атаку MitM и извлекает учётные данные в виде простого текста из RDP подключений.

Использование:

/usr/share/seth/seth.sh <INTERFACE> <ATTACKER_IP> <VICTIM_IP> <GATEWAY_IP|HOST_IP>

Пример запуска:

sudo seth wlo1 192.168.0.89 192.168.0.101 192.168.0.1

Прочие программы

sensepost-xrdp

sensepost-xrdp это простейший инструмент удалённого рабочего стола X11 для эксплуатации сессий X11 не требующих аутентификации.

sticky-keys-hunter

sticky-keys-hunter это скрипт для тестирования RDP хостов на sticky keys и utilman backdoor.

Использование:

sticky-keys-hunter ЦЕЛЕВОЙ_IP

Рекомендуется Вам:

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

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