Equipe Domaine et Sécurité - Microsoft CSS&MCS

Ce blog rassemble des articles rédigés par les équipes CSS (Customer Support Services) et MCS (Consulting) ayant trait à l'Active Directory et à la Sécurité.

February, 2009

  • Exécution de l'explorateur en tant qu'administrateur sous Windows Server 2008

    Ou comment lancer Windows Explorer en tant qu'administrateur
    Ce cas de figure peut se présenter quand un administrateur se connecte sur un serveur où l'UAC est actif et souhaite, pour créer des fichiers dans les dossiers protégés de Windows par exemple, exécuter une instance de l'explorateur avec un contexte administrateur.

     

    Sans la case "launch folder windows in a separate process" cochée dans les propriétés des dossiers

    Sans fenêtre d'explorateur ouverte, on trouve un processus explorer.exe (PID 1656) qui tourne sans privilège, c'est le shell de l'utilisateur, son bureau.

    On lance un explorateur, sans demander l'élévation de privilège, aucun nouveau processus n'est créé et, logiquement, les actions d'administration ne sont pas possibles.

    On lance un explorateur, en demandant l'élévation de privilège, aucun nouveau processus n'est créé non plus et, logiquement, les actions d'administration ne sont pas possibles.

     

    Avec la case "launch folder windows in a separate process" cochée

    Sans fenêtre d'explorateur ouverte, on trouve un processus explorer (PID 216) qui tourne sans privilège, c'est le shell de l'utilisateur, son bureau.

    On lance un explorateur, sans demander l'élévation de privilège, un nouveau processus est créé (PID 2432, fils de 216) et, logiquement, les actions d'administration ne sont pas possibles

    On le ferme et lance un explorateur, en demandant l'élévation de privilège, un nouveau processus est créé (PID 2804, pas de processus père) et, logiquement, les actions d'administration sont possibles

    On le ferme

    On lance un explorateur, sans demander l'élévation de privilège (PID 3004, fils de 216, pas d'action d'administration possible) puis on lance un second explorateur, en demandant l'élévation de privilège. Aucun processus n'est créé pour ce deuxième explorateur et aucune action d'administration n'est possible.

    On ferme des ceux explorateurs et effectue l'opération inverse :

    On lance un premier explorateur avec élévation de privilège (PID 1100, pas de parent, actions d'administrations possibles) puis un second explorateur sans demander l'élévation de privilège. Aucun nouveau processus n'est créé pour ce deuxième explorateur et les deux permettent de réaliser des actions d'administration.

     

    Plusieurs solutions de contournement existent

    • Forcer par GPO (Group Policy Prefernce ou un adm personnalisé), l'activation de " launch folder windows in a separate process"
    • Utiliser Internet explorer comme explorateur.
    • Démarrer Notepad.exe en tant qu'administrateur et sauvegarder le fichier directement dans le dossier souhaité.

     

    Tout est très bien documenté dans le blog de Aaron Margosis (très bonne source d'information sur sur UAC) :

    Aaron Margosis' "Non-Admin" WebLog - RunAs with Explorer
    http://blogs.msdn.com/aaron_margosis/archive/2004/07/07/175488.aspx

    Mots clés Technorati : ,,

    Cyrille de Pardieu

  • Comment faire tourner un cmd dans le contexte système

    Jusqu'à Windows Server 2003 R2, il était possible d'avoir un cmd s'exécutant dans le contexte système. Cela permettait, entre autre, de tester le contexte système (pour des accès à des partages par exemple) et d'afficher les tickets Kerberos attribué à la machine.

    Pour cela, il fallait

    • Ouvrir une session localement sur le serveur ou se connecter à la session console en bureau à distance (mstsc /console)
    • Planifier une tâche interactive démarrant cmd.exe
      at HH:MM /interactive cmd.exe

    A l'heure indiquée un nouveau command prompt apparait, il s'exécute dans le contexte système.

    clip_image001

    Depuis Windows Vista et Windows Serveur 2008, ce mécanisme ne fonctionne plus. Les tâches planifiées via AT ne peuvent plus être interactives.

    clip_image003

    Pour obtenir un command prompt dans le contexte système sur ces plateformes, plusieurs autres solutions existent.

     

    PsExec

    clip_image005

     

    Remote.exe

    Remote.exe fait parti des Debugging Tools disponibles sur le site web Microsoft à l'adresse
    http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx

    • Copier remote.exe sur la machine dans le dossier c:\Debuggers (par exemple)
    • Démarrez un command prompt avec tous les privilèges (Exécuter en tant qu'administrateur)
    • Exécutez la commande
      AT HH:MM c:\Debuggers\remote.exe /s c:\windows\system32\cmd.exe SYSCMD
    • Une fois l'heure spécifiée passée, exécutez la commande
      c:\debuggers\remote.exe /c <ComputerName> SYSCMD

    La commande cmd.exe affichera alors


    ****************************************
    *********** REMOTE *************
    *********** CLIENT *************
    ****************************************
    Connected...
    c:\windows\system32
    ** Remote: Connected to %computername%

    clip_image007

     

    Mots clés Technorati : ,

    Cyrille de Pardieu