Як захистити своє RDP-підключення
Зросла останніми роками популярність підключень робочого столу Windows або, як кажуть, RDP-підключень, що призвели до різкого стрибка кількості атак на RDP-сервера і робочі станції. Причому, більша їх частина буває успішною, що вносить нестабільність у роботу мережі та втрату конфіденційних даних компаній і їхніх співробітників. Боротьбу з цим явищем кілька років тому почала компанія Microsoft, випустивши 2019 року патч із закриття вразливостей у службі. І з кожним випуском нового патча цей процес триває досі. Водночас додатковий захист може забезпечити вибір перевіреного хостинг-провайдера з надійною інфраструктурою, орієнтованого на безпеку та стабільність. Однак усе одно залишається досить багато шляхів проникнення в систему через RDP-підключення, деякі з яких залежать від самих користувачів, які не дотримуються правил безпеки під час налаштування та використання підключення. Розглянемо основні з відомих вразливостей, а також можливі шляхи їх усунення.
Основні вразливості та типи атак на RDP
Уразливості в безпеці служби зумовлені багатьма факторами, більшість із яких не пов'язані безпосередньо з протоколом RDP (Remote Desktop Protocol), а спричинені такими причинами, як, наприклад, помилки в реалізації компонентів і служб, неправильна конфігурація протоколу, недотримання користувачами правил безпеки та багатьма іншими.
Для пошуку і виявлення вразливостей у роботі служби зловмисники зазвичай використовують низку спеціалізованих програм, наявних у відкритому доступі. Їхнім початковим завданням є збір інформації про всі RDP-підключення - статуси TCP і UDP портів (для служби за замовчуванням використовується порт 3389), поточна конфігурація протоколу, перевірка на наявність у каналі SSL-шифрування та деякі інші дані.
Наведемо приклад використання відомого мережевого сканера (утиліта Nmap) для виявлення стану портів та іншої інформації на нашому хості. Для цього наберемо в терміналі Linux таку команду:
$ nmap -T5 -sV -O localhost
Тут опція -T5 визначає тип сканування; опція sV задає перевірку відкритих портів і визначення версій служб; опція -O задає виявлення ОС; localhost - задає сканування всіх портів на локальному IP 127.0.0.1 .
Нижче наведено вибіркові результати сканування хоста.
Вихід команди:
Host is up (0.000072s latency).
Other addresses for localhost (not scanned): ::1
Not shown: 997 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 9.2p1 Debian 2+deb12u5 (protocol 2.0)
25/tcp open smtp Exim smtpd 4.96
8443/tcp open ssl/https-alt
Замість локального хоста ми могли б вказати будь-який сегмент мережі й отримати дані про всі порти та RDP-підключення обраного сегмента.
Утиліта Nmap має низку готових скриптів для збору даних про підключення, їхні назви вводяться в командному рядку під час її запуску. Наприклад, скрипт rdp-enum-encryption виявляє рівень шифрування RDP-каналу. Це реалізується за рахунок циклічного перебору відомих засобів шифрування переданих даних. У разі, якщо виявилося, що в каналі відсутнє SSL-шифрування, зловмисник може застосувати атаку типу «людина посередині», яка буде розглянута нами нижче за текстом.
Залежно від результатів роботи програми-сканера виконуються подальші дії по здійсненню злому, тобто, обирається найбільш підходящий тип атаки в кожній конкретній ситуації.
Виділимо основні вразливості, наявні в каналі:
- Слабкий парольний захист;
- Відсутність шифрування в каналі;
- Неправильне налаштування протоколу;
- Помилки в реалізації RDP-служби;
- Помилки в компоненті RDG;
- Перехоплення сеансу.
Розглянемо детальніше кожен зі шляхів злому.
Слабкий парольний захист
Це один з основних шляхів проникнення, зумовлений використанням користувачами служби ненадійного або малонадійного пароля для свого облікового запису Windows. Саме тут зловмисники намагаються насамперед знайти «дірку» в безпеці і це їм часто вдається. Перехопивши облікові дані хоча б одного користувача, можна легко отримати доступ до всіх інших акаунтів і переданих каналом даних.
Такий вид атак належить до категорії Brute-Force (грубий злом). Принцип їх здійснення полягає у виконанні операцій послідовного підбору паролів і логінів для всіх облікових записів користувачів однієї або декількох станцій обраного мережевого сегмента. Такі атаки отримали загальну назву «атаки методом підбору». Вони мають низку різновидів залежно від деталей реалізації - підбір за словником, з підстановкою облікових даних, з розпорошенням паролів і деякі інші.
Для здійснення цього виду атаки можуть використовуватися такі програми, як, наприклад, Hydra або Crowbar, що мають широкі можливості для здійснення різних способів підбору паролів та інших облікових даних.
Наведемо приклад застосування утиліти Crowbar для організації атаки на підключення робочого столу.
У разі використання для злому тільки одного пароля і списку імен користувачів, що міститься в окремому файлі, реалізація атаки методом підбору для однієї IP-адреси може виглядати так:
$ ./crowbar.py -b rdp -s 192.168.2.209/32 -U ~/Desktop/user_list1 -c 123456
Тут ~/Desktop/user_list1 - шлях до файлу з іменами користувачів; 123456 - один із найпоширеніших у мережі паролів.
Для «опрацювання» підмережі з багатьма станціями, за наявності списків паролів та імен користувачів атака може бути реалізована таким чином:
$ ./crowbar.py -b rdp -s 192.168.2.0/24 -U ~/Desktop/all_users -C ~/Desktop/all_passwords -d
У разі використання користувачами «слабких» паролів зловмисники матимуть великі шанси на «успіх». Що стосується імен користувачів або логінів, то їх збір не складає великих труднощів. Імена співробітників легко можна перехопити з корпоративного листування або взяти з відкритих джерел, наприклад, таких як Linkedin і багатьох інших ресурсів для професіоналів і / або комерційних компаній.
Для захисту від атак розглянутого виду може допомогти правильне налаштування локальної політики безпеки на робочих станціях під ОС Windows. Наприклад, якщо в налаштуваннях обмежити кількість невдалих під'єднань до комп'ютера до 2-х або 3-х спроб, то після їхнього використання обліковий запис користувача, з якого здійснюється вхід, автоматично блокуватиметься. Це один із найпростіших способів підвищення рівня безпеки щодо зазначених атак.
Відсутність шифрування в RDP-каналі
За результатами попереднього збору інформації щодо підключень робочого столу може бути виявлено, що якийсь із каналів може не мати шифрування переданих даних, тобто, жоден із SSL/TLS сертифікатів не підтримується. У цьому разі, найімовірніше, буде застосована атака типу MiTM (Man in the Middle) або, як кажуть, «людина посередині». Її суть зводиться до перехоплення даних аутентифікації та іншої незахищеної інформації методом прослуховування каналу.
Наведемо приклад реалізації MiTM атаки за допомогою спеціально розробленої для цілей навчання безпечної роботи в мережі утиліти Seth, створеної на мові Python і засобах управління UNIX-оболонки Bash.
Для проведення атаки необхідне знання трьох параметрів: IP цільової станції, локальну IP та ідентифікатор використовуваного мережевого інтерфейсу.
Команда запуску утиліти може мати такий вигляд:
$ ./seth.sh vboxnet0 192.168.57.{1,103,50}
Тут vboxnet0 - мережевий інтерфейс.
Наведемо вибіркові результати роботи програми:
Keyboard Layout: 0x409 (English_United_States)
Key press: 3
Key press: LShift
Key press: S
Key release: S
Key release: LShift
Key press: E
Key release: E
Key press: C
Key release: C
Key press: R
Key release: R
Key press: E
Key release: E
Key press: T
Key release: T
Connection lost
[*] Cleaning up...
[*] Done.
Після запуску утиліти, вона входить у режим прослуховування NTLM-хеша. Коли користувач цільового комп'ютера проходить сеанс автентифікації, встановлюється з'єднання, і дані хеша, а також введений ним пароль одразу ж з'являються на екрані зловмисника, як показано вище (слово SECRET).
Слід зазначити, що на екрані користувача станції, що зазнала злому, перед встановленням з'єднання повинно було з'явитися повідомлення диспетчера сертифікатів про конфлікт, за якого ім'я сервера не збігається з довіреним центром сертифікації. У цьому разі встановлення з'єднання можливе тільки після його підтвердження з боку користувача у вікні запиту (було натиснуто кнопку ТАК). Якби не було підтвердження, то втрати даних не сталося б. Це яскравий приклад несвідомого ставлення користувачів до питання безпеки під час роботи в мережі.
Основним способом уникнути атаки є використання SSL/TLS сертифіката, що гарантує утворення захищеного каналу передавання даних між робочою станцією і сервером.
Також може допомогти ввімкнення аутентифікації на рівні мережі - опція NLA (Network Level Authentication). Зробити це можна кількома способами. Наведемо один із найпростіших.
Для робочої станції під управлінням Windows 7 увімкнути перевірку автентифікації на рівні мережі можна в такий спосіб: Панель керування > Система і безпека > Налаштування віддаленого доступу.
У вікні Властивості системи увімкнути опцію «Дозволити підключатися тільки з комп'ютерів, на яких працює віддалений робочий стіл із перевіркою автентичності на рівні мережі», як показано нижче.
Після увімкнення опції, слід натиснути кнопку Застосувати. Тепер NLA на цій станції ввімкнено, а отже, вона захищена.
Неправильне налаштування протоколу
Ми вже згадували про таку важливу опцію, як NLA-аутентифікація. За замовчуванням, у налаштуваннях усіх ОС Windows її вимкнено, тобто, аутентифікацію здійснюють на нижчому канальному рівні, що робить підключення робочого столу вразливим для найширшого спектра атак типу DDoS (Distributed Denial of Service).
До таких атак можуть піддаватися протоколи, веб-додатки, пошта та багато інших об'єктів і мережеві служби. DDoS-атаки охоплюють численні види і підвиди, кожен з яких вимагає окремого підходу до захисту від нього.
Перелічимо лише деякі з різновидів DDoS-атак:
- Волюметричні;
- CharGEN-флуд;
- UDP-флуд;
- ICMP-флуд;
- TCP-флуд;
- Сеансові атаки;
- Slowloris.
Об'єднує всі ці види їхня спільна націленість на повне виведення з ладу або блокування об'єкта злому. Це міститься в самій їхній назві - «розподілена відмова в обслуговуванні».
Що стосується підключень робочого столу, то застосування NLA-аутентифікації є обов'язковою умовою захисту від DDoS-атак. Вище ми вже розглядали питання про її включення.
Помилки в реалізації RDP-служби
Це вразливість типу use after free одного із системних драйверів, що використовуються в службі. Вона виникає через помилки динамічної пам'яті під час виконання коду програми. Це дає можливість зловмиснику запустити віддалене виконання коду або RCE (Remote Code Execution) на стороні цільової машини. При цьому атаці можуть піддаватися як старі версії Windows, так і нові. Уперше вразливість була опублікована компанією Microsoft 2019 року.
Захистом від RCE може стати своєчасне виконання оновлень версій ОС і встановлення відповідних патчів із закриттям вразливостей від Microsoft.
Помилки в компоненті RDG
Уразливість було виявлено в компоненті більшості версій Windows Server - шлюзі віддалених робочих столів RDG (Remote Desktop Gateway). Шлюз виконує функції маршрутизатора і Proxy-сервера під час підключення користувачів до RDP-сервера. Уразливість існує в коді, що обробляє дані UDP-протоколу. Вона дає змогу віддалено, ще до аутентифікації, виконувати RCE-код на цільових машинах, що використовують підключення робочого столу.
Її поява стала можливою через наявність двох помилок у DLL-бібліотеці компонента - CVE-2020-0609 і CVE-2020-0610, які були опубліковані Microsoft ще 2020 року.
Для того, щоб убезпечити свою станцію від злому через цей пролом у системі безпеки, слід встановити відповідний патч Microsoft. Також можна скористатися способом повного вимкнення UDP (порт 3391), оскільки, як ми вже зазначали, вразливість існує тільки для цього протоколу. Це можна зробити, наприклад, за допомогою брандмауера.
Перехоплення сеансу
Уразливість дає змогу отримати дані одного з активних сеансів служби, за умови наявності відомих облікових даних хоча б одного користувача служби, наприклад, Х1. Ці дані можуть бути отримані одним із розглянутих нами раніше способів.
Наприклад, ми хочемо отримати дані активного користувача служби віддаленого столу з ім'ям Х2. Для здійснення атаки ми повинні пройти аутентифікацію в службі під обліковими даними Х1. Після цього необхідно запустити одну з програм для вилучення паролів, що перебувають у пам'яті, наприклад, утиліту Mimikatz і вивести всі активні сеанси. Використовуючи віддалені команди модуля TypeScript, ми можемо під'єднатися до одного із сеансів користувача Х2 і отримати його облікові дані.
Наведена схема атаки показує серйозну вразливість всієї корпоративної служби віддаленого робочого столу в разі «втрати» облікових даних хоча б одного співробітника компанії. Тому захистом тут може бути чітке дотримання правил безпеки всіма користувачами, а також виконання правильного налаштування RDP-підключень.
Як уникнути злому RDP-підключення
Виходячи з викладеного в попередньому розділі, сформулюємо рекомендації щодо захисту віддалених підключень робочого столу від злому без використання додаткових програмних засобів:
- Застосування співробітниками компаній «складних» паролів для своїх облікових записів Windows , за необхідності можна скористатися генератором паролів - це допоможе надійно захистити доступ і знизити ризик злому.
- Широке застосування засобів захисту, передбачених налаштуваннями локальної політики безпеки користувацьких станцій і серверів ОС Windows;
- Використання тільки захищених SSL/TLS каналів передачі даних між сервером і терміналами;
- Встановлення мережевого рівня аутентифікації NLA в налаштуваннях RDP-протоколу;
- Своєчасне оновлення версій ОС і встановлення спеціальних патчів Microsoft з виправленнями помилок у компонентах Windows.
Виконання цих рекомендацій у багатьох випадках дозволить уникнути злому і втрати конфіденційних даних компаній і їх співробітників.
Як захистити RDP через IPBan
Всього кілька років тому було виявлено, що під час «докору» атак на мережеві сервіси, включаючи RDP, трапляються непомірно високі витрати на машинні ресурси об'єкта злому - процесор, пам'ять і так далі. Це стало поштовхом до створення програмного забезпечення для блокування IP, з якого відбуваються атаки.
Одним з перших і найвідоміших керованих програмних засобів блокування IP була програма з відкритим кодом IPBan. Він має повністю безкоштовну версію відділення, а також платну розширену версію з веб-панеллю і можливістю управління налаштуваннями багатьох мережевих кластерних станцій.
Безкоштовні випуски програм за замовчуванням (out of box) захищають наступні протоколи, сервіси та бази даних:
- RDP;
- SSH (Secure Shell);
- SMTP (Simple Mail Transfer Protoco);
- MySQL;
- SQL Server.
Однак це не зупиняє програму. Він дозволяє підключати і налаштовувати будь-яку іншу систему для захисту від атак. Єдиною умовою для цього є те, що він повинен мати засоби для перегляду та запису подій або файл журналу, який може бути використаний для блокування адрес, з яких здійснюється з'єднання.
Наведемо приклад встановлення та використання безкоштовної версії програми для ОС Windows. Розіб'ємо процес на кілька етапів:
- Підготовка середовища та налаштування параметрів локальної безпеки;
- Завантаження програми на ПК;
- Налаштування параметрів конфігурації IPBan;
- Запуск і виконання програми;
- Перевірка результатів роботи.
Підготовка середовища виконання та налаштування параметрів локальної безпеки
Для початку необхідно перевірити наявність бібліотеки на комп'ютері. NET Framework 4.0 або новіше, а якщо ні, встановіть бібліотеку. Для версій 1.7.1 і вище вам знадобиться. NET Framework 6.0 або новіше.
Як вже було сказано, програма повинна фіксувати системні події. Для цього ми внесемо зміни в локальну політику безпеки нашої станції, щоб IP-адреси могли відображатися в системних журналах. Для цього відкриємо вікно введення команд Windows (Win + R), введемо назву сервісу secpol.msc і натиснемо OK.
У вікні локальної політики безпеки, що з'явиться, увімкніть параметри: Аудит подій входу та Аудит входу, як показано нижче.
Результат оновлення локальної політики безпеки повинен бути таким, як показано нижче.
Завантажити програму на ПК
Завантажте архів програми зі сховища GitHub-розробника та розмістіть його на локальному диску ПК.
Витягніть файли архіву до каталогу IPBan, як показано нижче.
Список файлів з'явився на скріншоті.
Параметри налаштування IPBan
Утиліта дозволяє встановлювати широкий спектр налаштувань конфігурації з урахуванням політики безпеки станції. Ви можете зробити це з його файлом конфігурації. Відкрийте файл ipban.config у своєму текстовому редакторі та встановіть наступні параметри:
- Час блокування IP-адреси відповідає політиці безпеки компанії: < add key = «BanTime» value = «01:00:00:00 »/>;
- Допустима кількість невдалих логінів: < add key = «FailedLoginStatesBeforeBan» value = «3 »/>;
- Додати IP-адреси до «білого списку» - винятки із загального правила: < add key = «Whitelist» value = «178.20.159.99 »/>.
Збережіть зміни і вийдіть з редактора.
Запуск програми
У каталозі розробленої програми виберіть файл DigitalRuby.IPBan.exe і виберіть Виконати як адміністратор з контекстного меню.
Під час розгортання IPBan з'являється вікно виконання коду з результатами запуску. Наявність IPBan працює правильно повідомлення у вікні буде вказувати, що програма успішно розгорнута і працює у фоновому режимі, тобто вона «слухає» входи послуг, встановлених за замовчуванням, включаючи RDP.
У разі невдалої спроби входу, яка виходить за межі встановлених налаштувань безпеки, їх IP буде заблоковано автоматично.
Для того, щоб записати IPBan як службу Windows, потрібно запустити cmd консоль, в якій ввести наступну команду:
sc.exe create IPBAN type=own start=delayed-auto binPath= d:\Программа IPBan\IPBan-Windows-x86_2_0_1\DigitalRuby.IPBan.exe DisplayName=IPBAN
Перевірка продуктивності
Є кілька способів перевірити утиліту. Найпростіший спосіб перевірити це переглянути logfiles з ім'ям logfile.txt або подібний, який записує всі невдалі спроби входу і банас. Ви можете заблокувати або розблокувати будь-яку з IP-адрес у файлі ban.txt каталогу служб.
Ви також можете використовувати засіб перегляду журналів Windows для моніторингу та перегляду заблокованих адрес. Для цього потрібно викликати вікно команд (Win + R), де можна ввести команду eventvwr і натиснути OK. Це призведе до появи вікна зі списком журналів подій для різних категорій: додатків, безпеки, установки, системи і переадресації подій. Якщо вибрати журнал безпеки в лівій частині вікна, можна побачити результати аудиту системи безпеки ПК (див. Знімок екрана).
Ви також можете керувати IPBan як службою, запустивши відповідну службу у вашій консолі за допомогою команди services.msc. Сервіс IPBan можна знайти в списку послуг сервісу, що запускається, і перевірити, чи встановлено тип запуску «в автоматичному режимі».
Основні рекомендації
Крім перерахованих вище рекомендацій щодо зниження ризику вторгнення в систему через сервіс віддаленого робочого столу, можна дати деякі загальні рекомендації щодо підвищення рівня безпеки:
- Змініть порт за замовчуванням для служби віддаленої стільниці на будь-який інший;
- Резервне копіювання та обмеження доступу до ключових даних;
- Використовувати багатофакторну аутентифікацію;
- Обмежити кількість одночасних користувачів;
- Якщо послуга не використовується, вимкніть її та вимкніть всі зовнішні підключення до порту служби на брандмауері;
- Заборонити підключення облікових записів до порожніх паролів. Це можна зробити, налаштувавши локальні параметри безпеки: Локальні політики - Параметри безпеки - "Облікові записи: обмежити використання порожніх паролів... ».