--- tags: revision, WINSEC title: Révisions WINSEC --- # Histoire (Chapitre 1) ## DOS ![](https://i.imgur.com/2VQd6az.png) ## Windows NT (New Technology) ![](https://i.imgur.com/Pkpeu49.png) ![](https://i.imgur.com/ORxB0ch.png) ### Fonctionalités rings 0/3, segmentation, pagination, adressage virtuel, multitâche préemptif ### Support matériel A l'origine : x86, Alpha, PowerPC et MIPS historique : ARM (WOA, Windows on ARM, windows 8 RT), itanium (XP, 2003, 2008/2008 R2) actuellement : x86 abandonné depuis 2008 R2, x64 de Windows XP/Server 2003 à Windows 10 # Architecture su système (Chapitre 2) ## Catégories processus système, service, utilisateur * système: wininit, winlogon, smss, lsass * service: services, svchost, spoolsv, inetinfo * utilisateur: userinit, explorer, tous les processus executés par le user ## Sous-systèmes Un sous-système est composé : * d'un processus jouant le rôle de "serveur" * d'un ensemble de bibliothèques dynamiques offrant l'API aux processus ### Win32 Issu de l'évolution de Win16 Systématiquement démarré Permet l'exécution de programmes de type : Windows 32/64 bits, 16 bits via VDM (Virtual Dos Machine) Serveurs hébergés : * csrsrv.dll : initialisation et divers * basesrv.dll : thread, process, VDM * insrv.dll : console, user services * sxssrv.dll : Side-by-Side * consrv.dll : console - Transféré dans ConHost.exe depuis Windows 7 ### OS/2 base de Windows NT Support uniquement de programmes OS/2 en invite de commande Supprimé à partir de XP/2003 ### Posix Imposé par les autorités américaines pour l'accès à certains marchés Permet initialement l'exécution de programmes POSIX 32 bits XP/2003 : supprimé et substitué par Windows Services for UNIX(SFU) Vista : remplacé par Windows Subsystems for Unix-based Applications(SUA) (ajout du support 64 bits) Windows 8/2012 : suppression du sous-système Windows 10 : remplacé par Windows Subsystem for Linux(WSL) Windows 10 2004 : WSL 2 ## Sessions Windows Apparues avec Windows NT 4 TSE (Terminal Server Edition) Identifiées avec un SessionID et chaque processus est associé à une session Des processus dans des sessions différentes sont «isolés », en particulier : * Le système graphique * Certains objets du noyau (mutex, event, job, timer, etc.) Tous les processus du systèmes et des services sont associés à la session 0 Les sessions sont mises en oeuvre par le mécanisme **Terminal Services** et utilisées par : * Le Fast User Switching * Le bureau à distance * Les sessions étendues (Enhanced Session Mode) d'Hyper-V Windows Vista a introduit l'isolation de la session des services : la session 0 est exclusivement réservée aux processus du système et aux services ![](https://i.imgur.com/3b04oHm.png) Possibilité de "dupliquer une session" : * shadow.exe (XP/2003 -> 7/2008 R2) * mstsc.exe /shadow:\<sessionID\> (8.1 / 2012 R2 +) Par défaut une seule session est autorisée par utilisateur mais comportement modifiable par GPO. ## Pyramide des droits ![](https://i.imgur.com/A3lY0RW.png) # Services (Chapitre 3) ## Définition Le terme fait référence à deux concepts : * Service applicatif (service application) : programme destiné à s’exécuter en arrière plan, généralement démarré à l’initialisation du système et avant les connexions des utilisateurs * Pilote (driver service): fichier de type pilote de périphériques et chargé par le noyau Un service peut prendre la forme d'un processus autonome (**OWN_PROCESS**) ou d'un module partagé dans l'hébergeur de service svchost.exe (**SHARE_PROCESS**) ## SCM (Service Control Manager) C’est le SCM (Service Control Manager) qui est chargé de la gestion des services et d’une partie des pilotes: * gestion de la base des services/pilotes installés : * ajout/suppression * verrouillage de base * démarrage (automatique/manuel) et arrêt des services et de certains pilotes * gestion de l'éxecution des services (listes des services actifs, surveillance des processus, etc.) ## Comptes de service Chaque service applicatif s'exécute dans le contexte de sécurité d'un compte, il est possible d'utiliser : * un compte utilisateur local ou d'un domaine (non recommandé) * un des trois comptes de services intégrés (préférable) * LocalSystem * LocalService (XP) * NetworkService (XP) * Un compte de service virtuel (7/2008 R2) * Un compte de service géré (MSA) * local : sMSA (7/2008 R2) * de groupe : gMSA (8/ 2012) * Le compte d'un utilisateur authentifié interactivement (10) ### LocalSystem (NT AUTHORITY\SYSTEM) Entité de sécurité qui possède le plus haut niveau de droits et privilèges (inclu également BUILTIN\Administrateurs) Utilise le profil HKEY_USERS\.DEFAULT (alias S-1-5-18) Authentification à distance : * Kerberos : s’authentifie avec le compte de l’ordinateu * NTLM : ne peut pas s’authentifier (session NULL / utilisateur anonyme). Modifiable depuis Windows 7 Possibilité d'interagir avec le bureau (obsolète depuis Vista) ### NetworkService (NT AUTHORITY\NETWORKSERVICE) Compte à droits restreints disponible à partir de XP Utilise le profil HKEY_USERS\S-1-5-20 Peu de privilèges : * AUDIT, CHANGE_NOTIFY, UNDOCK, IMPERSONATE * Ceux de Utilisateurs et Utilisateurs authentifiés S'authentifie avec le compte de l'ordinateur lors des authentifications distantes (Kerberos et NTLM) ### LocalService (NT AUTHORITY\LOCALSERVICE) Compte à droits restreints disponible à partir de XP Utilise le profil HKEY_USERS\S-1-5-19 Peu de privilèges : * AUDIT, CHANGE_NOTIFY, UNDOCK, IMPERSONATE * Ceux de Utilisateurs et Utilisateurs authentifiés Ne peut pas s'authentifier à distance (session NULL / utilisateur anonyme) ## Hébergement des services ### Service Host Process (svchost.exe) C'est l'hébergeur de services pour les serices de type SERVICE_WIN32_SHARE_PROCESS, implémentés sous forme de DLL Plusieurs instances peuvent tourner simultanément Liste des groupes de services : * HKLM\Software\Microsoft\WindowsNT\CurrentVersion\Svchost DLL d'exécution : * HKLM\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters (ServiceDll) # Mise à jour (chapitre 4) ## Principaux types de mises à jour de Microsoft **Critical Update (importante)** : problème spécifique, critique et non lié à la sécurité **Security Update (importante)** : problème spécifique lié à la sécurité **Update** : problème spécifique, non critique et non lié à la sécurité **Feature Pack** : ajout de nouvelles fonctionalités **Update Rollup (importante)** : Regroupement de hotfixes, critical updates, security updates et updates **Service Pack (importante** : * Regroupement de tous les hotfixes, critical updates, security updates et updates * Corrections diverses * Ajout de nouvelles fonctionalités **Defintion Update** : Anti-virus, site web malveillant, anti-spam **Tool** **Driver** ## Politique de support ### Phase principale (5 ans) support à l’incident, mises à jour de sécurité, hotfixes non relatifs à la sécurité ### Phase d'extension (5 ans) support payant, mises à jour de sécurité, hotfixes non relatifs à la sécurité (payants via contrat), plus de changements de code ou de nouvelles fonctionnalités ## Serice Update et Feature Update ### Service Update (ou Quality Update) Envrion 1 fois par mois Regroupement cumulatif de correctifs de sécurité et de mises à jour 10.0.14393.**326** -> 10.0.14393.**447** ### Feature Update Environ 1 à 2 fois par an Nouvelle version de Windows 10 Ajout de fonctionalités Distribuée sous forme d’une installation complète du système 10.0.**14393**.0 -> 10.0.**10586**.0 # Programmation avancée (chapitre 6) ## Utilité des symboles et principe de fonctionnement ### Concept Les symboles sont crées par l'éditeur de lien Ils sont utilises pour déboguer un programme, une bibliothèque ou un pilote Ils peuvent contenir : * le nom et type des variables : globales (Global syms), locales ou statiques * le nom des fonctions et des paramètres * FPO records si applicables * le nom et les numéros de lignes de code (Line numbers) * les définitions des structures internes (Type info) Afin d’optimiser la taille du binaire, les symboles sont stockés dans un fichier séparé Les fichiers des symboles sont de type Program Database(extension .pdb, anciennement .dbg) Il est possible de générer une version publique d’un fichier de symboles (/PDBSTRIPPED), ce qui supprime les informations sur : * le code source (SourceIndexeddg LineNumbers) * les types de données (TypeInfo) * les données privées ### Syntaxe des symboles La case n'a pas d'importance Exemple : Module!NomFonction ### Serveur de symbole L’API des symboles est implémentée dans dbghelp.dll Le SDK de Windows fourni une version améliorée de la DLL apportant des fonctionnalités avancées (comme la gestion des serveurs de symboles) Les symboles sont recherchés dans un dépôt spécifié : * Explicitement * Via les variables d'environement * _NT_SYMBOL_PATH * _NT_ALT_SYMBOL_PATH ### Format de la source du symbole : Répertoires simples : * c:\symbols * c:\symbols; \\partage Mise en cache : cache*Localsymbolcache * cache*c:\symbols;\\partage Serveur de symboles : srv*Localsymbolcache*symbolstore * srv*c:\symbols*http://sdl.microsoft.com/download/symbols * (srv = symsrv*symsrv.dll) ### Divers symboles dbh.exe: * info * enum * etypes (private) pdbcopy.exe symchk.exe Ajouter des structures à un symbole existant https://github.com/Microsoft/microsoft-pdb # Réseau (Chapitre 7) ## WNET : Notation UNC, Multiple Provider Router, Multiple UNC Provider ### Nommage des systèmes Chaque système possède : * un nom de machine * un nom de groupe pouvant être : * un WORKGROUP (entrée déclarative, annuaire réparti) * un DOMAINE (annuaire centralisé) Ces noms sont sous deux formats : * Le format NetBios (maximum 15 caractères) * Le format DNS (hostname et FQDN) ### WNET WNet permet l'accès et la gestion des systèmes de fichiers réseau Il est mis en oeuvre par : * L'API WNet qui permet la gestion des ressources réseau (énumération des ressources réseau, connexion à un réseau, authentification, association d’un partage à une lettre) * Multiple Provider Router (MPR)qui permet de déterminer quel fournisseur (Network providers) doit être invoqué lorsque l'API WNet est solicitée * Multiple UNC Provider (MUP)(dans le noyau) qui permet de déterminer vers quel redirecteur réseau (Network redirectors) doit être redirigée une requête UNC ### Notation UNC (Uniform Naming Convention) La notation UNC (Uniform Naming Convention) permet d’identifier une ressource réseau (partage, fichier, imprimante) accessible via un système de fichiers réseau : \\Serveur\Partage\Chemin\Fichier Exemple de systèmes de fichiers réseau : * Natifs : Lanman, WebDav, TS, (NFS) * Tiers : VirtualBox, VMWare, etc. #### Syntaxe \\Serveur\Partage\Chemin-Fichier **Serveur** : nom de la machine distante : * . : machine locale * Adresse IP * Nom NetBios (devant être résolu par NBNS) * FQDN (devant être résolu par DNS) **Partage** : nom du partage * C$, ADMIN$, répertoire ### MPR (Multiple Provider Router) ![](https://i.imgur.com/17NnwGd.png) ### MUP (Multiple UNC Provider) ![](https://i.imgur.com/Z1Coo3L.png) ## Networks redirectors ### Redirecteur RDPNP (TS client) Utilisé par le service Terminal Services pour l'accès aux ressources disques du client Exemples : \\tsclient\D ### Redirecteur WebClient (WebDAV) Permet l’accès à des fichiers via HTTP(S) et les extensions WebDAV Exemples : * http(s)://server/share/ -> \\server\share * \\server@SSL\ * \\server@Port\ * \\server\ -> \\server\DavWWWRoot\ * net use z : https://live.sysinternals.com/tools ### Redirecteur LanmanWorkstation (SMB) Permet l'accès à un système de fichiers via le protocole SMB Exemples : * net use \\localhost\c$ ## Fonctionnement de NetBios et des 3 sous-protocoles associés ### NetBios Protocole histoire (années 80), toujours supporté sous Windows via NetBIOS over TCP/IP(NetBT ou NBT) NetBios offre trois services : * NetBIOS Name Service (NBNS) : TCP/UDP 137 * NetBios Datagram Service (NBDS) : UDP 138 * NetBios Session Service (NBSS) : TCP 139 ### NetBIOS Name Service (NBNS) NBNS permet l’enregistrement, la libération et la résolution d’un nom NetBios sur un réseau local Format nom NetBios : 15 caractères + 1 (NetBIOS suffix) Les 3 commandes sont : * Registration (claim) * Release : permet de libérer un nom * Query (resolution ou discovery) : permet de résoudre un nom Repose massivement sur l'utilisation de messages en broadcast ## Rôle de SMB, apports de SMB2 (de 2.0.2 à 3.1.1) Protocole de partage de fichiers apparu dans les années 80 où de nombreuses implémentations ont coexisté (DOS, draft-leach-cifs-v1-spec-01, Unix, etc.) Avec Vista, Microsoft à introduit SMB2(SMB 2egénération) SMB2 est désormais décliné en 3 familles (DialectFamily) et 5 versions de dialectes (Dialect Revisions) ![](https://i.imgur.com/f7NWXAQ.png) ### Apports de SMB2 Signature toujours supportée (mais pas imposée) Abandon du transport par NetBios Changement complet du format après la phase de validation Performance (pipelinedes commandes) Sécurité (signature sur 16 octets) Simplification (passage de 100 à ≈20 commandes) Support des liens symboliques, des hanles persistants ### SMB3.0-3.0.2 Administration powershell #### SMB3.0 (Windows 8 / 2012) Chiffrement via AES-128-CCM (confidentialité et signature) Signature avec AES-128-CMAC Négociation sécurisée des dialectes entre v2 v3 (mais pas entre v2/v3 et v1) Désactivation possible de SMB1 #### SMB3.0.2 (Windows 8.1/2012R2) amélioration des opérations de connexion et d’ I/O, partage de disque VHD ### SMB3.1.1 Négociation extensible (Extensible Negociationet Negotiate Contexts) Pre-Authentication Intregrity SMB Encryption Improvements (Support AES-128-GCM) Possibilité pour le client à forcer le chiffrement Cluster Dialect Fencinget Cluster Failover V2 ### Principales opérations SMB Négociation du dialecte Authentification de l’utilisateur Connexion à un partage SMB (tree connect) Accès aux ressources du partage : * Fichiers * Répertoires Déconnexion Diverses opérations (Lock, IOCTL, Echo, Query info, etc.) ### Commandes SMB2 Négociation du dialecte : * NEGOTIATE Authentification de l’utilisateur : * SESSION_SETUP, LOGOFF Connexion à un partage : * TREE_CONNECT, TREE_DISCONNECT Accès aux fichiers : * CREATE, CLOSE, READ, WRITE, LOCK, IOCTL, QUERY_INFO, SET_INFO, FLUSH, CANCEL Accès aux répertoires : * QUERY_DIRECTORY, CHANGE_NOTIFY Requête d’état : * ECHO ## Transport de SMB et ports réseau associés Transports disponibles : * Tout système disponible : * NetBios Session Service (TCP 139) * OBSOLÈTE → Doit être désactivé * A partir de Windows 2000 : * Direct Hosting (TCP 445) * SMB 3.X : * RDMA (Remote Direct Memory Access) ![](https://i.imgur.com/lr3i6n7.png)