====== Concepts de Base ====== ==== 0.1.1 Versions de Windows ==== ^ Nom Marketing ^ N° de Version ^ Date de Sortie ^ | Windows 2000 | 5.0 | 12/1999 | | Winows XP | 5.1 | 06/2001 | | Windows Vista | 6.0 | 01/2007 | | **Windows 7** | 6.1 | 10/2009 | | Windows 8 | 6.2 | 10/2012 | | Windows 8.1 | 6.3 | 10/2013 | | Windows 10 | 10.0 | 06/2015 | ==== 0.1.2 API & .net ==== * **Windows API** * Permet aux applications l'accès aux fonctions de l'OS. * Est dépendant de l'architecture. * Manipules les objets Systèmes * Fournit des fonctions de sécurité de bas niveau * **Framework .net** * Système de haut niveaux * Fournit le CLR permettant d'executer du bytecode * Permet des appels au objets COM * Abstrait Windows API ==== 0.1.3 Processus ==== Caractéristiques d'un ''Process'' * ProcessID: identifiant unique du processus * Parent * Threads * VAD: Informations de mapping mémoire * Handles: Objets utilisés par ce processus * Access Token: Contexte de sécurité, droits et privilèges ==== 0.1.4 Threads ==== Caractéristiques d'un ''Thread'' * ThreadID: identifiant unique du thread, indépendant du processus contenant * Etat CPU: Sauvegade du contenu des registres (si le thread est interrompu) * Piles d'execution: Contient 2 piles (user mode, kernel mode) * TLS: Espace de stockage réservé au thread * Access Token: Contexte de sécurité propre, utilise celui du procéssus par défaut mais peut être modifié pour faire de l'impersonation. ==== 0.1.5 Mémoire Virtuelle ==== //Vu en cours de SYE// Système permettant de fournir au procéssus un espace d'adressage isolé de celui des autres processus. ==== 0.1.6 Kernel mode v. User mode ==== //Vu en cours de SYE// Permet à l'OS de se protéger contre les applications. Les applications executés en //User mode// n'ont pas accès à l'espace mémoire du noyau. Une application doit effectuer un [[glossaire#syscall]] pour changer vers le //Kernel Mode//. Le code en mode kernel à lui accès à toute la mémoire spécifique au système d'exploitation ET celui de l'application appelante. Et possède un accès complet au instructions CPU. ==== 0.1.7 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//. ==== 0.1.8 Objets & Handles ==== Le noyau windows expose un interface vers ses ressources internes sous la forme d'//Objets//. Chaque type d'objet expose plusieurs méthodes permettant d'iteragir avec lui. Cette interaction s'effectue au travers de l'API Windows ce qui permet au noyau d'effectuer un contrôle d'accès et un audit sur les interactions avec le objets. Lorsqu'un processus demande à accéder à un objet, le noyau lui retourne un //Handle//. Une handle est une référence vers une instance d'un objet spécifique qui permet au proessus d'interagir avec cet objet. ==== 0.1.9 Registre ==== Le //Registre// est la base de données du système d'exploitation. Il contient notamment: * Les options de boot * La configuration du système * Les paramètres de sécurité * Les paramètres spécifique à l'utilisateur en cours Le registre est organisé sous la forme d'une structure en arbre qui est composé de deux parties importantes: * ''HKEY_LOCAL_MACHINE'' (''HKLM'') contient la configuration spécifique à la machine * ''HKEY_CURRENT_USER'' (''HKCU'') contient la configuration spécifique é l'utilisateur Chaque noeud dans l'arbre du registre est un //Objet// et possèdes des autorisations d'accès.