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 trois outils :

Le problème majeur posé par ces 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, puis Delphi 2006), 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
  • Windows Vista (32 ou 64 bits)
  • Windows 2008 (32 ou 64 bits)
  • Windows 7 (32 ou 64 bits)
  • Windows 8 (32 ou 64 bits)

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 un fichier de type XML (extension .XSE) les informations suivantes (intégralement chiffrées) :

L'exécution de l'application sera refusée à l'utilisateur :

Par ailleurs, SUPEREXEC fonctionne à distance, et peut gérer de la même façon qu'en local les ordinateurs de n'importe quel groupe de travail ou domaine accessible depuis le réseau.
Dans ce cas, tous les fichiers nécessaires (fichiers .XSE, logiciels, certificat, raccourcis sur le bureau, ...) peuvent être copiés d'un simple clic sur les ordinateurs distants.
Il a même été prévu le cas d'ordinateurs déconnectés du réseau (cas d'utilisateurs "nomades" par exemple).
Les fichiers nécessaires sont alors envoyés par messagerie électronique sous la forme de fichier compressé unique mis en pièce-jointe dans un courrier généré automatiquement.

Remarques :

Le logiciel SUPEREXEC est composé des fichiers suivants :
SuperExec.exe programme principal, réservé aux administrateurs, servant à planifier les applications
RunSE.exe programme "runtime", pour tout utilisateur, servant à exécuter les applications.
InstSE.exe programme d'installation du runtime et des fichiers de données dans le cas d'un
envoi par courrier électronique
SuperExec.cer certificat de sécurité
CAPICOM.dll bibliothèque Microsoft redistribuable de gestion des certificats
<code de langue>\SuperExec.lib fichier contenant tous les messages et textes.
<code de langue>\SuperExec.chm le présent document d'aide.
SuperExec.rtf le présent document au format RTF
Licence.rtf la licence de ce logiciel

Afin de garantir leur origine, tous les exécutables de SuperExec (SuperExec.exe, RunSE.exe, InstSE.exe) sont certifiés par un certificat auto-signé par l'auteur.
La première fois que l'un de ces programmes est exécuté, cela entraine l'ouverture de la boite de dialogue suivante :

L'empreinte numérique (SHA1) de ce certificat doit être obligatoirement égale à :

 1494 3A78 05A3 1D30 2AD4 9635 01E0 79D9 826E 3421

On retrouve cette information dans l'onglet "Signatures numériques" des propriétés des fichiers exécutables.

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.

SUPEREXEC se présente sous la forme d'une boite de dialogue , composée d'une barre de menu et de boutons, ainsi que 3 zones (réseau, applications, journal) :

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 alors exécuter n'importe quel autre logiciel, script, composant enfichable,..., avec des droits administrateur.

Exécution des applications (Mode utilisateur)

L'exécution d'application est réalisée par le module RunSE qui se présente sous la forme d'une boite de dialogue  :

Chaque icône représente une application qui sera exécutée sous un compte qu'administrateur et, dans le cas de Vista et au-delà avec UAC actif (le contrôle des comptes utilisateurs), en tant qu'administrateur (avec privilèges élevés).

Un clic droit sur l'une des icônes fait apparaitre un menu déroulant doté de 3 items :

Il est également possible de créer un raccourci sur le bureau en effectuant un "glisser/déposer"  ("drag and drop") de l'icône.

Différents contrôles sont réalisés :

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é : installSE43.zip)
Tous les programmes, y compris le programme d'installation, sont actuellement bilingue français et anglais.

installSE43.zip 1938 ko

Historique

Appel à traducteurs

Tous les exécutables qui constituent SuperExec ont été conçus de façon à être traduits en n'importe quelle langue.

Pour cela tous les items de menus, boites de dialogue, messages d'information ou d'erreur, sont stockés dans un unique fichier texte (superexec.lib) situé dans un sous-répertoire de celui contenant les exécutables.

Le nom de ce sous-répertoire est le code de langue correspondant exprimé en hexadécimal.
P.ex. 0409 pour l'anglais, 040C pour le français, ...
On peut trouver une énumération de ces codes et leur signification dans la clef :
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts

Le fichier SuperExec.lib a la structure suivante :

Actuellement il n'existe que les versions française et anglaise.
Je fais donc appel à tous les traducteurs en d'autres langues et bénévoles intéressés par une plus grande diffusion de SuperExec.
Merci par avance ... (me contacter SVP)