Fondamentaux et mise en place du Lab
Les fondamentaux de la cybersécurité
Pour pouvoir parler de sécurité des systèmes d’information et de PowerShell, il est nécessaire d’introduire les notions fondamentales de la cybersécurité. Ces notions seront primordiales dans la suite du livre, afin de mieux appréhender les enjeux et conséquences des actions techniques qui seront abordées.
La première partie de ce chapitre fera donc office de rappel ou de tour d’horizon des principaux concepts et acteurs de la sécurité des systèmes d’information. La suite se concentrera sur les enjeux pour PowerShell et la mise en place d’un environnement de test virtuel représentatif d’une infrastructure de petite entreprise qui servira aux exercices dans la suite du livre.
1. Le risque et les compromis de sécurité dans le temps
Pour commencer, qu’est-ce qu’un système d’information (SI) ? Un SI est un objet complexe par nature composé d’un empilement de briques techniques anciennes et récentes donc plus ou moins obsolètes, et en conséquence plus ou moins faciles à attaquer.
Le système d’information ne s’arrête pas à l’environnement de bureautique et aux postes de travail des utilisateurs, ni même aux serveurs applicatifs et l’infrastructure, mais bien à tout ce qui traite (c’est-à-dire : créer, transporter, lire, modifier...
Les différents acteurs de la cybersécurité
Après avoir évoqué des concepts, il est souhaitable de présenter les acteurs que l’on peut rencontrer dans un système d’information. Dans les très grands groupes, ces rôles sont souvent bien différenciés avec une ou plusieurs personnes dédiées dans chaque équipe. Dans les PME, le système d’information et l’ensemble de ces casquettes reposent bien souvent sur la tête d’une ou deux personnes. Entre ces deux extrêmes, on trouve tout une palette de variations d’une organisation à l’autre, en fonction des contextes et des besoins de l’entreprise. Il est nécessaire d’avoir une compréhension de ces rôles pour mieux appréhender les actions à mener et les processus à mettre en place dans votre environnement courant.
1. Les équipes de production
Les administrateurs système et applicatifs, le centre de service ou la téléassistance informatique sont responsables du bon fonctionnement du SI. Depuis l’arrivée des méthodes « agiles », elles sont parfois organisées au travers d’équipes de build et du run, respectivement chargées des évolutions d’une part, et du fonctionnement quotidien du SI d’autre part.
Même si cela tend à s’améliorer, notre expérience montre que les équipes de production sont souvent négligées quant à leur rôle sur la sécurité du système d’information, cantonnant les administrateurs à l’objectif de « délivrer le service » et comptant sur les équipes...
Les éléments clés de PowerShell pour la sécurité
1. Pour les administrateurs
Ce qu’il est intéressant de noter chez les différents acteurs présentés dans la section précédente, c’est qu’aujourd’hui tous, sans exception, disposent de PowerShell (et s’en servent plus ou moins régulièrement). En effet, depuis novembre 2006 et Windows XP SP2, la console PowerShell (v1.0) est présente dans les environnements Windows. Cette présence n’a fait que se renforcer au fur et à mesure des versions de Windows et du succès du langage.
PowerShell est désormais un élément majeur du système d’exploitation de Microsoft qui est utilisé par énormément d’administrateurs et de techniciens partout dans le monde. La matrice de compatibilité ci-dessous synthétise les environnements dans lesquels on trouve PowerShell :
Version |
1.0 |
2.0 |
3.0 |
4.0 |
5.0 |
6 Core |
7 |
Windows XP |
SP2 |
SP3 |
|
|
|
|
|
Windows 2003 |
SP1/R2 |
SP2 |
|
|
|
|
|
Windows Vista |
SP1 |
|
|
|
|
|
|
Windows 2008 |
|
SP1 |
SP2 |
|
|
|
|
Windows 7 SP1 |
|
|
|
||||
Windows 2008 R1 SP1 |
|
|
|
||||
Windows 8 |
|
|
|
|
|||
Windows 2012 |
|
|
|
|
|
||
Windows 8.1 |
|
|
|
||||
Windows 2012 R2 |
|
|
|
||||
Windows 10 |
|
|
|
|
|
||
Windows 2016 |
|
|
|
|
|||
Windows 2019 |
|
|
|
|
|
|
|
Linux |
|
|
|
|
Cette matrice est importante car elle permet de déterminer avec précision les fonctions disponibles dans l’environnement PowerShell en fonction des systèmes à administrer. Mais globalement, depuis PowerShell V2, il est possible de développer des fonctions avancées avec le langage en s’appuyant directement sur les fonctions du Framework .NET.
Pour finir, vous trouverez ci-dessous quelques idées de scripts rencontrés dans des environnements de production illustrant ce qu’il est possible de faire avec PowerShell :
-
Délivrance (enrôlement exactement) et contrôle de certificats utilisateurs à l’ouverture de session.
-
Inventaire des comptes et des groupes Active Directory....
Mise en place de l’environnement de test virtuel
Tout au long de ce livre, nous allons illustrer nos propos par des exemples et des développements. Pour cela, nous avons besoin d’un laboratoire (appelé Lab dans la suite de l’ouvrage) représentatif des systèmes d’information que l’on rencontre dans le monde réel. Notre système va donc présenter quelques clients et serveurs Windows intégrés dans un domaine Active Directory, le tout dans un réseau à plat (sans segmentation contrôlant les communications des machines entre elles) protégé par un pare-feu (ou firewall) périmétrique (séparant le SI du reste du monde).
Un attaquant sera positionné à l’extérieur de ce réseau dans un second sous-réseau relié au firewall et représentant un acteur externe sur Internet.
Pour ce Lab, la première option qui est d’utiliser des machines physiques dédiées reste onéreuse ; elle peut quand même être pertinente dans certains environnements qui disposent de suffisamment de ressources (ou simplement de vieilles machines à réutiliser). Dans cette configuration, on perd la capacité d’effectuer des snapshots des machines.
Les systèmes Cloud Infrastructure as a Service (IaaS) comme Azure, AWS ou OVH peuvent également permettre de déployer facilement le Lab pour ceux qui le souhaitent. Ils posent quand même le problème d’exposer des machines vulnérables sur Internet, et également des mécanismes de sécurité en place chez l’hébergeur qui risquent de gêner les travaux pratiques offensifs.
La virtualisation locale retient donc notre choix, devant les méthodes de conteneurisation (comme Docker) qui simulent plus des environnements qu’elles ne les font fonctionner réellement.
Pour la virtualisation, de nombreuses options sont envisageables en fonction des moyens à votre disposition : VMware ESX et Workstation, Hyper-V, QEMU ou encore VirtualBox sont des exemples parmi les nombreuses solutions existantes. Nous utiliserons ici VirtualBox car il est largement répandu, gratuit, s’installe sur Windows, Mac et Linux tout en permettant de réaliser le réseau décrit...
Conclusion
Au cours de ce chapitre, nous avons rapidement rappelé les fondamentaux de la sécurité des systèmes d’information, ainsi que les différents acteurs « théoriques » que l’on peut rencontrer dans ce milieu (les équipes de production, de sécurité, de gouvernance, les utilisateurs et les attaquants).
Nous avons ensuite expliqué en quoi PowerShell est un élément central des systèmes d’information depuis maintenant dix ans, qu’il s’agisse de défense ou d’attaque des SI.
Nous avons enfin passé la fin du chapitre à mettre en place un environnement virtuel représentatif du réseau de petites entreprises. Dans ce réseau, on trouve un firewall périmétrique séparant un intranet du reste du monde. Nous avons déployé dans la partie interne un Active Directory monoforêt et monodomaine sur un contrôleur de domaine Windows Server 2019 et ajouté deux postes clients : un Windows 10 à jour et un client obsolète Windows 7 (optionnel). Ces postes sont associés respectivement à deux utilisateurs administrateurs locaux de leur machine : Arnaud et Frédéric.
Au sein de ce réseau, nous avons également veillé à laisser des vulnérabilités au travers d’erreurs...