RDP Hijacking
Avertissement
Cette documentation est destinée à un usage éducatif, et non à des fins mailveillantes.
Le RDP hijacking (Remote Desktop Protocol hijacking) permet de prendre le contrôle d'une session de bureau à distance (RDP) mal déconnectée.
Le principal avantage est de ne pas avoir à saisir les identifiants de l'utilisateur cible pour se connecter. Cette technique peut être exploitée dans des environnements RDS (Remote Desktop Services) ou sur des serveurs disposant du service Bureau à distance activé.
Prérequis
- Vous devez être administrateur local de la machine (
SRV-RDS\Administrateurpar exemple) ; - Vous devez être connecté en console (clavier/écran direct sur la machine, ou bien depuis la console de votre hyperviseur si c’est une machine virtuelle).

1 - Télécharger PsExec
Connectez vous sur le serveur cible en tant qu'administrateur local, puis téléchargez PsTools sur le site de Microsoft.
Extrayez le fichier PsTools.zip.
2 - Je suis le système
À l'aide d'un invite de commande cmd.exe, placez-vous dans le répertoire où se trouve le fichier PsExec64.exe, puis démarrez un invite de commandes en tant que Système :
Dans ce cas, -s signifie "en tant que système" et -i permet d'afficher cmd en mode interactif, c'est-à-dire qu'une fenêtre s'affichera sur notre écran.
3 - Repérage
Listez toutes les sessions actuelles sur la machine cible à l'aide de query user :
query user
UTILISATEUR SESSION ID ÉTAT TEMPS INACT TEMPS SESSION
>administrateur console 1 Actif 3:57 10/01/2025 12:36
demo rdp-tcp#5 4 Actif 3:57 10/01/2025 12:36
Identifiez les sessions, on observe ici que la session n°1 est la nôtre, est celle de notre utilisateur cible demo est la n°4.
4 - Lancement de l'attaque
Afin d'usurper la session RDP de l'utilisateur, il va falloir créer un service.
Une fois ce service démarré, il remplacera votre session par celle de l'utilisateur cible.
4.1 - Créer le service
Dans le même invite de commandes Système, on crée un service appelé usurpationUtilisateur (le choix du nom est libre du moment qu'il n'interfère pas avec des services Windows ou tiers) :
Options de la commande :
| Argument | Description |
|---|---|
| Nom | Nom du service (dans notre cas, on le nomme usurpationUtilisateur) |
| Commande | Quelle commande le service doit-il exécuter ? Dans notre cas, on souhaite ouvrir la session n°4, donc tscon 4 |
| Destination | Quelle session souhaitez-vous remplacer ? Dans notre cas, nous sommes connecté directement sur le serveur (comme un PC standard avec écran clavier souris), donc on saisit console. Si vous êtes connecté via RDP, vous pouvez saisir la valeur vous correspondant dans la colonne SESSION de la commande query user (ex: rdp-tcp#59) |
Exemple
Dans notre cas, la commande ressemblerait à ça :
4.2 - Démarrer le service
Maintenant, vous allez pouvoir contrôler la session RDP de l'utilisateur cible en démarrant simplement le service usurpationUtilisateur créé précédemment :
Bien joué !
Vous êtes désormais connecté sur la session de l’utilisateur cible.
4.3 - Supprimer le service
Il est préférable de supprimer le service après avoir terminé le contrôle de la session :
Attention à la gaffe...
Attention, l'exécution d'un PsExec est visible dans l'Observateur d'événements !