Exécution
d'applications sous un compte administrateur
Principes
Certaines applications ou tâches diverses nécessitent d'être
exécutées avec des privilèges de compte administrateur. Or si
l'utilisateur en cours n'appartient pas à ce groupe, cela est impossible. Afin
de contourner cette difficulté, Microsoft a prévu deux outils :
- SU.EXE du Resource Kit de NT
- RUNAS.EXE (intégré dans Windows à partir de Windows 2000).
| Le problème majeur posé par ces deux outils est que
l'administrateur doit être présent physiquement près de l'ordinateur de l'utilisateur afin de
saisir de façon interactive son nom et mot de passe (et si l'administrateur communique ces informations, cela remet en cause la
sécurité du système). |
En particulier, ni SU, ni RUNAS ne permettent d'intégrer dans
une ligne de commande le mot de passe de l'administrateur, qui
doit obligatoirement être saisi dynamiquement (exception faite de RUNAS
sous Windows XP PRO, avec le commutateur /savecred, qui permet de
mémoriser ce mot de passe pour une exécution ultérieure, mais qui est peu
pratique).
Le script xrunas.vbs que j'ai écrit
contourne cette difficulté, mais la sécurité est considérablement compromise,
puisque le mot de passe du compte administrateur va apparaître en clair
dans la commande du script.
C'est pourquoi j'ai conçu SUPEREXEC, logiciel utilitaire (écrit en
Delphi 7), qui affranchit de la contrainte de saisie en temps réel du mot de passe
tout en garantissant la sécurité du système.
SUPEREXEC fonctionne sous les systèmes
d'exploitation suivants :
- Windows 2000 (Professionnel et Serveur)
- Windows XP (Professionnel et Édition Familiale)
- Windows 2003
Il ne fonctionne pas sous Windows NT4 car certaines fonctions
(chiffrement, gestion de processus, gestion réseau) manquent sous ce système. |
Il permet de préparer une exécution, en enregistrant dans la Base
de Registres (branche HKLM) les informations chiffrées suivantes :
- le nom du compte utilisateur ou groupe d'utilisateurs, ainsi que le domaine ou
groupe de travail concerné
- l'application concernée (exécutable, script, composant
enfichable,...)
- les paramètres passés à l'application
- le dossier de travail
- le profil utilisateur (celui de l'utilisateur concerné ou celui
du compte administrateur)
- le nom et le mot de passe d'un compte administrateur
- des paramètres éventuels supplémentaires :
- une date limite d'exécution de l'application
- un compteur d'exécution
- le profil qui sera utilisé (celui de l'utilisateur ou celui
de l'administrateur)
- le libellé du raccourci affiché sur le bureau de
l'utilisateur.
TOUTES
ces informations sont intégralement
CHIFFRÉES
dans la Base de Registres.
(à l'aide de l'API de chiffrement de Windows)

SUPEREXEC se compose de 2 exécutables :
- SuperExec.exe
c'est l'application principale, avec une interface graphique, réservée aux
administrateurs, et qui sert à préparer les lancements d'applications.
- SE.exe
c'est un "run-time", en mode console, destiné aux utilisateurs, et qui sert
à lancer les applications préparées par SuperExec.exe.
Dans les versions antérieures à la V2.0, il n'y avait qu'un
seul exécutable, qui détectait le niveau de privilèges de l'utilisateur, et
servait aussi bien à la préparation qu'à l'exécution des applications. Compte
tenu de la taille grossissante du logiciel (1,1 Mo) il a été décidé de scinder
en 2 ces fonctionnalités, afin d'obtenir une taille raisonnable pour le module runtime (110 ko).
Préparation
des applications (mode administrateur)
SUPEREXEC fonctionne à la fois
localement et à distance, si bien qu'il est possible de gérer de la
même façon aussi bien l'ordinateur local que les ordinateurs de n'importe quel
groupe de travail ou domaine accessible depuis le réseau.
Quand un administrateur lance SUPEREXEC, une boite de dialogue s'affiche :
(cliquer sur les zones pour obtenir des détails)

Pour plus d'informations, consulter le fichier d'aide compilé
SuperExec.chm
(ce fichier est fourni également avec le logiciel)
 |
Attention dans le choix des
applications autorisées!
Il faut absolument, dans la mesure du possible, éviter
d'autoriser des applications permettant de lancer d'autres
applications, car ces dernières seront exécutées également
avec des privilèges administrateur.
Par exemple si on autorise le processeur de commandes (%systemroot%\system32\CMD.EXE),
l'utilisateur pourra exécuter n'importe quel autre
logiciel, script, composant enfichable,..., avec des droits
administrateur. |
|
Exécution
des applications (Mode
utilisateur)
Il permet l'exécution d'application via SE (avec les privilèges
administrateur)
Un utilisateur non administrateur peut ainsi lancer une application :
- manuellement par double-clic sur un raccourci créé précédemment
sur le bureau
- automatiquement :
- depuis le menu démarrer/programmes/démarrage
- depuis la base de registres (clef HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce)
- depuis un script de connexion
Différents contrôles sont réalisés :
- autorisation de l'application à l'utilisateur
Dans l'exemple ci-dessous, netstat n'est pas autorisée :

| Dans l'exemple ci-dessous, secpol.msc est autorisée si on
passe par SE : |
Par contre, un lancement direct de secpol.msc est bien
interdit : |
 |
 |
- Contrôle de date limite :

- Contrôle du nombre maximal d'exécutions :

- Application de type console :
Dans l'exemple ci-dessous, c'est
C:\winnt\system32\FTP.EXE, à laquelle est passée en paramètre
-s:c\winnt\sprinfield.ftp
Le fichier de commandes FTP
springfield.ftp contient ceci : |
L'exécution de cette application donne le résultat suivant : |
|
open 192.168.0.49
bellamy
***********
cd /DEVELOPMENT/wsh
dir getip*.vbs
bye |
|
 |
SE.EXE détermine automatiquement le type
console d'une application, et dans ce cas il l'exécute au travers d'un
script
%systemroot%\Superexecmd.bat, créé
dynamiquement.
Ce script permet de conserver la fenêtre ouverte à la fin de l'exécution de
l'application (si on l'a demandé dans SUPEREXEC).
Ce script est très simple et son contenu est (ici) le suivant :
|
@echo off
cmd /c %*
pause |
Téléchargement
et installation
SUPEREXEC est entièrement gratuit.
Il s'installe (sous un compte administrateur) à partir d'un fichier
auto extractible installSE.exe
(lui même contenu dans un fichier compressé installSE.zip)
Le programme d'installation est bilingue.
Tout comme le logiciel, il est disponible pour l'instant en français et en anglais.



L'installation extrait 4 fichiers :
- L'exécutable Superexec.exe
- L'exécutable SE.exe (runtime)
- Un fichier d'aide générale SuperExec.chm
- Un fichier des libellés des boites de dialogue Superexec.lib.
Ce fichier est au format texte, et permet ainsi de créer des versions de
SUPEREXEC en n'importe quelle langue, sans recompilation.
Aucun autre fichier n'est nécessaire.
Un raccourci est créé sur le bureau ainsi que deux raccourcis dans
le menu démarrer (un pour lancer SUPEREXEC et un pour le désinstaller)
Le choix de la langue se fait au cours de l'installation, mais il est
possible de la changer à tout moment dans SuperExec.

Historique
- 17/12/2004 - Version 3.0.1.237
- Possibilité de désactiver ou réactiver la prise en charge
du réseau (p.ex. ordinateur isolé) + optimisation des routines réseau
- Application totalement multilingue (un seul programme
d'installation)
- Fichier d'aide contextuelle SuperExec.chm
- Nouvelle interface :
- Barre de menus
- Barre de boutons
- Paramétrages regroupés dans une même boite de dialogue
- Fenêtres "popup" d'informations (réseau, comptes, applications)
- Journal des opérations affiché dans un navigateur au format
HTML
- Choix des applications
- Possibilité de désactiver les comptes locaux dans le cas de
machines dans un domaine
- Prise en compte des packages .MSI
- Le profil choisi peut-être :
- le compte de l'utilisateur
- le compte de l'administrateur
- le compte par défaut
- Dans le cas d'un ou plusieurs groupes d'utilisateurs, il est
possible d'insérer le lancement de l'application dans le script de
connexion sur le serveur de domaine (partage NETLOGON) ou dans un script de démarrage local (dossier %systemroot%\system32\GroupPolicy\User\Scripts\Logon)
sur toute machine.
- 02/02/2004 - Version 2.0.1.136
- Suppression du compte GÉNÉRAL, remplacé par la gestion de tous les
groupes (locaux et globaux)
- Éclatement du logiciel en 2 exécutables (SuperExec.exe pour la
préparation des applications, SE.exe pour leur lancement)
- Ajout du choix de profil de utilisateur
- Ajout du choix de dossier de travail
- Sélection possible d'application résidant sur une machine distante,
différente de la machine destinataire.
- Les raccourcis peuvent être placés, au choix :
- Sur le bureau
- Dans le menu démarrer (Démarrage)
- Dans la Base de Registres (clef HKCU\Software\Microsoft\Windows\CurrentVersion\Runonce)
- Le script utilisé dans le cas d'application console est à présent créé
dynamiquement, permettant ainsi un meilleur paramétrage
NB: il est créé dans le dossier %systemroot%, et n'est pas modifiable par un
utilisateur non administrateur.
- 10/12/2003 - Version 1.5.1.89
- Saisie manuelle du nom d'ordinateur (pour les ordinateurs cachés)
- Ajout du champ paramètres passés à une application
- Lancement des applications en mode console via un script automatique
afin de garder la fenêtre ouverte
- Ajout du compte virtuel GÉNÉRAL qui représente n'importe quel
compte.
- 03/12/2003 - Version 1.4.1.84
- Ajout de la gestion des comptes globaux (domaine)
- Libellés des raccourcis personnalisables
- 13/11/2003 - Version initiale