Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
365Inspect — Ein PowerShell-Skript, das die Sicherheitsbewertung von Microsoft 365-Umgebungen automatisiert. | Kitploit
Tools/GitHubGitHub/soteria-security/365inspect
DefensivwerkzeugeSchwachstellenscannerKonfigurationsprüfungPenetrationstestsCloud-Sicherheit
GitHubsoteria-security/365inspect

365Inspect

Ein PowerShell-Skript, das die Sicherheitsbewertung von Microsoft 365-Umgebungen automatisiert.

Repository anzeigen
660114vor 1 JahrVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Webseite





Zweck

Verbesserung der Microsoft 365-Sicherheit durch ein PowerShell-Skript, das die Sicherheitsbewertung von Microsoft 365-Umgebungen automatisiert.

Soteria Inspect

Soteria Inspect ist aus dem 365Inspect-Projekt hervorgegangen und ist Soteria's SaaS-Lösung zur Unterstützung bei der Sicherheitsbewertung eines Microsoft 365-Mandanten mit über 200 Prüfpunkten im gesamten Microsoft 365-Dienstleistungsportfolio.

Soteria Inspect für Microsoft 365 ermöglicht es Kunden, Änderungen an den von jedem Befund betroffenen Objekten im Laufe der Zeit sowie Abhilfemaßnahmen zu verfolgen, und beinhaltet jetzt Multitenancy für MSPs und übergeordnete Organisationen, um den Puls ihrer untergeordneten Mandanten im Blick zu behalten.

Soteria Inspect für Microsoft 365 ist direkt über Soteria oder über den Azure Marketplace erhältlich.

Sehen Sie sich alle unsere Soteria Inspect für Microsoft 365 Angebote an.

Funktionsvergleich anzeigen!

365Inspect Community Edition vs. Soteria Inspect für Microsoft 365

Einrichtung

Die 365Inspect Community Edition erfordert die administrativen PowerShell-Module für die Exchange-Verwaltung, Microsoft Graph, Microsoft Teams und das SharePoint-Administrationsmodul.

365Inspect ist jetzt mit PowerShell Core (6+) kompatibel und erfordert aufgrund der erforderlichen Modulabhängigkeiten ein Microsoft Windows-Betriebssystem.

Das PowerShell-Skript 365Inspect.ps1 validiert die installierten Module und die Mindestversion der Module, die für die Funktion der Inspektoren erforderlich sind.

Wenn diese Module nicht installiert sind, werden Sie zur Installation aufgefordert, und mit Ihrer Zustimmung wird das Skript die Installation versuchen. Andernfalls können Sie sie mit den folgenden Befehlen in einer administrativen PowerShell-Eingabeaufforderung installieren oder die Anweisungen in den unten stehenden Referenzen befolgen:

root@kitploit:~
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

Exchange Online PowerShell installieren

SharePoint PnP PowerShell-Modul installieren

Microsoft Graph SDK installieren

Microsoft Teams installieren

Nachdem die oben genannten Module installiert sind, laden Sie den 365Inspect-Quellcode-Ordner von GitHub mit Ihrem Browser oder mit git clone herunter.

Wichtige Änderungen

PnP.PowerShell Modul

Ab dem 9. September 2024 erfordert PnP.PowerShell, dass Mandantenadministratoren ihre eigene Anwendung für die Nutzung des SharePoint/PnP-Dienstes registrieren. Siehe die folgende PnP.PowerShell-Dokumentation für die erforderlichen Schritte. Registrieren einer Entra ID-Anwendung zur Verwendung mit PnP PowerShell Berechtigungen ermitteln Authentifizierung

HINWEIS: Wenn Sie PowerShell 5.1 verwenden, ist PnP PowerShell nicht mehr kompatibel und alle SharePoint-Inspektoren werden zur Laufzeit ausgeschlossen.

Es gibt einen Befehl, der ausgeführt werden kann, um diesen Schritt zu automatisieren.

```powershell Register-PnPEntraIDAppForInteractiveLogin -ApplicationName "PnP Rocks" -Tenant [yourtenant].onmicrosoft.com -Interactive ``` __Denken Sie an den Namen oder die Anwendungs-/Client-ID der erstellten Anwendung. Diese wird nun für die Authentifizierung benötigt und Sie werden nach der App-ID gefragt!__

Modulkompatibilität

Derzeit sind die Microsoft.Graph- und Microsoft.Graph.Beta-Module in Version 2.23.0 mit ExchangeOnlineManagement Version 3.5.1 inkompatibel. Die folgenden Versionen sind kompatibel:

  • Microsoft.Graph Version 2.21.1
  • Microsoft.Graph.Beta Version 2.21.1
  • ExchangeOnlineManagement Version 3.5.0

Die folgenden Befehle können verwendet werden, um kompatible Versionen zu installieren:```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

root@kitploit:~
</details>

Da Sie 365*Inspect* mit Administratorrechten ausführen werden, sollten Sie es an einem logischen Ort ablegen und sicherstellen, dass der Inhalt des Ordners nur für den administrativen Benutzer les- und schreibbar ist. Dies ist besonders wichtig, wenn Sie 365*Inspect* an einem Ort installieren möchten, an dem es häufig ausgeführt oder als Teil eines automatisierten Prozesses verwendet wird. __HINWEIS:__ 365*Inspect* muss nicht in einem administrativen PowerShell-Fenster ausgeführt werden, um zu funktionieren.

# Verwendung

Um 365*Inspect* auszuführen, öffnen Sie eine PowerShell-Konsole und navigieren Sie zu dem Ordner, in den Sie 365*Inspect* heruntergeladen haben:

	cd 365Inspect

Sie interagieren mit 365*Inspect*, indem Sie die Hauptskriptdatei 365Inspect.ps1 innerhalb der PowerShell-Eingabeaufforderung ausführen.

Alles, was 365*Inspect* zur Inspektion Ihres M365-Mandanten benötigt, ist der Zugriff über ein M365-Konto mit entsprechenden Berechtigungen. Daher beziehen sich die meisten Befehlszeilenparameter auf die zu bewertende Organisation und die Authentifizierungsmethode.

Die Ausführung von 365*Inspect* sieht folgendermaßen aus:

	.\365Inspect.ps1 -OutPath <Wert> -UserPrincipalName [email protected] -Auth <MFA|DEVICE|ALREADY_AUTHED|APP> -pnpPowerShellApplicationId <Ihre Pnp PowerShell-Anwendungs-/Client-ID>

<details>
<summary>Ausführungsbeispiele</summary>

## Skriptausführung

Zum Beispiel, um sich durch Eingabe Ihrer Anmeldedaten in einem Browser mit MFA-Unterstützung anzumelden:

        .\365Inspect.ps1 -OutPath ..\365_report -UserPrincipalName [email protected] -Auth MFA

Um sich bei einer Regierungs- oder anderen nationalen Cloud-Bereitstellung (China, Deutschland usw.) anzumelden, sollte der Parameter `-Environment` wie folgt angegeben werden:

        .\365Inspect.ps1 -OutPath ..\365_report -UserPrincipalName [email protected] -Auth MFA -Environment USGovGCCHigh

Gültige Argumente für `-Environment` sind:
* Default – Standard-Microsoft 365-Mandanten-Autorisierungsendpunkte. Dies ist das Standardargument, wenn der Umgebungsparameter nicht angegeben wird.
* USGovGCCHigh – US-Regierungs-GCC-High-Mandanten
* USGovDoD – US-Regierungs-DoD-Mandanten
* Germany – Von Microsoft 365 Azure in Deutschland gehostete Mandanten
* China – Von Microsoft 365 China/Vianet gehostete Mandanten

Die Anwendungsauthentifizierung kann durch Ausführen des Skripts mit den folgenden Parametern erreicht werden:

        .\365Inspect.ps1 -OutPath ..\365_report -UserPrincipalName [email protected] -Auth APP

Um sich bei einer Regierungs- oder anderen nationalen Cloud-Bereitstellung (China, Deutschland usw.) anzumelden, sollte der Parameter `-Environment` wie folgt angegeben werden:

        .\365Inspect.ps1 -OutPath ..\365_report -UserPrincipalName [email protected] -Auth APP -Environment USGovGCCHigh

Gültige Argumente für `-Environment` sind:
* Default – Standard-Microsoft 365-Mandanten-Autorisierungsendpunkte. Dies ist das Standardargument, wenn der Umgebungsparameter nicht angegeben wird.
* USGovGCCHigh – US-Regierungs-GCC-High-Mandanten
* USGovDoD – US-Regierungs-DoD-Mandanten
* Germany – Von Microsoft 365 Azure in Deutschland gehostete Mandanten
* China – Von Microsoft 365 China/Vianet gehostete Mandanten

__HINWEIS:__ Für die Ausführung von 365Inspect mit Anwendungsauthentifizierung gibt es Voraussetzungen. [Gehen Sie zu den Anforderungen für die Anwendungsauthentifizierung](#Anforderungen-für-die-Anwendungsauthentifizierung)

365*Inspect* unterstützt jetzt die Berichtsausgabe in den Formaten HTML (Standardwert), CSV und XML.

CSV-Berichte können beispielsweise durch Aufrufen des Parameters -ReportType generiert werden:

        .\365Inspect.ps1 -OutPath ..\365_report -UserPrincipalName [email protected] -Auth MFA -ReportType CSV

365*Inspect* kann entweder nur mit bestimmten Inspektormodulen oder unter Ausschluss bestimmter Module ausgeführt werden.

Zum Beispiel, um sich durch Eingabe Ihrer Anmeldedaten in einem Browser mit MFA-Unterstützung anzumelden:

        .\365Inspect.ps1 -OutPath ..\365_report -UserPrincipalName [email protected] -Auth MFA -SelectedInspectors inspector1, inspector2

oder

        .\365Inspect.ps1 -OutPath ..\365_report -Auth MFA -ExcludedInspectors inspector1, inspector2, inspector3

Zur weiteren Aufschlüsselung der Parameter:

* *OutPath* ist der Pfad zu einem Ordner, in dem der von 365*Inspect* generierte Bericht abgelegt wird.
    * Erforderlich? Ja
* *Auth* ist ein Selektor, der einer der Literalwerte "MFA" oder "ALREADY_AUTHED" sein sollte.
	* *Auth* steuert, wie sich 365*Inspect* bei allen Microsoft 365-Diensten authentifiziert.
    <details>
    <summary>Optionen</summary>

	* *Auth MFA* erzeugt ein grafisches Popup, in das Sie Ihre Anmeldedaten eingeben und für MFA-aktivierte Konten sogar einen MFA-Code eingeben können.
	* *Auth ALREADY_AUTHED* weist 365*Inspect* an, sich vor dem Scannen nicht zu authentifizieren. Dies kann vorzuziehen sein, wenn Sie 365*Inspect* von einer PowerShell-Eingabeaufforderung aus ausführen, in der Sie bereits gültige Sitzungen für alle beschriebenen Dienste haben, z. B. eine, in der Sie bereits 365*Inspect* ausgeführt haben.
    * *Auth APP* weist 365*Inspect* an, nach Informationen zum Microsoft Entra ID-Anwendungsdienstprinzipal zu fragen. Erforderliche Parameter Variablen sind:
       * AppId – Die Anwendungs-ID der registrierten Anwendung
       * Certificate Thumbprint – Fingerabdruck des erstellten selbstsignierten Zertifikats
       * Domain – Die Maildomäne ([email protected] oder company.com) oder die Mandantendomäne (company.onmicrosoft.com) des zu scannenden Mandanten.

    </details>
    * Erforderlich? Ja
* *SelectedInspectors* ist der Name oder die Namen der Inspektoren, die Sie mit 365*Inspect* ausführen möchten. Wenn mehrere Inspektoren ausgewählt werden, müssen sie durch Kommas getrennt werden. Es werden nur die benannten Inspektoren ausgeführt.
    * Erforderlich? Nein
* *ExcludedInspectors* ist der Name oder die Namen der Inspektoren, die Sie daran hindern möchten, mit 365*Inspect* ausgeführt zu werden. Wenn mehrere Inspektoren ausgewählt werden, müssen sie durch Kommas getrennt werden. Alle anderen Module werden ausgeführt.
    * Erforderlich? Nein
* *UserPrincipalName* – UserPrincipalName des Bewerters, dies ist enthalten, um die Häufigkeit der Eingabe von Anmeldedaten in unterstützten Modulen zu reduzieren.
    * Erforderlich? Ja
* *ReportType* – Ausgabeformat des generierten Berichts. Derzeit unterstützte Werte sind HTML (Standard), CSV und XML.
    * Erforderlich? Nein
* *Environment* – Geben Sie die Azure-Cloud-Instanz an, mit der für nicht standardmäßige/Consumer-Microsoft 365-Mandanten eine Verbindung hergestellt werden soll.
    * Erforderlich? Nein

Wenn Sie 365*Inspect* mit *-Auth MFA* ausführen, werden möglicherweise mehrere grafische Anmeldeaufforderungen angezeigt, bei denen Sie sich nacheinander anmelden müssen. Dies ist normales Verhalten, da Exchange, SharePoint usw. separate Verwaltungsmodule haben und jedes eine andere Anmeldesitzung erfordert. Wenn Sie sich einfach so oft anmelden, wie angefordert, sollte 365*Inspect* mit der Ausführung beginnen. Das ist das Gegenteil von Spaß, und wir suchen nach einer Problemumgehung, aber es ist unnötig zu sagen, dass wir der Meinung sind, dass die Ergebnisse die Minute wert sind, die mit dem Betrachten von MFA-Codes verbracht wird.

</details>

Während der Ausführung von 365*Inspect* werden regelmäßig Statusaktualisierungen gedruckt, die anzeigen, welcher Inspektionsauftrag gerade ausgeführt wird.

Die Ausführung von 365*Inspect* kann einige Zeit in Anspruch nehmen. Diese Zeit skaliert mit der Größe und Komplexität der zu testenden Umgebung. Beispielsweise umfassen einige Inspektionsaufgaben das Scannen der Kontokonfiguration aller Benutzer. Dies kann für eine Organisation mit 50 Benutzern nahezu sofort geschehen oder für eine Organisation mit 10.000 Benutzern ganze Minuten (!) dauern.

# Ausgabe

365*Inspect* erstellt das im Parameter out_path angegebene Verzeichnis. Dieses Verzeichnis ist das Ergebnis der gesamten 365*Inspect*-Inspektion. Es enthält vier bemerkenswerte Elemente:

* *Report.html*: grafischer Bericht, der die von 365*Inspect* identifizierten M365-Sicherheitsprobleme beschreibt, falsch konfigurierte M365-Objekte auflistet und Abhilfeempfehlungen gibt.
* *Verschiedene Textdateien namens [Inspector-Name]*: Dies sind Rohausgaben von Inspektormodulen und enthalten eine Liste (ein Element pro Zeile) von falsch konfigurierten M365-Objekten, die den beschriebenen Sicherheitsfehler enthalten. Wenn beispielsweise ein Modul Inspect-FictionalMFASettings alle Benutzer erkennen würde, die kein MFA eingerichtet haben, würde die Datei "Inspect-FictionalMFASettings" im Berichts-ZIP einen Benutzer pro Zeile enthalten, der kein MFA eingerichtet hat. Diese Informationen werden nur dann in eine Datei ausgegeben, wenn mehr als 15 betroffene Objekte gefunden werden. Wenn weniger als 15 betroffene Objekte gefunden werden, werden die Objekte direkt im Haupt-HTML-Berichtskörper aufgelistet.
* *Report.zip*: gezippte Version dieses gesamten Verzeichnisses, zur bequemen Verteilung der Ergebnisse in Fällen, in denen einige Inspektormodule eine große Anzahl von Ergebnissen generiert haben.
* *Log-Verzeichnis*: 365*Inspect* protokolliert alle Fehler, die während der Skriptausführung auftreten, in einer datumsgestempelten Protokolldatei im Log-Verzeichnis.

### CSV-Ausgabe

Aufgrund der Natur einiger zurückgegebener Elemente wird der CSV-Bericht mit dem Caret-Zeichen (^) als Trennzeichen getrennt.
Es wird empfohlen, den CSV-Bericht in einem Texteditor anstelle von Excel zu öffnen, da Excel standardmäßig ein Komma (,) als Trennzeichen verwendet und den Bericht falsch darstellt.
Nach dem Öffnen in einem Texteditor können die Daten in Excel eingefügt werden.

# Demnächst!

* [Sie sagen es uns!](https://github.com/soteria-security/365Inspect/issues/new?assignees=&labels=&projects=&template=feature_request.md&title=)

# Änderungsprotokoll

* Unterstützung für reduzierte Rollenanforderungen für die Anwendungsauthentifizierung hinzugefügt – Dienstprinzipale können jetzt die Rolle „Globaler Leser“ zugewiesen bekommen, auf Kosten der Ausführung einiger Inspektoren.
* Reduzierter Anwendungsberechtigungsbereich – DelegatedPermissionGrant.ReadWrite.All wurde durch DelegatedPermissionGrant.Read.All ersetzt, eine API-Berechtigung, die zuvor nicht verfügbar war.

<details>
<summary>Ältere Änderungen</summary>

## Ältere Änderungen

* Unterstützung für Geräteauthentifizierung

* Unterstützung für [Nationale Cloud-Bereitstellungen](https://learn.microsoft.com/en-us/graph/deployments)

* 365*Inspect* unterstützt jetzt die Anwendungsauthentifizierung

* Das HTML-Berichtsformat von 365*Inspect* hat sich geändert
    * Enthält neue visuelle Risikoindikatoren in Form von zwei Diagrammen
        ![Risikodiagramme](https://assets.kitploit.com/production/public/readmes/5191/abbc419f97bd47c3fd3dda6ac0993d2b42f446eb2563953f4ec88aa0e54a709f.png)
    * PowerShell-Befehle wurden von den Abhilfeschritten getrennt und Syntaxhervorhebung hinzugefügt
        ![PowerShell-Befehle](https://assets.kitploit.com/production/public/readmes/5191/0ae03b8f800d04c0d50f3290657bc356bfe41e3fb7a6b6937d4e3b40d81c3ce1.png)
    * Die Liste der ausgeführten Inspektoren wurde in einen Anhang am Ende des Berichts verschoben
        ![Anhang](https://assets.kitploit.com/production/public/readmes/5191/829dfe035390405ecae1788c34cb1f33915fdcf18cfeebb48c773d307a8cad7f.png)

</details>

# Erforderliche Berechtigungen

365*Inspect* kann nicht ordnungsgemäß ausgeführt werden, es sei denn, das M365-Konto, mit dem Sie sich authentifizieren, verfügt über entsprechende Berechtigungen. 365*Inspect* erfordert mindestens Folgendes:

* Globaler Administrator
* SharePoint-Administrator

Wir sind uns bewusst, dass dies äußerst permissive Rollen sind. Leider sind wir aufgrund der Verwendung von Microsoft Graph durch Microsoft daran gehindert, geringere Berechtigungen zu verwenden. Die Rollen „Anwendungsadministrator“ und „Cloudanwendungsadministrator“ (die zum Erteilen von delegierten und Anwendungsberechtigungen verwendet werden) sind daran gehindert, Berechtigungen für Microsoft Graph oder Azure AD PowerShell-Module zu erteilen. [Microsoft-Dokumentation – Anwendungsadministrator](https://docs.microsoft.com/en-us/azure/active-directory/roles/permissions-reference#application-administrator)

Wenn Sie 365*Inspect* mit dem Anwendungsauthentifizierungsparameter ausführen, müssen der Anwendung zusätzliche Rollen gewährt werden, damit sie alle ausgeführten Aufgaben ausführen kann. Siehe [Anforderungen für die Anwendungsauthentifizierung](#Anforderungen-für-die-Anwendungsauthentifizierung)

# Anforderungen für die Anwendungsauthentifizierung

Bevor 365*Inspect* verwendet werden kann, müssen alle anderen erforderlichen Komponenten vorhanden sein.
<details>
<summary>Vorbereitende Voraussetzungen</summary>

Für die effizienteste Nutzung der Zeit wird empfohlen, die erforderlichen Funktionen in der folgenden Reihenfolge auszuführen:
1. Bereiten Sie den Client-Computer vor
   1. Der Client-Computer __MUSS__ ein Microsoft Windows-Betriebssystem sein
   1. Installieren Sie die erforderlichen PowerShell-Module, die im Abschnitt [Setup](#setup) oben aufgeführt sind.
   1. Stellen Sie sicher, dass die entsprechenden Zugriffskontrollen vorhanden sind
1. Erstellen Sie das erforderliche Zertifikat
   1. Erstellen Sie ein selbstsigniertes Zertifikat für die Azure-Anwendungsauthentifizierung
1. Erstellen Sie eine Azure-Anwendung
   1. Erstellen Sie den Dienstprinzipal
   1. Weisen Sie der Anwendung die erforderlichen Rechte zu [API-Berechtigungen](#Erforderliche-Berechtigungen)
   1. Weisen Sie dem Dienstprinzipal der Anwendung die erforderlichen Rollen zu
      1. Globaler Administrator oder Globaler Leser
      1. Exchange-Administrator
      1. Teams-Administrator
      1. SharePoint-Administrator
   1. Laden Sie das Zertifikat hoch
   1. Dokumentieren Sie die erforderlichen Informationen
1. Beschaffen Sie das 365Inspect-Tool
   1. Laden Sie das Tool herunter und extrahieren Sie es an den gewünschten Ort auf dem Client

</details>

Siehe die folgenden Referenzen:
* [Tutorial: Registrieren einer App bei Microsoft Entra ID](https://learn.microsoft.com/en-us/power-apps/developer/data-platform/walkthrough-register-app-azure-active-directory)
* [Reine App-Authentifizierung für unbeaufsichtigte Skripts in Exchange Online PowerShell und Security & Compliance PowerShell](https://docs.microsoft.com/en-us/powershell/exchange/app-only-auth-powershell-v2)
* [Anwendungs- und Dienstprinzipalobjekte in Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity-platform/app-objects-and-service-principals?tabs=browser)

## Erforderliche Berechtigungen
<details>
<summary>Erweitern</summary>

## Erforderliche Berechtigungen
* User.Read.All
* Calendars.Read
* Mail.Read
* Contacts.Read
* TeamMember.Read.All
* Place.Read.All
* Chat.UpdatePolicyViolation.All
* Policy.Read.ConditionalAccess
* AppCatalog.Read.All
* TeamsAppInstallation.ReadForUser.All
* eDiscovery.Read.All
* UserShiftPreferences.Read.All
* CustomSecAttributeDefinition.Read.All
* AgreementAcceptance.Read.All
* ExternalConnection.Read.All
* EduRoster.Read.All
* ServicePrincipalEndpoint.Read.All
* CloudPC.Read.All
* DeviceManagementManagedDevices.Read.All
* OnlineMeetings.Read.All
* Device.Read.All
* TeamsTab.Read.All
* DelegatedAdminRelationship.Read.All
* UserAuthenticationMethod.Read.All
* TeamsActivity.Read.All
* Printer.Read.All
* OrgContact.Read.All
* TeamsAppInstallation.ReadForChat.All
* Policy.Read.PermissionGrant
* OnlineMeetingArtifact.Read.All
* SharePointTenantSettings.Read.All
* ChannelSettings.Read.All
* SecurityEvents.Read.All
* DelegatedPermissionGrant.Read.All
* OnlineMeetingRecording.Read.All
* IdentityRiskyServicePrincipal.Read.All
* CrossTenantUserProfileSharing.Read.All
* Calendars.Read
* Mail.ReadBasic.All
* PrivilegedAccess.Read.AzureAD
* RoleManagement.Read.Directory
* Channel.ReadBasic.All
* People.Read.All
* SecurityAlert.Read.All
* Group.Read.All
* AdministrativeUnit.Read.All
* MailboxSettings.Read
* CrossTenantInformation.ReadBasic.All
* EduAdministration.Read.All
* Sites.Read.All
* PrintJob.Read.All
* DeviceManagementServiceConfig.Read.All
* ServiceMessage.Read.All
* PrintSettings.Read.All
* DirectoryRecommendations.Read.All
* Notes.Read.All
* EntitlementManagement.Read.All
* CallRecords.Read.All
* IdentityUserFlow.Read.All
* ChatMessage.Read.All
* Directory.Read.All
* ConsentRequest.Read.All
* RoleManagement.Read.All
* CallRecord*PstnCalls.Read.All
* PrivilegedAccess.Read.AzureResources
* User.Read.All
* Domain.Read.All
* EduAssignments.ReadBasic.All
* EduRoster.ReadBasic.All
* Agreement.Read.All
* OnlineMeetingTranscript.Read.All
* ChannelMember.Read.All
* Schedule.Read.All
* SecurityIncident.Read.All
* GroupMember.Read.All
* DeviceManagementRBAC.Read.All
* RoleManagement.Read.CloudPC
* Files.Read.All
* CustomSecAttributeAssignment.Read.All
* SearchConfiguration.Read.All
* DeviceManagementConfiguration.Read.All
* Team.ReadBasic.All
* APIConnectors.Read.All
* Mail.Read
* Chat.Read.All
* ExternalItem.Read.All
* ChannelMessage.Read.All
* EduAssignments.Read.All
* SecurityActions.Read.All
* ThreatAssessment.Read.All
* IdentityProvider.Read.All
* TeamSettings.Read.All
* IdentityRiskyUser.Read.All
* AccessReview.Read.All
* LicenseAssignment.ReadWrite.All
* TermStore.Read.All
* TeamworkTag.Read.All
* PrivilegedAccess.Read.AzureADGroup
* InformationProtectionPolicy.Read.All
* Organization.Read.All
* Contacts.Read
* IdentityRiskEvent.Read.All
* Mail.ReadBasic
* AuditLog.Read.All
* Policy.Read.All
* Policy.ReadWrite.CrossTenantAccess
* Member.Read.Hidden
* Chat.ReadBasic.All
* Application.Read.All
* ProgramControl.Read.All
* ServiceHealth.Read.All
* ChatMember.Read.All
* DeviceManagementApps.Read.All
* ThreatIndicators.Read.All
* TeamsAppInstallation.ReadForTeam.All
* ShortNotes.Read.All
* Reports.Read.All
* PrintJob.ReadBasic.All
* TrustFrameworkKeySet.Read.All
* ThreatHunting.Read.All
* TeamworkDevice.Read.All
* Synchronization.Read.All
* AuthenticationContext.Read.All
* CustomAuthenticationExtension.Read.All
* ThreatSubmission.Read.All
* LifecycleWorkflows.Read.All
* ReportSettings.Read.All
* RecordsManagement.Read.All
* RoleManagementAlert.Read.Directory

</details>

# Entwicklung von Inspektormodulen

365*Inspect* ist so konzipiert, dass es einfach erweitert werden kann, in der Hoffnung, dass es Einzelpersonen und Organisationen ermöglicht, entweder ihre eigenen 365*Inspect*-Module intern zu verwenden oder diese Module für die M365-Community zu veröffentlichen.

Alle Inspektormodule von 365*Inspect* sind im Ordner .\inspectors gespeichert.

Es ist einfach, ein Inspektormodul zu erstellen. Inspektoren haben zwei Dateien:

* *ModuleName.ps1*: der PowerShell-Quellcode des Inspektormoduls. Soll eine Liste aller von einem bestimmten Problem betroffenen M365-Objekte zurückgeben, dargestellt als Zeichenfolgen.
* *ModuleName.json*: Metadaten über den Inspektor selbst. Zum Beispiel der Befundname, die Beschreibung, Abhilfeinformationen und Referenzen.

Vorlagen sind im Ordner Templates enthalten. Fügen Sie einfach Ihren Code und Ihre Werte an den jeweiligen Stellen ein.
Die PowerShell- und JSON-Dateinamen müssen identisch sein, damit 365*Inspect* erkennt, dass die beiden zusammengehören. Es gibt zahlreiche Beispiele in der integrierten Modulsammlung von 365*Inspect*, aber wir werden hier auch ein Beispiel geben.

<details>
<summary>Beispiel einer .ps1-Datei, BypassingSafeAttachments.ps1:</summary>```powershell
# Define a function that we will later invoke.
# 365Inspect's built-in modules all follow this pattern.
function Inspect-BypassingSafeAttachments {
	# Query some element of the M365 environment to inspect. Note that we did not have to authenticate to Exchange
	# to fetch these transport rules within this module; assume main 365Inspect harness has logged us in already.
	$safe_attachment_bypass_rules = (Get-TransportRule | Where { $_.SetHeaderName -eq "X-MS-Exchange-Organization-SkipSafeAttachmentProcessing" }).Identity

	# 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 the results of invoking the inspector function.
return Inspect-BypassingSafeAttachments
Beispiel .json-Datei, BypassingSafeAttachments.json:```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" } ] } ```

Sobald Sie diese beiden Dateien im Ordner .\inspectors ablegen, gelten sie als Teil des 365Inspect-Modulinventars und werden beim nächsten Ausführen von 365Inspect ausgeführt.

Sie haben soeben das BypassingSafeAttachments-Inspector-Modul erstellt. Das war's!

365Inspect wird eine ziemlich laute und hässliche Fehlermeldung ausgeben, wenn etwas in Ihrem Modul nicht funktioniert oder nicht den Konventionen von 365Inspect folgt. Behalten Sie daher die Ausgabe in der Befehlszeile im Auge.

Mitwirken

Wir ermutigen zur Beteiligung der Community und zu Beiträgen! Schauen Sie sich bitte unsere Richtlinien für Mitwirkende an.

Über Sicherheit

365Inspect ist ein Skript-Rahmenwerk, das andere Inspector-Skriptmodule ausführt, die im Ordner .\inspectors gespeichert sind. Wie bei jedem anderen Skript, das Sie mit erhöhten Rechten ausführen, sollten Sie bestimmte Sicherheitshygiene-Praktiken beachten:

  • Kein nicht vertrauenswürdiger Benutzer sollte Schreibzugriff auf den Ordner/die Dateien von 365Inspect haben, da dieser Benutzer dann Skripte oder Vorlagen darin überschreiben und Sie zur Ausführung von schädlichem Code verleiten könnte.
  • Kein Skriptmodul sollte in .\inspectors abgelegt werden, es sei denn, Sie vertrauen der Quelle dieses Skriptmoduls.

Über Soteria

Soteria bietet eine breite Palette von Sicherheits- und Beratungslösungen an, darunter Incident Response, Managed Detection and Response, Sicherheitsbewertungen, Penetrationstests und mehr. Kontaktieren Sie uns für alle Ihre Anforderungen!

Tool herunterladen