Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!
EntraFalcon — Uno strumento PowerShell leggero per valutare la postura di sicurezza degli ambienti Microsoft Entra ID. Aiuta a identificare oggetti privilegiati, assegnazioni rischiose e potenziali errori di configurazione. | Kitploit
Uno strumento PowerShell leggero per valutare la postura di sicurezza degli ambienti Microsoft Entra ID. Aiuta a identificare oggetti privilegiati, assegnazioni rischiose e potenziali errori di configurazione.
EntraFalcon è uno strumento di valutazione basato su PowerShell per pentester, analisti della sicurezza e amministratori di sistema, progettato per valutare il livello di sicurezza di un ambiente Microsoft Entra ID.
Pensato per essere facile da usare, EntraFalcon funziona con PowerShell 5.1 e 7, supporta sia Windows che Linux e non richiede moduli PowerShell aggiuntivi, installazioni extra o consenso dell'API Microsoft Graph.
Lo strumento aiuta a individuare oggetti privilegiati, assegnazioni potenzialmente rischiose e configurazioni errate di Conditional Access spesso trascurate, come ad esempio:
Utenti con controllo su gruppi o applicazioni ad alto privilegio
Applicazioni enterprise esterne o interne con permessi eccessivi (ad es., API Microsoft Graph, ruoli Azure)
Utenti con assegnazioni di ruoli IAM di Azure direttamente sulle risorse
Account privilegiati sincronizzati da ambienti on-premises
Utenti inattivi o utenti senza capacità MFA
Gruppi non protetti utilizzati in assegnazioni sensibili (ad es., esclusioni di Conditional Access, Subscription Owner o membri idonei di un gruppo privilegiato)
I risultati vengono presentati in report HTML interattivi per supportare un'esplorazione e un'analisi efficienti.
🚀 Funzionalità
Script PowerShell semplice, compatibile con PowerShell 5.1 e 7. Funziona su Windows e Linux
Autenticazione integrata che supporta più metodi
Utilizza applicazioni Microsoft di prima parte con ambiti pre-consentiti per bypassare le richieste di consenso dell'API Graph
Genera report HTML navigabili che supportano filtri, ordinamento, esportazione dei dati, ecc.
Esegue oltre 90 controlli automatizzati e riepiloga i risultati in un Security Findings Report
Include controlli per configurazioni tenant deboli e proprietà o permessi degli oggetti rischiosi
Fornisce valutazioni di gravità, oltre a descrizioni del problema, potenziali minacce e indicazioni per la correzione
Elenca gli oggetti interessati e fornisce collegamenti diretti ai relativi report dettagliati per ulteriori indagini
Esegue una valutazione di base di impatto, probabilità e rischio per evidenziare gli oggetti ad alto privilegio scarsamente protetti e ordinare i dati.
Visualizza avvisi per configurazioni rischiose e privilegi elevati
Enumera gli oggetti Entra ID, tra cui:
Utenti (inclusi Agent Users)
Gruppi
Applicazioni enterprise
Registrazioni di app
Identità gestite
Identità degli agenti
Principal del blueprint delle identità degli agenti
Blueprint delle identità degli agenti
Assegnazioni PIM:
PIM per ruoli Entra
PIM per gruppi
PIM per ruoli Azure
Assegnazioni di ruoli Entra
Assegnazioni di ruoli Azure
Assegnazioni RBAC di Intune
Pacchetti di accesso
Cataloghi di Entitlement Management
RBAC dei cataloghi
Criteri di Conditional Access
Unità amministrative
Impostazioni PIM:
PIM per ruoli Entra
PIM per gruppi (solo autenticazione BroCi)
✅ Requisiti
Tipo
Permesso
Obbligatorio
Impatto se assente
Ruolo Entra ID
Global Reader
Sì
Non è possibile eseguire gli script
Ruolo Azure
Reader: su ogni Management Group o Subscription
No
Impossibile valutare le assegnazioni IAM di Azure
Inoltre, devi essere in grado di autenticarti all'API Microsoft Graph e, opzionalmente, all'API Azure ARM dal dispositivo su cui esegui lo strumento.
Assicurati che i criteri di Conditional Access non blocchino la tua autenticazione.
Nota: Potrebbe essere necessario modificare temporaneamente i criteri di esecuzione di PowerShell per eseguire lo script.
Fallo solo per script attendibili!```
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process
Eseguire EntraFalcon
EntraFalcon include il supporto integrato per l'autenticazione Entra ID. Usare -AuthFlow per selezionare il flusso di autenticazione.
Per le valutazioni standard, usare uno dei flussi a copertura completa:
Flusso consigliato
Ideale per
Piattaforma
Copertura
BroCi(predefinito)
Esecuzioni interattive su Windows
Windows
Completa
BroCiManualCode
Autenticazione in un altro browser
Windows, Linux, macOS
Completa
BroCiToken
Token di aggiornamento esistente del portale Azure
Windows, Linux, macOS
Completa
ServicePrincipal
Automazione / CI
Windows, Linux, macOS
Completa
BroCi richiede un solo accesso interattivo. BroCiToken e ServicePrincipal non ne richiedono alcuno. I flussi utente di fallback possono richiedere più accessi interattivi perché vengono richiesti token di risorse separati.
Flussi di autenticazione di fallback
A causa della mancanza di applicazioni di prima parte pre-consentite, i flussi di fallback non possono eseguire l'enumerazione completa (PIM for Groups, Access Packages, Catalogs). Pertanto, attualmente rimangono solo opzioni di fallback.
Flusso
Usare solo quando
Piattaforma
Limitazioni
AuthCode
È richiesta la compatibilità legacy
Windows
Copertura parziale. Nessun report autonomo per PIM for Groups, Access Packages o Catalogs.
DeviceCode
L'autenticazione basata su browser non è possibile
Windows, Linux, macOS
Copertura parziale. Nessun report autonomo per PIM for Groups, Access Packages o Catalogs. Alcuni controlli di Security Findings vengono eseguiti con profondità ridotta.
ManualCode
L'autenticazione deve essere completata tramite una sessione browser separata
Windows, Linux, macOS
Copertura parziale. Nessun report autonomo per PIM for Groups, Access Packages o Catalogs.
Consigliato: flusso BroCi (predefinito / solo Windows)
BroCi usa applicazioni di prima parte alternative e richiede un solo accesso interattivo.
È utile quando il client Azure Active Directory PowerShell richiede l'assegnazione e deve essere evitato.```powershell
.\run_EntraFalcon.ps1
root@kitploit:~
Selezione esplicita di BroCi:```powershell
.\run_EntraFalcon.ps1 -AuthFlow BroCi
Consigliato: BroCi + Flusso di Codice Manuale```powershell
.\run_EntraFalcon.ps1 -AuthFlow BroCiManualCode
root@kitploit:~
1. Lo script copia l'URL di autenticazione negli appunti.
2. Incolla l'URL in un browser (opzionalmente su un altro dispositivo per il supporto SSO).
3. Apri gli strumenti di sviluppo del browser e, nella scheda Rete, abilita `Preserve log`.
4. Completa l'autenticazione.
5. Cerca nel log di rete `code=1.` e copia l'URL della richiesta contenente il codice negli appunti.
6. Premi Invio per continuare; lo script legge il codice dagli appunti e completa l'acquisizione del token.
#### Consigliato: BroCi con Token
Se è già disponibile un token di aggiornamento valido del portale Azure (client c44b4083-3bb0-49c1-b47d-974e53cbdf3c), può essere utilizzato direttamente.
Esempio: Ottenere il token di aggiornamento dal browser
1. Apri gli strumenti di sviluppo del browser e, nella scheda Rete, abilita Preserve log.
2. Autenticati su https://entra.microsoft.com.
3. Cerca nel log di rete `brk_client_id=c44b4083-3bb0-49c1-b47d-974e53cbdf3c` ed estrai il token di aggiornamento dalla risposta.```powershell
.\run_EntraFalcon.ps1 -AuthFlow BroCiToken -BroCiToken "1.XXXXXXXXXXX"
Consigliato: Service Principal
Autentica come applicazione registrata utilizzando la concessione delle credenziali client OAuth2 — nessuna interazione utente richiesta.
Utile per esecuzioni automatizzate ripetute.
Richiede una registrazione personalizzata dell'app Entra con autorizzazioni API Graph di tipo Application (vedi sotto).
Per una chiave privata crittografata, aggiungi `-SPPrivateKeyPemPassword (Read-Host -Prompt "Private key password" -AsSecureString)`.
##### Autorizzazioni richieste per la registrazione dell'app
Concedi le seguenti autorizzazioni **Applicazione** (non Delegata) sulla registrazione dell'app e fornisci il consenso amministrativo:
| Autorizzazione | Tipo |
|---|---|
| `AdministrativeUnit.Read.All` | Applicazione |
| `AgentIdentity.Read.All` | Applicazione |
| `AgentIdentityBlueprint.Read.All` | Applicazione |
| `AgentIdentityBlueprintPrincipal.Read.All` | Applicazione |
| `Application.Read.All` | Applicazione |
| `AuditLog.Read.All` | Applicazione |
| `Device.Read.All` | Applicazione |
| `EntitlementManagement.Read.All` | Applicazione |
| `Group.Read.All` | Applicazione |
| `Organization.Read.All` | Applicazione |
| `Policy.Read.All` | Applicazione |
| `PrivilegedAccess.Read.AzureADGroup` | Applicazione |
| `RoleManagement.Read.Directory` | Applicazione |
| `RoleManagementPolicy.Read.AzureADGroup` | Applicazione |
| `User.Read.All` | Applicazione |
| `DeviceManagementRBAC.Read.All` | Applicazione |
Inoltre, assegna il ruolo **Azure Reader** sul gruppo di gestione radice (o su ogni sottoscrizione pertinente) e, opzionalmente, il ruolo **Global Reader** all'entità servizio in Entra ID (richiesto per lo stato MFA per utente).
#### Fallback: Flusso del codice di autorizzazione (solo Windows)```powershell
.\run_EntraFalcon.ps1 -AuthFlow AuthCode
Fallback: Device Code Flow
È spesso limitato da Conditional Access in ambienti hardened.
Con DeviceCode, due controlli di Security Findings vengono eseguiti con profondità ridotta (CAP-004 e CAP-005).```powershell
.\run_EntraFalcon.ps1 -AuthFlow DeviceCode
root@kitploit:~
#### Fallback: flusso con codice di autorizzazione + codice manuale```powershell
.\run_EntraFalcon.ps1 -AuthFlow ManualCode
Lo script copia l'URL di autenticazione negli appunti.
Incolla l'URL in un browser (opzionalmente su un altro dispositivo per il supporto SSO).
Completa l'autenticazione.
Copia l'URL di reindirizzamento finale dalla barra degli indirizzi del browser (contenente il codice di autorizzazione) negli appunti.
Premi Invio per continuare; lo script legge il codice dagli appunti e completa l'acquisizione del token.
Altri Parametri
Includi App Enterprise di Proprietà Microsoft
Per impostazione predefinita, le applicazioni enterprise ufficiali di Microsoft sono escluse dalla valutazione per ridurre il rumore. Per includerle nell'enumerazione e nell'analisi, usa l'interruttore -IncludeMsApps:```powershell
.\run_EntraFalcon.ps1 -IncludeMsApps
root@kitploit:~
#### Valutazione Skip PIM per i Gruppi
Usa l'opzione `-SkipPimForGroups` per saltare la pre-raccolta e l'arricchimento di PIM per i Gruppi.
Questo salta anche il report autonomo delle impostazioni di `PIM for Groups`.```powershell
.\run_EntraFalcon.ps1 -SkipPimForGroups
Altri Parametri Opzionali
Parametro
Descrizione
Valore Predefinito
UserAgent
User agent utilizzato per le richieste all'endpoint del token e per le chiamate API.
EntraFalcon
DisableCAE
Disabilita la richiesta di token Continuous Access Evaluation (CAE).
false
Tenant
Specifica il tenant (ID o dominio) per l'autenticazione. Utile quando si valuta un tenant diverso da quello principale dell'account.
Tenant principale dell'account
OutputFolder
Cartella di output in cui vengono salvati i report.
Results_%TenantName%_YYYYMMDD_HHMM
LimitResults
Limita il numero di gruppi e utenti nel report (dopo l'ordinamento per rischio). Utile per tenant di grandi dimensioni.
-
LogLevel
Controlla la verbosità della registrazione CLI in fase di esecuzione. Valori supportati: Off (predefinito), Verbose, Debug, Trace.
Off
ApiTop
Imposta il numero massimo di oggetti restituiti dall'API. Valori più bassi riducono il rischio di timeout (HTTP 504), ma aumentano il numero di richieste.
999 (Intervallo valido: 5–999)
AuthFlow
Selettore del flusso di autenticazione preferito. Valori: BroCi (predefinito), AuthCode, DeviceCode, ManualCode, BroCiManualCode, BroCiToken, ServicePrincipal.
BroCi
BroCiToken
Refresh token del portale Azure per AuthFlow BroCiToken.
-
SPClientId
ID applicazione (client) del service principal. Richiesto per -AuthFlow ServicePrincipal.
-
SPClientSecret
Segreto client per il service principal. Utilizzato con .
📊 Alcuni Esempi di Report
Report dei Security Finding
Utenti
Utenti (Sezione Dettagli)
Ruoli Entra ID
Ruoli Azure
Applicazione Enterprise (Sezione Dettagli)
Policy di Accesso Condizionale
Policy di Accesso Condizionale (Sezione Dettagli)
Impostazioni Ruolo PIM (Entra)
Identità Agente
Riepilogo Enumerazione
📑 Report HTML
Generale
Fare clic sul pulsante ⚙️ Columns per mostrare o nascondere colonne specifiche.
Fare clic su 💾 Export per scaricare CSV/JSON o copiare CSV/TSV/JSON dei dati attualmente visibili.
Fare clic su 👁 Share View per copiare filtri, ordinamento e selezione delle colonne come collegamento condivisibile.
Fare clic su 🧰 Preset Views per applicare filtri e selezioni di colonne preconfigurati.
Fare clic su 🔄 Reset View per ripristinare la visualizzazione predefinita.
Fare clic sui nomi degli oggetti per passare alle informazioni dettagliate, anche in altri report.
Quando si utilizza la navigazione interna, premere il pulsante Indietro del browser per tornare indietro.
Alcuni campi di intestazione delle tabelle mostrano testo di aiuto al passaggio del mouse.
Ordinare i dati facendo clic su un'intestazione di tabella.
Alt+clic su un'intestazione di colonna principale della tabella per nascondere rapidamente quella colonna.
Alt+clic su una riga di contenuto della tabella principale per nasconderla temporaneamente. Utilizzare il chip delle righe nascoste o Reset View per mostrare di nuovo le righe nascoste.
Filtraggio
Se non viene specificato un operatore, il filtraggio utilizza per impostazione predefinita contains.
Utilizzare = per una corrispondenza esatta.
Utilizzare ^ per starts with (ad es., ^Mallory).
Utilizzare $ per ends with (ad es., $domain.ch).
Sono supportati operatori di confronto come >, <, >=, <= (solo valori numerici).
I filtri possono essere negati iniziando con ! (tranne per i confronti numerici). Esempi: !Mallory, !=Mallory, !^Mallory o !$domain.ch.
Utilizzare =empty per corrispondere a celle vuote, o !=empty per corrispondere a celle non vuote.
Utilizzare || per corrispondere a uno qualsiasi di più valori nella stessa colonna (ad es., Admin || Guest).
Utilizzare && per richiedere più corrispondenze nella stessa colonna (ad es., !adm && !svc && !sql).
Per applicare la logica OR tra colonne, utilizzare or_, group1_, group2_... direttamente in un campo di filtro. Esempi: nella colonna 1: or_>1, nella colonna 2: or_!Mallory
Nota: La colonna DisplayName include anche l'ID dell'oggetto (invisibile), quindi è possibile filtrare anche per ID.
Controlli tramite Parametri GET
Filtraggio: Applicare i filtri utilizzando i nomi dei campi come parametri HTTP GET, ad es., ?EntraRoles=>1&Enabled=true.
Per applicare la logica OR tra colonne, utilizzare il prefisso or_ o group1_ (ad es., ?or_EntraRoles=>0&or_GrpMem=>0).
Selezione Colonne: Scegliere quali colonne visualizzare utilizzando il parametro columns. Esempio: ?columns=DisplayName,Owner.
Ordinamento: Ordinare i dati utilizzando i parametri sort e sortDir. Esempio: ?sort=Impact&sortDir=desc o ?sort=OwnerCount&sortDir=asc.
Dettagli Oggetto: Passare direttamente a un oggetto specifico nel report utilizzando un'ancora (#) e l'ID dell'oggetto, ad es. #%ObjectID%.
Valutazione
Impact: Rappresenta la quantità o la gravità delle autorizzazioni dell'oggetto.
Likelihood: Rappresenta quanto facilmente l'oggetto può essere influenzato o quanto è protetto.
Questo punteggio è inteso come una valutazione di base per aiutare a ordinare e dare priorità alle voci nella tabella.
I punteggi di rischio non sono direttamente confrontabili tra diversi tipi di oggetti o report.
Non è inteso a sostituire una valutazione completa del rischio.
🔧Sotto il Coffano
Categorizzazione dei Ruoli
I ruoli Entra ID e Azure sono approssimativamente categorizzati in diversi livelli di tier. Questa categorizzazione influenza i punteggi di impatto degli oggetti assegnati a tali ruoli.
L'obiettivo è assegnare un punteggio di impatto più alto agli utenti con ruoli più potenti (ad es., Global Administrator) rispetto agli utenti con ruoli meno critici (ad es., Global Reader), anche se entrambi sono considerati ruoli privilegiati da Microsoft.
Nota:
Per i ruoli Azure, questa categorizzazione è meno precisa, poiché l'impatto effettivo dipende fortemente dall'ambito dell'assegnazione del ruolo. Ad esempio, un ruolo Owner su una singola macchina virtuale ha un impatto significativamente inferiore rispetto a quando lo stesso ruolo viene applicato a un'intera sottoscrizione. Potrebbe anche essere una sottoscrizione di test senza alcuna risorsa.
Ruoli Entra ID
Nome Ruolo
Livello Tier
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
Ruoli Azure
Nome Ruolo
Livello Tier
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
Categorizzazione delle Autorizzazioni API
Alcune autorizzazioni API consentono a un'applicazione di escalare direttamente ai privilegi di Global Administrator. Pertanto, diverse autorizzazioni API sono categorizzate in diversi livelli di gravità. Questa categorizzazione influenza il punteggio di impatto delle applicazioni a cui sono assegnate queste autorizzazioni — sia come autorizzazioni applicazione che come autorizzazioni delegate per gli utenti.
Per impostazione predefinita, le applicazioni Microsoft vengono escluse per semplificare la revisione delle Applicazioni Enterprise. Utilizzare l'opzione -IncludeMsApps per includerle. Le applicazioni dei seguenti tenant sono considerate di proprietà Microsoft:
f8cdef31-a31e-4b4a-93e4-5f571e91255a
72f988bf-86f1-41af-91ab-2d7cd011db47
33e01921-4d64-4f8c-a055-5bdaffd5e33d
cdc5aeea-15c5-4db6-b079-fcadd2505dc2
Controlli Eseguiti
La tabella seguente riassume approssimativamente i controlli eseguiti, insieme al loro impatto sul punteggio e alla presenza di un avviso.
Controlli Eseguiti|Area|Check|Impatto sul punteggio|Avviso visualizzato|
|-|-|-|-|
|Gruppi|È un gruppo M365 pubblico|Sì|Sì|
|Gruppi|È dinamico / È dinamico con query potenzialmente pericolosa|Sì|Sì|
|Gruppi|Ruoli Entra (attivi ed eleggibili)|Sì|Sì|
|Gruppi|Ruoli Azure (attivi ed eleggibili)|Sì|Sì|
|Gruppi|Utilizzato per AppRole|Sì|Sì|
|Gruppi|SP interno/esterno come proprietario|Sì|Sì|
|Gruppi|In AU ristretta|Sì|Sì|
|Gruppi|Annidato in gruppo privilegiato|Sì|Sì|
|Gruppi|Utilizzato in CAP|Sì|Sì|
|Gruppi|Tipo di gruppo|Sì|No|
|Gruppi|Security abilitata|Sì|No|
|Gruppi|Membro attivo annidato|Sì|No|
|Gruppi|Proprietari|Sì|No|
|Gruppi|Proprietari annidati|Sì|No|
|Gruppi|Guest come proprietario|Sì|Sì|
|Gruppi|Sincronizzazione on-prem|Sì|No|
|Gruppi|Membri (transitivi)|Sì|No|
|Gruppi|Assegnabile a ruoli|Sì|No|
|Gruppi|PIM per gruppi: onboarded|No|No|
|Gruppi|PIM per gruppi: membro eleggibile di gruppo privilegiato|Sì|Sì|
|Gruppi|PIM per gruppi: proprietario eleggibile di gruppo privilegiato|Sì|Sì|
|Gruppi|PIM per gruppi: gruppo non protetto annidato in gruppo protetto|No|Sì|
|EnterpriseApp|Ruolo Entra|Sì|Sì|
|EnterpriseApp|Ruolo Azure|Sì|Sì|
|EnterpriseApp|Esterna|Sì|No|
|EnterpriseApp|Disabilitata da Microsoft|No|Sì|
|EnterpriseApp|Nome sospetto (caratteri simili)|Sì|Sì|
|EnterpriseApp|Autorizzazione API (applicazione)|Sì|Sì|
|EnterpriseApp|Autorizzazione API (delegata)|Sì|Sì|
|EnterpriseApp|Credenziali|Sì|Sì|
|EnterpriseApp|Proprietari|Sì|Sì|
|EnterpriseApp|Proprietà su registrazioni app|Sì|Sì|
|EnterpriseApp|Proprietà di altri service principal|Sì|Sì|
|EnterpriseApp|AppLock|(Sì)|No|
|EnterpriseApp|L'app possiede una registrazione app|Sì|Sì|
|EnterpriseApp|Membro / proprietario di gruppi|Sì|(Sì)|
|EnterpriseApp|AppRoles|Sì|No|
|EnterpriseApp|Requisiti AppRole|Sì|No|
|EnterpriseApp|Inattiva|No|No|
|EnterpriseApp|Ultimo accesso riuscito (giorni)|No|No|
|RegistrazioniApp|Credenziali|Sì|Sì|
|RegistrazioniApp|App Entra Connect con credenziali|Sì|Sì|
|RegistrazioniApp|App Entra Connect con più certificati|Sì|Sì|
|RegistrazioniApp|AppRoles|Sì|No|
|RegistrazioniApp|URL di reindirizzamento app|No|No|
|RegistrazioniApp|AppLock|Sì|No|
|RegistrazioniApp|Proprietari|Sì|Sì|
|RegistrazioniApp|Amministratori app (cloud) con ambito|No|No|
|RegistrazioniApp|Privilegi dello SP corrispondente|Sì|No|
|RegistrazioniApp|Pubblico di accesso|No|No|
|IdentitàGestite|Proprietari|Sì|Sì|
|IdentitàGestite|Ruolo Entra|Sì|Sì|
|IdentitàGestite|Ruolo Azure|Sì|Sì|
|IdentitàGestite|API (app)|Sì|Sì|
|IdentitàGestite|Proprietà su registrazioni app|Sì|Sì|
|IdentitàGestite|Proprietà di altri service principal|Sì|Sì|
|IdentitàGestite|Membro / proprietario di gruppi|Sì|(Sì)|
|Utente|Ruoli Entra (attivi ed eleggibili)|Sì|Sì|
|Utente|Ruoli Azure (attivi ed eleggibili)|Sì|Sì|
|Utente|Appartenenza a gruppi privilegiati (attiva ed eleggibile)|Sì|Sì|
|Utente|Proprietà di gruppi privilegiati (attiva ed eleggibile)|Sì|Sì|
|Utente|Utente sincronizzato Entra Connect|Sì|Sì|
|Utente|Utente sincronizzato Entra Connect Cloud Sync|Sì|Sì|
|Utente|Proprietà di registrazioni app|Sì|Sì|
|Utente|Proprietà di applicazioni enterprise|Sì|Sì|
|Utente|Nessun fattore MFA registrato|Sì|Sì|
|Utente|È protetto|Sì|No|
|Utente|Inattivo|No|No|
|Utente|Membro / proprietario di gruppi|Sì|(Sì)|
|Utente|Sincronizzato da on-prem|Sì|No|
|IdentitàAgente|Utenti agente collegati|Sì|No|
|IdentitàAgente|Origine principale blueprint esterna|Sì|Sì|
|IdentitàAgente|Autorizzazione API effettiva (applicazione)|Sì|Sì|
|IdentitàAgente|Autorizzazione API effettiva (delegata)|Sì|Sì|
|IdentitàAgente|Ruolo Entra|Sì|Sì|
|IdentitàAgente|Ruolo Azure|Sì|Sì|
|IdentitàAgente|Proprietà su registrazioni app|Sì|Sì|
|IdentitàAgente|Proprietà di altri service principal|Sì|Sì|
|IdentitàAgente|Membro / proprietario di gruppi|Sì|(Sì)|
|PrincipaleBlueprintIdentitàAgente|Identità agente collegate|Sì|No|
|PrincipaleBlueprintIdentitàAgente|Utenti agente collegati|Sì|No|
|PrincipaleBlueprintIdentitàAgente|Autorizzazione API configurata (applicazione)|No|No|
|PrincipaleBlueprintIdentitàAgente|Autorizzazione API configurata (delegata)|No|No|
|PrincipaleBlueprintIdentitàAgente|Origine blueprint padre esterna|Sì|No|
|PrincipaleBlueprintIdentitàAgente|Ruolo Entra|No|No|
|PrincipaleBlueprintIdentitàAgente|Ruolo Azure|No|No|
|PrincipaleBlueprintIdentitàAgente|Nome sospetto (caratteri simili)|Sì|Sì|
|BlueprintIdentitàAgente|Principali blueprint|Sì|No|
|BlueprintIdentitàAgente|Identità agente collegate|Sì|No|
|BlueprintIdentitàAgente|Utenti agente collegati|Sì|No|
|BlueprintIdentitàAgente|Autorizzazioni API ereditabili|Sì|No|
|BlueprintIdentitàAgente|Credenziali federate|Sì|No|
|BlueprintIdentitàAgente|Segreti / certificati|Sì|Sì|
|BlueprintIdentitàAgente|Proprietari / sponsor|Sì|(Sì)|
|PacchettiAccesso|Ruoli Entra concessi|Sì|No|
|PacchettiAccesso|Ruoli Azure concessi|Sì|No|
|PacchettiAccesso|Gruppi concessi|Sì|No|
|PacchettiAccesso|Ruoli applicazione concessi|Sì|No|
|PacchettiAccesso|Autorizzazioni API concesse (applicazione)|Sì|No|
|PacchettiAccesso|Autorizzazioni API concesse (delegata)|Sì|No|
|PacchettiAccesso|Accesso SharePoint concesso|Sì|No|
|PacchettiAccesso|Auto-richiesta ampia senza approvazione|Sì|Sì|
|PacchettiAccesso|Accesso persistente senza scadenza o revisione dell'accesso|No|No|
|PacchettiAccesso|Regole di assegnazione automatica pericolose|Sì|Sì|
|PacchettiAccesso|Auto-richiesta tramite gruppi target non protetti|Sì|Sì|
|PacchettiAccesso|Assegnazione ampia per conto di non utenti senza approvazione|Sì|No|
|PacchettiAccesso|Assegnazioni di service principal|Sì|No|
|Cataloghi|Metadati, stato e visibilità esterna del catalogo|No|No|
|Cataloghi|Risorse del catalogo|No|No|
|Cataloghi|Risorse configurabili in nuovi pacchetti di accesso|Sì|No|
|Cataloghi|Risorse e ruoli configurati in pacchetti di accesso esistenti|Sì|No|
|Cataloghi|Risorse del catalogo non configurate|Sì|No|
|Cataloghi|Assegnazioni RBAC del catalogo|Sì|Sì|
|CAP|Nessuna policy o policy configurata in modo errato per l'autenticazione legacy|-|Sì|
|CAP|Nessuna policy o policy configurata in modo errato per il blocco del flusso del codice dispositivo|-|Sì|
|CAP|Nessuna policy o policy configurata in modo errato per limitare le registrazioni delle informazioni di sicurezza|-|Sì|
|CAP|Nessuna policy o policy configurata in modo errato per il targeting degli accessi rischiosi|-|Sì|
|CAP|Nessuna policy o policy configurata in modo errato per il targeting del rischio utente|-|Sì|
|CAP|Nessuna policy che imponga l'MFA|-|Sì|
|CAP|Nessuna policy che imponga l'Authentication Strength|-|Sì|
|CAP|Inclusione di ruoli con assegnazioni con ambito|-|Sì|
|ImpostazioniPIM|AuthContext|-|Sì|
|ImpostazioniPIM|CAP collegato ad AuthContext: frequenza di accesso|-|Sì|
|ImpostazioniPIM|CAP collegato ad AuthContext: MFA o AuthStrength|-|Sì|
|ImpostazioniPIM|CAP collegato ad AuthContext: abilitato|-|Sì|
|ImpostazioniPIM|CAP collegato ad AuthContext: utenti/gruppi/reti inclusi/esclusi|-|Sì|
|ImpostazioniPIM|CAP collegato ad AuthContext: condizioni|-|Sì|
|ImpostazioniPIM|MFA di attivazione|-|No|
|ImpostazioniPIM|Giustificazione o ticket di attivazione|-|Sì|
|ImpostazioniPIM|Durata dell'attivazione|-|Sì|
|ImpostazioniPIM|Approvazione dell'attivazione|-|Sì|
|ImpostazioniPIM|Scadenza dell'assegnazione eleggibile|-|No|
|ImpostazioniPIM|Scadenza dell'assegnazione attiva|-|Sì|
|ImpostazioniPIM|MFA per assegnazioni attive|-|No|
|ImpostazioniPIM|Notifica di attivazione del ruolo|-|No|
|ImpostazioniPIM|Notifica di assegnazione del ruolo (attiva)|-|No|
|ImpostazioniPIM|Notifica di assegnazione del ruolo (eleggibile)|-|No|
🛡️ Rilevamento
EntraFalcon non è stealthy e può essere rilevato in ambienti in cui l'attività di accesso a Microsoft Graph API e Azure viene registrata e monitorata.
Autenticazione predefinita utilizzata
Quando viene eseguita un'enumerazione completa con flussi non BroCi, lo strumento avvia in genere quattro accessi interattivi e un accesso non interattivo. A seconda del flusso e del supporto dell'endpoint, può verificarsi un ulteriore accesso interattivo per gli endpoint delle policy di Security Findings.
ID applicazione
Tipo
ID risorsa
Scopo
1b730954-1685-4b74-9bfd-dac224a7b894
Interattivo
00000003-0000-0000-c000-000000000000
Recuperare i dati PIM per i gruppi
04b07795-8ddb-461a-bbee-02f9e1bf7b46
Interattivo
00000003-0000-0000-c000-000000000000
Recuperare i dati generali degli oggetti del tenant
51f81489-12ee-4a9e-aaae-a2591f45987d
Interattivo
00000003-0000-0000-c000-000000000000
Recuperare i dati PIM per i ruoli Entra / Azure
80ccca67-54bd-44ab-8625-4b79c4dc7775
Interattivo
00000003-0000-0000-c000-000000000000
Recuperare il contesto delle policy di Security Findings
04b07795-8ddb-461a-bbee-02f9e1bf7b46
Non interattivo
797f4846-ba00-4fd7-ba43-dac1f8f63013
Recuperare i dati delle assegnazioni dei ruoli Azure IAM
Autenticazione BroCi utilizzata
Quando viene utilizzata l'autenticazione BroCi, si verifica un solo accesso interattivo.
ID applicazione
Tipo
ID risorsa
Scopo
c44b4083-3bb0-49c1-b47d-974e53cbdf3c
Interattivo
00000003-0000-0000-c000-000000000000
Autenticazione iniziale per utilizzare il token di aggiornamento per BroCi
50aaa389-5a33-4f1a-91d7-2c45ecd8dac8
Non interattivo
00000003-0000-0000-c000-000000000000
Recuperare i dati PIM per i gruppi
50aaa389-5a33-4f1a-91d7-2c45ecd8dac8
Non interattivo
01fc33a7-78ba-4d2f-a4b7-768e336e890e
Recuperare i dati PIM per i gruppi
74658136-14ec-4630-ad9b-26e160ff0fc6
Non interattivo
00000003-0000-0000-c000-000000000000
Recuperare i dati generali degli oggetti del tenant
74658136-14ec-4630-ad9b-26e160ff0fc6
Non interattivo
797f4846-ba00-4fd7-ba43-dac1f8f63013
Recuperare i dati delle assegnazioni dei ruoli Azure IAM
Quando BroCi è abilitato, EntraFalcon interroga anche api.azrbac.mspim.azure.com per PIM per i gruppi.
Dettagli
Per la raccolta dei dati, lo strumento invia più richieste a Microsoft Graph API e, facoltativamente, ad Azure ARM API—una o più per oggetto. Dove possibile, sfrutta l'endpoint Batch di Graph per ridurre il numero di richieste individuali e migliorare l'efficienza.
Gli accessi interattivi utilizzano lo User-Agent del browser. Tutti gli accessi non interattivi e le richieste API (Graph e ARM) utilizzano EntraFalcon come User-Agent, a meno che non venga modificato con il parametro -UserAgent.
Per rilevare l'utilizzo di EntraFalcon, i blue team possono monitorare i log di accesso per gli ID applicazione elencati, cercare volumi insoliti di traffico Graph API o analizzare il comportamento di aggiornamento dei token e delle richieste batch.
🕳️ Limitazioni note
RBAC M365: non valutato
RBAC Defender for Endpoint: non valutato
Copertura utenti Conditional Access: la copertura utente effettiva e -ExportCapUncoveredUsers sono calcoli best-effort basati su utenti enumerati, membri di gruppi, assegnazioni di ruoli e categorie di utenti esterni risolvibili. I selettori di utenti esterni vengono risolti solo per gli utenti guest del tenant che corrispondono a b2bCollaborationGuest. Altri tipi di utenti esterni o utenti esterni con tenant esterni specificati possono rendere approssimativi i valori di copertura. I percorsi PIM eleggibili vengono segnalati come copertura potenziale e non vengono conteggiati come attualmente coperti. L'esportazione CSV è limitata alle policy abilitate e agli utenti abilitati.
Ambiente cloud: le piattaforme cloud si evolvono rapidamente. Di conseguenza, alcune valutazioni o rilevamenti potrebbero diventare obsoleti o imprecisi nel tempo. Inoltre, i tenant stanno diventando sempre più complessi e configurazioni specifiche o combinazioni di impostazioni possono portare a risultati imprecisi. Sebbene ci impegniamo a mantenere EntraFalcon aggiornato, si consiglia sempre di convalidare i risultati in modo indipendente e di non fare affidamento esclusivamente sullo strumento per decisioni critiche.
Report HTML: i report HTML generati non implementano meccanismi di protezione contro il cross-site scripting (XSS).
📦 Strumenti esterni integrati
I seguenti sottomoduli sono stati forkati e integrati in EntraFalcon per supportare l'autenticazione, l'interazione con Microsoft Graph e i grafici dei report:
Percorso di un file di certificato PFX/P12 per l'autenticazione del service principal.
-
SPCertificatePassword
Password (SecureString) per il certificato PFX specificato da -SPCertificatePath.
-
SPCertificatePemPath
Percorso di un file di certificato PEM. Utilizzato insieme a -SPPrivateKeyPemPath.
-
SPPrivateKeyPemPath
Percorso del file della chiave privata PEM corrispondente a -SPCertificatePemPath.
-
SPPrivateKeyPemPassword
Password (SecureString) per la chiave privata PEM specificata da -SPPrivateKeyPemPath.
-
Csv
Abilita la scrittura di file di report CSV in aggiunta ai file di report TXT/HTML.
false
ExportCapUncoveredUsers
Per ogni policy di Accesso Condizionale abilitata con targeting utente, esporta un CSV che elenca gli utenti non coperti da tale policy. I file vengono scritti in una sottocartella ConditionalAccessPolicies_UncoveredUsers nella directory di output.
false
ExportFindingsJson
Esporta tutti i Security Findings come JSON al termine dell'esecuzione.
false
ExportDataJson
Esporta il report arricchito e i dataset di supporto come file di dati JSON grezzi in Data_Json; i metadati dell'esecuzione sono disponibili in Summary.json.
false
DebugObjectDump
Esporta gli oggetti di report finali in memoria come CLIXML in Debug_ObjectDump per risoluzione dei problemi e test.