Erste Schritte mit Jupyter-Notebooks und MSTICPy in Microsoft Sentinel

In diesem Artikel wird beschrieben, wie Sie den Leitfaden für die ersten Schritte mit Microsoft Sentinel ML-Notebooks ausführen, der die grundlegenden Konfigurationen für die Ausführung von Jupyter-Notebooks in Microsoft Sentinel und das Ausführen einfacher Datenabfragen einrichtet.

In dem Leitfaden für die ersten Schritte für Microsoft Sentinel ML-Notebooks wird MSTICPy verwendet. Das ist eine Python-Bibliothek mit Cybersicherheitstools, die von Microsoft erstellt wurde und Funktionen zur Bedrohungssuche und Untersuchung bereitstellt.

MSTICPy reduziert die Codemenge, die Kunden für Microsoft Sentinel schreiben müssen und bietet Folgendes:

  • Datenabfragefunktionen für Microsoft Sentinel-Tabellen, Microsoft Defender für Endpoint, Splunk und andere Datenquellen.
  • Threat Intelligence-Suchen mit TI-Anbietern wie z. B. VirusTotal und AlienVault OTX.
  • Anreicherungsfunktionen wie Geolocation von IP-Adressen, Indikator der Gefährdungsextraktion (Indicator of Compromise, IoC) und Whols-Suchen.
  • Visualisierungstools mit Hilfe von Ereigniszeitachsen, Prozessstrukturen und geografischer Zuordnung.
  • Erweiterte Analysen, wie z. B. Zeitreihenzerlegung, Anomalieerkennung und Clustering.

In den Schritten in diesem Artikel wird beschrieben, wie Sie den Leitfaden für die ersten Schritte für Microsoft Sentinel ML-Notebooks in Ihrem Azure Machine Learning-Arbeitsbereich über Microsoft Sentinel ausführen. Sie können diesen Artikel auch als Anleitung für die Durchführung ähnlicher Schritte verwenden, um Notebooks in anderen Umgebungen, auch lokal, durchzuführen.

Weitere Informationen finden Sie unter Verwenden von Notebooks für Untersuchungen und Verwenden von Jupyter-Notebooks zum Suchen nach Sicherheitsbedrohungen.

Mehrere Microsoft Sentinel Notebooks verwenden MSTICPy nicht, wie z. B. die Credential Scanner-Notebooks oder die PowerShell- und C#-Beispiele. Notebooks, die MSTICpy nicht verwenden, benötigen die in diesem Artikel beschriebene MSTICPy-Konfiguration nicht.

Wichtig

Microsoft Sentinel ist als Teil der öffentlichen Vorschau für die einheitliche Security Operations-Plattform im Microsoft Defender-Portal verfügbar. Weitere Informationen finden Sie unter Microsoft Sentinel im Microsoft Defender-Portal.

Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass Sie über die erforderlichen Berechtigungen und Ressourcen verfügen.

  • Stellen Sie sicher, dass Sie über die erforderlichen Berechtigungen verfügen, um Notebooks in Microsoft Sentinel zu verwenden. Weitere Informationen finden Sie unter Verwalten des Zugriffs auf Microsoft Sentinel-Notebooks.

  • Sie benötigen Python 3.6 oder höher, um die Schritte in diesem Artikel ausführen zu können. In Azure Machine Learning können Sie entweder einen Python 3.8-Kernel (empfohlen) oder einen Python 3.6-Kernel verwenden.

  • Dieses Notebook verwendet den Geolocation-Suchdienst MaxMind GeoLite2 für IP-Adressen. Um den MaxMind GeoLite2-Dienst verwenden zu können, benötigen Sie einen Kontoschlüssel. Sie können sich auf der Maxmind-Anmeldeseite registrieren, um ein kostenloses Konto zu erstellen und einen Schlüssel zu erhalten.

  • Dieses Notebook verwendet VirusTotal (VT) als Threat Intelligence-Quelle. Um die VirusTotal-Threat Intelligence-Suche verwenden zu können, benötigen Sie ein VirusTotal-Konto und einen API-Schlüssel.

    Sie können sich auf der Seite Erste Schritte mit VirusTotal registrieren, um ein kostenloses VT-Konto zu erstellen. Wenn Sie bereits ein Benutzer von VirusTotal sind, können Sie Ihren vorhandenen Schlüssel verwenden.

    Warnung

    Wenn Sie einen VT-Unternehmensschlüssel verwenden, speichern Sie ihn in Azure Key Vault anstelle der msticpyconfig.yaml-Datei. Weitere Informationen finden Sie unter Angeben von Geheimnissen als Key Vault Geheimnisse in der MSTICPY-Dokumentation.

    Wenn Sie derzeit keinen Azure Key Vault einrichten möchten, registrieren Sie sich für ein kostenloses Konto und verwenden Sie es, bis Sie den Key Vault Speicher einrichten können.

Ausführen und Initialisieren von „Leitfaden für die ersten Schritte“

In diesem Verfahren wird beschrieben, wie Sie Ihr Notebook starten und MSTICpy initialisieren.

  1. Wählen Sie für Microsoft Sentinel im Azure-Portal unter Verwaltung von Bedrohungen die Option Notebooks aus.
    Wählen Sie für Microsoft Sentinel im Defender-Portal die Option Microsoft Sentinel>Verwaltung von Bedrohungen>Notebooks aus.

  2. Wählen Sie auf der Registerkarte Vorlagen die Option Ein Leitfaden „Erste Schritte“ für Microsoft Sentinel ML-Notebooks aus.

  3. Wähl Sie Aus Vorlage erstellen aus.

  4. Bearbeiten Sie den Namen, und wählen Sie den Azure Machine Learning-Arbeitsbereich entsprechend aus.

  5. Wählen Sie Speichern aus, um es in Ihrem Azure Machine Learning-Arbeitsbereich zu speichern.

  6. Wählen Sie Notebook starten aus, um das Notebook auszuführen. Das Notebook enthält eine Reihe von Zellen:

    • Markdown-Zellen enthalten Text und Grafiken mit Anweisungen zur Verwendung des Notebooks
    • Code-Zellen enthalten ausführbaren Code, der die Notebookfunktionen ausführt.
  7. Lesen und Ausführen von Codezellen der Reihenfolge nach. Das Überspringen von Zellen oder deren Ausführung in falscher Reihenfolge kann später zu Fehlern im Notebook führen.

    Führen Sie jede Zelle aus, indem Sie auf die Schaltfläche "Abspielen" links neben jeder Zelle auswählen. Abhängig von der ausgeführten Funktion kann der Code in der Zelle schnell ausgeführt werden, oder es kann einige Sekunden dauern, bis er abgeschlossen ist.

    Bei der Ausführung der Zelle ändert sich die Wiedergabeschaltfläche in einen Wartekreisel für den Ladevorgang. Der Status Executing wird zusammen mit der verstrichenen Zeit am unteren Rand der Zelle angezeigt.

    Wenn Ihr Notebook nicht wie beschrieben funktioniert, starten Sie den Kernel neu, und führen Sie das Notebook noch einmal von Anfang an aus. Wenn die Ausführung einer Zelle im Leitfaden für die ersten Schritte für Notebooks beispielsweise länger als eine Minute dauert, versuchen Sie, den Kernel neu zu starten und das Notebook erneut auszuführen.

    Der Leitfaden für die ersten Schritte für Notebooks enthält Anweisungen zur grundlegenden Verwendung von Jupyter-Notebooks, einschließlich des Neustarts des Jupyter-Kernels.

    Nachdem Sie das Lesen und Ausführen der Zellen im Abschnitt Was ist ein Jupyter Notebook abgeschlossen haben, können Sie die Konfigurationsaufgaben starten, beginnend mit dem Abschnitt Einrichten der Notebookumgebung.

  8. Führen Sie die erste Codezelle im Abschnitt Einrichten der Notebookumgebung Ihres Notebooks aus, der den folgenden Code enthält:

    # import some modules needed in this cell
    from pathlib import Path
    from IPython.display import display, HTML
    
    REQ_PYTHON_VER="3.6"
    REQ_MSTICPY_VER="1.2.3"
    
    display(HTML("Checking upgrade to latest msticpy version"))
    %pip install --upgrade --quiet msticpy[azuresentinel]>=$REQ_MSTICPY_VER
    
    # intialize msticpy
    from msticpy.nbtools import nbinit
    nbinit.init_notebook(
    namespace=globals(),
    extra_imports=["urllib.request, urlretrieve"]
    )
    pd.set_option("display.html.table_schema", False)
    

    Der Initialisierungsstatus wird in der Ausgabe angezeigt. Konfigurationswarnungen zu fehlenden Einstellungen in der Missing msticpyconfig.yaml-Datei sind zu erwarten, da Sie noch nichts konfiguriert haben.

Schreiben Sie Ihre Konfigurationsdatei

Nach der grundlegenden Initialisierung können Sie Ihre Konfigurationsdatei mit den grundlegenden Einstellungen für die Arbeit mit MSTICPy erstellen.

Viele Microsoft Sentinel-Notebooks stellen eine Verbindung mit externen Diensten, wie z. B. VirusTotal (VT) her, um Daten zu sammeln und zu erweitern. Um eine Verbindung mit diesen Diensten herzustellen, müssen Sie die Konfigurationsdetails festlegen und speichern, z. B. Authentifizierungstoken. Es ist nicht mehr notwendig, dass Sie bei jeder Verwendung eines Notebooks die Authentifizierungstoken und Arbeitsbereichsdetails eingeben, wenn Sie diese Daten in Ihrer Konfigurationsdatei haben.

MSTICPy verwendet die Datei msticpyconfig.yaml zum Speichern einer Vielzahl von Konfigurationsdetails. Standardmäßig wird die Datei msticpyconfig.yaml von der Notebook-Initialisierungsfunktion generiert. Wenn Sie dieses Notebook aus dem Microsoft Sentinel-Portal geklont haben, wird die Konfigurationsdatei mit Microsoft Sentinel-Arbeitsbereichsdaten aufgefüllt. Diese Daten werden aus einer config.json-Datei gelesen, die beim Starten Ihres Notebooks im Azure Machine Learning-Arbeitsbereich erstellt wurde. Weitere Informationen finden Sie in der Dokumentation zur MSTICPy Paket Konfiguration.

In den folgenden Abschnitten wird beschrieben, wie Sie der Datei msticpyconfig.yaml zusätzliche Konfigurationsdetails hinzufügen.

Wenn Sie das Notebook Leitfaden für die ersten Schritte erneut ausführen und bereits über eine minimal konfigurierte Datei msticpyconfig.yaml verfügen, überschreibt oder ändert die init_notebook-Funktion Ihre vorhandene Datei nicht.

Wählen Sie zu einem beliebigen Zeitpunkt das Dropdownmenü -Help im MSTICPy-Konfigurationstool aus, um weitere Anweisungen und Links zur ausführlichen Dokumentation zu erhalten.

Anzeigen des Editors für MSTICPy-Einstellungen

  1. Führen Sie in einer Codezelle den folgenden Code aus, um das MpConfigEdit Tool zu importieren und einen Einstellungseditor für die Datei msticpyconfig.yaml anzuzeigen:

    from msticpy.config import MpConfigEdit
    
    mpedit = MpConfigEdit( "msticpyconfig.yaml")
    mpedit.set_tab("AzureSentinel")
    display(mpedit)
    

    Beispiel:

    Screenshot: Editor für MSTICPy-Einstellungen

    Die automatisch erstellte Datei msticpyconfig.yaml, die im Einstellungseditor angezeigt wird, enthält zwei Einträge im Abschnitt Microsoft Sentinel. Beide Einträge werden mit Details zum Microsoft Sentinel-Arbeitsbereich aufgefüllt, aus dem das Notebook geklont wurde. Ein Eintrag trägt den Namen Ihres Arbeitsbereichs, der andere den Namen Standard.

    Mit MSTICPy können Sie Konfigurationen für mehrere Microsoft Sentinel-Arbeitsbereiche speichern und zwischen diesen wechseln. Mit dem Standardeintrag können Sie sich standardmäßig bei Ihrem „Home“-Arbeitsbereich authentifizieren, ohne ihn explizit benennen zu müssen. Wenn Sie zusätzliche Arbeitsbereiche hinzufügen, können Sie einen davon als Standardeintrag konfigurieren.

    In der Azure Machine Learning-Umgebung kann es 10 bis 20 Sekunden dauern, bis der Einstellungseditor angezeigt wird.

  2. Überprüfen Sie Ihre aktuellen Einstellungen, und wählen Sie Einstellungen Speichern aus.

Hinzufügen von Einstellungen des Threat Intelligence-Anbieters

In diesem Verfahren wird beschrieben, wie Sie Ihren VirusTotal-API-Schlüssel in der Datei msticpyconfig.yaml speichern. Sie können den API-Schlüssel in Azure Key Vault hochladen, aber Sie müssen zuerst die Key Vault Einstellungen konfigurieren. Weitere Informationen finden Sie unter Konfigurieren von Key Vault-Einstellungen.

Führen Sie die folgenden Schritte aus, um VirusTotal-Details im MSTICPy-Einstellungseditor hinzuzufügen.

  1. Geben Sie den folgenden Code in eine Codezelle ein und führen Sie ihn aus:

    mpedit.set_tab("TI Providers")
    mpedit
    
  2. Wählen Sie auf der Registerkarte TI-Anbieter die Option Provider hinzufügen>VirusTotal>Hinzufügenaus.

  3. Wählen Sie unter Authentifizierungsschlüsselneben der Option Speichern die Option Text aus.

  4. Fügen Sie ihren API-Schlüssel in das Feld Wert ein.

  5. Wählen Sie Aktualisierenund dann unten im Einstellungseditor Einstellungen Speichern aus.

Weitere Informationen zu anderen unterstützten Threat Intelligence-Anbietern finden Sie unter Threat Intelligence-Anbieter in der MSTICPy-Dokumentation und Threat Intelligence-Integration in Microsoft Sentinel.

Hinzufügen von GeoIP-Anbietereinstellungen

In diesem Verfahren wird beschrieben, wie Sie einen MaxMind GeoLite2-Kontoschlüssel in der Datei msticpyconfig.yaml speichern, wodurch Ihr Notebook Geolocation-Suchdienste für IP-Adressen verwenden kann.

Führen Sie die folgenden Schritte aus, um GeoIP-Anbietereinstellungen im MSTICPy-Einstellungseditor hinzuzufügen.

  1. Geben Sie den folgenden Code in eine Codezelle ein und führen Sie ihn aus:

    mpedit.set_tab("GeoIP Providers")
    mpedit
    
  2. Wählen Sie auf der Registerkarte GeoIP-Anbieter die Option Provider hinzufügen>GeoIPLite>Hinzufügenaus.

  3. Geben Sie im Feld Wert Ihren MaxMind-Kontoschlüssel ein.

  4. Aktualisieren Sie bei Bedarf den Standardordner ~/.msticpy zum Speichern der heruntergeladenen GeoIP-Datenbank.

    • Unter Windows wird dieser Ordner %USERPROFILE%/.msticpyzugeordnet.
    • Unter Linux oder macOS wird dieser Pfad dem Ordner .msticpy in Ihrem Basisordner zugeordnet.

Weitere Informationen zu anderen unterstützten Geolocation-Suchdiensten finden Sie in der Dokumentation zu GEOIP-Anbietern für MSTICPy.

Konfigurieren von Azure Cloud Shell Einstellungen

Wenn Ihre Organisation die öffentliche Azure-Cloud nicht verwendet, müssen Sie das in Ihren Einstellungen angeben, um erfolgreich Daten aus Microsoft Sentinel und Azure zu authentifizieren und zu verwenden. Weitere Informationen finden Sie unter Angeben der Azure-Cloud und der Azure-Standardauthentifizierungsmethoden.

Einstellungen überprüfen

  1. Wählen Sie im Einstellungseditor Einstellungen überprüfen aus.

    Warnmeldungen zu fehlenden Konfigurationen sind zu erwartet, Sie sollten jedoch keine für Threat Intelligence-Anbieter oder GeoIP-Anbietereinstellungen erhalten.

  2. Abhängig von Ihrer Umgebung müssen Sie möglicherweise auch die Key Vault Einstellungen konfigurieren oder die Azure-Cloud angeben.

  3. Wenn Sie aufgrund der Überprüfung Änderungen vornehmen müssen, nehmen Sie diese Änderungen vor, und wählen Sie dann Einstellungen Speichern aus.

  4. Wenn Sie fertig sind, wählen Sie die Schaltfläche Schließen aus, um die Validierungsausgabe auszublenden.

Weitere Informationen finden Sie unter: Erweiterte Konfigurationen für Jupyter-Notebooks und MSTICPy in Microsoft Sentinel

Laden Sie die gespeicherten MSTICPy-Einstellungen

Mit der Prozedur Ihre Konfigurationsdatei erstellen haben Sie Ihre Einstellungen in der lokalen Datei msticpyconfig.yaml gespeichert.

MSTICPy lädt diese Einstellungen jedoch erst dann automatisch neu, wenn Sie den Kernel neu starten oder ein anderes Notebook ausführen. Um MSTICPy zum erneuten Laden aus der neuen Konfigurationsdatei zu zwingen, wechseln Sie mit dem folgenden Code zu der nächsten Codezelle, und führen Sie sie aus:

import msticpy
msticpy.settings.refresh_config()

Testen Sie Ihr Notebook

Nachdem Sie Ihre Umgebung initialisiert und die grundlegenden Einstellungen für Ihren Arbeitsbereich konfiguriert haben, verwenden Sie die MSTICPy-QueryProvider-Klasse, um das Notebook zu testen. QueryProvider fragt eine Datenquelle ab, in diesem Fall Ihren Microsoft Sentinel-Arbeitsbereich, und stellt die abgefragten Daten zum Anzeigen und Analysieren in Ihrem Notebook zur Verfügung.

Verwenden Sie die folgenden Verfahren, um eine Instanz der QueryProvider-Klasse zu erstellen, sich über Ihr Notebook bei Microsoft Sentinel zu authentifizieren und Abfragen mit einer Vielzahl verschiedener Parameteroptionen anzuzeigen und auszuführen.

Sie können mehrere Instanzen von QueryProvider zur Verwendung mit mehreren Microsoft Sentinel-Arbeitsbereichen oder anderen Datenanbietern wie z. B. Microsoft Defender für Endpoint laden.

Laden Sie den QueryProvider

Um QueryProvider für AzureSentinel zu laden, wechseln Sie zu der Zelle mit dem folgenden Code, und führen Sie sie aus:

# Initialize a QueryProvider for Microsoft Sentinel
qry_prov = QueryProvider("AzureSentinel")

Wenn beim Laden des Microsoft Sentinel-Treibers eine Runtime dependency of PyGObject is missing Warnung angezeigt wird, finden Sie weitere Informationen unter Fehler: Runtime-Abhängigkeit von PyGObject fehlt. Diese Warnung wirkt sich nicht auf die Notebook-Funktionalität aus.

Authentifizieren Sie sich bei Ihrem Microsoft Sentinel-Arbeitsbereich über Ihr Notebook

In Azure Machine Learning-Notebooks verwendet die Authentifizierung standardmäßig die Anmeldeinformationen, die Sie für die Authentifizierung beim Azure Machine Learning-Arbeitsbereich verwendet haben.

Authentifizieren Sie sich mithilfe der verwalteten Identität, indem Sie die folgenden Schritte ausführen.

  1. Führen Sie den folgenden Code aus, um sich bei Ihrem Sentinel-Arbeitsbereich zu authentifizieren.

    # Get the default Microsoft Sentinel workspace details from msticpyconfig.yaml
    
    ws_config = WorkspaceConfig()
    
    # Connect to Microsoft Sentinel with our QueryProvider and config details
    qry_prov.connect(ws_config)
    
  2. Überprüfen Sie die Ausgabe. Die Ausgabe sieht in etwa wie folgt aus.

    Screenshot: Authentifizierung bei Azure, die mit einer verbundenen Nachricht endet.

Zwischenspeichern Ihres Anmeldetokens mit der Azure CLI

Um zu vermeiden, dass Sie sich erneut authentifizieren müssen, wenn Sie den Kernel neu starten oder andere Notebooks ausführen, können Sie Ihr Anmeldetoken mit Azure CLI zwischenspeichern.

Die Azure CLI-Komponente auf der Compute-Instanz speichert ein Aktualisierungstoken zwischen, das wiederverwendet werden kann, bis das Token abläuft. MSTICPy verwendet automatisch die Azure CLI Anmeldeinformationen, sofern diese verfügbar sind.

Geben Sie zum Authentifizieren mit der Azure CLI folgenden Befehl in eine leere Zelle ein, und führen Sie ihn aus:

!az login

Sie müssen sich erneut authentifizieren, wenn Sie Ihre Compute-Instanz neu starten oder zu einer anderen Instanz wechseln. Weitere Informationen finden Sie im Abschnitt Zwischenspeichern von Anmeldeinformationen mit der Azure CLI im Wiki „Microsoft Sentinel Notebooks GitHub Repository“.

Anzeigen des Datenschemas des Microsoft Sentinel-Arbeitsbereichs und integrierter MSTICPy-Abfragen

Nachdem Sie eine Verbindung mit einem Microsoft Sentinel QueryProvider hergestellt haben, können Sie die für Abfragen verfügbaren Datentypen verstehen, indem Sie das Microsoft Sentinel-Datenschema des Arbeitsbereichs abfragen.

Der Microsoft Sentinel QueryProvider verfügt über eine schema_tables Eigenschaft, die Ihnen eine Liste von Schematabellen bietet, und eine schema Eigenschaft, die auch die Spaltennamen und Datentypen für jede Tabelle enthält.

So zeigen Sie die ersten 10 Tabellen im Microsoft Sentinel-Schema an:

Wechseln Sie mit dem folgenden Code zur nächsten Zelle und führen Sie sie aus. Sie können [:10] weglassen, um alle Tabellen in Ihrem Arbeitsbereich aufzulisten.

# Get list of tables in the Workspace with the 'schema_tables' property
qry_prov.schema_tables[:10]  # Output only a sample of tables for brevity
                             # Remove the "[:10]" to see the whole list

Die folgende Ausgabe wird angezeigt:

Sample of first 10 tables in the schema
    ['AACAudit',
     'AACHttpRequest',
     'AADDomainServicesAccountLogon',
     'AADDomainServicesAccountManagement',
     'AADDomainServicesDirectoryServiceAccess',
     'AADDomainServicesLogonLogoff',
     'AADDomainServicesPolicyChange',
     'AADDomainServicesPrivilegeUse',
     'AADDomainServicesSystemSecurity',
     'AADManagedIdentitySignInLogs']

MSTICPy enthält auch viele integrierte Abfragen, die Sie ausführen können. Listen Sie verfügbare Abfragen mit .list_queries() auf und rufen Sie die spezifischen Details zu einer Abfrage ab, indem Sie sie mit einem Fragezeichen (?) aufrufen, das als Parameter enthalten ist. Alternativ können Sie die Liste der Abfragen und die zugehörige Hilfe im Abfragebrowser anzeigen.

So zeigen Sie ein Beispiel für die verfügbaren Abfragen an:

  1. Wechseln Sie mit dem folgenden Code zur nächsten Zelle und führen Sie sie aus. Sie können [::5] weglassen, um alle Abfragen aufzulisten.

    # Get a sample of available queries
    print(qry_prov.list_queries()[::5])  # showing a sample - remove "[::5]" for whole list
    
  2. Überprüfen Sie die Ausgabe.

    Sample of queries
    =================
    ['Azure.get_vmcomputer_for_host', 'Azure.list_azure_activity_for_account', 'AzureNetwork.az_net_analytics', 'AzureNetwork.get_heartbeat_for_ip', 'AzureSentinel.get_bookmark_by_id', 'Heartbeatget_heartbeat_for_host', 'LinuxSyslog.all_syslog', 'LinuxSyslog.list_logon_failures', 'LinuxSyslog.sudo_activity', 'MultiDataSource.get_timeseries_decompose', 'Network.get_host_for_ip','Office365.list_activity_for_ip', 'SecurityAlert.list_alerts_for_ip', 'ThreatIntelligence.list_indicators_by_filepath', 'WindowsSecurity.get_parent_process', 'WindowsSecurity.list_host_events','WindowsSecurity.list_hosts_matching_commandline', 'WindowsSecurity.list_other_events']
    
  3. Sie erhalten Hilfe zu einer Abfrage, indem Sie ? als Parameter übergeben:

    # Get help about a query by passing "?" as a parameter
    qry_prov.Azure.list_all_signins_geo("?")
    
  4. Überprüfen Sie die Ausgabe.

    Help for 'list_all_signins_geo' query
    =====================================
    Query:  list_all_signins_geo
    Data source:  AzureSentinel
    Gets Signin data used by morph charts
    
    Parameters
    ----------
    add_query_items: str (optional)
        Additional query clauses
    end: datetime (optional)
        Query end time
    start: datetime (optional)
        Query start time
        (default value is: -5)
    table: str (optional)
        Table name
        (default value is: SigninLogs)
    Query:
         {table} | where TimeGenerated >= datetime({start}) | where TimeGenerated <= datetime({end}) | extend Result = iif(ResultType==0, "Sucess", "Failed") | extend Latitude = tostring(parse_json(tostring(LocationDetails.geoCoordinates)).latitude) | extend Longitude = tostring(parse_json(tostring(LocationDetails.geoCoordinates)).longitude)
    
  5. Wenn Sie Tabellen und Abfragen in einer scrollbaren, filterbaren Liste anzeigen möchten, fahren Sie mit der nächsten Zelle und dem folgenden Code fort, und führen Sie ihn aus.

    qry_prov.browse_queries()
    
  6. Für die ausgewählte Abfrage werden alle erforderlichen und optionalen Parameter, zusammen mit dem vollständigen Text der Abfrage, angezeigt. Beispiel:

    Screenshot: Tabellen und Abfragen, die in einer scrollbaren, filterbaren Liste angezeigt werden

Obwohl Sie keine Abfragen im Browser ausführen können, können Sie das Beispiel kopieren und am Ende jeder Abfrage einfügen, um es an anderer Stelle im Notebook auszuführen.

Weitere Informationen finden Sie unter Ausführen einer vordefinierten Abfrage in der MSTICPy-Dokumentation.

Ausführen von Abfragen mit Zeitparametern

Die meisten Abfragen erfordern Zeitparameter. Die Eingabe von Datums-/Uhrzeitzeichenfolgen ist mühsam, und das Ändern dieser Zeichenfolgen an mehreren Stellen kann fehleranfällig sein.

Jeder Abfrageanbieter verfügt über standardmäßige Start- und Endzeitparameter für Abfragen. Diese Zeitparameter werden standardmäßig verwendet, wenn Zeitparameter aufgerufen werden. Sie können den Standardzeitbereich ändern, indem Sie das query_time Steuerelement öffnen. Die Änderungen bleiben wirksam, bis Sie sie erneut ändern.

  1. Wechseln Sie mit dem folgenden Code zur nächsten Zelle und führen Sie sie aus:

    # Open the query time control for your query provider
    qry_prov.query_time
    
  2. Legen Sie die start und die Uhrzeiten end nach Bedarf fest. Beispiel:

    Screenshot: Festlegen von Standardzeitparametern für Abfragen

Führen Sie eine Abfrage mithilfe des integrierten Zeitbereichs aus

Die Abfrageergebnisse werden als Pandas-Datenrahmenzurückgegeben, bei dem es sich um eine tabellarische Datenstruktur handelt, z. B. ein Arbeitsblatt oder eine Datenbanktabelle. Verwenden Sie die Pandas-Funktionen, um eine zusätzliche Filterung und Analyse der Abfrageergebnisse durchzuführen.

  1. Führen Sie die folgende Codezelle aus. Sie führt eine Abfrage mit den Standardzeiteinstellungen des Abfrageanbieters aus. Sie können diesen Bereich ändern und die Codezelle erneut ausführen, um den neuen Zeitbereich abzufragen.

    # The time parameters are taken from the qry_prov time settings
    # but you can override this by supplying explict "start" and "end" datetimes
    signins_df = qry_prov.Azure.list_all_signins_geo()
    
    # display first 5 rows of any results
    # If there is no data, just the column headings display
    signins_df.head()
    
  2. Überprüfen Sie die Ausgabe. Sie zeigt die ersten fünf Ergebniszeilen an. Zum Beispiel:

    Screenshot: Abfrage, die mit dem integrierten Zeitbereich ausgeführt wird

    Wenn keine Daten vorhanden sind, werden nur die Spaltenüberschriften angezeigt.

Führen Sie eine Abfrage mithilfe eines benutzerdefinierten Zeitbereichs durch

Sie können auch ein neues Abfragezeitobjekt erstellen und als Parameter an eine Abfrage übergeben. Auf diese Weise können Sie eine einmalige Abfrage für einen anderen Zeitraum ausführen, ohne dass sich dies auf die Standardeinstellungen des Abfrageanbieters auswirkt.

# Create and display a QueryTime control.
time_range = nbwidgets.QueryTime()
time_range

Nachdem Sie den gewünschten Zeitbereich festgelegt haben, können Sie ihn an die Abfragefunktion übergeben. Dafür müssen Sie den folgenden Code in einer vom vorherigen Code getrennten Zelle ausführen:

signins_df = qry_prov.Azure.list_all_signins_geo(time_range)
signins_df.head()

Sie können die datetime-Werte auch als Python-datetimes- oder date-time-Zeichenfolgen mithilfe der startundend Parameter übergeben:

from datetime import datetime, timedelta
q_end = datetime.utc.now()
q_start = end – timedelta(5)
signins_df = qry_prov.Azure.list_all_signins_geo(start=q_start, end=q_end)

Anpassen Ihrer Abfragen

Sie können die integrierten Abfragen anpassen, indem Sie eine zusätzliche Abfragelogik hinzufügen oder vollständige Abfragen mithilfe der exec_query-Funktion ausführen.

Die meisten integrierten Abfragen unterstützen beispielsweise den add_query_items-Parameter, mit dem Sie Filter oder andere Vorgänge an die Abfragen anfügen können.

  1. Führen Sie die folgende Codezelle aus, um einen Datenrahmen hinzuzufügen, der die Anzahl der Warnungen anhand des Warnungsnamens zusammenfasst:

    from datetime import datetime, timedelta
    
    qry_prov.SecurityAlert.list_alerts(
       start=datetime.utcnow() - timedelta(28),
        end=datetime.utcnow(),
        add_query_items="| summarize NumAlerts=count() by AlertName"
    )
    
  2. Übergeben Sie eine vollständige KQL-Abfragezeichenfolge (Kusto Query Language, Kusto-Abfragesprache) an den Abfrageanbieter. Die Abfrage wird für den verbundenen Arbeitsbereich ausgeführt und die Daten werden als Panda-DataFrame zurückgegeben. Führen Sie Folgendes aus:

    # Define your query
    test_query = """
    OfficeActivity
    | where TimeGenerated > ago(1d)
    | take 10
    """
    
    # Pass the query to your QueryProvider
    office_events_df = qry_prov.exec_query(test_query)
    display(office_events_df.head())
    
    

Weitere Informationen finden Sie unter

Testen von VirusTotal

  1. Um mithilfe von Threat Intelligence zu sehen, ob eine IP-Adresse in VirusTotal-Daten angezeigt wird, führen Sie die Zelle mit dem folgenden Code aus:

    # Create your TI provider – note you can re-use the TILookup provider (‘ti’) for
    # subsequent queries - you don’t have to create it for each query
    ti = TILookup()
    
    # Look up an IP address
    ti_resp = ti.lookup_ioc("85.214.149.236")
    
    ti_df = ti.result_to_df(ti_resp)
    ti.browse_results(ti_df, severities="all")
    
  2. Überprüfen Sie die Ausgabe. Zum Beispiel:

    Screenshot: IP-Adresse, die in VirusTotal-Daten angezeigt wird

  3. Scrollen Sie nach unten, um die vollständigen Ergebnisse anzuzeigen.

Weitere Informationen finden Sie unter Threat Intel-Suchen in MSTICPy.

Testen der Geolocation-IP-Suche

  1. Führen Sie die Zelle mit dem folgenden Code aus, um die Geolocation-Details für eine IP-Adresse mithilfe des MaxMind-Diensts zu erhalten:

    # create an instance of the GeoLiteLookup provider – this
    # can be re-used for subsequent queries.
    geo_ip = GeoLiteLookup()
    raw_res, ip_entity = geo_ip.lookup_ip("85.214.149.236")
    display(ip_entity[0])
    
  2. Überprüfen Sie die Ausgabe. Zum Beispiel:

    ipaddress
    { 'AdditionalData': {},
      'Address': '85.214.149.236',
      'Location': { 'AdditionalData': {},
                    'CountryCode': 'DE',
                    'CountryName': 'Germany',
                    'Latitude': 51.2993,
                    'Longitude': 9.491,
                    'Type': 'geolocation',
                    'edges': set()},
      'ThreatIntelligence': [],
      'Type': 'ipaddress',
      'edges': set()}
    

Wenn Sie diesen Code zum ersten Mal ausführen, sollte der GeoLite-Treiber seine Datenbank herunterladen.

Weitere Informationen finden Sie unter MSTICPy GeoIP Anbieter.

Die Key Vault-Einstellungen konfigurieren

Dieser Abschnitt ist nur relevant, wenn Sie Geheimnisse in einem Azure Key Vault speichern.

Wenn Sie Geheimnisse in Azure Key Vault speichern, müssen Sie zuerst den Key Vault im globalen Azure KeyVault-Verwaltungsportal erstellen.

Die erforderlichen Einstellungen sind alle Werte, die Sie aus den Tresoreigenschaften abrufen, auch wenn einige möglicherweise unterschiedliche Namen haben. Zum Beispiel:

  • Der VaultName wird oben links auf dem Bildschirm mit Azure Key Vault Eigenschaften angezeigt
  • Die TenantId wird als Verzeichnis-ID angezeigt
  • Die AzureRegion wird als Standort angezeigt
  • Die Autorität ist die Cloud für Ihren Azure-Dienst.

Nur die Werte VaultName, TenantIdund Authority sind erforderlich, um Geheimnisse aus dem Tresor abzurufen. Die anderen Werte sind erforderlich, wenn Sie einen Tresor aus MSTICPy erstellen möchten. Weitere Informationen finden Sie unter Angeben von Geheimnissen als Key Vault Geheimnisse.

Die Option KeyRing verwenden ist standardmäßig ausgewählt und ermöglicht es Ihnen, Key Vault-Anmeldeinformationen in einem lokalen KeyRing zwischenspeichern. Weitere Informationen finden Sie in dieser KeyRing-Dokumentation.

Achtung

Verwenden Sie die Option KeyRing verwenden nicht, wenn Sie der Host Compute-Instanz, auf dem das Notebook ausgeführt wird, nicht vollständig vertrauen.

In unserem Fall ist die Compute-Instanz der Jupyter Hub-Server, auf dem der Notebookkernel ausgeführt wird und nicht notwendigerweise der Computer, auf dem Ihr Browser ausgeführt wird. Bei der Verwendung von Azure ML ist Compute, die Azure ML Compute-Instanz, die Sie ausgewählt haben. Der Schlüsselbund führt die Zwischenspeicherung auf dem Host durch, auf dem der Notebookkernel ausgeführt wird.

Führen Sie die folgenden Schritte aus, um Key Vault-Einstellungen im MSTICPy-Einstellungseditor hinzuzufügen.

  1. Wechseln Sie mit dem folgenden Code zur nächsten Zelle und führen Sie sie aus:

    mpedit.set_tab("Key Vault")
    mpedit
    
  2. Geben Sie die Tresordaten für Ihren Key Vault ein. Beispiel:

    Screenshot, der den Abschnitt „Key Vault Setup“ zeigt

  3. Wählen Sie Speichern und dann Einstellungen speichern aus.

Schlüsseltresor testen

Um Ihren Schlüsseltresor zu testen, müssen Sie überprüfen, ob Sie eine Verbindung herstellen und Ihre Geheimnisse anzeigen können. Wenn Sie kein Geheimnis hinzugefügt haben, werden Sie auch keine Details sehen können. Fügen Sie bei Bedarf dem Tresor ein Testgeheimnis aus dem Azure Key Vault-Portal hinzu und überprüfen Sie, ob es in Microsoft Sentinel angezeigt wird.

Beispiel:

mpconfig = MpConfigFile()
mpconfig.refresh_mp_config()
mpconfig.show_kv_secrets()

Achtung

Lassen Sie die angezeigte Ausgabe nicht in Ihrem gespeicherten Notebook. Wenn die Ausgabe echte Geheimnisse enthält, verwenden Sie den Befehl Ausgabe löschen des Notebooks, bevor Sie das Notebook speichern.

Löschen Sie außerdem die zwischengespeicherten Kopien des Notebooks. Suchen Sie beispielsweise in dem Unterordner Ihres Notebookverzeichnisses nach .ipynb_checkpoints und löschen Sie alle gefundenen Kopien dieses Notebooks. Das Speichern des Notizbuchs mit einer gelöschten Ausgabe sollte die Prüfpunktkopie überschreiben.

Nachdem Sie Key Vault konfiguriert haben, können Sie die Schaltfläche auf KV hochladen in den Abschnitten Datenanbieter und TI-Anbieter verwenden, um die ausgewählte Einstellung in den Tresor zu verschieben. MSTICPy generiert einen Standardnamen für das Geheimnis basierend auf dem Pfad der Einstellung, z. B. TIProviders-VirusTotal-Args-AuthKey.

Wenn der Wert erfolgreich hochgeladen wurde, wird der Inhalt des Felds Wert im Einstellungseditor gelöscht und die zugrunde liegende Einstellung wird durch einen Platzhalterwert ersetzt. MSTICPy verwendet diesen Wert, um anzugeben, dass beim Abrufen des Schlüssels der Key Vault-Pfad automatisch generiert werden soll.

Wenn Sie die erforderlichen Geheimnisse bereits in einem Key Vault gespeichert haben, können Sie den Geheimnisnamen in das Feld Wert eingeben. Wenn das Geheimnis nicht in Ihrem Standardtresor gespeichert ist (die im Abschnitt Key Vault angegebenen Werte), können Sie den Pfad VaultName/SecretName angeben.

Das Abrufen von Einstellungen aus einem Tresor in einem anderen Mandanten wird derzeit nicht unterstützt. Weitere Informationen finden Sie unter Angeben von Geheimnissen als Key Vault Geheimnisse.

Geben Sie die Azure-Cloud- und Azure-Authentifizierungsmethoden an

Wenn Sie eine Sovereign Cloud oder Azure Government Cloud anstelle der öffentlichen oder globalen Azure-Cloud verwenden, müssen Sie in Ihren Einstellungen die entsprechende Cloud auswählen. Für die meisten Organisationen ist die globale Cloud die Standardeinstellung.

Sie können diese Azure-Einstellungen auch verwenden, um Standardeinstellungen für den Azure-Authentifizierungstyp zu definieren.

Führen Sie die folgenden Schritte aus, um Azure Cloud- und Azure-Authentifizierungsmethoden anzugeben.

  1. Wechseln Sie mit dem folgenden Code zur nächsten Zelle und führen Sie sie aus:

    mpedit.set_tab("Azure")
    mpedit
    
  2. Wählen Sie die von Ihrer Organisation verwendete Cloud aus oder belassen Sie die standardmäßig ausgewählte globale Option.

  3. Wählen Sie eine oder mehrere der folgenden Methoden aus:

    • env, um Ihre Azure-Anmeldeinformationen in den Umgebungsvariablen zu speichern.
    • msi, um Managed Service Identity zu verwenden. Dabei handelt es sich um eine Identität, die dem Host oder virtuellen Computer zugewiesen ist, auf dem der Jupyter-Hub ausgeführt wird. MSI wird in Azure Machine Learning Compute-Instanzen derzeit nicht unterstützt.
    • cli, um die Anmeldeinformationen aus einer authentifizierten Azure CLI zu verwenden.
    • interactive, um den interaktiven Geräteautorisierungsablauf mithilfe eines einmaligen Gerätecodes zu verwenden.

    In den meisten Fällen wird empfohlen, mehrere Methoden auszuwählen, z. B. sowohl cli als auch interactive. Die Azure-Authentifizierung versucht, jede der konfigurierten Methoden in der aufgeführten Reihenfolge anzuwenden, bis eine erfolgreich ist.

  4. Wählen Sie Speichern und dann Einstellungen speichern aus.

    Beispiel:

    Screenshot: Einstellungen, die für die Azure Government Cloud definiert sind

Nächste Schritte

In diesem Artikel wurden die Grundlagen der Verwendung von MSTICPy mit Jupyter-Notebooks in Microsoft Sentinel beschrieben. Weitere Informationen finden Sie unter Erweiterte Konfigurationen für Jupyter-Notebooks und MSTICPy in Microsoft Sentinel.

Sie können auch andere Notebooks ausprobieren, die im GitHub-Repository von Microsoft Sentinel-Notebooks gespeichert sind, wie z. B.:

Wenn Sie das in diesem Artikel beschriebene Notebook in einer anderen Jupyter-Umgebung verwenden, können Sie einen beliebigen Kernel, der Python 3.6 oder höher unterstützt, verwenden.

Um MSTICPy-Notebooks außerhalb von Microsoft Sentinel und Azure Machine Learning (ML) zu verwenden, müssen Sie auch Ihre Python-Umgebung konfigurieren. Installieren Sie Python 3.6 oder höher mit der Anaconda-Distribution, die viele der erforderlichen Pakete enthält.

Weitere Informationen zu MSTICPy und Notebooks

In der folgenden Tabelle sind weitere Verweise mit Informationen über MSTICPy, Microsoft Sentinel und Jupyter-Notebooks aufgeführt.

Subject Weitere Verweise
MSTICPy - MSTICPy-Paketkonfiguration
- MSTICPy-Einstellungs-Editor
- Konfigurieren Ihrer Notebook-Umgebung.
- MPSettingsEditor Notebook.

Hinweis: Das Azure-Sentinel-Notebooks-GitHub-Repository enthält auch eine Msticpyconfig.yaml-Vorlagendatei mit auskommentierten Abschnitten, die Ihnen helfen könnten, die Einstellungen zu verstehen.
Microsoft Sentinel und Jupyter Notebooks - Erstellen Ihres ersten Microsoft Sentinel-Notebooks (Blogreihe)
- Jupyter Notebooks: Eine Einführung
- MSTICPy-Dokumentation
- Dokumentation zu Microsoft Sentinel-Notebooks
- Das Infosec-Jupyterbook
- Exemplarische Vorgehensweise zum Linux-Host-Explorer-Notebook
- Gründe für die Verwendung von Jupyter für die Sicherheitsuntersuchungen
- Sicherheitsuntersuchung mit Microsoft Sentinel und Notebooks
- Pandas-Dokumentation
- Bokeh-Dokumentation