
Um script PowerShell que automatiza a avaliação de segurança de ambientes Microsoft 365.

Avançar o estado da segurança do Microsoft 365 através da criação de um script PowerShell que automatiza a avaliação de segurança dos ambientes Microsoft 365.
Soteria Inspect nasceu do projeto 365Inspect e é a solução SaaS da Soteria para auxiliar na avaliação da segurança de um tenant do Microsoft 365 com mais de 200 pontos de inspeção em todo o conjunto completo de serviços do Microsoft 365.
O Soteria Inspect for Microsoft 365 permite que os clientes acompanhem as mudanças nos objetos afetados de cada descoberta ao longo do tempo, bem como os esforços de remediação, e agora inclui multi-inquilinação para MSPs e organizações-mãe para manter o pulso dos seus tenants filhos.
O Soteria Inspect for Microsoft 365 está disponível diretamente através da Soteria ou através do Azure Marketplace
Veja todas as nossas ofertas do Soteria Inspect for Microsoft 365

O 365Inspect Community Edition requer os módulos administrativos do PowerShell para administração do Exchange, Microsoft Graph, Microsoft Teams e o módulo de administração do SharePoint.
O 365Inspect agora é compatível com o PowerShell Core (6+) e requer um sistema operacional Microsoft Windows devido às dependências de módulo necessárias.
O script PowerShell 365Inspect.ps1 validará os módulos instalados e a versão mínima dos módulos necessários para o funcionamento dos Inspectors.
Se não tiver esses módulos instalados, será solicitado que os instale e, com a sua aprovação, o script tentará a instalação. Caso contrário, deverá ser capaz de instalá-los com os seguintes comandos num prompt administrativo do PowerShell, ou seguindo as instruções nas referências abaixo:
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
Instalar o Exchange Online PowerShell
Instalar o Módulo PowerShell do SharePoint PnP
Instalar o SDK do Microsoft Graph
Assim que os acima estiverem instalados, descarregue a pasta do código-fonte do 365Inspect do Github usando o seu navegador ou usando git clone.
A partir de 9 de setembro de 2024, o PnP.PowerShell exige que os administradores de tenant registem a sua própria aplicação para uso com o serviço SharePoint/PnP. Consulte a seguinte documentação do PnP.PowerShell para os passos necessários. Registar uma Aplicação do Entra ID para usar com o PnP PowerShell Determinar Permissões Autenticação
NOTA: Se estiver a usar PowerShell 5.1, o PnP PowerShell já não é compatível e todos os Inspectores do SharePoint serão excluídos em tempo de execução.
Existe um comando que pode ser executado para automatizar este passo.```powershell Register-PnPEntraIDAppForInteractiveLogin -ApplicationName "PnP Rocks" -Tenant [yourtenant].onmicrosoft.com -Interactive
__Lembre-se do nome ou do ID do Aplicativo/Cliente da aplicação que foi criada. Isso agora é necessário para autenticar e você será solicitado a fornecer o AppID!__
# Compatibilidade de Módulos
Atualmente, os módulos Microsoft.Graph e Microsoft.Graph.Beta versões 2.23.0 são incompatíveis com ExchangeOnlineManagement versão 3.5.1
As seguintes versões são compatíveis:
- Microsoft.Graph versão 2.21.1
- Microsoft.Graph.Beta versão 2.21.1
- ExchangeOnlineManagement versão 3.5.0
Os comandos a seguir podem ser usados para instalar versões compatíveis:```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
Como você executará o 365Inspect com privilégios administrativos, deve colocá-lo em um local lógico e garantir que o conteúdo da pasta seja legível e gravável apenas pelo usuário administrativo. Isso é especialmente importante se você pretende instalar o 365Inspect em um local onde será executado com frequência ou usado como parte de um processo automatizado. NOTA: O 365Inspect não precisa ser executado em uma janela do PowerShell administrativo para funcionar.
Para executar o 365Inspect, abra um console do PowerShell e navegue até a pasta onde você baixou o 365Inspect:
cd 365Inspect
Você interagirá com o 365Inspect executando o script principal, 365Inspect.ps1, a partir do prompt de comando do PowerShell.
Tudo que o 365Inspect precisa para inspecionar seu locatário M365 é acesso por meio de uma conta M365 com permissões adequadas, então a maioria dos parâmetros da linha de comando se relaciona com a organização que está sendo avaliada e o método de autenticação.
A execução do 365Inspect é assim:
.\365Inspect.ps1 -OutPath <valor> -UserPrincipalName [email protected] -Auth <MFA|DEVICE|ALREADY_AUTHED|APP> -pnpPowerShellApplicationId <Seu ID de Aplicativo/Cliente do Pnp PowerShell>
Por exemplo, para fazer login inserindo suas credenciais em um navegador com suporte a MFA:
.\365Inspect.ps1 -OutPath ..\365_report -UserPrincipalName [email protected] -Auth MFA
Para fazer login em uma nuvem governamental ou outra implantação de nuvem nacional (China, Alemanha, etc.), o parâmetro -Environment deve ser especificado da seguinte forma:
.\365Inspect.ps1 -OutPath ..\365_report -UserPrincipalName [email protected] -Auth MFA -Environment USGovGCCHigh
Os argumentos válidos para -Environment são:
A autenticação de aplicativo pode ser realizada executando o script com os seguintes parâmetros:
.\365Inspect.ps1 -OutPath ..\365_report -UserPrincipalName [email protected] -Auth APP
Para fazer login em uma nuvem governamental ou outra implantação de nuvem nacional (China, Alemanha, etc.), o parâmetro -Environment deve ser especificado da seguinte forma:
À medida que o 365Inspect é executado, ele imprimirá constantemente atualizações de status indicando qual tarefa de inspeção está em execução.
O 365Inspect pode levar algum tempo para executar. Esse tempo aumenta com o tamanho e a complexidade do ambiente em teste. Por exemplo, algumas tarefas de inspeção envolvem a varredura da configuração de conta de todos os usuários. Isso pode ocorrer quase instantaneamente para uma organização com 50 usuários, ou pode levar minutos inteiros (!) para uma organização com 10.000.
O 365Inspect cria o diretório especificado no parâmetro out_path. Este diretório é o resultado de toda a inspeção do 365Inspect. Ele contém quatro itens de nota:
Devido à natureza de alguns dos itens retornados, o relatório csv é delimitado pelo caractere acento circunflexo (^). Recomenda-se abrir o relatório CSV em um editor de texto em vez do Excel, pois o Excel usa como padrão o delimitador de vírgula (,) e renderizará o relatório incorretamente. Uma vez aberto em um editor de texto, os dados podem ser colados no Excel.
Suporte para Autenticação de Dispositivo
Suporte para Implantações de Nuvem Nacional
O 365Inspect agora suporta Autenticação de Aplicativo
O formato do relatório HTML do 365Inspect mudou



O 365Inspect não pode ser executado corretamente a menos que a conta M365 com a qual você autentica tenha os privilégios apropriados. O 365Inspect requer, no mínimo, o seguinte:
Reconhecemos que estas são funções extremamente permissivas, infelizmente devido ao uso do Microsoft Graph, somos restritos pela Microsoft a usar privilégios menores. As funções de Administrador de Aplicativo e Administrador de Nuvem (usadas para conceder permissões delegadas e de aplicativo) são restritas à concessão de permissões para módulos do Microsoft Graph ou Azure AD PowerShell. Microsoft Docs - Administrador de Aplicativo
Se estiver executando o 365Inspect usando o parâmetro de autenticação de aplicativo, funções adicionais devem ser concedidas para permitir que o aplicativo execute todas as tarefas executadas. Consulte Requisitos de Autenticação de Aplicativo
Antes que o 365Inspect possa ser utilizado, todos os outros componentes necessários devem estar em vigor.
Para o uso mais eficiente do tempo, recomenda-se realizar as funções necessárias na seguinte ordem:
Consulte as seguintes referências:
O 365Inspect é projetado para ser fácil de expandir, com a esperança de que permita que indivíduos e organizações utilizem seus próprios módulos do 365Inspect internamente, ou publiquem esses módulos para a comunidade M365.
Todos os módulos inspetores do 365Inspect são armazenados na pasta .\inspectors.
É simples criar um módulo inspetor. Os inspetores têm dois arquivos:
Modelos estão incluídos na pasta Templates. Basta adicionar seu código e valores nos respectivos locais. Os nomes dos arquivos PowerShell e JSON devem ser idênticos para que o 365Inspect reconheça que os dois pertencem um ao outro. Existem numerosos exemplos no conjunto de módulos integrados do 365Inspect, mas vamos colocar um exemplo aqui também.
# 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>Exemplo de arquivo .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"
}
]
}
Depois de colocar esses dois arquivos na pasta .\inspectors, eles serão considerados parte do inventário de módulos do 365Inspect e serão executados na próxima vez que você executar o 365Inspect.
Você acabou de criar o módulo Inspector BypassingSafeAttachments. É isso aí!
365Inspect exibirá um erro bastante alto e feio se algo no seu módulo não funcionar ou não seguir as convenções do 365Inspect, portanto, monitore a saída da linha de comando.
Incentivamos o envolvimento e as contribuições da comunidade! Confira nossas Diretrizes de Contribuição
365Inspect é um harness de scripts que executa outros módulos de script inspetores armazenados na pasta .\inspectors. Como qualquer outro script que você possa executar com privilégios elevados, deve observar certas práticas de higiene de segurança:
A Soteria oferece uma ampla gama de soluções de segurança e consultoria, incluindo Resposta a Incidentes, Detecção e Resposta Gerenciadas, Avaliações de Segurança, Testes de Penetração e muito mais. Entre em contato conosco para todas as suas necessidades!
.\365Inspect.ps1 -OutPath ..\365_report -UserPrincipalName [email protected] -Auth APP -Environment USGovGCCHigh
Os argumentos válidos para -Environment são:
NOTA: Existem pré-requisitos para a execução do 365Inspect com autenticação de aplicativo. Vá para Requisitos de Autenticação de Aplicativo
O 365Inspect agora suporta saída de relatório nos formatos HTML (valor padrão), CSV e XML.
Por exemplo, relatórios CSV podem ser gerados chamando o parâmetro -ReportType:
.\365Inspect.ps1 -OutPath ..\365_report -UserPrincipalName [email protected] -Auth MFA -ReportType CSV
O 365Inspect pode ser executado apenas com módulos Inspectores específicos, ou, inversamente, excluindo módulos específicos.
Por exemplo, para fazer login inserindo suas credenciais em um navegador com suporte a MFA:
.\365Inspect.ps1 -OutPath ..\365_report -UserPrincipalName [email protected] -Auth MFA -SelectedInspectors inspector1, inspector2
ou
.\365Inspect.ps1 -OutPath ..\365_report -Auth MFA -ExcludedInspectors inspector1, inspector2, inspector3
Para detalhar os parâmetros:
OutPath é o caminho para uma pasta onde o relatório gerado pelo 365Inspect será colocado.
Auth é um seletor que deve ser um dos valores literais "MFA" ou "ALREADY_AUTHED".
SelectedInspectors é o nome ou nomes do(s) inspetor(es) que você deseja executar com o 365Inspect. Se vários inspetores forem selecionados, devem ser separados por vírgula. Apenas os inspetores nomeados serão executados.
ExcludedInspectors é o nome ou nomes do(s) inspetor(es) que você deseja impedir de executar com o 365Inspect. Se vários inspetores forem selecionados, devem ser separados por vírgula. Todos os módulos, exceto os incluídos, serão executados.
UserPrincipalName - UserPrincipalName do avaliador, incluído para reduzir o número de vezes que você precisa inserir credenciais em módulos suportados.
ReportType - Formato de saída do relatório gerado. Os valores suportados atualmente são HTML (padrão), CSV e XML.
Environment - Especifica a instância da Nuvem Azure à qual se conectar para locatários Microsoft 365 não padrão/consumidor.
Quando você executa o 365Inspect com -Auth MFA, ele pode exibir vários prompts de login gráficos nos quais você deve fazer login sequencialmente. Isso é comportamento normal, pois Exchange, SharePoint, etc., possuem módulos de administração separados e cada um requer uma sessão de login diferente. Se você simplesmente fizer login o número solicitado de vezes, o 365Inspect deve começar a executar. Isso é o oposto de divertido e estamos buscando uma solução alternativa, mas desnecessário dizer que achamos que os resultados valem o minuto gasto olhando para códigos MFA.