Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !
EntraFalcon — Un outil PowerShell léger pour évaluer la posture de sécurité des environnements Microsoft Entra ID. Il aide à identifier les objets privilégiés, les attributions risquées et les configurations potentiellement incorrectes. | Kitploit
Un outil PowerShell léger pour évaluer la posture de sécurité des environnements Microsoft Entra ID. Il aide à identifier les objets privilégiés, les attributions risquées et les configurations potentiellement incorrectes.
EntraFalcon est un outil d'évaluation basé sur PowerShell destiné aux pentesters, analystes de sécurité et administrateurs système pour évaluer la posture de sécurité d'un environnement Microsoft Entra ID.
Conçu pour être facile à utiliser, EntraFalcon fonctionne sur PowerShell 5.1 et 7, prend en charge Windows et Linux, et ne nécessite aucun module PowerShell supplémentaire, installation additionnelle ou consentement Microsoft Graph API.
L'outil aide à découvrir les objets privilégiés, les affectations potentiellement risquées et les mauvaises configurations de Conditional Access souvent négligées, telles que :
Utilisateurs ayant un contrôle sur des groupes ou applications à haute privilège
Applications d'entreprise externes ou internes avec des autorisations excessives (par exemple, Microsoft Graph API, rôles Azure)
Utilisateurs avec des affectations de rôles Azure IAM directement sur des ressources
Comptes privilégiés synchronisés depuis un environnement sur site
Utilisateurs inactifs ou utilisateurs sans capacité MFA
Groupes non protégés utilisés dans des affectations sensibles (par exemple, exclusions de Conditional Access, Subscription Owner, ou membre éligible d'un groupe privilégié)
Les résultats sont présentés dans des rapports HTML interactifs pour faciliter l'exploration et l'analyse efficaces.
🚀 Fonctionnalités
Script PowerShell simple compatible avec PowerShell 5.1 et 7. Fonctionne sur Windows et Linux
Authentification intégrée prenant en charge plusieurs méthodes
Utilise des applications Microsoft propriétaires avec des scopes pré-consentis pour contourner les invites de consentement Graph API
Génère des rapports HTML navigables prenant en charge le filtrage, le tri, l'export de données, etc.
Effectue plus de 90 vérifications automatisées et résume les résultats dans un rapport de constats de sécurité
Inclut des vérifications pour les configurations de locataire faibles et les propriétés ou autorisations d'objets risquées
Fournit des niveaux de gravité ainsi que des descriptions du problème, des menaces potentielles et des recommandations de remédiation
Liste les objets concernés et fournit des liens directs vers leurs rapports détaillés pour une investigation approfondie
Effectue une évaluation de base de l'impact, de la probabilité et du risque pour mettre en évidence les objets à haute privilège faiblement protégés et trier les données.
Affiche des avertissements pour les configurations risquées et les privilèges élevés
Énumère les objets Entra ID, notamment :
Utilisateurs (y compris les Agent Users)
Groupes
Applications d'entreprise
Inscriptions d'applications
Identités managées
Identités d'agents
Principaux de blueprint d'identité d'agent
Blueprints d'identité d'agent
Affectations PIM :
PIM pour les rôles Entra
PIM pour les groupes
PIM pour les rôles Azure
Affectations de rôles Entra
Affectations de rôles Azure
Affectations RBAC Intune
Packages d'accès
Catalogues de gestion des droits
RBAC de catalogue
Politiques de Conditional Access
Unités administratives
Paramètres PIM :
PIM pour les rôles Entra
PIM pour les groupes (authentification BroCi uniquement)
✅ Exigences
Type
Autorisation
Obligatoire
Impact si absent
Rôle Entra ID
Global Reader
Oui
Impossible d'exécuter les scripts
Rôle Azure
Reader : sur chaque Management Group ou Subscription
Non
Impossible d'évaluer les affectations IAM Azure
De plus, vous devez pouvoir vous authentifier auprès de la Microsoft Graph API et éventuellement de l'API Azure ARM depuis l'appareil où vous exécutez l'outil.
Assurez-vous que les politiques de Conditional Access ne bloquent pas votre authentification.
Note : Vous devrez peut-être modifier temporairement la stratégie d'exécution de PowerShell pour exécuter le script.
Ne faites cela que pour des scripts de confiance !```
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process
Exécuter EntraFalcon
EntraFalcon intègre une prise en charge native de l’authentification Entra ID. Utilisez -AuthFlow pour sélectionner le flux d’authentification.
Pour les évaluations standard, utilisez l’un des flux à couverture complète :
Flux recommandé
Idéal pour
Plateforme
Couverture
BroCi(par défaut)
Exécutions interactives sous Windows
Windows
Complète
BroCiManualCode
Authentification dans un autre navigateur
Windows, Linux, macOS
Complète
BroCiToken
Jeton d’actualisation existant du portail Azure
Windows, Linux, macOS
Complète
ServicePrincipal
Automatisation / CI
Windows, Linux, macOS
Complète
BroCi nécessite une seule connexion interactive. BroCiToken et ServicePrincipal n’en nécessitent aucune. Les flux utilisateur de secours peuvent exiger plusieurs connexions interactives, car des jetons de ressources distincts sont demandés.
Flux d’authentification de secours
En raison de l’absence d’applications tierces pré-consenties, les flux de secours ne peuvent pas effectuer l’énumération complète (PIM for Groups, Access Packages, Catalogs). Ils restent donc actuellement des options de secours uniquement.
Flux
À utiliser uniquement lorsque
Plateforme
Limitations
AuthCode
La compatibilité héritée est requise
Windows
Couverture partielle. Aucun rapport autonome PIM for Groups, Access Packages ou Catalogs.
DeviceCode
L’authentification par navigateur n’est pas possible
Windows, Linux, macOS
Couverture partielle. Aucun rapport autonome PIM for Groups, Access Packages ou Catalogs. Certaines vérifications de Security Findings s’exécutent avec une profondeur réduite.
ManualCode
L’authentification doit être effectuée via une session de navigateur distincte
Windows, Linux, macOS
Couverture partielle. Aucun rapport autonome PIM for Groups, Access Packages ou Catalogs.
Recommandé : flux BroCi (par défaut / Windows uniquement)
BroCi utilise des applications tierces alternatives et ne nécessite qu’une seule connexion interactive.
Il est utile lorsque le client Azure Active Directory PowerShell nécessite une attribution et doit être évité.```powershell
.\run_EntraFalcon.ps1
root@kitploit:~
Sélection explicite de BroCi :```powershell
.\run_EntraFalcon.ps1 -AuthFlow BroCi
Recommandé : BroCi + Flux de code manuel```powershell
.\run_EntraFalcon.ps1 -AuthFlow BroCiManualCode
root@kitploit:~
1. Le script copie l'URL d'authentification dans le presse-papiers.
2. Collez l'URL dans un navigateur (éventuellement sur un autre appareil pour la prise en charge SSO).
3. Ouvrez les outils de développement du navigateur et, dans l'onglet Réseau, activez `Preserve log`.
4. Terminez l'authentification.
5. Recherchez `code=1.` dans le journal réseau et copiez l'URL de la requête contenant le code dans le presse-papiers.
6. Appuyez sur Entrée pour continuer ; le script lit le code depuis le presse-papiers et termine l'acquisition du jeton.
#### Recommandé : BroCi avec jeton
Si un jeton d'actualisation Azure Portal valide est déjà disponible (client c44b4083-3bb0-49c1-b47d-974e53cbdf3c), il peut être utilisé directement.
Exemple : Obtention du jeton d'actualisation depuis le navigateur
1. Ouvrez les outils de développement du navigateur et, dans l'onglet Réseau, activez Preserve log.
2. Authentifiez-vous sur https://entra.microsoft.com.
3. Recherchez `brk_client_id=c44b4083-3bb0-49c1-b47d-974e53cbdf3c` dans le journal réseau et extrayez le jeton d'actualisation de la réponse.```powershell
.\run_EntraFalcon.ps1 -AuthFlow BroCiToken -BroCiToken "1.XXXXXXXXXXX"
Recommandé : Principal de service
S’authentifie en tant qu’application enregistrée via la concession d’informations d’identification client OAuth2 — aucune interaction utilisateur requise.
Utile pour les exécutions automatisées répétées.
Nécessite un enregistrement d’application Entra personnalisé avec des autorisations Graph API de type Application (voir ci-dessous).
Pour une clé privée chiffrée, ajoutez `-SPPrivateKeyPemPassword (Read-Host -Prompt "Private key password" -AsSecureString)`.
##### Autorisations requises pour l’inscription de l’application
Accordez les autorisations **Application** suivantes (et non Déléguées) sur l’inscription de l’application et administrez-y le consentement :
| Autorisation | Type |
|---|---|
| `AdministrativeUnit.Read.All` | Application |
| `AgentIdentity.Read.All` | Application |
| `AgentIdentityBlueprint.Read.All` | Application |
| `AgentIdentityBlueprintPrincipal.Read.All` | Application |
| `Application.Read.All` | Application |
| `AuditLog.Read.All` | Application |
| `Device.Read.All` | Application |
| `EntitlementManagement.Read.All` | Application |
| `Group.Read.All` | Application |
| `Organization.Read.All` | Application |
| `Policy.Read.All` | Application |
| `PrivilegedAccess.Read.AzureADGroup` | Application |
| `RoleManagement.Read.Directory` | Application |
| `RoleManagementPolicy.Read.AzureADGroup` | Application |
| `User.Read.All` | Application |
| `DeviceManagementRBAC.Read.All` | Application |
De plus, attribuez le rôle **Azure Reader** sur le groupe de gestion racine (ou sur chaque abonnement concerné) et, éventuellement, le rôle **Global Reader** au principal de service dans Entra ID (requis pour le statut MFA par utilisateur).
#### Repli : Flux de code d’autorisation (Windows uniquement)```powershell
.\run_EntraFalcon.ps1 -AuthFlow AuthCode
Repli : Flux de code d’appareil (Device Code Flow)
Il est souvent restreint par l’accès conditionnel dans les environnements durcis.
Avec DeviceCode, deux contrôles de Security Findings s’exécutent avec une profondeur réduite (CAP-004 et CAP-005).```powershell
.\run_EntraFalcon.ps1 -AuthFlow DeviceCode
Le script copie l'URL d'authentification dans le presse-papiers.
Collez l'URL dans un navigateur (éventuellement sur un autre appareil pour la prise en charge du SSO).
Terminez l'authentification.
Copiez l'URL de redirection finale depuis la barre d'adresse du navigateur (contenant le code d'autorisation) dans le presse-papiers.
Appuyez sur Entrée pour continuer ; le script lit le code depuis le presse-papiers et termine l'acquisition du jeton.
Autres Paramètres
Inclure les Applications d'Entreprise Appartenant à Microsoft
Par défaut, les applications d'entreprise officielles de Microsoft sont exclues de l'évaluation afin de réduire le bruit. Pour les inclure dans l'énumération et l'analyse, utilisez le commutateur -IncludeMsApps :```powershell
.\run_EntraFalcon.ps1 -IncludeMsApps
root@kitploit:~
#### Ignorer l'évaluation PIM pour les groupes
Utilisez le commutateur `-SkipPimForGroups` pour ignorer la précollecte et l'enrichissement PIM pour les groupes.
Cela ignore également le rapport autonome des paramètres `PIM for Groups`.```powershell
.\run_EntraFalcon.ps1 -SkipPimForGroups
Autres paramètres facultatifs
Paramètre
Description
Valeur par défaut
UserAgent
User agent utilisé pour les requêtes vers le point de terminaison du jeton et les appels API.
EntraFalcon
DisableCAE
Désactive la demande de jetons Continuous Access Evaluation (CAE).
false
Tenant
Spécifie le locataire (ID ou domaine) pour l'authentification. Utile lors de l'évaluation d'un locataire autre que le locataire d'origine du compte.
Locataire d'origine du compte
OutputFolder
Dossier de sortie où les rapports sont stockés.
Results_%TenantName%_YYYYMMDD_HHMM
LimitResults
Limite le nombre de groupes et d'utilisateurs dans le rapport (après tri par risque). Utile pour les grands locataires.
-
LogLevel
Contrôle la verbosité de la journalisation CLI au moment de l'exécution. Valeurs prises en charge : Off (par défaut), Verbose, Debug, Trace.
Off
ApiTop
Définit le nombre maximal d'objets renvoyés par l'API. Des valeurs plus faibles réduisent le risque de délai d'expiration (HTTP 504), mais augmentent le nombre de requêtes.
Jeton d'actualisation du portail Azure pour AuthFlow BroCiToken.
-
SPClientId
ID d'application (client) du principal de service. Requis pour -AuthFlow ServicePrincipal.
-
SPClientSecret
Secret client pour le principal de service. Utilisé avec .
📊 Exemples de rapports
Rapport de conclusions de sécurité
Utilisateurs
Utilisateurs (section Détails)
Rôles Entra ID
Rôles Azure
Application d'entreprise (section Détails)
Stratégies d'accès conditionnel
Stratégies d'accès conditionnel (section Détails)
Paramètres de rôle PIM (Entra)
Identités d'agent
Résumé de l'énumération
📑 Rapport HTML
Général
Cliquez sur le bouton ⚙️ Colonnes pour afficher ou masquer des colonnes spécifiques.
Cliquez sur 💾 Exporter pour télécharger CSV/JSON ou copier CSV/TSV/JSON des données actuellement visibles.
Cliquez sur 👁 Partager la vue pour copier les filtres, le tri et la sélection de colonnes sous forme de lien partageable.
Cliquez sur 🧰 Vues prédéfinies pour appliquer des filtres et sélections de colonnes préconfigurés.
Cliquez sur 🔄 Réinitialiser la vue pour rétablir la vue par défaut.
Cliquez sur les noms d'objets pour accéder aux informations détaillées, même dans d'autres rapports.
Lorsque vous utilisez la navigation interne, appuyez sur le bouton précédent du navigateur pour revenir en arrière.
Certains en-têtes de colonnes de tableau affichent un texte d'aide au survol de la souris.
Triez les données en cliquant sur un en-tête de tableau.
Alt+clic sur un en-tête de colonne principale du tableau pour masquer rapidement cette colonne.
Alt+clic sur une ligne de contenu d'une colonne principale du tableau pour la masquer temporairement. Utilisez la puce des lignes masquées ou Réinitialiser la vue pour réafficher les lignes masquées.
Filtrage
Si aucun opérateur n'est spécifié, le filtrage utilise par défaut contient.
Utilisez = pour une correspondance exacte.
Utilisez ^ pour commence par (par exemple, ^Mallory).
Utilisez $ pour se termine par (par exemple, $domain.ch).
Les opérateurs de comparaison comme >, <, >=, <= sont pris en charge (valeurs numériques uniquement).
Les filtres peuvent être niés en commençant par ! (sauf pour les comparaisons numériques). Exemples : !Mallory, !=Mallory, !^Mallory ou !$domain.ch.
Utilisez =empty pour correspondre aux cellules vides, ou !=empty pour correspondre aux cellules non vides.
Utilisez || pour correspondre à l'une des multiples valeurs dans la même colonne (par exemple, Admin || Guest).
Utilisez && pour exiger plusieurs correspondances dans la même colonne (par exemple, !adm && !svc && !sql).
Pour appliquer une logique OU entre colonnes, utilisez or_, group1_, group2_... directement dans un champ de filtre. Exemples : dans la colonne 1 : or_>1, dans la colonne 2 : or_!Mallory
Remarque : La colonne DisplayName inclut également l'ID de l'objet (invisible), il est donc également possible de filtrer par ID.
Contrôles à l'aide de paramètres GET
Filtrage : Appliquez des filtres en utilisant les noms de champs comme paramètres HTTP GET, par exemple, ?EntraRoles=>1&Enabled=true.
Pour appliquer une logique OU entre colonnes, utilisez le préfixe or_ ou group1_ (par exemple, ?or_EntraRoles=>0&or_GrpMem=>0).
Sélection de colonnes : Choisissez les colonnes à afficher à l'aide du paramètre columns. Exemple : ?columns=DisplayName,Owner.
Tri : Triez les données à l'aide des paramètres sort et sortDir. Exemple : ?sort=Impact&sortDir=desc ou ?sort=OwnerCount&sortDir=asc.
Détails de l'objet : Accédez directement à un objet spécifique du rapport à l'aide d'une ancre (#) et de l'ID de l'objet, par exemple #%ObjectID%.
Évaluation
Impact : Représente la quantité ou la gravité des autorisations dont dispose l'objet.
Probabilité : Représente la facilité avec laquelle l'objet peut être influencé ou la qualité de sa protection.
Ce score est destiné à servir d'évaluation de base pour aider à trier et prioriser les entrées du tableau.
Les scores de risque ne sont pas directement comparables entre différents types d'objets ou rapports.
Il n'est pas destiné à remplacer une évaluation complète des risques.
🔧Sous le capot
Catégorisation des rôles
Les rôles Entra ID et Azure sont grossièrement catégorisés en différents niveaux de hiérarchie. Cette catégorisation influence les scores d'impact des objets auxquels ces rôles sont attribués.
L'objectif est d'attribuer un score d'impact plus élevé aux utilisateurs disposant de rôles plus puissants (par exemple, Administrateur général) par rapport aux utilisateurs disposant de rôles moins critiques (par exemple, Lecteur général), même si les deux sont considérés comme des rôles privilégiés par Microsoft.
Remarque :
Pour les rôles Azure, cette catégorisation est moins précise, car l'impact réel dépend fortement de la portée de l'attribution du rôle. Par exemple, un rôle Propriétaire sur une seule machine virtuelle a un impact nettement moindre que lorsque le même rôle est appliqué à un abonnement entier. Il peut également s'agir d'un abonnement de test sans aucune ressource.
Rôles Entra ID
Nom du rôle
Niveau de hiérarchie
GUID
Global Administrator
0
62e90394-69f5-4237-9190-012177145e10
Partner Tier2 Support
0
e00e864a-17c5-4a4b-9c06-f5b95a8d5bd8
Privileged Authentication Administrator
0
7be44c8a-adaf-4e2a-84d6-ab2649e08a13
Privileged Role Administrator
0
e8611ab8-c189-46e8-94e1-60213ab1f814
Domain Name Administrator
0
8329153b-31d0-4727-b945-745eb3bc5f31
External Identity Provider Administrator
0
be2f45a1-457d-42af-a067-6ec1fa63bc45
Hybrid Identity Administrator
0
8ac3fc64-6eca-42ea-9e69-59f4c7b60eb2
Application Administrator
0
9b895d92-2cd3-44c7-9d02-a6ac2d5ea5c3
Cloud Application Administrator
0
158c047a-c907-4556-b7ef-446551a6b5f7
Security Administrator
0
194ae4cb-b126-40b2-bd5b-6091b380977d
Agent ID Administrator
1
db506228-d27e-4b7d-95e5-295956d6615f
AI Administrator
1
d2562ede-74db-457e-a7b6-544e236ebb61
Conditional Access Administrator
1
b1be1c3e-b65d-4f19-8427-f6fa0d97feb9
Authentication Administrator
1
c4e39bd9-1100-46d3-8c65-fb160da0071f
Azure DevOps Administrator
1
e3973bdf-4987-49ae-837a-ba8e231c7286
Directory Writers
1
9360feb5-f418-4baa-8175-e2a00bac4301
Entra SOC Identity Responder
1
58f930cc-fcf4-4152-852c-1d7dbf502139
Exchange Administrator
1
29232cdf-9323-42fd-ade2-1d097af3e4de
Groups Administrator
1
fdd7a751-b60b-444a-984c-02652fe8fa1c
Helpdesk Administrator
1
729827e3-9c14-49f7-bb1b-9608f156bbb8
Identity Governance Administrator
1
45d8d3c5-c802-45c6-b32a-1d70b5e1e86e
Intune Administrator
1
3a2c62db-5318-420d-8d74-23affee5d9d5
Knowledge Administrator
1
b5a8dcf3-09d5-43a9-a639-8e29ef291470
Rôles Azure
Nom du rôle
Niveau de hiérarchie
GUID
Owner
0
8e3af657-a8ff-443c-a75c-2fe8c4bcb635
User Access Administrator
0
18d7d88d-d35e-4fb5-a5c3-7773c20a72d9
Contributor
0
b24988ac-6180-42a0-ab88-20f7382dd24c
Role Based Access Control Administrator
0
f58310d9-a9f6-439a-9e8d-f62e7b41a168
Reservations Administrator
0
a8889054-8d42-49c9-bc1c-52486c10e7cd
Security Admin
1
fb1c8493-542b-48eb-b624-b4c8fea62acd
Virtual Machine Contributor
1
9980e02c-c2be-4d73-94e8-173b1dc7cf3c
Virtual Machine Data Access Administrator
1
66f75aeb-eabe-4b70-9f1e-c350c4c9ad04
Virtual Machine Administrator Login
1
1c0163c0-47e6-4577-8991-ea5c82e286e4
Windows Admin Center Administrator Login
1
a6333a3e-0164-44c3-b281-7a577aff287f
Container Registry Contributor and Data Access Configuration Administrator
1
3bc748fc-213d-45c1-8d91-9da5725539b9
Key Vault Administrator
1
00482a5a-887f-4fb3-b363-3b7fe8e74483
Key Vault Data Access Administrator
1
8b54135c-b56d-4d72-a534-26097cfdc8d8
Key Vault Secrets Officer
1
b86a8fe4-44ce-4948-aee5-eccb2c155cd7
Key Vault Secrets User
1
4633458b-17de-408a-b874-0445c86b69e6
Azure Kubernetes Service RBAC Admin
1
3498e952-d568-435e-9b2c-8d77e338d7f7
Azure Kubernetes Service RBAC Cluster Admin
1
b1ff04bb-8a4e-4dc4-8eb5-8693973ce19b
Azure Arc Kubernetes Admin
1
dffb1e0c-446f-4dde-a09f-99eb5cc68b96
Azure Arc Kubernetes Cluster Admin
1
8393591c-06b9-48a2-a542-1bd6b377f6a2
Azure Arc VMware VM Contributor
1
b748a06d-6150-4f8a-aaa9-ce3940cd96cb
Storage Account Contributor
1
17d1049b-9a84-46fb-8f53-869881c3d3ab
Reader
2
acdd72a7-3385-48ef-bd42-f606fba81ae7
SecurityReader
Catégorisation des autorisations API
Certaines autorisations API permettent à une application d'élever directement ses privilèges au niveau d'Administrateur général. Par conséquent, plusieurs autorisations API sont catégorisées en différents niveaux de gravité. Cette catégorisation influence le score d'impact des applications auxquelles ces autorisations sont attribuées — soit comme autorisations d'application, soit comme autorisations déléguées pour les utilisateurs.
Par défaut, les applications Microsoft sont filtrées pour simplifier l'examen des applications d'entreprise. Utilisez le commutateur -IncludeMsApps pour les inclure. Les applications des locataires suivants sont considérées comme appartenant à Microsoft :
f8cdef31-a31e-4b4a-93e4-5f571e91255a
72f988bf-86f1-41af-91ab-2d7cd011db47
33e01921-4d64-4f8c-a055-5bdaffd5e33d
cdc5aeea-15c5-4db6-b079-fcadd2505dc2
Vérifications effectuées
Le tableau suivant résume approximativement les vérifications effectuées, ainsi que leur impact sur la notation et l'affichage éventuel d'un avertissement.
Vérifications effectuées|Zone|Contrôle|Impacte le score|Avertissement affiché|
|-|-|-|-|
|Groupes|Est un groupe M365 public|Oui|Oui|
|Groupes|Est dynamique / Est dynamique avec requête potentiellement dangereuse|Oui|Oui|
|Groupes|Rôles Entra (actifs et éligibles)|Oui|Oui|
|Groupes|Rôles Azure (actifs et éligibles)|Oui|Oui|
|Groupes|Utilisé pour AppRole|Oui|Oui|
|Groupes|SP interne/étranger comme propriétaire|Oui|Oui|
|Groupes|Dans une AU restreinte|Oui|Oui|
|Groupes|Imbriqué dans un groupe privilégié|Oui|Oui|
|Groupes|Utilisé dans une CAP|Oui|Oui|
|Groupes|Type de groupe|Oui|Non|
|Groupes|Sécurité activée|Oui|Non|
|Groupes|Membre actif imbriqué|Oui|Non|
|Groupes|Propriétaires|Oui|Non|
|Groupes|Propriétaires imbriqués|Oui|Non|
|Groupes|Invité comme propriétaire|Oui|Oui|
|Groupes|Synchronisation sur site|Oui|Non|
|Groupes|Membres (transitifs)|Oui|Non|
|Groupes|Attribuable à un rôle|Oui|Non|
|Groupes|PIM pour groupes : intégré|Non|Non|
|Groupes|PIM pour groupes : membre éligible d'un groupe privilégié|Oui|Oui|
|Groupes|PIM pour groupes : propriétaire éligible d'un groupe privilégié|Oui|Oui|
|Groupes|PIM pour groupes : groupe non protégé imbriqué dans un groupe protégé|Non|Oui|
|ApplicationEntreprise|Rôle Entra|Oui|Oui|
|ApplicationEntreprise|Rôle Azure|Oui|Oui|
|ApplicationEntreprise|Étranger|Oui|Non|
|ApplicationEntreprise|Désactivé par Microsoft|Non|Oui|
|ApplicationEntreprise|Nom suspect (caractères d'imitation)|Oui|Oui|
|ApplicationEntreprise|Autorisation API (application)|Oui|Oui|
|ApplicationEntreprise|Autorisation API (déléguée)|Oui|Oui|
|ApplicationEntreprise|Informations d'identification|Oui|Oui|
|ApplicationEntreprise|Propriétaires|Oui|Oui|
|ApplicationEntreprise|Propriété d'inscriptions d'applications|Oui|Oui|
|ApplicationEntreprise|Propriété d'autres principaux de service|Oui|Oui|
|ApplicationEntreprise|AppLock|(Oui)|Non|
|ApplicationEntreprise|L'application possède une inscription d'application|Oui|Oui|
|ApplicationEntreprise|Membre / propriétaire de groupes|Oui|(Oui)|
|ApplicationEntreprise|AppRoles|Oui|Non|
|ApplicationEntreprise|Exigences AppRole|Oui|Non|
|ApplicationEntreprise|Inactive|Non|Non|
|ApplicationEntreprise|Dernière connexion réussie (jours)|Non|Non|
|InscriptionsApplications|Informations d'identification|Oui|Oui|
|InscriptionsApplications|Application Entra Connect avec informations d'identification|Oui|Oui|
|InscriptionsApplications|Application Entra Connect avec plusieurs certificats|Oui|Oui|
|InscriptionsApplications|AppRoles|Oui|Non|
|InscriptionsApplications|URL de redirection d'application|Non|Non|
|InscriptionsApplications|AppLock|Oui|Non|
|InscriptionsApplications|Propriétaires|Oui|Oui|
|InscriptionsApplications|Administrateurs d'applications (cloud) limités|Non|Non|
|InscriptionsApplications|Privilèges du SP correspondant|Oui|Non|
|InscriptionsApplications|Audience de connexion|Non|Non|
|IdentitéGérée|Propriétaires|Oui|Oui|
|IdentitéGérée|Rôle Entra|Oui|Oui|
|IdentitéGérée|Rôle Azure|Oui|Oui|
|IdentitéGérée|API (application)|Oui|Oui|
|IdentitéGérée|Propriété d'inscriptions d'applications|Oui|Oui|
|IdentitéGérée|Propriété d'autres principaux de service|Oui|Oui|
|IdentitéGérée|Membre / propriétaire de groupes|Oui|(Oui)|
|Utilisateur|Rôles Entra (actifs et éligibles)|Oui|Oui|
|Utilisateur|Rôles Azure (actifs et éligibles)|Oui|Oui|
|Utilisateur|Appartenance à un groupe privilégié (active et éligible)|Oui|Oui|
|Utilisateur|Propriété d'un groupe privilégié (active et éligible)|Oui|Oui|
|Utilisateur|Utilisateur synchronisé Entra Connect|Oui|Oui|
|Utilisateur|Utilisateur synchronisé Entra Connect Cloud Sync|Oui|Oui|
|Utilisateur|Propriété d'inscription d'application|Oui|Oui|
|Utilisateur|Propriété d'application d'entreprise|Oui|Oui|
|Utilisateur|Aucun facteur MFA enregistré|Oui|Oui|
|Utilisateur|Est protégé|Oui|Non|
|Utilisateur|Inactif|Non|Non|
|Utilisateur|Membre / propriétaire de groupes|Oui|(Oui)|
|Utilisateur|Synchronisé depuis le site local|Oui|Non|
|IdentitéAgent|Utilisateurs agents liés|Oui|Non|
|IdentitéAgent|Origine étrangère du principal du blueprint|Oui|Oui|
|IdentitéAgent|Autorisation API effective (application)|Oui|Oui|
|IdentitéAgent|Autorisation API effective (déléguée)|Oui|Oui|
|IdentitéAgent|Rôle Entra|Oui|Oui|
|IdentitéAgent|Rôle Azure|Oui|Oui|
|IdentitéAgent|Propriété d'inscriptions d'applications|Oui|Oui|
|IdentitéAgent|Propriété d'autres principaux de service|Oui|Oui|
|IdentitéAgent|Membre / propriétaire de groupes|Oui|(Oui)|
|PrincipalBlueprintIdentitéAgent|Identités agents liées|Oui|Non|
|PrincipalBlueprintIdentitéAgent|Utilisateurs agents liés|Oui|Non|
|PrincipalBlueprintIdentitéAgent|Autorisation API configurée (application)|Non|Non|
|PrincipalBlueprintIdentitéAgent|Autorisation API configurée (déléguée)|Non|Non|
|PrincipalBlueprintIdentitéAgent|Origine étrangère du blueprint parent|Oui|Non|
|PrincipalBlueprintIdentitéAgent|Rôle Entra|Non|Non|
|PrincipalBlueprintIdentitéAgent|Rôle Azure|Non|Non|
|PrincipalBlueprintIdentitéAgent|Nom suspect (caractères d'imitation)|Oui|Oui|
|BlueprintIdentitéAgent|Principaux du blueprint|Oui|Non|
|BlueprintIdentitéAgent|Identités agents liées|Oui|Non|
|BlueprintIdentitéAgent|Utilisateurs agents liés|Oui|Non|
|BlueprintIdentitéAgent|Autorisations API héritables|Oui|Non|
|BlueprintIdentitéAgent|Informations d'identification fédérées|Oui|Non|
|BlueprintIdentitéAgent|Secrets / certificats|Oui|Oui|
|BlueprintIdentitéAgent|Propriétaires / sponsors|Oui|(Oui)|
|PackagesAccès|Rôles Entra accordés|Oui|Non|
|PackagesAccès|Rôles Azure accordés|Oui|Non|
|PackagesAccès|Groupes accordés|Oui|Non|
|PackagesAccès|Rôles d'application accordés|Oui|Non|
|PackagesAccès|Autorisations API accordées (application)|Oui|Non|
|PackagesAccès|Autorisations API accordées (déléguée)|Oui|Non|
|PackagesAccès|Accès SharePoint accordé|Oui|Non|
|PackagesAccès|Auto-demande large sans approbation|Oui|Oui|
|PackagesAccès|Accès persistant sans expiration ni révision d'accès|Non|Non|
|PackagesAccès|Règles d'auto-affectation dangereuses|Oui|Oui|
|PackagesAccès|Auto-demande via des cibles de groupes non protégés|Oui|Oui|
|PackagesAccès|Affectation large pour compte non utilisateur sans approbation|Oui|Non|
|PackagesAccès|Affectations de principaux de service|Oui|Non|
|Catalogues|Métadonnées, état et visibilité externe du catalogue|Non|Non|
|Catalogues|Ressources du catalogue|Non|Non|
|Catalogues|Ressources configurables dans de nouveaux packages d'accès|Oui|Non|
|Catalogues|Ressources et rôles configurés dans des packages d'accès existants|Oui|Non|
|Catalogues|Ressources de catalogue non configurées|Oui|Non|
|Catalogues|Affectations RBAC du catalogue|Oui|Oui|
|CAP|Aucune politique ou politique mal configurée pour l'authentification héritée|-|Oui|
|CAP|Aucune politique ou politique mal configurée pour bloquer le flux de code d'appareil|-|Oui|
|CAP|Aucune politique ou politique mal configurée pour limiter les enregistrements d'informations de sécurité|-|Oui|
|CAP|Aucune politique ou politique mal configurée pour cibler les connexions risquées|-|Oui|
|CAP|Aucune politique ou politique mal configurée pour cibler le risque utilisateur|-|Oui|
|CAP|Aucune politique imposant la MFA|-|Oui|
|CAP|Aucune politique imposant la force d'authentification|-|Oui|
|CAP|Inclusion de rôles ayant des affectations limitées|-|Oui|
|ParamètresPIM|Contexte d'authentification|-|Oui|
|ParamètresPIM|CAP liée au contexte d'authentification : fréquence de connexion|-|Oui|
|ParamètresPIM|CAP liée au contexte d'authentification : MFA ou force d'authentification|-|Oui|
|ParamètresPIM|CAP liée au contexte d'authentification : activée|-|Oui|
|ParamètresPIM|CAP liée au contexte d'authentification : utilisateurs/groupes/réseaux inclus/exclus|-|Oui|
|ParamètresPIM|CAP liée au contexte d'authentification : conditions|-|Oui|
|ParamètresPIM|MFA d'activation|-|Non|
|ParamètresPIM|Justification ou ticket d'activation|-|Oui|
|ParamètresPIM|Durée d'activation|-|Oui|
|ParamètresPIM|Approbation d'activation|-|Oui|
|ParamètresPIM|Expiration de l'affectation éligible|-|Non|
|ParamètresPIM|Expiration de l'affectation active|-|Oui|
|ParamètresPIM|MFA des affectations actives|-|Non|
|ParamètresPIM|Notification d'activation de rôle|-|Non|
|ParamètresPIM|Notification d'affectation de rôle (active)|-|Non|
|ParamètresPIM|Notification d'affectation de rôle (éligible)|-|Non|
🛡️ Détection
EntraFalcon n'est pas furtif et peut être détecté dans les environnements où l'API Microsoft Graph et l'activité de connexion Azure sont journalisées et surveillées.
Authentification par défaut utilisée
Lorsqu'une énumération complète est effectuée avec les flux non-BroCi, l'outil initie généralement quatre connexions interactives et une connexion non interactive. Selon le flux et la prise en charge des points de terminaison, une connexion interactive supplémentaire peut se produire pour les points de terminaison de politique des résultats de sécurité.
ID d'application
Type
ID de ressource
Objectif
1b730954-1685-4b74-9bfd-dac224a7b894
Interactif
00000003-0000-0000-c000-000000000000
Récupérer les données PIM pour groupes
04b07795-8ddb-461a-bbee-02f9e1bf7b46
Interactif
00000003-0000-0000-c000-000000000000
Récupérer les données générales des objets du locataire
51f81489-12ee-4a9e-aaae-a2591f45987d
Interactif
00000003-0000-0000-c000-000000000000
Récupérer les données PIM pour les rôles Entra / Azure
80ccca67-54bd-44ab-8625-4b79c4dc7775
Interactif
00000003-0000-0000-c000-000000000000
Récupérer le contexte de politique des résultats de sécurité
04b07795-8ddb-461a-bbee-02f9e1bf7b46
Non interactif
797f4846-ba00-4fd7-ba43-dac1f8f63013
Récupérer les données d'affectation de rôle IAM Azure
Authentification BroCi utilisée
Lorsque l'authentification BroCi est utilisée, une seule connexion interactive se produit.
ID d'application
Type
ID de ressource
Objectif
c44b4083-3bb0-49c1-b47d-974e53cbdf3c
Interactif
00000003-0000-0000-c000-000000000000
Authentification initiale pour utiliser le jeton d'actualisation pour BroCi
50aaa389-5a33-4f1a-91d7-2c45ecd8dac8
Non interactif
00000003-0000-0000-c000-000000000000
Récupérer les données PIM pour groupes
50aaa389-5a33-4f1a-91d7-2c45ecd8dac8
Non interactif
01fc33a7-78ba-4d2f-a4b7-768e336e890e
Récupérer les données PIM pour groupes
74658136-14ec-4630-ad9b-26e160ff0fc6
Non interactif
00000003-0000-0000-c000-000000000000
Récupérer les données générales des objets du locataire
74658136-14ec-4630-ad9b-26e160ff0fc6
Non interactif
797f4846-ba00-4fd7-ba43-dac1f8f63013
Récupérer les données d'affectation de rôle IAM Azure
Lorsque BroCi est activé, EntraFalcon interroge également api.azrbac.mspim.azure.com pour PIM pour groupes.
Détails
Pour la collecte de données, l'outil envoie plusieurs requêtes à l'API Microsoft Graph et, éventuellement, à l'API Azure ARM—une ou plusieurs par objet. Lorsque cela est possible, il exploite le point de terminaison Batch de Graph pour réduire le nombre de requêtes individuelles et améliorer l'efficacité.
Les connexions interactives utilisent le User-Agent du navigateur. Toutes les connexions non interactives et les requêtes API (Graph et ARM) utilisent EntraFalcon comme User-Agent, sauf modification avec le paramètre -UserAgent.
Pour détecter l'utilisation d'EntraFalcon, les équipes bleues peuvent surveiller les ID d'application répertoriés dans les journaux de connexion, rechercher des volumes inhabituels de trafic API Graph, ou analyser le comportement d'actualisation des jetons et des requêtes par lots.
🕳️ Limitations connues
RBAC M365 : non évalué
RBAC Defender for Endpoint : non évalué
Couverture utilisateur Conditional Access : la couverture utilisateur effective et -ExportCapUncoveredUsers sont des calculs au mieux basés sur les utilisateurs énumérés, les membres de groupes, les affectations de rôles et les catégories d'utilisateurs externes résolubles. Les sélecteurs d'utilisateurs externes ne sont résolus que pour les utilisateurs invités du locataire correspondant à b2bCollaborationGuest. D'autres types d'utilisateurs externes ou des utilisateurs externes avec des locataires externes spécifiés peuvent rendre les valeurs de couverture approximatives. Les chemins PIM éligibles sont signalés comme couverture potentielle et ne sont pas comptés comme actuellement couverts. L'exportation CSV est limitée aux politiques activées et aux utilisateurs activés.
Environnement cloud : les plateformes cloud évoluent rapidement. Par conséquent, certaines évaluations ou détections peuvent devenir obsolètes ou inexactes au fil du temps. De plus, les locataires deviennent de plus en plus complexes, et des configurations spécifiques ou des combinaisons de paramètres peuvent conduire à des résultats inexacts. Bien que nous nous efforcions de maintenir EntraFalcon à jour, il est toujours recommandé de valider les résultats de manière indépendante et de ne pas se fier uniquement à l'outil pour des décisions critiques.
Rapports HTML : les rapports HTML générés ne mettent pas en œuvre de mécanismes de protection contre le cross-site scripting (XSS).
📦 Outils externes intégrés
Les sous-modules suivants ont été forké et intégrés dans EntraFalcon pour prendre en charge l'authentification, l'interaction avec Microsoft Graph et les graphiques de rapports :
Chemin vers un fichier de certificat PFX/P12 pour l'authentification du principal de service.
-
SPCertificatePassword
Mot de passe (SecureString) pour le certificat PFX spécifié par -SPCertificatePath.
-
SPCertificatePemPath
Chemin vers un fichier de certificat PEM. Utilisé avec -SPPrivateKeyPemPath.
-
SPPrivateKeyPemPath
Chemin vers le fichier de clé privée PEM correspondant à -SPCertificatePemPath.
-
SPPrivateKeyPemPassword
Mot de passe (SecureString) pour la clé privée PEM spécifiée par -SPPrivateKeyPemPath.
-
Csv
Active l'écriture de fichiers de rapport CSV en plus des fichiers de rapport TXT/HTML.
false
ExportCapUncoveredUsers
Pour chaque stratégie d'accès conditionnel activée avec ciblage utilisateur, exporte un CSV listant les utilisateurs non couverts par cette stratégie. Les fichiers sont écrits dans un sous-dossier ConditionalAccessPolicies_UncoveredUsers dans le répertoire de sortie.
false
ExportFindingsJson
Exporte toutes les conclusions de sécurité (Security Findings) au format JSON à la fin de l'exécution.
false
ExportDataJson
Exporte le rapport enrichi et les ensembles de données de support sous forme de fichiers de données JSON bruts dans Data_Json ; les métadonnées d'exécution sont disponibles dans Summary.json.
false
DebugObjectDump
Exporte les objets de rapport finaux en mémoire au format CLIXML vers Debug_ObjectDump pour le dépannage et les tests.