Windows 8 enrichit le modèle de sécurité pour prendre en compte les applications modernes que sont les Windows Apps. Durant cette session, vous découvrirez le concept de conteneur isolé (AppContainer) et vous en comprendrez le fonctionnement. De plus, cette session comportera des démonstrations pour illustrer en pratique les niveaux d’intégrité, les capacités ainsi que les brokers. Pas de code mais une plongée en profondeur dans les arcanes de la sécurité système avec des démos.
1. Donnez votre avis !
Depuis votre smartphone, sur :
http://notes.mstechdays.fr
De nombreux lots à gagner toutes les heures !!!
Claviers, souris et jeux Microsoft…
Merci de nous aider à améliorer les TechDays
http://notes.mstechdays.fr
2. SEC 313 Le modèle de sécurité des
Windows Apps
Philippe Beraud
Jean-Yves Grasset
Arnaud Jumelet
Direction Technique
Microsoft France
Sécurité
#WindowsApps
3. • Les Windows Apps, un nouveau modèle applicatif
• Le modèle de sécurité des Windows Apps
• L’évolution des mécanismes internes
Notre agenda pour la session
• Sessions complémentaires
– CLI301 Mécanismes internes de la sécurité de Windows 8
– SEC302 Windows 8 et la sécurité
6. • Utilisation des API Windows Runtime (WinRT)
• A propos des API Win32
– Toujours présente à la fois sur architectures x86, x64 et ARM
– Possibilité d’utiliser un sous-ensemble des API Win32 et COM
• Support des scénarios non déjà couverts par WinRT (Cf. MSDN)
• P/Invoke, composants WinRT
• Options de compilation : application des bonnes pratiques de
sécurité
– Compilation avec les options de sécurité (DEP, ASLR, SAFESEH et SEHOP)
SDK Windows 8 et Apps Windows
7. • Depuis le Windows Store
– Déploiement possible à l’extérieur du Windows Store pour les Apps Métier
• Contrôle par Windows 8 des étapes d’installation, de mise à jour et
de suppression des Apps
– Installation possible par un utilisateur standard
• AppLocker permet de contrôler l’installation et l’exécution des Apps Windows
– Prise en charge des packages pour toutes les dépendances (ex. bibliothèque
Microsoft Windows pour JavaScript) depuis le Windows Store
– Au niveau Apps : PAS d’exécution de code lors du déploiement, PAS de
modification des préférences de l'utilisateur, etc.
• Les Apps doivent être signées numériquement
– Vérification de la signature faite uniquement lors de l’installation
– Signature Microsoft pour les Apps installées depuis le Windows Store
• Signature de confiance nécessaire pour les Apps Métier installées en dehors
Principes de déploiement des Apps Windows
8. • Package d’application (*.appx)
– Ressources de l’application
• Fichiers de l’application (binaires, HTML/JavaScript/CSS,
ressources)
– Fichier manifeste de l’application (AppxManifest.xml)
• Capacités, contrats, extensions et associations de fichiers
– Fichier de cartographie de bloc (AppxBlockMap.xml)
• Blocs de données des ressources et condensé
cryptographique de chaque bloc
– Fichier de signature du package (AppxSignature.p7x)
• Format Microsoft Authenticode
App Windows = Application empaquetée
9. • Centre de développement – Applications Windows Store
• Cf. Publication de votre application sur le Windows Store
• Nécessite un compte
– Développeur individuel vs. Développeur d’entreprise
Publication des Apps sur le Windows Store
10. • Tests de conformité lors de la publication d’une Apps dans le Windows
Store
– Analyse de l'application par rapport à la description, aux fonctionnalités utilisées,
aux capacités déclarées, présence d’une déclaration de confidentialité, etc.
– Vérification de sécurité selon les bonnes pratiques SDL (Microsoft Software
Development Lifecycle)
• Possibilité de tester préalablement une Apps avec le "Kit de certification
des applications Windows" :
– En termes de sécurité
• Analyse statique de code : tests des pratiques de codage et de génération
– Test des API utilisés : ex. pas d’appel à des API Win32 et COM non autorisées
– Test des options de compilation
• Analyse de la surface d’attaque
• Cf. Test des fonctionnalités de sécurité Windows
Exigences de qualité et de sécurité
11. • Signature par une autorité de certification approuvée sur les cibles
– Ajout possible du certificat de signature dans "Trusted People"
• Certificat auto-signé lors du développement
• Préparations des machines
– Machines membres d’un domaine (Windows 8 Entreprise)
• Activation du sideloading par GPO
– Configuration Ordinateur > Modèles d'administration > Composants Windows > Déploiement de
package Appx > Autoriser l’installation des applications approuvées
– Machines hors domaine (Windows RT, Windows 8 Pro/Entreprise)
• Activation via l’utilitaire slmgr et une clef de produit pour le chargement parallèle en
entreprise
– slmgr /ipk <sideloading product key>
– slmgr /ato ec67814b-30e6-4a50-bf7b-d55daf729d1e
• Déploiement par add-appxpackage ou par le biais de l’image système
• Cf. Préparation et déploiement d’applications pour l’entreprise
Déploiement pour l’entreprise – "Sideloading"
14. • Conteneur d’application (AppContainer)
– Environnement d’exécution d’une Windows App –un ou plusieurs
processus
– Assure une isolation entre les Apps
– Accès limité aux ressources du système et au réseau à travers la
notion de capacités
– Privilèges réduits
– Pas d’accès au profil utilisateur
Modèle de sécurité des Windows Apps
15. • Niveaux d’isolation de l’AppContainer:
1. Isolation des processus
2. Isolation des fenêtres
3. Isolation du système de fichiers
4. Isolation des périphériques
5. Isolation du réseau
6. Isolation des informations d’identification
• Néanmoins, les AppContainers ne sont PAS des frontières de
sécurité :
– Il peut y avoir des failles dans l’infrastructure du broker
– Les Windows Apps métiers peuvent appeler des API Win32 et COM
qui pourraient permettre de franchir le conteneur isolé
AppContainer : un conteneur applicatif isolé
17. • Les Apps pour Windows 8 ne peuvent pas :
– Lire ou écrire des fichiers sans interaction utilisateur
• Espace de stockage dédié à l’App
• Accès bibliothèques (Musique, Photos..), disque amovible selon
déclarations dans le Manifeste
– Lire ou écrire dans la base de registre (sauf sa propre ruche)
– Interagir avec l’interface utilisateur hors du périmètre de la zone
occupée par l’application elle-même
– Avoir accès à des informations système locales, journal des
évènements, processus en cours d’exécution, etc.
AppContainer : un accès contrôlé
31. • Les applications ont toujours dû se protéger contre les
attaques, qu'est-ce qui est vraiment nouveau ici ?
– Environnement d’exécution restreint (AppContainer)
– Des protections activées par défaut (Signature, Options de
compilation)
Qu’est-ce qui est réellement nouveau ?
32. • Le modèle de sécurité des Windows Apps présente les avantages
suivants :
– Réduction de la surface d'attaque
• Chaque App reçoit les capacités nécessaires pour son bon fonctionnement, mais pas plus.
Pour pouvoir être publiées sur le Windows Store, les Apps qui demandent des capacités
spéciales requièrent une licence « développeur d’entreprise »
– Contrôle et consentement utilisateur
• Chaque App divulgue ses capacités à l'utilisateur sur la page des détails sur le Windows
Store. La première fois qu’une App utilise une capacité matérielle pouvant porter atteinte à
la vie privée, l’utilisateur doit donner explicitement son consentement
– Isolation
• Aucun canal de communication direct n’existe entre les Apps autrement que par le Cloud et
les capacités de stockage. Les Apps sont isolées les unes des autres et ne peuvent pas
accéder à la mémoire utilisée et aux données stockées par d'autres applications
En guise de conclusion
33. • Blogs MSDN
– Delivering reliable and trustworthy Metro style apps
– Designing a simple and secure app package – APPX
• Documentation MSDN
– Critères de certification pour les applications Windows 8
– Packages et déploiement d’applications (applications du
Windows Store)
– Publication de votre application sur le Windows Store
– Test des fonctionnalités de sécurité Windows (Windows)
Pour aller plus loin
34. Formez-vous en ligne
Retrouvez nos évènements
Faites-vous accompagner
gratuitement
Essayer gratuitement nos
solutions IT
Retrouver nos experts
Microsoft
Pros de l’IT
Développeurs
www.microsoftvirtualacademy.com
http://aka.ms/generation-app
http://aka.ms/evenements-
developpeurs http://aka.ms/itcamps-france
Les accélérateurs
Windows Azure, Windows Phone,
Windows 8
http://aka.ms/telechargements
La Dev’Team sur MSDN
http://aka.ms/devteam
L’IT Team sur TechNet
http://aka.ms/itteam
Notas do Editor
Notation
Les logiciels sous Windows s’exécutent traditionnellement sur le Bureau. Il s’agit de programmes traditionnels généralement développés avec des technologies telles que MFC, Windows Forms ou encore WPF
Avec Windows 8, on distingue :
Les applications de bureau (majoritairement API Win32)
Les applications Windows (pour le Windows Store) avec les API Windows Runtime (WinRT)
Cf. APIs Windows Runtime : http://msdn.microsoft.com/en-US/library/windows/apps/br211377
Possibilités d’applications hybrides : écrites dans différents langages
******
Allowed Win32 & COM API’s are callable via P/Invoke and COM interop
JavaScript apps can’t call Win32 & COM API’s directly but they can call WinRT components written in C++ or C# to do it (and you can create your own WinRT components).
You must use only the Windows Runtime APIs to implement the features of your Windows Store app
We describe these APIs in the Windows Store apps API reference : http://msdn.microsoft.com/en-us/library/windows/apps/br211369.aspx
Options de sécurité
À la compilation
•Prévention de l’exécution des données /NXCOMPAT --- Utilise le mécanisme Data Execution Prevention (DEP)
Voir : http://blogs.technet.com/b/srd/archive/2009/06/05/understanding-dep-as-a-mitigation-technology-part-1.aspx
et : http://blogs.technet.com/b/srd/archive/2009/06/12/understanding-dep-as-a-mitigation-technology-part-2.aspx
•Randomisation du format d’espace d’adresse /DYNAMICBASE --- Active le mécanisme Address Space Layout Randomization (ASLR)
•Protection de la gestion des exceptions /SAFESEH
Au Runtime
• Utilise le mécanisme Structured Exception Handler Overwrite Protection (SEHOP) – (Binaire marqué pour Opt-in)
Voir : http://blogs.technet.com/b/srd/archive/2009/11/20/sehop-per-process-opt-in-support-in-windows-7.aspx
et : http://blogs.technet.com/b/srd/archive/2009/02/02/preventing-the-exploitation-of-seh-overwrites-with-sehop.aspx
http://blogs.technet.com/b/srd/archive/2009/02/02/preventing-the-exploitation-of-seh-overwrites-with-sehop.aspx (System-wide)
*****
"Windows App Certification Kit" :
http://go.microsoft.com/fwlink/?LinkId=263703
Une seule règle d’éditeur nécessaire pour une App Windows : Cf. Applications empaquetées et règles du programme d’installation d’application empaquetée dans AppLocker (http://technet.microsoft.com/fr-fr/library/hh831350.aspx)
Les packages appx sont des fichiers de conteneur ZIP qui sont définis comme un sous-ensemble des normes ISO et OPC (Open Packaging Conventions) ECMA
***
Le fichier (AppxBlockMap) est un document XML qui contient une liste des fichiers de l'App ainsi que les indexes et les hashes cryptographiques de tous les blocs de données qui sont stockés dans le package. Permet la mise à jour incrémental d'une App.
Block elements represent a 64-KB (65536 bytes) block of uncompressed data within a file that is stored in the Appx package. (Except for the last block of a file)
HashMethod : SHA2-256 (par défaut), SHA2-384 ou SHA2-512
Centre de développement – Applications Windows Store : http://go.microsoft.com/fwlink/p/?LinkID=245786
Publication de votre application sur le Windows Store (Windows) : http://msdn.microsoft.com/fr-fr/library/windows/apps/jj657972.aspx
"Kit de certification des applications Windows" : http://go.microsoft.com/fwlink/?LinkId=263703
BinScope Binary Analyzer : http://msdn.microsoft.com/fr-fr/library/windows/apps/hh920280.aspx#binscopeAttack Surface Analyser : http://msdn.microsoft.com/fr-fr/library/windows/apps/hh920280.aspx#asa
Windows 8 Entreprise : chargement parallèle en entreprise activé
Cf. Préparation et déploiement d’applications pour l’entreprise (Windows) : http://msdn.microsoft.com/fr-fr/library/windows/apps/jj657971.aspx
Tant que la plate-forme n'est pas configurée pour le sideloading, la tuile de l'App métier dans l'écran d'accueil affiche un «X» dans le coin en bas à droite pour indiquer qu'un problème empêche l'App de s'exécuter.
Windows 8 Home Edition, il est possible d’ajouter localement sur l’ordinateur une application métier en utilisant une licence développeur ou via une GPO locale.
----------------
Clef produit sideloading : disponible sur le site MVLS
Montrer les éléments qui constituent un package (fichier zip) :
Manifeste : identité, capacités, contrats, extensions et association de fichier
Fichier de cartographie de bloc
Signature du package
Installer le package d’application et exécuter l’application
Privilèges réduits
Le modèle de sécurité de Windows 8 évolue et introduit le concept de conteneur d’application (AppContainer).
Basé sur le principe du moindre privilège et utilise des niveaux d'isolation.
Le format du jeton de sécurité sous Windows 8 évolue. Il contient des capacités, des packages SID, des claims et des devices groups.
Chaque App sur Windows 8 s'exécute dans son propre AppContainer isolé qui est défini par les capacités déclarées comme requises par l'application pour fonctionner.
Un AppContainer offre des niveaux d'isolation dans lequel un processus peut s'exécuter. De plus, un AppContainer est défini et mis en œuvre à l'aide d'un système de politique (le manifeste). La politique de sécurité d'un AppContainer définit les capacités que les processus peuvent utiliser.
Une capacité est une ressource pour laquelle la sécurité, la vie privée ou bien le coût financier, est en jeu. Des exemples de capacités comprennent des informations de localisation géographique, la caméra, le microphone, l'accès au réseau local, l'envoi de SMS, etc.
Les AppContainers fournissent six niveaux d’isolation :
Isolation des processus. Les processus dans un AppContainer ne peuvent interférer avec les processus d’autres AppContainers. Concrètement, cela inclut :
Des espaces de noms BNO (BaseNamedObjects) isolés par AppContainer.
Lecture bloquée dans le registre machine (HKLM).
Lecture bloquée dans le registre utilisateur (HCKU) sauf dans des clés précisées dans une liste blanche.
Ecriture bloquée dans le registre utilisateur (HKCU) sauf dans des parties isolées par AppContainer.
Accès restreint à la GAT (Global Atom Table).
Pas de communication interprocessus (IPC) en dehors de l’AppContainer.
Interdiction d’injecter des threads dans un autre AppContainer.
Dans tous les cas, un processus de confiance ou un autre AppContainer peut toujours octroyer des droits sur des ressources lui appartenant à un AppContainer spécifique, en positionnant des ACL adéquates.
Isolation des fenêtres. Les processus dans un AppContainer ne peuvent interférer avec les fenêtres appartenant à d’autres AppContainers ni d’autres processus de niveau d’intégrité plus élevé. Il s’agit d’une extension du modèle UIPI précédent.
Isolation du système de fichiers. L’accès au système de fichiers est restreint : un AppContainer a interdiction de lecture et d’exécution excepté dans les répertoires Program Files et Windows. Il n’a le droit d’écrire que dans des répertoires spécifiques isolés par AppContainer. Il est toutefois possible d’octroyer des droits d’accès à des bibliothèques utilisateur (Musique, Photos…) ou d’utiliser des ACL spécifiques.
Isolation des périphériques. Les AppContainers ont un accès restreint aux périphériques, excepté le clavier, la souris et les haut-parleurs. Des droits d’utilisation de certains périphériques peuvent être accordés, et, pour certains périphériques sensibles tels que le GPS ou la webcam, l’accord de l’utilisateur est demandé lors de l’accès.
Isolation du réseau. L’utilisation du réseau est bloquée, et l’on peut définir certains droits de manière déclarative : client internet, client et serveur internet, client et serveur réseau local). L’accès au loopback est bloqué.
Isolation des informations d’identification. L’accès aux informations d’identification est bloqué, mais chaque AppContainer peut utiliser son propre stockage d’informations d’identification, ses propres cookies, mots de passes enregistrés et certificats, dans son stockage isolé. Il est possible de donner le droit à un AppContainer d’utiliser les informations d’identification de l’utilisateur ainsi que ses certificats. Il ne peut utiliser le gestionnaire d’identification de Windows et il a un accès contrôlé aux identifications tierces telles que le compte Microsoft ou OAuth.
différents mécanismes dont les capacités.
Lancer le taskmanager
Les Windows Apps ont accès (sans avoir à déclarer de capacité matériel spécifique) au clavier, à la souris, aux haut-parleurs, aux imprimantes ainsi qu’aux capteurs physiques suivants : Accéléromètre, Gyromètre, Magnétomètre, inclinomètre, capteur d’orientation ainsi que capteur de lumière ambiante.
Les exigences de confidentialité s'appliquent lorsque vous accédez à des capteurs matériels divulguant des informations personnelles et/ou confidentielles.
Location : Provides access to the current location. This is obtained from dedicated hardware like a GPS sensor in the PC, or derived from available network information.
Microphone : Provides access to the microphone's audio feed. This allows the app to record from connected microphones.
Proximity : Provides the capability to connect to devices in close proximity to the PC via near-field communication (NFC). Near-field proximity may be used to send files or communicate with an app on the nearby device.
Removable Storage : Provides the ability to add, change, or delete files on removable storage devices. The app can only access file types on removable storage that are defined in the manifest by using the File Type Associations declaration. The app can't access removable storage on HomeGroup PCs.
Text Messaging : Provides access to the PC's text messaging functionality. This allows the app to send and receive text messages. Note This functionality is only available to mobile operator apps and Windows Store apps given privileged access by mobile network operators.
Webcam : Provides access to the webcam's video feed. This allows the app to capture snapshots and movies from connected webcams.
Pour pouvoir être publiées sur le Windows Store, les Apps qui demandent des capacités spéciales requièrent une licence « développeur d’entreprise ».
Four categories of capabilities
Network Access
Data Access
User Identity
Device Access
La première fois qu’une App utilise une capacité lié à du matériel ayant un impact sur la vie privée (localisation, photo, vidéo…) l’utilisateur doit donner explicitement son consentement.
Many applications maintain user settings and preferences between invocations of the program.
The Windows Runtime provides an area of application data storage (sometimes known as “isolated storage”) specifically for the use of the application in storing information of this sort.
A program obtains access to this storage through the ApplicationData class in the Windows.Storage namespace.
An instance of ApplicationData applicable for the current application is available from the static ApplicationData.Current property.
From that object, a TemporaryFolder property provides a disk area suitable for temporary data. Other properties—LocalFolder, LocalSettings, RoamingFolder, and RoamingSettings—are also available for storing more permanent data.
If you want, you can store program settings in isolated storage, perhaps in XML format serialized from a class typically called AppSettings.
If you store settings in the AppicationData.Current.LocalFolder directory, you’ll discover that it maps to the following location on the machine’s main drive:
/Users/[username]/AppData/Local/Packages/[package family name]/LocalState
The [username] is the user’s name on the computer, and [package family name] is mostly a GUID that uniquely identifies the application. For any Visual Studio application project you can find this name by opening the Package.appmanifest file and clicking the Packaging tab.
ApplicationDataContainer appData = ApplicationData.Current.LocalSettings;
Aller dans %LOCALAPPDATA%\Packages\Microsoft.SDKSamples.TechDays2013.CS_mc4wj1f4h8fhj
Expliquer le rôle de chaque dossier
CheckNetIsolation.exe Loopbackexempt -a -n="Radios Francaises« ?
Montrer les règles de pare-feu Windows Firewall.
Dans les règles de trafic sortant, sélectionner la ligne TechDays2013 et montrer la section « Packages d’applications », « Programme et Service » de la règle de l’ App « Lecteur »
Les AppContainers fournissent six niveaux d’isolation :
Isolation des processus. Les processus dans un AppContainer ne peuvent interférer avec les processus d’autres AppContainers. Concrètement, cela inclut :
Des espaces de noms BNO (BaseNamedObjects) isolés par AppContainer.
Lecture bloquée dans le registre machine (HKLM).
Lecture bloquée dans le registre utilisateur (HCKU) sauf dans des clés précisées dans une liste blanche.
Ecriture bloquée dans le registre utilisateur (HKCU) sauf dans des parties isolées par AppContainer.
Accès restreint à la GAT (Global Atom Table).
Pas de communication interprocessus (IPC) en dehors de l’AppContainer.
Interdiction d’injecter des threads dans un autre AppContainer.
Dans tous les cas, un processus de confiance ou un autre AppContainer peut toujours octroyer des droits sur des ressources lui appartenant à un AppContainer spécifique, en positionnant des ACL adéquates.
Isolation des fenêtres. Les processus dans un AppContainer ne peuvent interférer avec les fenêtres appartenant à d’autres AppContainers ni d’autres processus de niveau d’intégrité plus élevé. Il s’agit d’une extension du modèle UIPI précédent.
Isolation du système de fichiers. L’accès au système de fichiers est restreint : un AppContainer a interdiction de lecture et d’exécution excepté dans les répertoires Program Files et Windows. Il n’a le droit d’écrire que dans des répertoires spécifiques isolés par AppContainer. Il est toutefois possible d’octroyer des droits d’accès à des bibliothèques utilisateur (Musique, Photos…) ou d’utiliser des ACL spécifiques.
Isolation des périphériques. Les AppContainers ont un accès restreint aux périphériques, excepté le clavier, la souris et les haut-parleurs. Des droits d’utilisation de certains périphériques peuvent être accordés, et, pour certains périphériques sensibles tels que le GPS ou la webcam, l’accord de l’utilisateur est demandé lors de l’accès.
Isolation du réseau. L’utilisation du réseau est bloquée, et l’on peut définir certains droits de manière déclarative : client internet, client et serveur internet, client et serveur réseau local). L’accès au loopback est bloqué.
Isolation des informations d’identification. L’accès aux informations d’identification est bloqué, mais chaque AppContainer peut utiliser son propre stockage d’informations d’identification, ses propres cookies, mots de passes enregistrés et certificats, dans son stockage isolé. Il est possible de donner le droit à un AppContainer d’utiliser les informations d’identification de l’utilisateur ainsi que ses certificats. Il ne peut utiliser le gestionnaire d’identification de Windows et il a un accès contrôlé aux identifications tierces telles que le compte Microsoft ou OAuth.
différents mécanismes dont les capacités.
Apps XAML
Les Apps s’exécutent dans un AppContainer dont le processus porte le nom du binaire de l’Apps.
Apps HTML5
Les Apps développées en HTML5/Javascript s’exécutent dans un AppContainer dont le processus est WWAHost.exe
Pas d’accès aux plug-ins et extensions d’Internet Explorer
C:\Windows\syswow64\wwahost.exe dans le cas d’une application 32 bits,
C:\Windows\system32\wwahost.exe dans le cas d’une application 64 bits.
**********************************************************************
L'appcontainer active les mécanismes de protection suivants :
NX (Data Execution Prevention) is unconditionally on and cannot be turned off.
Structured Exception Handler Overwrite Protection (SEHOP).
Bottom up Address Space Layout Randomization (ASLR).
Terminate on heap corruption.
L'appcontainer ne chargent que des applications signées et vérifiées par rapport à la politique locale de l'ordinateur. Validé par Code Integrity (CI.DLL).
Modèle d’isolation Windows basé sur UAC et les niveaux d’intégrité.
Aucune écriture et lecture dans le profil de l’utilisateur sauf permissions ou capacités explicites.
La création d’un AppContainer s’effectue à l’aide de la fonction NtCreateLowBoxToken.
– duplique le jeton d’accès spécifié en paramètre- Tous les privilèges sont retirés ou désactivés du jeton à l’exception de celui-ci SeChangeNotifyPrivilege.
– passe le niveau d’intégrité du jeton d’accès à bas (low)
Le jeton de sécurité évolue et ajoute le support des :
AppContainerSID: identitifiant unique persistant
AppContainer Number : identifiant transitoire qui permet distinguer un AppContainer parmi d'autres de manière très rapide et efficace.
Capacités
Claims : User et Device
Claims restreints : User et Device
Device Groups SID
Aller dans l’onglet Security pour afficher le jeton d’accès.
Faire remarquer que le processus s'exécute en tant que l'utilisateur courant mais avec des permissions, des privilèges et un niveau d’intégrité réduit.
Deny sur le groupe BUILTIN\Administrateurs
1 seul privilège : SeChangeNotifyPrivilege. Expliquer que le seul autre privilège activable serait SeIncreaseWorkingSetPrivilege
Montrer le package SID dont le flag est AppContainer
Montrer les différentes capacités
Enfin, montrer le niveau d'intégrité Faible.
**************************
Integrity levels defined by Security IDs (SIDs)
The RID defines the integrity level
Primary integrity levels
Low S-1-16-4096 (0x1000)
Medium S-1-16-8192 (0x2000)
High S-1-16-12288 (0x3000)
System S-1-16-16384 (0x4000)
********************************
Integrity level policies associated with generic access rights
No-Write-Up – means lower IL process cannot modify higher IL object
No-Read-Up – prevents lower IL process from having generic read
No-Execute-Up – prevents lower IL process generic execute access
Default policy for resources is Medium level with No-Write-Up
Si l’appel provient d’un AppContainer, alors AccessCheck() applique une politique No_READ_UP aux ressources accédées (autres que « Program Files » et « Windows »
AccessCheck()
Integrity Check
+NO_READ_UP
NO_WRITE_UP
Discretionary access Check
Package SID
User, Groups, Claims…
Mécanisme d’isolation basée dans le noyau Windows. (MIC pour Mandatory Integrity Control)
http://msdn.microsoft.com/en-us/library/bb625963.aspx
Un AppContainer a un niveau d’intégrité bas et une politique No write-up dans le jeton d’accès
Politique Protège les fichiers et les données du système de modification par les utilisateurs privilégiés Protège les données de l’utilisateur de modification par du code d’intégrité plus faible
Pas d’écriture sur le profil utilisateur.
Les ACLS sur les processus ont une politique No-Read up et No write-upUn processus d’intégrité plus faible n’est pas autorisé à lire le contenu de la mémoire d’un processus dont l’intégrité est supérieure
Protège également contre la modification de la mémoire
MIC permet de préserver l’intégrité des données et (la confidentialités des données même s’il existe les ACL pour cela !)
L’IL est contrôlé avant la DACL
Un processus (thread) peut seulement ouvrir un objet en accès écriture si son IL est égal ou supérieur à celui de l’objet en question
L’Integrity Level (IL) des l’objets est stocké comme IL ACE dans une SACL
Processus, threads et jetons ont toujours une IL ACE
Les fichiers et clés de la base de registre qui n’ont pas d’IL ACE ont un niveau implicite Medium et une politique implicite de type No Write-UP
****************
#define SDDL_NO_WRITE_UP TEXT("NW")
#define SDDL_NO_READ_UP TEXT("NR")
#define SDDL_NO_EXECUTE_UP TEXT("NX")
Exemple de dossier ayant une étiquette d’intégrité explicite
c:\Users\arjum\Favorites
c:\Users\arjum\AppData\LocalLow
c:\Users\arjum\AppData\Local\Packages
c:\Users\arjum\AppData\Local\Microsoft\Windows\History\Low
c:\Users\arjum\AppData\Local\Microsoft\Windows\Temporary Internet Files\Low
c:\windows\ServiceProfiles\NetworkService\AppData\LocalLow
*************
Pour afficher l’étiquette d’intégrité contenu dans la SACL d’un processus : accesscheck (sysinternals)
*************
Les Apps sont présentes dans %Program Files%\WindowsApps
Les Apps dans un AppContainer ont leur propre stockage applicatif
Stockage local : %LOCALAPPDATA%\Packages\{packagename}_{publisherhash}.
Les préférences de l’application sont enregistrées dans un fichier ruche (.dat) dont la correspondance dans la base de registre est :HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage
Pour accéder à d’autres endroits, cela nécessite d’avoir
Capacité dans le manifeste
Consentement de l’utilisateur via le sélecteur de fichiers (FilePicker)
**************************
Is Windows 8 subject to EAS remote wipe?
Only local email storage is wiped, not the whole computer. !
Lancer la Windows App TechDays2013
Lancer ProcessExplorer
Montrer le niveau d’intégrité du processus TechDays2013.exe (AppContainer)
Aller dans l’App TechDays2013, cliquer sur le scénario « 2) Pick multiple files » et cliquer sur le bouton « Pick Files »
Retourner dans Process ExplorerRemarquer l’apparition d’un nouveau processus PickerHost.exe qui s’exécute avec un niveau d’intégrité moyen. Il a été lancé par l’intermédiaire du Runtime Broker.
Delivering reliable and trustworthy Metro style apps : http://blogs.msdn.com/b/b8/archive/2012/05/17/delivering-reliable-and-trustworthy-metro-style-apps.aspx
Designing a simple and secure app package – APPX : http://blogs.msdn.com/b/windowsappdev/archive/2012/12/04/designing-a-simple-and-secure-app-package-appx.aspx
Critères de certification pour les applications Windows 8 : http://msdn.microsoft.com/fr-fr/library/windows/apps/hh694083.aspx
Packages et déploiement d’applications (applications du Windows Store) : http://msdn.microsoft.com/fr-fr/library/windows/apps/hh464929.aspx
Publication de votre application sur le Windows Store : http://msdn.microsoft.com/fr-fr/library/windows/apps/jj657972.aspx
Test des fonctionnalités de sécurité Windows (Windows) : http://msdn.microsoft.com/fr-fr/library/windows/apps/hh920280.aspx