Служба віддалених робочих столів Remote Desktop Services (раніше відома як Terminal Services) — це компонент Microsoft Windows (серверної та клієнтської операційних систем), що дозволяє користувачам віддалено запускати програми або керувати сервером з будь-якої машини, де є клієнт підключення до віддаленого робочого столу та доступ до мережі. У сеансі Remote Desktop Services клієнт потребує доступу до всього середовища віддаленого комп’ютера або йому просто потрібно запустити окремі програми — сервер Remote Desktop Session Host виконує всю обробку та використовує свої апаратні ресурси. Технологія підключення забезпечується безпекою підключення двома способами. Але немає нічого неможливого.
Є методи, які можуть зломати безпеку підключення. Одним з них є брутфорс. Брутфорсом називається метод злому облікових записів шляхом підбору паролів до них. Суть підходу полягає у послідовному автоматизованому переборі всіх можливих комбінацій символів з метою рано чи пізно знайти правильну. Або “людина-всередині”, коли є здатність читати та видозмінювати за своєю волею повідомлення, якими обмінюються кореспонденти, причому жоден з останніх не може здогадатися про сторонню присутність у каналі. Зазвичай починається з прослуховування каналу зв’язку та закінчується намаганням підмінити перехоплене повідомлення, витягти з нього корисну інформацію, перенаправити його на який-небудь зовнішній ресурс. Тому потрібно заздалегідь потурбуватися про свою безпеку та розуміти, що інформація або доступ до неї можуть бути використані третьою особою. Тому у цьому розділі розглянуто інструменти та методи, пов’язані з пошуком та перевіркою захищеності віддалених робочих столів, роботу яких забезпечує служба RDP.
За замовчуванням сервер RDP прослуховує TCP-порт 3389 і UDP-порт 3389.
Комп’ютери з увімкненим віддаленим робочим столом можна шукати за допомогою Nmap командою виду:
Наприклад:
Для збору банерів можна додати опції : -sV –script=banner:
Програма crowbar, яка раніше називалася levye, це інструмент брутфорсу, який підтримує sshkey, vnckey, rdp, openvpn. Особливість програми – це її простота та ефективність.
Установка crowbar у Kali Linux:
Установка crowbar в BlackArch:
Як мету можна вказати діапазон IP адрес у форматі CIDR (опція -s) або файл з такими діапазонами (опція -S). Якщо потрібно вказати лише одну мету (одна IP адреса), просто використовуйте маску /32, наприклад, 192.168.0.101/32. Опцією –U вказує файл зі списком імен користувачів, а опцією -u можна вказати одного користувача. Опцією -C вказує файл зі списком паролів, а опцією -c можна вказати пароль. З опцією -b потрібно вказати протокол для атаки, у разі -b rdp. З опцією -p можна змінити стандартний порт протоколу. Опція -d робить так, що попередньо перевіряється перевірка, чи відкриті порти на вказаних цілях (тобто вказаних за допомогою опцій -S і -s).
Всі опції crowbar: https://kali.tools/?p=3636
Приклад успішної атаки на RDP:
Програма levye також працює, але в ній трохи інші опції:
Patator це найпотужніша програма для брут-форсу безлічі мережевих служб.
Приклад запуску брут-форсу RDP:
Детальніше про використання patator дивіться у картці програми https://kali.tools/?p=269, а також посилання на інструкції внизу картки програми.
Це модифікована версія вже розглянутої програми rdesktop, яка є клієнтом для підключення до Windows Remote Desktop. Ця версія відрізняється від оригінальної тим, що додано патч для брутфорсу. Нагадаю, що програма rdesktop вимагає додаткового налаштування у разі включеної автентифікації на рівні мережі (NLA), тому використовувати її не дуже зручно.
Інструмент rdp-sec-check перевіряє, які використовуються алгоритми шифрування та методи автентифікації, а також деякі інші параметри безпеки. Наприкінці перевірки rdp-sec-check підбиває короткий підсумок про можливі проблеми безпеки служби віддаленого робочого столу.
Встановлення rdp-sec-check у Kali Linux
Встановлення rdp-sec-check у BlackArch
Команда запуску дуже проста:
На скріншоті ви можете бачити методи забезпечення безпеки, що використовуються на віддаленому RDP сервері. Після рядка [+] Summary of security issues (короткий перелік проблем безпеки) нічого немає, отже, явних проблем не виявлено.
Перевіримо інший, менш захищений хост:
Тут ми бачимо такі проблеми безпеки сервера RDP:
В них сказано, що немає NLA і тому можлива атака DOS. Якщо не використовується NLA, то ще й можлива атака людина-посередині. Далі сказано, що SSL підтримується, але не є обов’язковою, що уможливлює атаку MITM (людина-посередині).
Повний перелік скриптів: https://nmap.org/nsedoc/. Серед них я знайшов 3, які стосуються RDP.
Rdp-enum-encryption
Визначає, який рівень безпеки та рівень шифрування підтримуються службою RDP. Це відбувається шляхом циклічного перебору всіх протоколів і шифрів. При запуску в режимі налагодження сценарій також повертає протоколи і шифри, що відмовили, а також всі виявлені помилки.
Rdp-ntlm-info
Цей скрипт перераховує інформацію від віддалених служб RDP із включеною автентифікацією CredSSP (NLA).
Rdp-vuln-ms12-020
Перевіряє, чи є машина вразливою для уразливості MS12-020 RDP.
Для запуску потрібно використовувати опцію –script, після якої можна вказати скрипт, або кілька скриптів через кому:
Також можна задіяти всі скрипти таким чином:
Приклад пошуку серверів RDP у локальній мережі та отримання інформації за допомогою NSE скриптів:
Responder це комплексний інструмент виконання атаки людина-посередині щодо методів аутентифікації Windows. Серед інших є RDP сервер.
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:
Помилка «ImportError: cannot import name ‘RsaKey’ from ‘Crypto.PublicKey.RSA’»
Можливе виникнення наступної помилки:
Для її виправлення виконайте такі команди:
Помилка «The server failed the negotiation. Error: The server requires that the client support Enhanced RDP Security»
Також можлива така помилка:
Причина в тому, що програма не підтримує Network Level Authentication (NLA), тобто перевірку справжності лише на рівні мережі. Network Level Authentication (NLA) є хорошим способом додаткового захисту RDP, оскільки без знання атакуючим пароля користувача Windows неможливо виконати атаку людина-посередині на RDP.
seth виконує атаку MitM і отримує облікові дані у вигляді простого тексту з RDP підключень.
Використання:
Приклад запуску:
sensepost-xrdp це найпростіший інструмент віддаленого робочого столу X11 для експлуатації сесій X11, що не потребують аутентифікації.
sticky-keys-hunter це скрипт для тестування RDP хостів на sticky keys та utilman backdoor.
Використання: