
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 sécurité et administrateurs système pour évaluer la posture de sécurité d'un environnement Microsoft Entra ID.
Conçu pour être simple d'utilisation, 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, ni consentement à l'API Microsoft Graph.
L'outil aide à identifier les objets privilégiés, les attributions potentiellement risquées et les erreurs de configuration des accès conditionnels souvent négligées, telles que :
Les résultats sont présentés dans des rapports HTML interactifs pour faciliter l'exploration et l'analyse.
| Type | Permission | Obligatoire | Impact en cas d'absence |
|---|---|---|---|
| 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 attributions Azure IAM |
De plus, vous devez pouvoir vous authentifier auprès de l'API Microsoft Graph et éventuellement de l'API Azure ARM depuis l'appareil sur lequel vous exécutez l'outil. Assurez-vous que les politiques d'accès conditionnel ne bloquent pas votre authentification.
Pour commencer, clonez le dépôt et naviguez dans le répertoire du projet :```powershell git clone https://github.com/CompassSecurity/EntraFalcon cd EntraFalcon
Remarque : Vous devrez peut-être modifier temporairement la politique d'exécution PowerShell pour exécuter le script.
Ne faites cela que pour des scripts de confiance !```
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process
EntraFalcon inclut une prise en charge native de l'authentification Entra ID. Utilisez -AuthFlow pour sélectionner le flux d'authentification.
Pour les évaluations normales, utilisez l'un des flux à couverture complète :
| Flux recommandé | Idéal pour | Plateforme | Couverture |
|---|---|---|---|
BroCi (par défaut) | Exécutions Windows interactives | Windows | Complète |
BroCiManualCode | Authentification dans un autre navigateur | Windows, Linux, macOS | Complète |
BroCiToken | Jeton d'actualisation Azure Portal existant | Windows, Linux, macOS | Complète |
ServicePrincipal | Automatisation / CI | Windows, Linux, macOS | Complète |
BroCi utilise une connexion interactive. BroCiToken et ServicePrincipal n'en utilisent aucune. Les flux utilisateur de secours peuvent nécessiter plusieurs connexions interactives, car des jetons de ressources distincts sont demandés.
En raison de l'absence d'applications first-party pré-autorisées, les flux de secours ne peuvent pas effectuer l'énumération complète (PIM for Groups, Access Packages, Catalogs). Par conséquent, ils restent actuellement des options de secours uniquement.
| Flux | À utiliser uniquement lorsque | Plateforme | Limitations |
|---|---|---|---|
AuthCode | Une compatibilité héritée est requise | Windows | Couverture partielle. Pas de rapport autonome PIM for Groups, Access Packages ou Catalogs. |
DeviceCode | L'authentification via navigateur n'est pas possible | Windows, Linux, macOS | Couverture partielle. Pas de rapport autonome PIM for Groups, Access Packages ou Catalogs. Certaines vérifications 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. Pas de rapport autonome PIM for Groups, Access Packages ou Catalogs. |
BroCi utilise des applications first-party 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
Sélection explicite de BroCi :```powershell
.\run_EntraFalcon.ps1 -AuthFlow BroCi
.\run_EntraFalcon.ps1 -AuthFlow BroCiManualCode
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 du SSO).
3. Ouvrez les outils de développement du navigateur et, dans l'onglet Network, activez `Preserve log`.
4. Terminez l'authentification.
5. Recherchez dans le journal réseau `code=1.` 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.