Як виявити комп’ютери з Remote Desktop Protocol (RDP)?

7 квітня 2023 2 хвилин Автор: Endpool

Ломаємо RDP професійно як мамкин хакер

Віддалений робочий стіл дає змогу під’єднатися до іншого комп’ютера, бачити його екран, запускати програми на ньому та працювати за ним так, нібито ви сидите перед ним. Протокол віддаленого робочого столу (Remote Desktop Protocol, RDP) – це пропрієтарний протокол Microsoft, який надає користувачеві графічний інтерфейс для підключення до іншого комп’ютера через мережеве з’єднання. Для цього користувач запускає клієнтське програмне забезпечення RDP, а на іншому комп’ютері має бути запущено програмне забезпечення сервера RDP. Технологія забезпечує безпеку підключення двома способами. У першому використовується внутрішня підсистема (Standard RDP Security). На віддаленій машині генерується пара ключів RSA і сертифікат відкритого ключа, який підписується одним із них. Під час підключення клієнт отримує підписаний сертифікат і відкритий ключ, який використовується для вибору технології шифрування даних. Другий спосіб пропонує використовувати зовнішні засоби забезпечення безпеки (Enhanced RDP Security).

Як приклад розповімо про протокол TLS. Під час ініціалізації підключення він шифрує з’єднання і перевіряє дозвіл користувача на вхід. Такий підхід знижує навантаження на термінальний сервер за великої кількості одночасних підключень. Принцип роботи аналогічний першому варіанту. Як правило, великі компанії використовують другий варіант, а невеликі – перший. Протокол RDP використовується для віддаленого підключення тільки в середовищі Windows. З’єднання повністю безпечне, оскільки використовує шифрування і процедуру аутентифікації користувачів. Для інших операційних систем існує спеціальне ПЗ, яке підтримує роботу з RDP. Принцип роботи аналогічний першому варіанту. Як правило, великі компанії використовують другий варіант, а невеликі – перший. Протокол RDP використовується для віддаленого підключення тільки в середовищі Windows. З’єднання повністю безпечне, оскільки використовує шифрування і процедуру аутентифікації користувачів. Для інших операційних систем існує спеціальне ПЗ, яке підтримує роботу з RDP.

Пошук RDP по відкритих портах

За замовчуванням сервер RDP прослуховує TCP-порт 3389 і UDP-порт 3389 але його можна змінити на будь який. Спочатку нам потрібен список IP-діапазонів їх можна знайти тут:

Або будь-який зручний “ip діапазонер”. Шукаємо потрібні нам країни. Копіюємо всі гуди. Тепер створюємо на робочому столі папку з якимось “Діапазоном” частин світу, звідки були взяті країни – створюємо в ній текстовий файл і вставляємо скопійований текст. Копіюємо все, що видали, створюємо другий текстовий файл у нашій папці «Діапазону», вставляємо, зберігаємо. Тепер переходимо до програм.

Пошук RDP за допомогую Router Scan

Звісно ця програма не для RDP але вона теж їх може знайти.

Тут все просто вказуємо діапазон ір адрес і порт 3389 і чекаємо на результат, далі вигружаємо список адрес в текстовий файл, редактуємо його залишаючи тільки ір адреси, їх ми будемо використовувати для брута в crowbar.

Пошук RDP за допомогую SHODAN

Пошук систем з RDP дав такий результат:

Серед знайдених систем можна виявити вразливі та підключитися до них. Ось приклад:

Почнемо зі збирання інформації про систему. Поки що я не зачіпатиму раніше знайдену систему, а розповім про способи злому RDP, щоб у результаті за допомогою отриманої інформації ми змогли зламати тачку. Зразок де є вразловості CVE-2019-0708 але нема відкрітого порту 445.

Уразливість віддаленого виконання коду існує в службах віддаленого робочого стола, раніше відомих як служби терміналів, коли неавтентифікований зловмисник підключається до цільової системи за допомогою протоколу RDP і надсилає спеціально створені запити, відомі як «уразливість віддаленого виконання коду служб віддаленого робочого столу».

Збір інформації за допомогою Nmap:

Комп’ютери з включеним віддаленим робочим столом можна шукати за допомогою Nmap командою виду:

Наприклад:

Для збору банерів можна додати опції -sV –script=banner ( Nmap ):

rdp-enum-encryption – визначає рівень безпеки та шифрування.

rdp-ntlm-info – перераховує інфу від віддалених служб RDP із включеною автентифікацією CredSSP (NLA).

rdp-vuln-ms12-020 – перевіряє систему на вразливість ms12-020.

Для запуску всіх скриптів одразу:

Популярні порти:

Збір інформації за допомогою rdp-sec-check

Інструмент rdp-sec-check перевіряє, які використовуються алгоритми шифрування та методи автентифікації, а також деякі інші параметри безпеки. Наприкінці перевірки rdp-sec-check підбиває короткий підсумок про можливі проблеми безпеки служби віддаленого робочого столу.

Ключові особливості:

  • Підтримує файли зі списком цілей.

  • Підтримує збереження виведення інструменту у вказаний файл журналу.

  • Контроль часу з’єднання та відповідей.

  • Контролює кількість повторних спроб при перевищенні часу очікування.

Огляд:

rdp-sec-check – це скрипт Perl для переліку різних налаштувань безпеки служби віддаленого робочого столу (Terminal Services). Не вимагає аутентифікації, лише мережне підключення до TCP-порту 3389. Він може визначити багато (хоч і не всі) параметрів безпеки із вкладки RDP-Tcp Properties | General:

  • Перевірка, які рівні безпеки підтримуються службою: Standard RDP Security, TLSv1.0, CredSSP;
  • Для Standard RDP Security інструмент визначає рівень шифрування, що підтримується: 40-біт, 56-біт, 128-біт, FIPS.

Наступні потенційні проблеми безпеки позначені, якщо вони є:

  • Служба підтримує Standard RDP Security – відомо, що він вразливий для активної атаки “людина посередині”;

  • Сервіс підтримує слабке шифрування (40-бітове або 56-бітове);
  • Служба не вимагає автентифікації на рівні мережі (NLA) — NLA може допомогти запобігти певним типам атак «відмова в обслуговуванні»;
  • Сервіс підтримує шифрування FIPS, але не вимагає його — може бути цікавим лише для юрисдикцій, де потрібна FIPS.

Домашня сторінка: https://github.com/portcullislabs/rdp-sec-check

Використання:

Опції:






Приклади запуску rdp-sec-check

Перевірити хост 192.168.0.101 :

Перевірити безліч хостів, вказаних у файлі (–file hosts.txt) з таймаутом в 15 секунд (–timeout 15) і трьома спробами (–retries 3) :

Перевірити службу хоста RDP на 3389 порту (192.168.69.69:3389) і зберегти отримані дані у файл (–outfile rdp.log) :

Перевірити безліч хостів, вказаних у файлі (–file hosts.txt) і зберегти отримані дані у файл (–outfile rdp.log) використовуючи докладний висновок (–verbose) :

Тут ми бачимо наступні проблеми безпеки сервера RDP:


В ниx сказано, що немає NLA і тому можлива атака DOS. Від себе додам, якщо не використовується NLA, то ще й можлива атака людина-посередині. Далі сказано, що SSL підтримується, але не є обов’язковою, що уможливлює атаку MITM (людина-посередині). Якщо після рядка “[+] Summary of security issues” (короткий перелік проблем безпеки) нічого немає, явних проблем не виявлено.

Встановлення в Kali Linux & Parrot Linux:





BruteForce:

Для атаки брутфорсом розглянемо crowbar. Для початку встановимо crowbar:

або так:



І підтверджуємо установку, натиснувши клавішу Y, коли це буде потрібно. Як мета можна вказати навіть цілий діапазон IP-адрес за допомогою опції -S file.txt, де “file.txt” – файл з IP-адресами. Опцією -s можна вказати діапазон IP-адрес у форматі CIDR. Якщо потрібно вказати одну мету, використовується -s ip/32 де “32” – це маска.

Команда для атаки:

або:

-b rdp – протокол.

-U user.txt – файл із користувачами.

-C – файл із паролями.

-s – Ціль.


















SHODAN

На прикладі з shodan:

Візьмемо раніше знайдену машину і спробуємо отримати до неї доступ по RDP, використовуючи вищенаведену інформацію. Для початку зберемо інформацію про сервер. До речі, на шодані відразу вказані відкриті порти і серед них є 445 (вразливість eternalblue або ms17_010):

Введемо команду для перевірки безпеки через rdp-sec-check:

Як видно, на сервері є проблеми. Можна відтворити Dos або MITM-атаку. Також тут слабке шифрування. Тепер введемо команду для збору інформації через nmap:

Інформації по серверу достатньо, щоб зрозуміти, що адмін не морочився з його безпекою. Спробуємо використати crowbar для атаки за словником. Для цього качаємо утиліту  https://github.com/Bitwise-01/Passwords

Переходимо до папки, куди завантажили інструмент Passwords:

і запускаємо його за допомогою команди:

Тут потрібно ввести ключові слова, які відомі про жертву (ім’я комп’ютера, організації, дата народження, найменування мережі тощо).

Коли ви завершите процедуру заповнення словника, впишіть слово gererate і побачите, як буде згенерований словник.Коли ви завершите процедуру заповнення словника, впишіть слово gererate і побачите, як буде згенерований словник.

Далі будемо використовувати брутофрс:

Підключення:

Погоджуємось із сертифікатом (yes). Для перемикання повноекранного режиму на віконний:

Pass-The-Hash:

У Kali Linux за замовчуванням встановлений опенсорсний RDP-клієнт xfreerdp, який здатний підключатися до системи по хешу. Цей хеш зберігається на системі, до якої потрібно підключитись у форматі NT.

Команда для атаки:

де після / d: – Ім’я домену,

після /u: – ім’я користувача,

після / pth: -хеш,

після /v: – IP сервера.

Але є тонкість цього. Такий метод працюватиме лише адміністратора, тобто підключиться до користувачів із групи RDP Users не можна. Ви можете встановити xFREERDP 11 використовуючи Terminal.

Синтаксис команди для freerdp-x11 такий:

Атака людина посередині на RDP

Responder

Responder – це комплексний інструмент виконання атаки людина-посередині щодо методів аутентифікації Windows. Серед інших шахрайських серверів, у програмі є RDP сервер.

pyrdp

pyrdp —це інструмент для атаки людина-посередині та бібліотека для роботи з RDP написані на Python 3.

Включає три інструменти:

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

У pyrdp немає власного спуфера, тому перенаправлення трафіку потрібно виконувати сторонніми інструментами, такими як bettercapEttercap або 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), тобто перевірку справжності лише на рівні мережі. Докладніше про це сказано тут: https://github.com/GoSecure/pyrdp/issues/168

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

seth

seth виконує атаку MitM і отримує облікові дані у вигляді простого тексту з RDP підключень.

Використання:

Приклад запуску:

Інші програми

sensepost-xrdp

sensepost-xrdp це найпростіший інструмент віддаленого робочого столу X11 для експлуатації сесій X11, що не потребують аутентифікації.

sticky-keys-hunter

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

Використання:

Інші статті по темі
КібервійнаШпаргалки для хакера
Читати далі
Повний список інструментів для тестування і злому проникнення для хакерів і фахівців з безпеки
Список із найважливіших хакерських інструментів, які широко використовуються мільйонами спеціалістів з безпеки та тисячами організацій по всьому світу.
551
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.