Existe-t-il un seul binaire UAC?

27

Existe-t-il un fichier binaire (.exe) dans le dossier System32 responsable des fonctionnalités de Windows UAC? (par exemple, uac.exe). Que se passerait-il si ce fichier était supprimé de force? Windows se briserait-il ou échouerait-il au démarrage?

Il n'y a pas de problème XY ici; Je suis simplement curieux de savoir ce qui se passerait si l'UAC était supprimé de force d'un PC.

Kathy
la source
1
Vous pouvez facilement désactiver l'UAC. UAC est une fonction du noyau. Ce que vous voulez n'est pas possible
Ramhound
Il y a un fichier win32k.sys technize.net/… et apparemment ce fichier dans une fenêtre pré patché, peut être manipulé / modifié .. pour désactiver UAC. Alternativement, on peut désactiver l'UAC de manière normale, bien qu'il ne s'agisse pas d'un fichier EXE
barlop
Vous pouvez désactiver l'UAC à l'aide de diverses méthodes, par exemple superuser.com/questions/1013702/… . Je pense que si vous le supprimez d'une autre manière, vous obtiendrez principalement le même effet, bien qu'avec les erreurs dans les réponses ci-dessous à propos des binaires manquants.
YetAnotherRandomUser
@barlop, win32k.sys n'est que le côté noyau du sous-système Windows. En d'autres termes, le code de base utilisé par tout. Je ne recommanderais pas d'essayer de le changer. pasotech.altervista.org/windows_internals/Win32KSYS.pdf
Dark Falcon
@DarkFalcon Il y a probablement plus au "côté noyau du sous-système Windows" que cela. Et je ne conseillais pas que l'on "change ça"! Que pensez-vous que quelqu'un va faire? L'ouvrir dans le bloc-notes? Je n'ai jamais suggéré une telle chose! Ouvrez un éditeur hexadécimal? mieux, mais je ne l'ai pas suggéré non plus! Et personne ne ferait cela et ne changerait rien à moins d'avoir une idée de ce qu'ils voulaient changer, ce qui nécessiterait un certain niveau de compétence!
barlop

Réponses:

56

UAC est une architecture multi-composants implémentée par plusieurs binaires

Le contrôle de compte d'utilisateur (UAC) fait référence à plusieurs composants qui forment ensemble l' architecture UAC . J'examinerai brièvement certains d'entre eux ainsi que les binaires responsables de leur implémentation, mais voici d'abord un aperçu de l'architecture UAC de l'article Microsoft Docs Comment fonctionne le contrôle de compte d'utilisateur :

entrez la description de l'image ici

Autorité de sécurité locale (LSA) / jeton filtré

Conceptuellement, le «premier» composant de l'UAC est implémenté par le sous-système Local Security Authority qui gère la création du jeton d'accès d'un utilisateur pendant le processus de connexion. À partir de Windows Vista, le processus d'ouverture de session a été modifié de sorte que lorsqu'un administrateur ouvre une session avec l'UAC activé, le sous-système LSA génère deux jetons d'accès distincts pour l'utilisateur:

  1. Un avec un accès administrateur complet, et
  2. Un deuxième "jeton filtré" avec un accès utilisateur standard

Comme indiqué ici, ce processus est différent de celui d'une connexion utilisateur standard:

entrez la description de l'image ici

Le service de sous-système LSA vit dans le lsass.exeprocessus.

Virtualisation

Ajouté dans Windows 7, la virtualisation des fichiers et du registre est un composant de l'UAC qui shims les applications plus anciennes qui ne sont pas conformes à l'UAC mais qui ne nécessitent que des droits administratifs pour accéder à certaines zones protégées du système de fichiers ou du registre:

Lorsqu'une application administrative qui n'est pas compatible UAC tente d'écrire dans un répertoire protégé, tel que Program Files, UAC donne à l'application sa propre vue virtualisée de la ressource qu'elle tente de modifier. La copie virtualisée est conservée dans le profil de l'utilisateur.

La source

En redirigeant ces tentatives d'accès vers des zones qui ne nécessitent pas d'autorisations d'administrateur, ces applications continuent de fonctionner même si l'UAC est activé sur le système.

Cette virtualisation est implémentée dans le noyau .

Service d'information sur les applications

Le service d'informations sur les applications (AIS) lit le manifeste d'une application et travaille avec l'invite de consentement UAC pour déterminer si une application est autorisée à s'exécuter avec des droits élevés (c'est-à-dire démarrer dans le contexte du jeton d'accès de niveau administratif non filtré créé à l'ouverture de session) . Ce billet de blog donne un bon aperçu de son rôle dans le processus UAC:

AIS Facilite l'exécution d'applications interactives avec des privilèges administratifs supplémentaires. Si ce service est arrêté, les utilisateurs ne pourront pas lancer d'applications avec les privilèges administratifs supplémentaires dont ils pourraient avoir besoin. Le shell vérifie auprès de ce service lors du lancement d'une application. AIS est celui qui lit le manifeste et la section xml 'trustInfo' qui a les exigences pour le 'requiredExecutionLevel' ...

Voici un graphique qui suit la citation ci-dessus détaillant le rôle d'AIS dans le processus d'invite de consentement UAC:

entrez la description de l'image ici

L'AIS est implémenté dans la DLLappinfo.dll qui est exécutée par svchost.exe.

Invite de consentement

La réponse de @ BenN explique le rôle clé de la (dans) la célèbre UAC Consent Prompt. Ceci est implémenté dans consent.exeet est responsable de l'obtention du consentement de l'utilisateur ou des informations d'identification d'un utilisateur administratif afin de permettre le lancement d'une application nécessitant des droits d'administrateur.

Bureau sécurisé

Le bureau sécurisé est l'endroit où l'invite de consentement UAC s'affiche par défaut. L'UACBlog de Microsoft nous dit ce qui est unique à propos de ce bureau par rapport au bureau utilisateur:

Vous interagissez le plus souvent avec [le bureau sécurisé] lorsque vous vous connectez à Windows, car l'interface utilisateur d'ouverture de session s'exécute sur le bureau sécurisé. La principale différence entre Secure Desktop et User Desktop est que seuls les processus approuvés exécutés en tant que SYSTEM sont autorisés à s'exécuter ici (c'est-à-dire rien ne s'exécutant en tant que niveau de privilège de l'utilisateur) et le chemin pour accéder à Secure Desktop à partir du bureau utilisateur doit également être approuvé via toute la chaîne.

L'idée derrière son utilisation lors de la demande du consentement de l'utilisateur pour exécuter une application avec des autorisations élevées est que les logiciels malveillants ne peuvent pas imiter Secure Desktop à moins qu'il ne dispose déjà de droits administratifs, auquel cas inciter un utilisateur à les accorder est théorique.


Conclusion: UAC n'est pas seulement un binaire. C'est un tissu de sous-systèmes entrelacés.

Il y a encore d'autres aspects de l'architecture UAC non couverts ici, mais cela devrait fournir suffisamment de preuves pour les faits que:

  1. UAC n'est pas implémenté dans un seul binaire.
  2. S'il est activé, il fait partie intégrante de l'exécution des tâches administratives.

Depuis son introduction dans Windows Vista, il a été profondément intégré dans les parties clés du système d'exploitation, ce qui rend impossible la suppression de tout le code responsable de l'UAC sans casser d'autres choses (telles que votre capacité à vous connecter!)

Je pense qu'il est prudent de dire que si vous "supprimiez de force" l'UAC, vous briseriez Windows.

Je dis Rétablir Monica
la source
1
FWIW technize.net/… sur la base de ce lien, il semble que le fichier win32k.sys semble jouer un rôle Je remarque que file.exe l'identifie comme "PE32 + exécutable (natif) x86-64, pour MS Windows"
barlop
win32k.sys est - essentiellement - un gros morceau du noyau. Bien sûr, il joue un rôle dans l'UAC. Il est sous Windows.
Roger Lipscombe
25

Comme Twisty l'a très bien expliqué , il existe de nombreux composants qui aident à implémenter l'UAC. La partie de l'UAC que les gens connaissent le mieux est la boîte de dialogue d'élévation / consentement:

Ceci est fourni par consent.exe"UI de consentement pour les applications administratives". J'ai essayé de le renommer dans une machine virtuelle et de voir ce qui se passe. Comme prévu, aucune invite d'élévation n'apparaît lors de l'utilisation de «exécuter en tant qu'administrateur» - à la place, vous obtenez une erreur de fichier introuvable qui blâme la chose que vous essayez d'élever:

pas trouvé

Essayer d'utiliser un élément de l'interface utilisateur du panneau de configuration qui nécessite une élévation (c'est-à-dire avec l'icône de bouclier), même s'il est connecté en tant qu'administrateur, échoue avec des erreurs similaires. Essayer de lancer des tâches administratives à partir du menu Démarrer génère une erreur légèrement différente:

aucune application associée

En fonction de l'ACL défini lors du changement de nom qui a tout cassé, il pourrait être impossible de résoudre ce problème à partir du système d'exploitation, car les opérations sur les fichiers peuvent nécessiter une élévation (même si elles ne produisent généralement pas la boîte de dialogue de consentement). Les activités de type utilisateur normal ne semblent cependant pas être dégradées.

Ben N
la source
3
@muru, je suppose que consent.exe ne renvoie pas seulement vrai ou faux, mais plutôt le jeton à exécuter sous. Ce qui signifie que vous ne pouvez pas passer d'un utilisateur normal à un jeton administrateur sans vous authentifier en tant qu'administrateur.
Joey
6
@muru Windows vérifie et remplace de nombreux fichiers système, pas sûr que celui-ci soit inclus ou non. Cependant, du point de vue de la sécurité, le point est théorique - pour remplacer consent.exe, vous avez d'abord besoin de privilèges d'administrateur, il n'y a donc pas d'escalade de privilèges même s'il était possible de remplacer la façon dont vous l'imaginez.
Luaan
3
Juste pour l'inclure depuis que la pensée m'est venue à l'esprit. Vous pouvez toujours démarrer la machine sous Linux ou quelque chose pour remplacer le fichier. Mais cela nécessite un accès physique à la machine, qui est également un accès administratif. Ce n'est donc toujours pas un problème de sécurité
DeadChex
1
@EricTowers Oui, mais comme les privilèges administratifs doivent être modifiés consent.exe, un attaquant qui peut le faire est déjà de l'autre côté de l' écoutille hermétique et a des façons plus simples de faire de mauvaises choses.
Ben N
1
@TwistyImpersonator Question intéressante! L'élévation silencieuse semble également déclencher une exécution de consentement (par surveillance de démarrage de processus ) lorsqu'elle est effectuée sous un compte d'administrateur normal. Le compte administrateur intégré n'est pas soumis à l'UAC, donc tous ses programmes sont déjà élevés et le consentement ne s'implique pas. Vous pouvez modifier ce comportement à l'aide de cette stratégie de sécurité .
Ben N