
Uno script PowerShell che automatizza la valutazione della sicurezza degli ambienti Microsoft 365.

Migliorare lo stato della sicurezza di Microsoft 365 creando uno script PowerShell che automatizza la valutazione della sicurezza degli ambienti Microsoft 365.
Soteria Inspect nasce dal progetto 365Inspect ed è la soluzione SaaS di Soteria per aiutare a valutare la sicurezza di un tenant Microsoft 365 con oltre 200 punti di ispezione nell'intera suite di servizi Microsoft 365.
Soteria Inspect for Microsoft 365 consente ai clienti di tracciare le modifiche agli oggetti interessati da ogni risultato nel tempo, così come gli sforzi di remediation, e ora include multi-tenancy per MSP e organizzazioni genitori per tenere sotto controllo i propri tenant figli.
Soteria Inspect for Microsoft 365 è disponibile direttamente tramite Soteria o tramite il Azure Marketplace
Vedi tutte le nostre offerte Soteria Inspect for Microsoft 365

365Inspect Community Edition richiede i moduli PowerShell amministrativi per l'amministrazione di Exchange, Microsoft Graph, Microsoft Teams e il modulo di amministrazione di SharePoint.
365Inspect è ora compatibile con PowerShell Core (6+) e richiede un sistema operativo Microsoft Windows a causa delle dipendenze dei moduli richiesti.
Lo script PowerShell 365Inspect.ps1 validerà i moduli installati e la versione minima dei moduli necessari per il funzionamento degli Inspector.
Se non hai questi moduli installati, ti verrà chiesto di installarli e, con la tua approvazione, lo script tenterà l'installazione. Altrimenti, dovresti essere in grado di installarli con i seguenti comandi in un prompt PowerShell amministrativo, o seguendo le istruzioni nei riferimenti sottostanti:
Install-Module -Name ExchangeOnlineManagement -AllowClobber -Force
Install-Module -Name PnP.PowerShell -AllowClobber -Force
Install-Module -Name Microsoft.Graph -AllowClobber -Force
Install-Module -Name MicrosoftTeams -AllowClobber -Force
Installa PowerShell per Exchange Online
Installa il modulo PnP.PowerShell di SharePoint
Una volta installati i precedenti, scarica la cartella del codice sorgente di 365Inspect da Github usando il tuo browser o usando git clone.
A partire dal 9 settembre 2024, PnP.PowerShell richiede che gli amministratori del tenant registrino la propria applicazione per l'uso con il servizio SharePoint/PnP. Vedi la seguente documentazione di PnP.PowerShell per i passaggi necessari. Registra un'applicazione Entra ID da usare con PnP PowerShell Determina le autorizzazioni Autenticazione
NOTA: Se stai usando PowerShell 5.1, PnP PowerShell non è più compatibile e tutti gli Inspector di SharePoint verranno esclusi in fase di esecuzione.
C'è un comando che può essere eseguito per automatizzare questo passaggio.```powershell Register-PnPEntraIDAppForInteractiveLogin -ApplicationName "PnP Rocks" -Tenant [yourtenant].onmicrosoft.com -Interactive
__Ricorda il nome o l'Application/Client ID dell'applicazione che è stata creata. Questo è ora necessario per autenticarsi e ti verrà richiesto l'AppID!__
# Compatibilità dei moduli
Attualmente i moduli Microsoft.Graph e Microsoft.Graph.Beta versione 2.23.0 sono incompatibili con ExchangeOnlineManagement versione 3.5.1
Le seguenti versioni sono compatibili:
- Microsoft.Graph versione 2.21.1
- Microsoft.Graph.Beta versione 2.21.1
- ExchangeOnlineManagement versione 3.5.0
I seguenti comandi possono essere utilizzati per installare versioni compatibili:```powershell
Install-Module -Name Microsoft.Graph -Scope CurrentUser -RequiredVersion 2.21.1 -AllowClobber -Force
Install-Module -Name Microsoft.Graph.Beta -Scope CurrentUser -RequiredVersion 2.21.1 -AllowClobber -Force
Install-Module -Name ExchangeOnlineManagement -Scope CurrentUser -RequiredVersion 3.5.0 -AllowClobber -Force
Dato che eseguirai 365Inspect con privilegi amministrativi, dovresti posizionarlo in una posizione logica e assicurarti che i contenuti della cartella siano leggibili e scrivibili solo dall'utente amministratore. Questo è particolarmente importante se intendi installare 365Inspect in una posizione in cui verrà eseguito frequentemente o utilizzato come parte di un processo automatizzato. NOTA: 365Inspect non necessita di essere eseguito in una finestra di PowerShell amministrativa per funzionare.
Per eseguire 365Inspect, apri una console PowerShell e naviga fino alla cartella in cui hai scaricato 365Inspect:
cd 365Inspect
Interagirai con 365Inspect eseguendo il file script principale, 365Inspect.ps1, dal prompt dei comandi di PowerShell.
Tutto ciò di cui 365Inspect ha bisogno per ispezionare il tuo tenant M365 è l'accesso tramite un account M365 con le autorizzazioni appropriate, quindi la maggior parte dei parametri della riga di comando riguardano l'organizzazione da valutare e il metodo di autenticazione.
L'esecuzione di 365Inspect si presenta così:
.\365Inspect.ps1 -OutPath <valore> -UserPrincipalName [email protected] -Auth <MFA|DEVICE|ALREADY_AUTHED|APP> -pnpPowerShellApplicationId <Il tuo ID applicazione/client PnP PowerShell>
Ad esempio, per accedere inserendo le tue credenziali in un browser con supporto MFA:
.\365Inspect.ps1 -OutPath ..\365_report -UserPrincipalName [email protected] -Auth MFA
Per accedere a un cloud governativo o ad altre distribuzioni cloud nazionali (Cina, Germania, ecc.), il parametro -Environment deve essere specificato come segue:
.\365Inspect.ps1 -OutPath ..\365_report -UserPrincipalName [email protected] -Auth MFA -Environment USGovGCCHigh
Gli argomenti validi per -Environment sono:
L'autenticazione applicativa può essere ottenuta eseguendo lo script con i seguenti parametri:
.\365Inspect.ps1 -OutPath ..\365_report -UserPrincipalName [email protected] -Auth APP
Per accedere a un cloud governativo o ad altre distribuzioni cloud nazionali (Cina, Germania, ecc.), il parametro -Environment deve essere specificato come segue:
Mentre 365Inspect viene eseguito, stamperà costantemente aggiornamenti di stato che indicano quale attività di ispezione è in esecuzione.
365Inspect potrebbe richiedere del tempo per essere eseguito. Questo tempo scala con le dimensioni e la complessità dell'ambiente sottoposto a test. Ad esempio, alcune attività di ispezione comportano la scansione della configurazione dell'account di tutti gli utenti. Ciò può avvenire quasi istantaneamente per un'organizzazione con 50 utenti, o richiedere interi minuti (!) per un'organizzazione con 10000.
365Inspect crea la directory specificata nel parametro out_path. Questa directory è il risultato dell'intera ispezione di 365Inspect. Contiene quattro elementi degni di nota:
A causa della natura di alcuni degli elementi restituiti, il report csv è delimitato dal carattere caret (^). Si consiglia di aprire il report CSV in un editor di testo piuttosto che in Excel, poiché Excel utilizza per impostazione predefinita un delimitatore virgola (,) e visualizzerà il report in modo errato. Una volta aperto in un editor di testo, i dati possono essere incollati in Excel.
Supporto per autenticazione dispositivo
Supporto per distribuzioni cloud nazionali
365Inspect ora supporta l'autenticazione applicativa
Il formato del report HTML di 365Inspect è cambiato



365Inspect non può funzionare correttamente a meno che l'account M365 con cui ti autentichi non disponga dei privilegi appropriati. 365Inspect richiede, come minimo, quanto segue:
Riconosciamo che questi sono ruoli estremamente permissivi, sfortunatamente a causa dell'uso di Microsoft Graph, siamo limitati da Microsoft nell'uso di privilegi inferiori. I ruoli di Amministratore applicazione e Amministratore cloud (utilizzati per concedere autorizzazioni delegate e applicative) non possono concedere autorizzazioni per i moduli PowerShell di Microsoft Graph o Azure AD. Documentazione Microsoft - Amministratore applicazione
Se esegui 365Inspect utilizzando il parametro di autenticazione applicativa, devono essere concessi ruoli aggiuntivi per consentire all'applicazione di eseguire tutte le attività previste. Vedi Requisiti di autenticazione applicativa
Prima che 365Inspect possa essere utilizzato, tutti gli altri componenti necessari devono essere in atto.
Per un uso più efficiente del tempo, si consiglia di eseguire le funzioni necessarie nel seguente ordine:
Vedere i seguenti riferimenti:
365Inspect è progettato per essere facile da espandere, con la speranza che consenta a individui e organizzazioni di utilizzare i propri moduli 365Inspect internamente o di pubblicare tali moduli per la community M365.
Tutti i moduli inspector di 365Inspect sono memorizzati nella cartella .\inspectors.
È semplice creare un modulo inspector. Gli inspector hanno due file:
I modelli sono inclusi nella cartella Templates. Aggiungi semplicemente il tuo codice e i tuoi valori nelle rispettive posizioni. I nomi dei file PowerShell e JSON devono essere identici affinché 365Inspect riconosca che i due appartengono insieme. Ci sono numerosi esempi nella suite di moduli integrata di 365Inspect, ma metteremo anche un esempio qui.
# If some of the parsed M365 objects were found to have the security flaw this module is inspecting for,
# return a list of strings representing those objects. This is what will end up as the "Affected Objects"
# field in the report.
If ($safe_attachment_bypass_rules.Count -ne 0) {
return $safe_attachment_bypass_rules
}
# If none of the parsed M365 objects were found to have the security flaw this module is inspecting for,
# returning $null indicates to 365Inspect that there were no findings for this module.
return $null
}
return Inspect-BypassingSafeAttachments
</details>
<details>
<summary>Esempio di file .json, BypassingSafeAttachments.json:</summary>```json
{
"FindingName": "Do Not Bypass the Safe Attachments Filter",
"Description": "In Exchange, it is possible to create mail transport rules that bypass the Safe Attachments detection capability. The rules listed above bypass the Safe Attachments capability. Consider reviewing these rules, as bypassing the Safe Attachments capability even for a subset of senders could be considered insecure depending on the context or may be an indicator of compromise.",
"Remediation": "Navigate to the Mail Flow → Rules screen in the Exchange Admin Center. Look for the offending rules and begin the process of assessing who created them and whether they are necessary to the continued function of the organization. If they are not, remove the rules.",
"DefaultValue": "None",
"ExpectedValue": "None",
"Impact": "Critical",
"AffectedObjects": "",
"Service": "Exchange", // Valid values are Exchange, SharePoint, Teams, Intune, AzureAD, SecurityandCompliance, Tenant //
"PowerShell": "", // Any PowerShell remediation command examples should be placed here //
"References": [
{
"Url": "https://docs.microsoft.com/en-us/exchange/security-and-compliance/mail-flow-rules/manage-mail-flow-rules",
"Text": "Manage Mail Flow Rules in Exchange Online"
},
{
"Url": "https://www.undocumented-features.com/2018/05/10/atp-safe-attachments-safe-links-and-anti-phishing-policies-or-all-the-policies-you-can-shake-a-stick-at/#Bypass_Safe_Attachments_Processing",
"Text": "Undocumented Features: Safe Attachments, Safe Links, and Anti-Phishing Policies"
}
]
}
Una volta inseriti questi due file nella cartella .\inspectors, saranno considerati parte dell'inventario dei moduli di 365Inspect e verranno eseguiti la prossima volta che si esegue 365Inspect.
Hai appena creato il modulo Inspector BypassingSafeAttachments. Tutto qui!
365Inspect genererà un errore piuttosto vistoso e antiestetico se qualcosa nel tuo modulo non funziona o non segue le convenzioni di 365Inspect, quindi tieni d'occhio l'output della riga di comando.
Incoraggiamo il coinvolgimento e i contributi della comunità! Consulta le nostre Linee guida per contribuire
365Inspect è un harness di script che esegue altri moduli script inspector memorizzati nella cartella .\inspectors. Come per qualsiasi altro script eseguito con privilegi elevati, è opportuno osservare alcune pratiche di igiene di sicurezza:
Soteria offre una vasta gamma di soluzioni di sicurezza e consulenza, tra cui Incident Response, Managed Detection and Response, Security Assessments, Penetration Testing e altro ancora. Contattaci per ogni tua esigenza!
.\365Inspect.ps1 -OutPath ..\365_report -UserPrincipalName [email protected] -Auth APP -Environment USGovGCCHigh
Gli argomenti validi per -Environment sono:
NOTA: Ci sono prerequisiti per l'esecuzione di 365Inspect con autenticazione applicativa. Vai ai requisiti di autenticazione applicativa
365Inspect ora supporta l'output del report in formato HTML (valore predefinito), CSV e XML.
Ad esempio, i report CSV possono essere generati chiamando il parametro -ReportType:
.\365Inspect.ps1 -OutPath ..\365_report -UserPrincipalName [email protected] -Auth MFA -ReportType CSV
365Inspect può essere eseguito solo con moduli Inspector specificati o, al contrario, escludendo moduli specificati.
Ad esempio, per accedere inserendo le tue credenziali in un browser con supporto MFA:
.\365Inspect.ps1 -OutPath ..\365_report -UserPrincipalName [email protected] -Auth MFA -SelectedInspectors inspector1, inspector2
oppure
.\365Inspect.ps1 -OutPath ..\365_report -Auth MFA -ExcludedInspectors inspector1, inspector2, inspector3
Per analizzare ulteriormente i parametri:
OutPath è il percorso di una cartella in cui verrà posizionato il report generato da 365Inspect.
Auth è un selettore che dovrebbe essere uno dei valori letterali "MFA" o "ALREADY_AUTHED".
SelectedInspectors è il nome o i nomi dell'inspector o degli inspector che desideri eseguire con 365Inspect. Se vengono selezionati più inspector, devono essere separati da virgole. Verranno eseguiti solo gli inspector nominati.
ExcludedInspectors è il nome o i nomi dell'inspector o degli inspector che desideri impedire di eseguire con 365Inspect. Se vengono selezionati più inspector, devono essere separati da virgole. Verranno eseguiti tutti i moduli ad eccezione di quelli inclusi.
UserPrincipalName - UserPrincipalName del valutatore, incluso per ridurre il numero di volte in cui è necessario inserire le credenziali nei moduli supportati.
ReportType - Formato di output del report generato. I valori attualmente supportati sono HTML (predefinito), CSV e XML.
Environment - Specifica l'istanza cloud di Azure a cui connettersi per tenant Microsoft 365 non standard/consumer.
Quando esegui 365Inspect con -Auth MFA, potrebbe produrre diversi prompt di accesso grafico in cui devi accedere in sequenza. Questo è un comportamento normale poiché Exchange, SharePoint, ecc. hanno moduli di amministrazione separati e ciascuno richiede una sessione di accesso diversa. Se accedi semplicemente al numero di volte richiesto, 365Inspect dovrebbe iniziare a eseguire. Questo è l'opposto del divertimento e stiamo cercando una soluzione alternativa, ma inutile dire che riteniamo che i risultati valgano il minuto speso a guardare i codici MFA.