====== Résumé ====== ===== Sessions ===== :!: Ne pas confondre les //Sessions// avec les //Logon Sessions// qui fournissent un contexte de sécurité. Une session est un ensemble de processus et objets liés à un compte actif et/ou une machine. Il existe plusieurs //Sessions// sur une machine. * Session 0: Services systèmes * Session 1: Console Locale (physique) * Session 2: Consoles Distantes (Terminal Server) Chaque session contient une ou plusieurs //Stations//. * WinSta0 pour les interations utilisateurs * Services-* pour les services systèmes Chaque session contient aussi plusieurs //Processus//. ===== Besoins de Sécurité ===== L'objectif de base est de pouvoir controller l'accès aux objets du système par les acteurs l'utilisant. Pour ce faire un OS devant fournir un fonctionnement sécurisé à besoin de: * **Identifier** ses utilisateurs * Le système doit pouvoir faire la distinction entre les différentes identités opérant sur le système * **Authentifier** ses utilisateurs * Le système doit pouvoir s'assurer que les identités sont authentiques * **Autoriser** les actions des utilisateurs * Le système doit pouvoir connaître les droits et privilèges d'une identité par rapport à l'action qu'elle est en train d'effectuer * **Cloisoner** son fonctionnement * Les opérations sensibles doivent être isolées des opérations potentiellement dangereuses * Les processus doivent isolés les uns des autres * **Résilience** face aux modifications hostiles * Le système doit être difficile à corrompre * Assurer la **Rétrocompatibilité** ===== Autorisation ===== **Autorisations Discretionaires** Un //Sujet// possède un //Access Token// qui définit son identité. Un //Objet// possède un //Security Descriptor//. Le SRM vérifie l'//Access Mask// d'un //Sujet// vis à vis d'un //Objet//. Chaque processus/thread possède un //Access Token// par défaut hérité de son parent. **Token Restreint** Copie du token primaire ou d'impersonation. Supprime les //privilèges//, marque //deny-only// (seul les ACE deny sont considérés) et //restricted// (doit effectuer 2 passes). Utilisé pour l'UAC. **Security Identifier** Identifie uniquement un objet dans le système. **Security Descriptor** Contient le //SID// du propriétaire, les //DACL// et //SACL// **SDDL** AceType;AceFlags;Rights;ObjectGuid;InheritObjectGuid;AccountSid;(ConditionalExpression) **Calcul** //Auth. Maximales//: Allow - Deny //Auth. Effectives//: First Match (2 passes) ==== Confiance et Intégrité ==== **Niveaux:** Untrusted, Low, Medium, High, System. **Politiques:** No-Read-Up, No-Write-Up. ==== Droits & Privilèges ==== **Droits** Vérifiés par le LSA. Vérification au Logon. **Privilèges** Donne accès à un composant. Doit être activé (explicitement) avant utilisation. ===== Audit ===== S'active dans la politique d'audit du //Local Security Editor// et se définit dans les //SACL//. Les traces sont générées par le //SRM// et relayés au //LSASS// pour les enregister (//LSA// génère ses propres traces). ===== Authentification ===== {{:heig:sos:windows:windows-auth.png?nolink|}} 0. //Initialisation:// WinLogon crée les objets nécéssaires; 1. //Acquisition:// LogonUI récupère les credentials via les CP, WinLogon crée un SID et l'associe au AppDesktop; 2. //Authentification:// WinLogon parcours les AP pour valider les credentials, si l'AP réussit il crée un LUID; 3. //Autorisation:// LSASS crée la LogonSession et vérifie si elle peut se connecter; 4. //Setup:// WinLogon obtient l'AccessToken, le complète et génère les traces d'audit; 5. //Complete:// WinLogon execute ''userinit'' qui lance le shell (''explorer''); ==== Kerberos ==== {{:heig:sos:windows:kerberos-simple.png?nolink|}} ===== UAC & Virtualisation ===== L'//UAC// est un mécanisme qui permet aux administrateurs de temporairement élever leur privilèges pour effectuer des opérations sensibles. Il vérifie aussi le niveau de signature de l'executable (System, Signes, Unsigned). La //Virtualisation// permet de cloisonner les applications et de rediriger leur écritures (fichiers, registrem, ...) dans le dossier utilisateur. ===== Protection d'execution ===== //AppID// = { Certificat, Path, Hash } //AppLocker// Système de DEP "entreprise" (règles complexes) //SRP// Système de DEP (ne peut cibler que une machine) ===== Protection du Disque ===== //TPM// (Trusted Platform Module) = puce sécurisée dédiée aux opérations cryptographiques internes de l’ordinateur, lie le software au matériel //Bitlocker// Chiffrement du disque