# 3389 - Pentesting RDP {{#include ../banners/hacktricks-training.md}} ## Podstawowe informacje Opracowany przez Microsoft, **Remote Desktop Protocol** (**RDP**) ma na celu umożliwienie połączenia z graficznym interfejsem między komputerami w sieci. Aby nawiązać takie połączenie, użytkownik korzysta z oprogramowania klienckiego **RDP**, a jednocześnie zdalny komputer musi działać na oprogramowaniu serwera **RDP**. Ta konfiguracja pozwala na bezproblemowe sterowanie 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 ```bash nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 ``` Sprawdza dostępne szyfrowanie i podatność na DoS (bez powodowania DoS dla usługi) oraz uzyskuje informacje NTLM Windows (wersje). ### [Brute force](../generic-hacking/brute-force.md#rdp) **Bądź ostrożny, możesz zablokować konta** ### **Password Spraying** **Bądź ostrożny, możesz zablokować konta** ```bash # 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łączenie z znanymi poświadczeniami/hashami ```bash rdesktop -u rdesktop -d -u -p xfreerdp [/d:domain] /u: /p: /v: xfreerdp [/d:domain] /u: /pth: /v: #Pass the hash ``` ### Sprawdź znane poświadczenia w usługach RDP rdp_check.py z impacket pozwala sprawdzić, czy niektóre poświadczenia są ważne dla usługi RDP: ```bash rdp_check /:@ ``` ## **Ataki** ### Kradzież sesji Z **uprawnieniami SYSTEM** możesz uzyskać dostęp do każdej **otwartej sesji RDP przez dowolnego użytkownika** bez potrzeby znajomości hasła właściciela. **Uzyskaj otwarte sesje:** ``` query user ``` **Dostęp do wybranej sesji** ```bash tscon /dest: ``` Teraz będziesz wewnątrz wybranej sesji RDP i będziesz musiał podszyć się pod użytkownika, używając tylko narzędzi i funkcji systemu Windows. **Ważne**: Gdy uzyskasz dostęp do aktywnych sesji RDP, wylogujesz użytkownika, który z niej korzystał. Możesz uzyskać hasła z procesu, zrzucając je, ale ta metoda jest znacznie szybsza i pozwala na interakcję z wirtualnymi pulpitami użytkownika (hasła w notatniku bez zapisywania na dysku, inne sesje RDP otwarte na innych maszynach...) #### **Mimikatz** Możesz również użyć mimikatz, aby to zrobić: ```bash ts::sessions #Get sessions ts::remote /id:2 #Connect to the session ``` ### Sticky-keys & Utilman Łącząc tę technikę z **stickykeys** lub **utilman**, będziesz mógł uzyskać dostęp do administracyjnego CMD i każdej sesji RDP w dowolnym momencie. Możesz wyszukiwać RDP, które zostały zainfekowane jedną z tych technik, korzystając z: [https://github.com/linuz/Sticky-Keys-Slayer](https://github.com/linuz/Sticky-Keys-Slayer) ### RDP Process Injection Jeśli ktoś z innej domeny lub z **lepszymi uprawnieniami zaloguje się przez RDP** do komputera, na którym **jesteś administratorem**, możesz **wstrzyknąć** swój beacon do jego **procesu sesji RDP** i działać jako on: {{#ref}} ../windows-hardening/active-directory-methodology/rdp-sessions-abuse.md {{#endref}} ### Adding User to RDP group ```bash net localgroup "Remote Desktop Users" UserLoginName /add ``` ## Automatyczne Narzędzia - [**AutoRDPwn**](https://github.com/JoelGMSec/AutoRDPwn) **AutoRDPwn** to framework do post-exploatacji stworzony w Powershell, zaprojektowany głównie w celu automatyzacji ataku **Shadow** na komputerach Microsoft Windows. Ta luka (wymieniona jako funkcja przez Microsoft) pozwala zdalnemu atakującemu **widzieć pulpit swojej ofiary bez jej zgody**, a nawet kontrolować go na żądanie, używając narzędzi natywnych dla samego systemu operacyjnego. - [**EvilRDP**](https://github.com/skelsec/evilrdp) - Kontroluj mysz i klawiaturę w zautomatyzowany sposób z linii poleceń - Kontroluj schowek w zautomatyzowany sposób z linii poleceń - Uruchom proxy SOCKS z klienta, które kieruje komunikację sieciową do celu za pośrednictwem RDP - Wykonuj dowolne polecenia SHELL i PowerShell na celu bez przesyłania plików - Przesyłaj i pobieraj pliki do/z celu, nawet gdy transfer plików jest wyłączony na celu - [**SharpRDP**](https://github.com/0xthirteen/SharpRDP) To narzędzie pozwala na wykonywanie poleceń w 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} ``` {{#include ../banners/hacktricks-training.md}}