Cybersécurité : comment réaliser un audit de son tenant Microsoft 365 ?
Sommaire
I. Présentation
Dans ce tutoriel, nous allons apprendre à réaliser l'audit d'un tenant Microsoft 365 / Office 365 afin de mettre en évidence les améliorations possibles et les problèmes de configuration qui peuvent avoir un impact sur le niveau de sécurité global du tenant.
Pour réaliser cet audit, nous allons utiliser plusieurs outils. Chaque outil sera présenté tour à tour, ce qui vous permettra d'avoir un arsenal complet d'outils pour analyser votre tenant Microsoft 365. Dans ce premier article, nous allons réaliser l'audit, et dans un second article, nous verrons comment gagner du temps dans la sécurisation d'un tenant avec Harden365. Par ailleurs, un autre article sera mis en ligne pour évoquer l'audit de Microsoft Entra ID (Azure Active Directory) à l'aide d'outils supplémentaires.
En complément des outils évoqués dans cet article, nous vous recommandons de vous intéresser à Maester :
Pour effectuer cette démonstration, un tenant Microsoft 365 vierge (de type Dev Tenant) sera utilisé. Pour créer gratuitement un tenant similaire, vous pouvez suivre cet article :
II. Outils pour auditer Microsoft 365
Il existe de nombreux outils pour auditer Microsoft 365 et la plupart de ces outils sont basés sur des scripts PowerShell ! Voici ceux qui seront présentés dans cet article :
- Microsoft 365 Secure Score (intégré au portail Microsoft)
- Configuration Analyzer de Microsoft 365 Defender
- ScubaGear de l'agence américaine CISA
- ORCA pour Office 365 Recommended Configuration Analyzer, un module PowerShell qui va analyser les règles d'Exchange Online Protection (EOP), vos politiques de gestion des pièces jointes et liens, ainsi que vos politiques pour lutter contre le phishing et l'usurpation d'identité. Il fait un focus sur Microsoft Defender for Office 365, d'où son nom.
- Monkey365, un outil open source pour auditer plusieurs services de l'écosystème Microsoft 365 (OneDrive, Exchange Online, SharePoint, Teams, Security & Compliance) ainsi que Microsoft Entra ID
III. Microsoft 365 et le Secure Score
Commençons par le "Secure Score" de Microsoft. Il s'agit d'un outil d'analyse intégré au portail Microsoft 365 qui permet de dresser une liste de recommandations à appliquer pour améliorer sa posture de sécurité. Il s'agit de recommandations pour Azure Active Directory, Teams, SharePoint, Exchange Online, etc...
Pour accéder à cette fonctionnalité :
- Accédez au portail Microsoft 365 Defender (security.microsoft.com)
- Cliquez sur "Secure score" dans le menu latéral
Le tableau de bord indique le Secure Score de votre tenant : plus il est élevé, mieux c'est ! Vous pouvez voir son évolution dans le temps et vous avez un score par catégorie.
Si vous cliquez sur "Recommended actions", vous pouvez accéder à la liste des recommandations. Cette liste contient toutes les recommandations : celles à appliquer et celles déjà appliquées. Grâce aux colonnes et aux filtres, vous pouvez facilement identifier les actions à effectuer pour respecter les recommandations de Microsoft.
Si vous cliquez sur une recommandation, vous pouvez obtenir des détails à son sujet. Il y a une description plus précise et un onglet "Implementation" qui vous permet d'avoir des instructions pour appliquer cette bonne pratique.
Cette fonctionnalité intégrée au portail Microsoft 365 vous permet de faire vos premiers pas pour évaluer le niveau de sécurité de votre tenant Microsoft 365.
IV. Configuration Analyzer de Microsoft 365 Defender
Microsoft 365 Defender intègre un outil baptisé "Configuration Analyzer" ou "Analyseur de configuration" en français qui va s'intéresser à vos stratégies Exchange Online Protection (anti-spam, anti-phishing, notamment) ainsi que vos stratégies Microsoft Defender.
Pour accéder au "Configuration Analyzer" de Microsoft 365 Defender, suivez les étapes ci-dessous ou cliquez directement sur ce lien.
- Au sein du portail Microsoft 365 Defender, cliquez sur "Email & Collaboration" (1)
- Cliquez sur "Policies & Rules" dans le menu latéral (2)
- Cliquez sur "Threat policies" dans la liste qui s'affiche (3)
- Puis, choisissez "Configuration analyzer" (4)
Cette page indique des recommandations standards, des recommandations strictes, ainsi qu'un historique pour votre tenant. La liste des recommandations est disponible sur cette page :
Attention, pour utiliser cette fonctionnalité, vous devez avoir les "bonnes licences" Microsoft Defender. Plus d'informations sur cette page :
V. Auditer son tenant Microsoft 365 avec ScubaGear
Nous allons maintenant utiliser un premier outil tiers : ScubaGear. Ce très bel outil est mis à disposition par la CISA, l'agence américaine spécialisée dans la cybersécurité. Il permet d'analyser la configuration de votre tenant Microsoft 365 afin de vérifier si elle est conforme aux recommandations décrites dans le document "Secure Cloud Business Applications" (SCuBA) de la CISA. ScubaGear va automatiser l'audit, ce qui est très pratique.
Tout d'abord, vous devez télécharger ScubaGear depuis le GitHub officiel du projet :
Une fois que c'est fait, décompressez l'archive.
Ouvrez une console PowerShell et positionnez-vous dans le répertoire du projet. Pour ma part, je me positionne dans "C:\PS\ScubaGear-0.3.0\". Ensuite, exécutez le script "SetUp.ps1" qui va permettre d'installer tous les modules PowerShell nécessaires au bon fonctionnement de ScubaGear.
cd C:\PS\ScubaGear-0.3.0\
.\SetUp.ps1
Patientez... Plusieurs minutes peuvent être nécessaires car ScubaGear s'appuie sur une dizaine de modules.
Une fois que c'est terminé, importez le module ScubaGear de cette façon :
PS C:\ps\ScubaGear-0.3.0> Import-Module -Name .\PowerShell\ScubaGear
Puis, exécutez un audit avec la commande suivante (il y a la possibilité d'ajuster le périmètre de l'audit en jouant sur les paramètres de cette commande) :
Invoke-SCuBA
Vous allez devoir vous authentifier auprès des différents services à l'aide d'un compte administrateur. Il est préférable d'utiliser un compte Administrateur Global pour avoir accès à tous les services (à tester avec un compte en lecture seule). Par ailleurs, activez le consentement pour Microsoft Graph comme sur l'exemple ci-dessous.
Patientez pendant l'analyse de votre tenant M365... Quand il sera terminé, un rapport HTML s'affichera sur votre machine. Comme le montre l'image ci-dessous, l'ensemble des fichiers générés lors de l'audit sont stockés dans un sous-répertoire de ScubaGear.
Le rapport intègre un en-tête avec le nom du tenant, le nom de domaine, l'ID du tenant ainsi que la date et l'heure de l'audit. En dessous, il y a un tableau récapitulatif qui contient des liens vers les rapports générés pour chaque catégorie : Azure Active Directory, Microsoft 365 Defender, etc... Avec les résultats. Certaines recommandations ne sont pas vérifiées par l'outil et nécessitent une vérification manuelle ("manual checks needed").
Si vous cliquez sur l'un des rapports, par exemple celui pour Microsoft Teams, vous obtenez un rapport détaillé propre à l'analyse du service sélectionné. Vous avez la liste de tous les points vérifiés ainsi que le résultat associé. Pour information, le rapport Azure Active Directory (Microsoft Entra ID) effectue également une passe sur vos stratégies d'accès conditionnel.
VI. Réaliser un audit Office 365 avec ORCA
Poursuivons avec la découverte d'un autre outil ! Désormais, nous allons réaliser un audit avec l'outil ORCA. Vous verrez que c'est rapide et qu'à la fin, nous allons obtenir un joli rapport HTML qui recensera l'ensemble des recommandations.
Avant de commencer, sachez que vous pouvez exécuter un audit avec ORCA sur n'importe quel tenant Microsoft 365, mais certains contrôles ne seront pas effectués si vous n'avez pas Microsoft Defender for Office 365 (anciennement Office 365 Advanced Threat Protection) dans votre abonnement.
ORCA étant un module PowerShell, nous devons commencer par l'installer :
Install-Module ORCA
Une fois que c'est fait, importez le module dans votre console et exécutez la génération d'un rapport :
Import-Module ORCA Get-ORCAReport
Au lancement, ORCA vérifie si le module Exchange Online Management est présent sur votre machine. S'il est manquant, ORCA vous proposera de l'installer puisque c'est un prérequis. Ensuite, vous devez vous authentifier avec un compte Administrateur sur votre tenant Microsoft 365 afin qu'ORCA ait suffisamment de droits pour effectuer ses vérifications.
Une fois l'authentification effectuée, ORCA va effectuer ses contrôles de sécurité sur votre tenant. L'audit est rapide. A la fin, un rapport au format HTML sera généré dans le répertoire "AppData\Local\Microsoft\ORCA" de l'utilisateur actuel.
Le rapport HTML met en évidence le domaine principal du tenant, comme ici "itconnect2023.onmicrosoft.com" qui est un tenant de test, ainsi que la date et l'heure, et le numéro de version d'ORCA.
Par contre, les contrôles seront regroupés par statut, notamment les statuts "Informations", "Recommandations" et "OK" dans cet exemple, avec le nombre de contrôles par statut. Mon rapport stipule 23 recommandations, ce qui signifie qu'il y a 23 actions de configuration à effectuer sur mon tenant pour améliorer sa sécurité.
Ce rapport n'a pas pour vocation de donner un score de sécurité ou une note globale, mais il y a tout de même un pourcentage associé au Configuration Health Index. Plus il est élevé, mieux c'est. Il prend en compte certains points de contrôle et certains ont un poids plus important que les autres.
Encore un peu plus bas, ORCA indique le nombre d'éléments par catégorie : règles de transport, politique anti-spam, politique de quarantaine, etc... Nous pouvons voir qu'il y a surtout des actions à effectuer au niveau des politiques Microsoft Defender for Office 365. Ce n'est pas étonnant, car c'est la spécialité de cet outil.
Pour chaque contrôle de chaque catégorie, le rapport indique le nom du contrôle avec plusieurs informations : une description, les objets affectés sur votre tenant, ainsi que des liens vers la documentation Microsoft officielle pour vous aider à appliquer la recommandation.
Par exemple, le point de contrôle "Set RecipientLimitExternalPerHour to 500, RecipientLimitInternalPerHour to 1000, and ActionWhenThresholdReached to block." est là pour vous recommander d'imposer des limites par heure pour les e-mails à destination de l'extérieur ou d'utilisateurs internes. C'est important, car si un compte utilisateur est compromis, l'attaquant peut exploiter ce compte pour envoyer du spam ou des e-mails malveillants associés à une campagne de phishing.
Autre exemple, le point de contrôle "Configure external tags to highlight emails which are sent from external." qui est là pour vous encourager à ajouter un disclamer aux e-mails en provenance d'utilisateurs externes.
En suivant les recommandations d'ORCA, non seulement vous améliorez la sécurité de votre tenant Microsoft 365, mais vous adoptez également une configuration qui respecte les bonnes pratiques en matière de sécurité.
VII. Réaliser un audit avec Monkey365
Le module PowerShell Monkey365 présente l'avantage de comparer la configuration de votre tenant avec les bonnes pratiques du CIS Benchmark. Les guides du CIS (Center for Internet Security) sont des références et ils recensent les meilleures pratiques en matière de sécurité et de conformité (compliance).
Le projet Monkey365 est accessible sur GitHub et vous pourrez le télécharger également à cet emplacement :
Admettons que les fichiers du projet soient stockés dans le répertoire "c:\ps\monkey365". Nous devons débloquer tous les scripts afin de pouvoir charger et exécuter Monkey365 :
Get-ChildItem -Recurse "c:\ps\monkey365" | Unblock-File
Ensuite, nous allons importer le module :
Import-Module C:\PS\monkey365\
Pour exécuter un audit Microsoft 365 ou Azure avec Monkey365, il faut exécuter la commande Invoke-Monkey365 avec un ensemble de paramètres. Les paramètres sont expliqués dans la documentation, et l'aide PowerShell peut aussi nous fournir quelques exemples :
Get-Help Invoke-Monkey365 -Examples
Nous allons regrouper tous les paramètres dans une variable nommée $param. L'exemple ci-dessous permet d'auditer Microsoft 365 dans sa globalité, en intégrant Exchange Online, Microsoft Teams, Purview et SharePoint Online.
$param = @{
Instance = 'Microsoft365';
Analysis = 'ExchangeOnline','Microsoft365','MicrosoftTeams','Purview','SharePointOnline';
PromptBehavior = 'SelectAccount';
TenantID = '47a0ca6e-f759-4bb6-0000-123456789abcd';
ExportTo = 'HTML';
}
Invoke-Monkey365 @param
La commande ci-dessus contient l'ID du tenant à analyser. Si vous ne connaissez pas cette ID, vous pouvez utiliser la commande ci-dessous pour l'obtenir (adaptez le nom du domaine onmicrosoft.com) :
(Invoke-WebRequest https://login.windows.net/itconnect2023.onmicrosoft.com/.well-known/openid-configuration|ConvertFrom-Json).Token_Endpoint.Split("/")[3]
A chaque fois qu'un audit sera exécuté, un nouveau dossier sera généré dans le répertoire "monkey-reports". Ce fichier contient plusieurs fichiers, dont un rapport HTML nommé "Monkey365.html".
Regardons à quoi ressemble un rapport Monkey365...
La page d'accueil affiche un tableau de bord avec plusieurs graphes et statistiques pour avoir une vue d'ensemble sur les résultats de l'audit. Le menu latéral donne accès à un résultat de l'audit par service.
Par exemple, si vous cliquez sur "Microsoft Teams", vous obtenez le résultat de l'audit en ce qui concerne la configuration de Teams sur votre tenant. Vous pouvez effectuer une recherche et filtrer les résultats par niveau de criticité en cliquant sur les boutons en haut à droite.
Pour chaque point de sécurité, vous avez des informations utiles : une description, des informations sur l'impact, ainsi que les étapes à suivre pour appliquer la recommandation.
Finalement, Monkey365 est un outil bien pensé, avec un rapport détaillé et qui a l'avantage de s'appuyer sur les recommandations des guides CIS Benchmark.
VIII. Conclusion
En utilisant ces outils, vous êtes en mesure d'auditer votre tenant Microsoft 365 ! À mon sens, il s'agit d'outils incontournables lorsque l'on s'intéresse au sujet de la sécurité d'un tenant Microsoft 365. Pour certaines vérifications, les outils peuvent être similaires alors que sur d'autres points ils seront complémentaires : d'où l'intérêt de ne pas se focaliser sur les recommandations d'un seul outil.
Dans un prochain article, nous verrons comment sécuriser un tenant Microsoft 365 à l'aide de l'outil Harden365 ! Ceci nous donnera l'occasion de découvrir la future version de cet outil, actuellement en phase de développement.
Excellent, merci beaucoup pour votre contribution.