La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Moindre privilège par défaut Exécution en tant qu'utilisateur standard même si on est membre des administrateurs Mécanismes Ouverture de session interactive.

Présentations similaires


Présentation au sujet: "Moindre privilège par défaut Exécution en tant qu'utilisateur standard même si on est membre des administrateurs Mécanismes Ouverture de session interactive."— Transcription de la présentation:

1

2 Moindre privilège par défaut Exécution en tant qu'utilisateur standard même si on est membre des administrateurs Mécanismes Ouverture de session interactive en mode restreint Passage en mode élevé avec consentement Contrôle via niveaux d'intégrité Virtualisation des ressources pour les applications "legacy"

3 Jeton administrateur Jeton filtré 1.Examination du jeton pour privilèges élevés Lancement d'explorer.exe 2. Privilèges élevés sont retirés du jeton Administrateur ouvre une session avec l'IHM de winlogon Local Security Authority (LSA) vérifie les credentials Windows XP Windows Vista Lancement d'explorer.exe

4 Il y a création de deux sessions de logon (LUID) et jetons (token) correspondant Jeton normal Jeton filtré (privilèges de l'utilisateur standard) Les jetons sont liés GetTokenInformation(TokenLinkedToken, & TOKEN_LINKED_TOKEN) Lors d'une ouverture des session interactive (interactive logon - LogonUser): Administrateur (AAM – Admin Approval Mode) Deux sessions Jeton normal (élevé) et jeton filtré Utilisateur standard (OTS – Over The Shoulder) Une session Jeton normal Utilisateur standard avec privilèges supplémentaires "non sensibles" Une session Jeton normal (avec ces privilèges supplémentaires) Exemple: SeSystemtimePrivilege Utilisateur avec privilèges supplémentaires jugés "sensibles" Deux sessions Jeton normal (avec tous les privilèges) et jeton filtré, mais seuls les privilèges "sensibles" sont retirés Exemple: SeImpersonatePrivilege

5

6 Administrateur = posséder l'un de ces groupes: DOMAIN_GROUP_RID_ADMINSDOMAIN_GROUP_RID_CONTROLLERSDOMAIN_GROUP_RID_CERT_ADMINSDOMAIN_GROUP_RID_SCHEMA_ADMINSDOMAIN_GROUP_RID_ENTERPRISE_ADMINSDOMAIN_GROUP_RID_POLICY_ADMINSDOMAIN_ALIAS_RID_ADMINSDOMAIN_ALIAS_RID_POWER_USERSDOMAIN_ALIAS_RID_ACCOUNT_OPSDOMAIN_ALIAS_RID_SYSTEM_OPSDOMAIN_ALIAS_RID_PRINT_OPSDOMAIN_ALIAS_RID_BACKUP_OPSDOMAIN_ALIAS_RID_RAS_SERVERSDOMAIN_ALIAS_RID_PREW2KCOMPACCESSDOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPSDOMAIN_ALIAS_RID_CRYPTO_OPERATORS Ces RIDs sont inclus dans le jeton filtré, mais marqués comme USE_FOR_DENY_ONLY

7 Privilèges jugés "sensibles" SeCreateTokenPrivilegeSeTcbPrivilegeSeTakeOwnershipPrivilegeSeBackupPrivilegeSeRestorePrivilegeSeDebugPrivilegeSeImpersonatePrivilegeSeRelabelPrivilegeSeLoadDriverPrivilege

8 UAC affecte LogonUser(LOGON32_LOGON_INTERACTIVE) Les autres ouvertures de session via LogonUser (Réseau, Batch, Service, Réseau texte clair) ne sont pas affectées et ne reçoivent qu'un jeton seul jeton – en principe non filtré Cas de l'accès distant Mesure contre le loopback La session réseau distante est dotée d'un jeton filtré lorsque l'utilisateur est un compte local membre du groupe des administrateurs (de la machine distante) Clé de registre LocalAccountTokenFilterPolicy=1 pour désactiver ce filtrage Peut être nécessaire pour administrer une machine Workgroup à distance On ne peut administrer une machine à distance avec un compte local à la machine, il faut utiliser un compte du domaine Par défaut, le compte Builtin\Administrator n'est pas affecté par UAC Configurable par Security Policy

9 Concevoir, développer et tester pour le mode utilisateur standard, non admin Si une application fonctionne correctement en mode utilisateur standard sous Windows XP, il y a de fortes chances qu'elle fonctionnera correctement avec UAC OutilsSUA LUA Buglight

10 Problèmes fréquents Accès en écriture aux ressources non accessibles aux utilisateurs standard Program Files HKEY_LOCAL_MACHINE Création/Ouverture d'une ressource avec plus de droits que nécessaire Même si on n'utilise pas ces droits Mauvaise utilisation des dossiers pour stocker données et états de l'application

11 Données de l'utilisateur \Users\ \ par type de données "Documents", "Pictures", etc… %userprofile% L'utilisateur utilise ces données "directement" Créer sous-dossier, ou nouvelle catégorie si nécessaire Données de l'application (état) par utilisateur E.g. settings par utilisateur Utilisateur n'interagit pas "directement" avec ces données Spécifiques à la machine \Users\\Appdata\Local %localappdata% HKCU E.g. settings par utilisateur Utilisateur n'interagit pas "directement" avec ces données Pour l'utilisateur quelque soit la machine \Users\\Appdata\Roaming %appdata% HKCU

12 Données partagées entre utilisateurs \Users\Public\ par type de données "Documents", "Pictures", etc… %public% Interaction "directe" des utilisateurs Configuration initiale de l'application lors de l'installation pour cette machine (affecte tous les utilisateurs) Administrateur seulement pour écriture HKLM\ProgramData\ %allusersprofile% E.g. Shortcuts du menu Démarrer pour tous les utilisateurs L'utilisateur n'interagit pas avec ces données

13 Ne pas coder les chemins en dur, mais utiliser le système pour localiser les dossiers Variables d'environnement %userprofile%, %localappdata%, %appdata%, %public% Environment.GetEnvironmentVariable() Special folders SHGetFolderPath(CSIDL_APPDATA) Environment.GetFolderPath(), Environment.SpecialFolder Continue à fonctionner sous Vista, même si les noms ("MyDocuments") ne sont plus bon => équivalences ("Documents") Known folders Nouveau sous Vista pour prendre en compte la nouvelle interface de l'explorer SHGetKnownFolderPath() IKnownFolderManager

14 Variable environnement Known Folder Special Folder Known Folder Chemin Recommandation d'usage %userprofile%---- \Users\ Profil – Données par utilisateur %appdata% AppData ApplicationData AppData AppData\RoamingEtat par utilisateur - indépendant de la machine %localappdata% Local AppData LocalApplicationData Local AppData AppData\LocalEtat par utilisateur - spécifique pour cette la machine %public% Public - Public \Users\PublicDonnées/états partagés entre utilisateurs %allusersprofile% Common AppData CommonApplicationData Common AppData \ProgramDataConfiguration par machine lors de l'installation (pas d'accès en écriture utilisateur standard)

15 Samples VistaBridge Wrappers managés pour nouvelles API Vista non encore disponibles.Net Framework 2.0 Fait partie de Windows SDK.NET Framework 3.0 Samples 8b6c-8f98-40d0-880d-c3339c5da01e&displaylang=en 8b6c-8f98-40d0-880d-c3339c5da01e&displaylang=en Dans le package CrossTechnologySamples.exe class KnownFolders Gestion des known folders Vista class UACManager ShellExecuteCoCreateAsAdmin

16

17 App Description

18 requestedExecutionLevelasInvoker Application testée pour non-admin requireAdministrator Prompt selon policy, si nécessaire ouverture session logon admin Pas d'exécution sans admin (AAM ou OTS) highestAvailable Application sera lancée avec jeton non-filtré, si disponible Prompt selon policy, mais pas de changement d'identité (pas d'OTS) Un manifeste est nécessaire et utile pour Permettre à un programme nécessitant mode admin de n'être exécuté que dans ce mode Permettre au shell d'ajouter le bouclier en surimpression à l'icône du programme Permettre à un programme de se soustraire à la virtualisation Etc…

19 Assez direct avec un projet VC++ "Additional Manifest Files" Un peu plus compliqué avec un projet VC# Créer fichier manifeste.exe.manifest Rajouter fichier de ressources au projet.rc et y inclure référence au manifeste #define RT_MANIFEST 24 #define APP_MANIFEST 1 APP_MANIFEST RT_MANIFEST.exe.manifest Compiler le fichier de ressource avec un "pre-build event" “ \rc.exe” $(ProjectDir)$(ProjectName).rc Rajouter la ressource compilée au script du projet à la main Unloader le projet et ouvrir le fichier.csproj avec l'éditeur, puis rajouter l'élément MSBuild suivant: appName.res appName.res

20

21 Une application peut avoir besoin de s'exécuter pour tout ou partie en mode admin UAC contrôle et prend charge l'élévation de privilège L'élévation (le passage d'un jeton filtré à un jeton non filtré) se produit toujours à une frontière de processus Elévation = création d'un nouveau processus On a donc deux types processus ou applications Processus s'exécutant avec le jeton filtré (moindre privilège) Processus élevé, s'exécutant avec le jeton non filtré

22 Conditions pour lesquelles UAC va effectuer une élévation de privilège (lancer le processus avec le jeton non filtré) 1.Indication explicite du manifeste (embarqué, ou externe) 2.L'exécutable se trouve dans la base de compatibilité des applications Vista Intégrée à l'OS 3.L'exécutable est détecté comme étant un programme d'installation 4.Demande explicite du processus parent ShellExecute avec verbe "runas" E.g. Explorer.exe - click droit "Run as administrator" ou propriétés de la shortcut Moniker d'élévation COM avec CoGetObject CreateProcess

23 parent.exe ShellExecute AppInfo Service 2. RPC Consent.exe child.exe RAiLaunchAdminProcess(child.exe) Utilisateur standard Local SystemAdministrateur 3. Nouveau parent CreateProcessAsUser(child.exe) CreateProcess 1. ERROR_ELEVATION_REQUIRED

24

25 Indique que l'action nécessite une élévation Toute demande d'élévation doit être prévisible et corrélée à une action indiquée par le bouclier Si l'application est marquée requireAdministrator, le shell affiche l'icône avec le bouclier en surimpression

26 BoutonsC++ SendMessage(GetDlgItem(hWnd, IDOK), BCM_SETSHIELD, 0, TRUE); Macro (commctrl.h) Button_SetElevationRequiredState(hwndButton, fRequired); C# Attention: this.button1.FlatStyle=System.Windows.Forms.FlatStyle.System; Menus Un peu plus compliqué – voir littérature [DllImport("user32.dll")] public extern static int SendMessage(IntPtr hwnd, uint msg, uint wParam, uint lParam); private const uint BCM_FIRST = 0x1600; private const uint BCM_SETSHIELD = BCM_FIRST + 0x000c; public static int Button_SetElevationRequiredState(IntPtr hwnd) { return SendMessage(hwnd, BCM_SETSHIELD, 0, 1); }

27

28 Permet d'identifier l'origine du code et de s'assurer de son intégrité pour le consentement UAC Policy: Only elevate executables that are signed and validated Par défaut: disabled

29 IHM consentement Sans signature Avec signature Application système

30 A intégrer dans le processus de développement/production Nécessite planification Whitepaper Code Signing Best Practices Signature de test Obtenir un certificat de signature auprès d'une CA ou générer un certificat auto-signé de test makecert -r -pe -ss My -n "CN= ".cer Signer le code signtool signwizard Rajouter le certificat dans le magasin des racines de confiance Vérifier la signature signtool verify /pa /v signtool verify /pa /v Commandes de signature peuvent être intégrées dans les étapes "post-build" d'un projet VS

31

32 Les niveaux d'intégrité sont définis par le biais de SIDs appelés "Label SID" Low S (0x1000) – Protected Mode IE MediumS (0x2000) – Applications utilisateur HighS (0x3000) – Processus élevé par UAC SystemS (0x4000) - Local System/Local Service Positionnés sur le jeton Niveau d'intégrité du code Positionnés sur les ressources (SACL) Niveau d'intégrité des ressources Règle de la dominance

33 Jeton niveau MEDIUM High Medium Low Lecture Ecriture Jeton niveau LOW Ressources No-Write-Up Utilisateur

34 Jeton niveau MEDIUM High Medium Low Lecture Ecriture Jeton niveau LOW Objets process, thread, token No-Write-Up/No-Read-Up Utilisateur

35 Utilisé par UIPI (User Interface Privilege Isolation ) Une application de niveau inferieur ne peut pas Faire SendMessage ou PostMessage vers un processus de plus haut niveau Utiliser des hooks pour monitorer un processus de plus haut niveau Procéder à l'injection d'une DLL dans un processus de plus haut niveau Prévention des "shatter attacks"

36 Permet à un programme "legacy" nécessitant droits d'admin de continuer à fonctionner avec UAC Beaucoup d'applications "legacy" fonctionnent correctement en mode utilisateur standard si ce n'est pour leurs accès en écriture à HKLM\Software et %ProgramFiles% Solution: rediriger ces accès vers des zones "per user" accessibles sans droits d'admin Initiative temporaire Non disponible pour les applications 64 bits Si manifeste => la virtualisation n'est pas effective Configurable par policy (enabled/disabled)

37 Secpol.msc - Local policies – Security Options UAC est désactivable - Activé par défaut Ensemble des administrateurs en Admin Approval Mode Enabled/Disabled Autres policies Mode d’approbation de l’administrateur builtin Enabled/Disabled Prompt pour l’élévation de privilège des administrateurs Consent/Credentials/No prompt Prompt pour l’élévation de privilège pour les utilisateurs standards Credentials/No prompt(denial) Détection des programmes d'installation Enabled/Disabled Ne permettre l'élévation que des applications ayant une signature valide Enabled/Disabled Ne permettre l'élévation des applications UIAccess que si elles sont installées dans répertoire s û r Enabled/Disabled Basculer vers un desktop sécurisé pour le prompt d' élévation Enabled/Disabled Virtualisation des fichiers / de la base de registre Enabled/Disabled

38 Une bonne application Windows Vista/UAC Est conçue et testée pour un fonctionnement non-admin si possible Comporte un manifeste indiquant son niveau d'exécution requis Sauvegarde ses paramètres par utilisateur dans les dossiers/clés de registre dédiés à cet effet Ne demande pas plus de droits que nécessaire Factorise les fonctions nécessitant élévation dans un exécutable séparé, et utilise le paradigme du bouclier pour la gestion de l'IHM Comporte une signature Authenticode pour ses binaires Effectue sa configuration initiale "par machine" lors de l'installation et non lors de la première exécution Fait levier sur la technologie MSI 4.0 pour son installation Obtient le logo Windows Vista

39 Whitepaper UAC Vista – MSDN Version finale – pour téléchargement (Format Word) BC5E-A2EEBB74C16B&displaylang=en BC5E-A2EEBB74C16B&displaylang=en Version précédente (Beta 1) us/dnlong/html/AccProtVista.asp us/dnlong/html/AccProtVista.asp Whitepaper UAC Vista – Technet b70e-b18ff918c mspx?mfr=true b70e-b18ff918c mspx?mfr=true COM elevation moniker us/com/html/1595ebb8-65af-4609-b3e7-a21209e64391.asp us/com/html/1595ebb8-65af-4609-b3e7-a21209e64391.asp Blog Kenny Kerr Developers-_1320_-Part-4-_1320_-User-Account-Control.aspx Developers-_1320_-Part-4-_1320_-User-Account-Control.aspx Blog Jim Allchin features-vs-convenience.aspx features-vs-convenience.aspx

40 © 2007 Microsoft France Votre potentiel, notre passion TM


Télécharger ppt "Moindre privilège par défaut Exécution en tant qu'utilisateur standard même si on est membre des administrateurs Mécanismes Ouverture de session interactive."

Présentations similaires


Annonces Google