|
UAC,
signifie User Access Control. Il s'agit d'une nouvelle couche de
sécurité dont le rôle est de prévenir les utilisations non
désirées de privilèges élevés, en Français Contrôle de
compte utilisateur.
L'origine de la FAQ ci dessous provient de cette page :
Windows Vista - UAC
Sous Windows Vista
UAC à posé de réels problèmes et dégrade fortement la première
impression des utilisateurs (et pour cause : les premières
choses que l'on effectue après installation
sont des installations de
drivers, et installation de programmes, ce qui ne cesse de
demander des confirmations d'élévations de privilèges).
Ces problèmes ont occulté les nombreuses améliorations de UAC,
telles que la virtualisation de certains répertoires
(Programmes) et de clefs du registre, ainsi que l'isolation de
Internet Explorer.
|
Mots clefs :
uac user account control
controle de compte
utilisateur windows seven win7 securite virtualisation registre registry |
|
|
1
- Comment fonctionne UAC
? |
Sous
Windows Seven, les membres du groupe
local administrateurs ont 2
jetons de
sécurité ( Token ), un token
complet ainsi qu'un token
restreint ( filtré).
Le token filtré est le token
complet auquel on a retiré
tous les privilèges.
Vous pouvez le visualiser en
vous loguant en tant que
membre du groupe
administrateurs et en
lançant whoami /all dans 2
invites de commande
(cmd.exe) différentes
:
_
une
première
en
lançant simplement cmd.exe,
_
l'autre en exécutant cmd.exe par un clic
droit "lancer en tant qu'administrateur".
Vérifiez que le token dans l'invite de commande non élevée n'a
aucun
privilèges.
Les utilisateurs qui ne sont pas membres du groupe local
administrateur ont
quand à eux un seul token.
Les
utilisateurs membres du groupe local administrateurs tournent
par défaut
avec leur token restreint.
Lorsqu'une tâche nécessite un privilège élevé,
UAC demande la permission d'utiliser le
token complet ( élévation de
privilèges).
En fonction du paramétrage UAC, cela peut être fait de manière
transparente
( no prompt ), par consentement ou saisie
de mot de passe.
Le mode par défaut pour les membres du groupe
administrateurs est celui du
consentement ( Admin Approval Mode ).
Le compte intégré administrateur tourne lui quant
à lui avec son token
complet, il n'a donc pas besoin de donner son
consentement pour utiliser un
autre token.
L'élévation de privilège s'opère donc pour les
comptes disposant de 2
tokens.
Un utilisateur standard n'ayant qu'un token restreint, UAC ne leur
proposera
pas d'utiliser un autre token et l'utilisateur
recevra un Access Denied ou
équivalent en tentant d'exécuter une tache
nécessitant des privilèges plus
élevés.
Par contre, s'il exécute une application "en tant
qu'administrateur", il ne passe pas par le mécanisme UAC.
En effet, cela crée tout d'abord un nouveau
Token d'administration complet
qui est alors utilisé pour lancer l'application (
CreateProcessAsUser auquel
on passe le token d'administrateur en
paramètre).
C'est pourquoi l'exécution d'une
invite de commande "en tant
qu'administrateur" vous ouvre en fenêtre
dans
laquelle vous avez les privilèges complets.
|


|
|
|
2
- Pourquoi
obtient-on des accès refusés tout en étant membre du groupe
administrateur local
? |
Exemple
:
Je suis membre du groupe
local administrateurs en
mode demande
de prompt pour élévation (Admin Approval ) et
pourtant lorsque je lance
certaines commandes dans une invite de
commande, je reçois un
access denied.
Windows ne devrait-il pas me
demander la confirmation
d'exécution ?
Les développeurs d'application pour Windows Vista
ou Seven doivent
fournir un fichier
d'entête (manifest)
qui décrit
entre autre le niveau d'exécution requis par
l'application ( c'est à dire le
choix d'utilisation du token complet ou restreint
).
Il y a 3 niveaux d'éxécution :
_ AsInvoker
:
signifie que l'application doit s'exécuter avec
le token actuel de
l'appelant et donc ne pas demander
d'élévation de privilèges.
_
requireAdministrator
:
signifie que l'application doit s'exécuter avec un
token complet d'administration et donc UAC
peut vous demander
l'accès au token complet si vous tournez
avec le token restreint.
_
highestAvailable :
l'application fonctionne avec le privilège le plus haut auquel
l'utilisateur accède.
Si l'administrateur lance une invite de commande
avec son token restreint,
le
contexte d'exécution est celui
du token restreint et comme AsInvoker ne
demande pas d'élévation de
privilèges, un
refus d'accès (accès
denied)
est retourné.
En lançant cmd.exe par un clic droit et "Run as
administrator", le token utilisé est alors le token complet.
Vous pouvez déterminer le
niveau d'exécution requis par chaque tache
d'administration fournie par Microsoft
en examinant les fichiers programmes :
-
Téléchargez
strings.exe de sysinternals.
- Dans %WINDIR%System32, lancez strings.Exe *.exe | findstr -i
"AsInvoker"
- Dans %WINDIR%System32, lancez strings.Exe *.exe | findstr -i
"highestAvailable"
- Dans %WINDIR%System32, lancez strings.Exe *.exe | findstr -i
"requireAdministrator"
Par exemple :
- bcdedit requiert AsInvoker.
- mmc requiert highestAvailable.
- defrag requiert requireAdministrator.
|
|
5
- Comment désactiver UAC pour
un utilisateur ? |
Panneau de configuration :
Pour
un utilisateur, vous pouvez
désactiver l'utilisation
d'UAC
en utilisant le Panneau de
Configuration :
Panneau de configuration ->
Comptes utilisateurs ->
Modifier les paramètres de
contrôle de compte
utilisateur
Descendez le curseur au
niveau le plus bas : ne
jamais m'avertir.
|
|
6
-
Comment modifier le comportement de UAC ? |
Contrairement à Vista ou le
comportement de UAC était
peu réglable, il existe
différents niveaux de
réglages d'UAC :
_ Base
de registre :
Les clef de la base de
registre se trouvent ici :
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
Les
valeurs qui changent entre
Vista et Seven sont :
|
Paramètre |
Valeur Vista |
Valeur Seven |
Valeurs possibles |
|
ConsentPromptBehaviorAdmin
(*) |
2 |
5 |
0 : Pas de
confirmation
d'élévation pour les
administrateurs 1
: Demande une
authentification
pour l'élévation
pour les
administrateurs 2
: Demande
l'autorisation
d'élévation pour les
administrateurs 5
: pas encore
documenté |
|
ConsentPromptBehaviorUser |
1 |
3 |
0 : Les opérations
demandant une
élévation ne
fonctionneront pas
pour les
utilisateurs non admins 1 : Les
opérations
nécessitant une
élévation se verront
proposer une
authentification
pour les
utilisateurs non
admins 3 : pas
encore documenté |
|
EnableInstallerDetection |
1 |
1 |
0 : pas d'élévation
automatique pour les
programmes
d'installation 1
: détection
heuristique et
élévation des
privilèges pour les
programmes
d'installation |
|
EnableLUA
(*) |
1 |
1 |
0 : désactive UAC
1 : active UAC |
|
EnableSecureUIAPPaths |
1 |
1 |
0 : N'élève pas les
privilège pour les
applications qui ne
sont pas installées
dans des
emplacements
protégés 1 :
Élève les privilèges
pour les
applications
installés dans des
emplacements
protégés |
|
EnableUIADesktopToggle |
0 |
0 |
0 : Ne désactive pas
la protection du
bureau (ce qui
provoque un
clignotement de
l'écran et un grisé
des autres messages)
1 : protection du
bureau désactivée |
|
EnableVirtualization |
1 |
1 |
0 : Désactivé 1 :
active la
virtualisation de
certains répertoires
et de certaines
clefs du registre,
cf
17 - Qu'est
ce que la virtualisation UAC ? |
|
FileAdministratorToken |
1 |
1 |
0 : Désactivé 1 :
Activation de UAC
pour le compte
Administrator
(Administrateur) par
défaut de Windows |
|
PromptOnSecureDesktop
(*) |
1 |
1 |
0 : Désactivé 1 :
Active le Bureau
sécurisé pour les
demandes d'élévation |
|
ValidateAdminCodeSignatures |
0 |
1 |
0
: Désactivé 1 :
N'autorise
l'élévation de
privilège que pour
les applications
signées et validées |
|
LocalAccountTokenFilterPolicy |
0 |
0 |
0 : Impossible
d'accéder aux
partages
administratifs :
votre Token
administrateur n'est
pas diffusé sur le
réseau 1 : le
totalité de vos
informations de
connexion (y compris
les privilèges
administrateur) sont
remontées (cf
http://support.microsoft.com/kb/927832/
)
|
* Les trois clefs qui
changent avec le curseur
sont :
|
Position du curseau |
0
(Never notify) |
1
(Don't notify
Windows settings
/ don't dimm) |
2
(Don't notify Windows Settings) |
3
(Always notify) |
| ConsentPromptBehaviorAdmin |
0 |
5 |
5 |
2 |
| EnableLUA |
0 |
1 |
1 |
1 |
| PromptOnSecureDesktop |
0 |
0 |
1 |
1 |
Le niveau 2 est le niveau
par défaut. Seul
l'activation ou la
désactivation de UAC
nécessitent un redémarrage
(merci à
Jean Claude Bellamy pour
cette info).
La documentation actuelle
est ici :
http://msdn.microsoft.com/en-us/library/cc232771(PROT.13).aspx
(mais pas à jour pour
Windows Seven)
_ en utilisant MSCONFIG :
Démarrer / Executer MSCONFIG,
US :
Cliquez sur l'onglet Tools / sélectionnez Disable UAP, et cliquez sur Launch
FR : Cliquez sur l'onglet Outils / séléctionnez Modifier les paramètres
de contrôle des comptes utilisateurs, puis cliquez sur Exécuter
_ en ligne de commande :
Démarrer / Exécuter : E:\Windows\System32\UserAccountControlSettings.exe
Redémarrez l'ordinateur
|
|
8
- Le compte intégré
Administrateur (ou Administrator) n'apparait pas dans la fenêtre
de Logon. Est-il possible de le faire apparaitre ? |
Ce compte apparait lorsqu'il n'y a pas de membres
dans le groupe local
Administrateurs.
Il est également possible de le faire apparaitre
en ajoutant un clé de
registre pour le compte administrateur dans
HKLM\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\Winlogon\SpecialAccounts\UserList.
Ajoutez une nouvelle valeur
nommée Administrateur et positionnez la valeur à
1.
Pour le cacher de la fenêtre d'accueil, positionnez cette valeur à 0.
|
|
9
- Au cours d'une même
session, je voudrais donner mon consentement une seule fois
lorsque j'exécute plusieurs fois la même application, est ce
possible ? |
Microsoft ne l'a pas prévu
(Grrrrrrrrrrrrrrrrrrrrrrrrr !).
L'idée d'UAC est d'empêcher un code
malveillant de s'exécuter sans votre
consentement si vous désirez bénéficier de cette
protection UAC.
Donner son consentement une fois pour toute pourrait conduire un code
malveillant à utiliser à votre insu et de
manière silencieuse un contexte de
sécurité plus élevé que le votre ( token complet
).
|
|
10
-
Comment savoir si UAC va demander une confirmations en lançant
un programme / une icône / un menu ? |
Microsoft a conçu tout un jeu d'icônes et logos que les développeurs
doivent inclure dans leur programmes, en voici des exemples :
|
Ressource |
Icône Vista |
Icône Windows 7 |
Nom ressource |
|
Icône :
|
 |
|
User
resource: IDI_SHIELD |
|
Bouton
:
|
 |
 |
Button_SetElevationRequired(hwndButton) |
|
Lien :
|
 |
 |
Layout IDI_SHIELD next to syslink
Load IDI_SHIELD and set as command
link icon |
|
Menu
contextuel :
|
 |
 |
Icon support
|
|
|
12 -
Est-il possible, temporairement, d'éviter le mécanisme UAC ? |
Pour cela,
il faut faire tourner le shell avec un token complet d'administrateur au
lieu d'un token d'utilisateur final ou d'un token filtré.
- Lancez une invite de commande
par un click droit runas administrator.
- Killez explorer.exe
(gestionnaire des tâches)
- Dans l'invite de commande
administrateur, lancez un nouvel explorer ( explorer.exe).
Ce nouveau shell hérite alors
du token complet de l'administrateur.
Les processus enfant alors
lancés au travers de ce nouveau shell sont donc exécutés directement
avec un token complet, sans passer par le mécanisme d'élévation UAC (ce
qui est indiqué en dessous de la ligne de commande de Démarrer /
Exécuter :

|
|
13 -
Comment UAC gère l'ouverture de session ? |
Les applications qui
nécessitent une élévation de privilège sont bloquées.
Dans ce cas l'utilisateur est prévenu par un
message dans la barre des taches après la démarrage.
Dans ce cas en cliquant sur le message
l'utilisateur peut exécuter l'application
qui a été bloquée ou choisir les
applications à autoriser.
Voici les
sources de programmes bloquées :
- Menu
démarrage utilisateur
- clefs RUN
du registre utilisateur
- Menu
démarrage machine
-
clefs RUN de la machine
Quelques
exceptions :
les clefs
RUNOnce (pour permettre la fin de l'installation d'un programme après
redémarrage)
les
applications imposées par les stratégies systèmes dans les clefs RUN
|
|
15 -
Pourquoi ne peut-on pas accéder aux
partages administratifs ou fonctions d'administration (accès
distant au registre, Gestion de l'ordinateur, ..) sous Windows 7 ? |
UAC
interdit l'utilisation de
privilèges administrateur
local par le réseau par
défaut.
Il est possible de
désactiver l'UAC pour
l'accès à distance
uniquement :
Démarrer, Exécuter puis
tapez regedit
Ouvrez :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system.
Créez une nouvelle valeur
Dword nommée
LocalAccountTokenFilterPolicy
Modifiez ça valeur
hexadécimale à 1
Redémarrer l'ordinateur
Vous pourrez désormais
accéder aux partages
administratifs et
administrer à distance le PC
via les consoles MMC avec un
compte membre du groupe
Administrateurs.
Pour réactiver l'UAC pour
l'accès à distance, il
suffira de supprimer la
valeur DWORD, ou de lui
mettre la valeur 0
|
|
17 -
Qu'est ce que la virtualisation UAC ? |
Windows 7 permet aux
applications qui ne sont pas
écrites pour Seven de
s’exécuter dans les comptes
d’utilisateur standard à
l’aide de la vitalisation
du système de fichiers et de
l’espace de noms du
registre. Lorsqu’une
application modifie un
emplacement de système
global dans le système de
fichiers ou dans le
registre, et que cette
opération échoue parce que
l’accès lui est refusé,
Windows redirige l’opération
vers une zone propre à
l’utilisateur. Lorsque
l’application lit à partir
d’un emplacement système
global, Windows cherche
d’abord des données dans la
zone propre à l’utilisateur
et, si aucune donnée n’est
présente, permet la
tentative de lecture à
partir de l’emplacement
global.
Vous pouvez voir l’état de
virtualisation d’un
processus en ajoutant la
colonne Virtualisation à la
page Processus du
Gestionnaire des tâches.
Microsoft recommande que les
programmes d’installation
d’application globaux qui
comptent s’exécuter avec les
droits administratifs créent
un répertoire sous le
répertoire %ProgramFiles%
pour stocker les fichiers de
l’application exécutables et
les données auxiliaires et
créer une clé sous
HKEY_LOCAL_MACHINE\Software
pour leurs paramètres
d’application. Lorsqu’une
application s’exécute, elle
peut le faire dans
différents comptes
utilisateur et devrait donc
enregistrer les données
spécifiques à l’utilisateur
dans un répertoire %AppData%
propre à chaque utilisateur
et enregistrer des
paramètres propres à chaque
utilisateur dans le profil
d’annuaire de l’utilisateur
sous HKEY_CURRENT_USER\
Software. Les comptes
utilisateur standard n’ont
pas de droits d’écriture
dans le répertoire
%ProgramFiles% ou dans
HKEY_LOCAL_MACHINE\Software,
mais puisque la plupart des
systèmes de Windows sont à
utilisateur unique et que la
majorité des utilisateurs
étaient administrateurs
jusqu’à Windows Seven, les
applications qui
enregistrent de façon
inexacte des données
utilisateur et des
paramètres à ces
emplacements fonctionnement
quand même.
Windows Seven permet à ces
applications d’héritage de
s’exécuter dans les comptes
d’utilisateur standard à
l’aide de la virtualisation
du système de fichiers et de
l’espace de noms du
registre. Lorsqu’une
application modifie un
emplacement de système
global dans le système de
fichiers ou dans le
registre, et que cette
opération échoue parce que
l’accès lui est refusé,
Windows redirige l’opération
vers une zone propre à
l’utilisateur. Lorsque
l’application lit à partir
d’un emplacement système
global, Windows cherche
d’abord des données dans la
zone propre à l’utilisateur
et, si aucune donnée n’est
présente, permet la
tentative de lecture à
partir de l’emplacement
global.
Les emplacements de système
de fichiers qui sont
virtualisés pour les
processus d’héritage sont
%ProgramFiles%,
%ProgramData% et
%SystemRoot%, à l’exclusion
de certains sous-répertoires
spécifiques. Cependant, tous
les fichiers possédant une
extension exécutable, y
compris .exe, .bat, .scr,
.vbs et autres, sont exclus
de la virtualisation. Cela
signifie que les programmes
qui se mettent à jour à
partir d’un compte
utilisateur standard
échouent au lieu de créer
des versions privées de
leurs exécutables qui ne
sont pas visibles par un
administrateur exécutant un
programme de mise à niveau
global.
La
virtualisation de registre
est implémentée de façon
légèrement différente de la
virtualisation de système de
fichiers. Les clés de
registre virtualisées
incluent la plupart de la
branche
HKEY_LOCAL_MACHINE\Software,
mais il existe de nombreuses
exceptions, comme ce qui
suit :
HKLM\Software\Microsoft\Windows
HKLM\Software\Microsoft\Windows
NT
HKLM\Software\Classes
Seules les clés qui sont
habituellement modifiées par
les applications, mais sans
provoquer de problèmes de
compatibilité ou
d’interopérabilité, sont
virtualisées. Windows
redirige les modifications
de clés virtualisées par une
application vers un registre
de racine virtuelle de
l’utilisateur sur
HKEY_CURRENT_USER\Software\Classes\VirtualStore.
La clé est située dans la
ruche des Classes de
l’utilisateur,
%LocalAppData%\Microsoft\Windows\UsrClass.dat,
qui, comme toutes les autres
données de fichier
virtualisées, n’erre pas
avec un profil utilisateur
errant.
Au lieu de maintenir une
liste fixe d’emplacements
virtualisés comme Windows le
fait pour le système de
fichiers, l’état de
virtualisation d’une clé est
enregistré comme un
indicateur,
REG_KEY_DONT_VIRTUALIZE,
dans la clé elle-même.
L’utilitaire Reg.exe peut
afficher l’indicateur, ainsi
que deux autres indicateurs
liés à la virtualisation,
REG_KEY_DONT_SILENT_FAIL et
REG_KEY_RECURSE_FLAG. cf
Windows Vista - Le Registre
|
|
18
- Comment lancer un programme sans qu'UAC ne demande
confirmation ? |
De nombreux outils et
astuces permettent de créer
des raccourcis ne
nécessitant pas de
confirmation d'élévation de
privilèges.
a - Créer une tâche
: (source :
http://www.howtogeek.com/howto/windows-vista/create-administrator-mode-shortcuts-without-uac-prompts-in-windows-vista/
), fonctionne aussi sous
Windows 7
|
Lancez le
Planificateur de
tâches, puis créez
une tâche : |
 |
Donnez un nom à la
tâche et cochez
Exécuter avec les
autorisation
maximales.
Dans l'onglet
Actions, définissez
le nom du programme
ou script à lancer
|
 |
|
Vous pouvez tester
la tâche en cliquant
dessus puis
sélectionnez
Exécuter |
 |
Il ne vous reste
plus qu'à créer un
raccourci lançant la
tâche :
Cliquez droit sur le
bureau, puis
sélectionnez Nouveau
/ Raccourci |
|
La ligne de commande
se présente sous la
forme :
schtasks /run /tn
"NOMTACHE"
Vous devez remplacer
NOMTACHE par le nom
de la tâche que vous
venez de créer.
|
 |
|
NB : vous pouvez
ensuite
personnaliser le
raccourci telles que
la taille de la
fenêtre initiale et
l'icône. |
|
Vous n'avez maintenant plus
aucune raison de
désactiver UAC.
(c) Laurent Gébeau
|