Aan de slag met Jupyter-notebooks en MSTICPy in Microsoft Sentinel

In dit artikel wordt beschreven hoe u de Introductiehandleiding voor Microsoft Sentinel ML Notebooks-notebooks uitvoert, waarmee basisconfiguraties worden ingesteld voor het uitvoeren van Jupyter-notebooks in Microsoft Sentinel en het uitvoeren van eenvoudige gegevensquery's.

De Introductiehandleiding voor Microsoft Sentinel ML Notebooks maakt gebruik van MSTICPy, een Python-bibliotheek van hulpprogramma's voor cyberbeveiliging die zijn gebouwd door Microsoft, die functionaliteit biedt voor het opsporen en onderzoeken van bedreigingen.

MSTICPy vermindert de hoeveelheid code die klanten nodig hebben om te schrijven voor Microsoft Sentinel en biedt:

  • Mogelijkheden voor gegevensquery's, op basis van Microsoft Sentinel-tabellen, Microsoft Defender voor Eindpunt, Splunk en andere gegevensbronnen.
  • Zoekacties voor bedreigingsinformatie met TI-providers, zoals VirusTotal en AlienVault OTX.
  • Verrijkingsfuncties zoals geolocatie van IP-adressen, Indicator of Compromise (IoC) extractie en Wie Is-zoekopdrachten.
  • Visualisatiehulpmiddelen met behulp van gebeurtenistijdlijnen, processtructuren en geotoewijzing.
  • Geavanceerde analyses, zoals de ontleding van tijdreeksen, anomaliedetectie en clustering.

In de stappen in dit artikel wordt beschreven hoe u de Introductiehandleiding voor Microsoft Sentinel ML Notebooks uitvoert in uw Azure Machine Learning-werkruimte via Microsoft Sentinel. U kunt dit artikel ook gebruiken als richtlijnen voor het uitvoeren van vergelijkbare stappen voor het uitvoeren van notebooks in andere omgevingen, waaronder lokaal.

Zie Notebooks gebruiken om onderzoek uit te voeren en Jupyter-notebooks te gebruiken voor het opsporen van beveiligingsrisico's voor meer informatie.

Verschillende Microsoft Sentinel-notebooks maken geen gebruik van MSTICPy, zoals de notebooks referentiescanner of de PowerShell- en C#-voorbeelden. Notebooks die geen MSTICpy gebruiken, hebben de MSTICPy-configuratie die in dit artikel wordt beschreven, niet nodig.

Belangrijk

Microsoft Sentinel is beschikbaar als onderdeel van de openbare preview voor het geïntegreerde platform voor beveiligingsbewerkingen in de Microsoft Defender-portal. Zie Microsoft Sentinel in de Microsoft Defender-portal voor meer informatie.

Vereisten

Voordat u begint, moet u ervoor zorgen dat u over de vereiste machtigingen en resources beschikt.

  • Als u notitieblokken in Microsoft Sentinel wilt gebruiken, moet u ervoor zorgen dat u over de vereiste machtigingen beschikt. Zie Toegang tot Microsoft Sentinel-notitieblokken beheren voor meer informatie.

  • Als u de stappen in dit artikel wilt uitvoeren, hebt u Python 3.6 of hoger nodig. In Azure Machine Learning kunt u een Python 3.8-kernel (aanbevolen) of een Python 3.6-kernel gebruiken.

  • Dit notebook maakt gebruik van de geolocatiezoekservice MaxMind GeoLite2 voor IP-adressen. Als u de MaxMind GeoLite2-service wilt gebruiken, hebt u een accountsleutel nodig. U kunt zich aanmelden voor een gratis account en sleutel op de registratiepagina van Maxmind.

  • Dit notebook maakt gebruik van VirusTotal (VT) als bedreigingsinformatiebron. Als u VirusTotal threat intelligence lookup wilt gebruiken, hebt u een VirusTotal-account en API-sleutel nodig.

    U kunt zich aanmelden voor een gratis VT-account op de pagina Aan de slag met VirusTotal. Als u al een VirusTotal-gebruiker bent, kunt u uw bestaande sleutel gebruiken.

    Waarschuwing

    Als u een VT-bedrijfssleutel gebruikt, slaat u deze op in Azure Key Vault in plaats van het bestand msticpyconfig.yaml . Zie Geheimen opgeven als Key Vault-geheimen in de MSTICPY-documentatie voor meer informatie.

    Als u momenteel geen Azure Key Vault wilt instellen, meldt u zich aan voor en gebruikt u een gratis account totdat u Key Vault-opslag kunt instellen.

Het notitieblok Aan de slag uitvoeren en initialiseren

In deze procedure wordt beschreven hoe u uw notebook start en MSTICpy initialiseert.

  1. Voor Microsoft Sentinel in Azure Portal selecteert u Notebooks onder Bedreigingsbeheer.
    Voor Microsoft Sentinel in de Defender-portal selecteert u Microsoft Sentinel>Threat Management>Notebooks.

  2. Selecteer op het tabblad Sjablonen een introductiehandleiding voor Microsoft Sentinel ML-notebooks.

  3. Selecteer Maken op basis van sjabloon.

  4. Bewerk de naam en selecteer waar nodig de Azure Machine Learning-werkruimte.

  5. Selecteer Opslaan om deze op te slaan in uw Azure Machine Learning-werkruimte.

  6. Selecteer Notebook starten om het notebook uit te voeren. Het notebook bevat een reeks cellen:

    • Markdown-cellen bevatten tekst en afbeeldingen met instructies voor het gebruik van het notitieblok
    • Codecellen bevatten uitvoerbare code waarmee de notebookfuncties worden uitgevoerd
  7. De codecellen op volgorde lezen en uitvoeren. Het overslaan van cellen of het uitlopen van cellen kan later in het notebook fouten veroorzaken.

    Voer elke cel uit door de afspeelknop links van elke cel te selecteren. Afhankelijk van de functie die wordt uitgevoerd, kan de code in de cel snel worden uitgevoerd of kan het enkele seconden duren.

    Wanneer de cel wordt uitgevoerd, verandert de afspeelknop in een laadspinner en wordt onder aan de cel een status Executing weergegeven, samen met de verstreken tijd.

    Als uw notebook niet werkt zoals beschreven, start u de kernel opnieuw en voert u het notebook vanaf het begin uit. Als een cel in het notitieblok Aan de slag bijvoorbeeld langer dan een minuut duurt, start u de kernel opnieuw en voert u het notebook opnieuw uit.

    Het Notebook Aan de slag bevat instructies voor het basisgebruik van Jupyter-notebooks, waaronder het opnieuw opstarten van de Jupyter-kernel.

    Nadat u klaar bent met het lezen en uitvoeren van de cellen in de sectie Wat is een Jupyter Notebook , bent u klaar om de configuratietaken te starten, te beginnen bij het instellen van de sectie Notebook-omgeving .

  8. Voer de eerste codecel uit in de sectie Notebook-omgeving instellen van uw notebook, die de volgende code bevat:

    # 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)
    

    De initialisatiestatus wordt weergegeven in de uitvoer. Configuratiewaarschuwingen over ontbrekende instellingen in het Missing msticpyconfig.yaml bestand worden verwacht omdat u nog niets hebt geconfigureerd.

Uw configuratiebestand maken

Na de basis initialisatie kunt u uw configuratiebestand maken met basisinstellingen voor het werken met MSTICPy.

Veel Microsoft Sentinel-notebooks maken verbinding met externe services zoals VirusTotal (VT) om gegevens te verzamelen en te verrijken. Als u verbinding wilt maken met deze services, moet u configuratiegegevens instellen en opslaan, zoals verificatietokens. Als u deze gegevens in uw configuratiebestand hebt, hoeft u geen verificatietokens en werkruimtegegevens in te voeren telkens wanneer u een notebook gebruikt.

MSTICPy maakt gebruik van een msticpyconfig.yaml voor het opslaan van een breed scala aan configuratiedetails. Standaard wordt een msticpyconfig.yaml-bestand gegenereerd door de initialisatiefunctie van het notebook. Als u dit notitieblok hebt gekloond vanuit de Microsoft Sentinel-portal, wordt het configuratiebestand gevuld met werkruimtegegevens van Microsoft Sentinel. Deze gegevens worden gelezen uit een config.json-bestand dat is gemaakt in de Azure Machine Learning-werkruimte wanneer u uw notebook start. Zie de documentatie voor MSTICPy Package Configuration voor meer informatie.

In de volgende secties wordt beschreven hoe u meer configuratiedetails toevoegt aan het bestand msticpyconfig.yaml .

Als u het notitieblok Aan de slag opnieuw uitvoert en al een minimaal geconfigureerd msticpyconfig.yaml-bestand hebt, overschrijft of wijzigt de init_notebook functie uw bestaande bestand niet.

Selecteer op elk gewenst moment het vervolgkeuzemenu -Help in het hulpprogramma MSTICPy-configuratie voor meer instructies en koppelingen naar gedetailleerde documentatie.

De EDITOR voor MSTICPy-instellingen weergeven

  1. Voer in een codecel de volgende code uit om het MpConfigEdit hulpprogramma te importeren en een instellingeneditor weer te geven voor uw msticpyconfig.yaml-bestand :

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

    Voorbeeld:

    Schermopname van de MSTICPy-instellingeneditor.

    Het automatisch gemaakte msticpyconfig.yaml-bestand , dat wordt weergegeven in de instellingeneditor, bevat twee vermeldingen in de sectie Microsoft Sentinel. Deze worden beide gevuld met details van de Microsoft Sentinel-werkruimte waaruit het notebook is gekloond. De ene vermelding heeft de naam van uw werkruimte en de andere vermelding heeft de naam Standaard.

    Met MSTICPy kunt u configuraties opslaan voor meerdere Microsoft Sentinel-werkruimten en schakelen tussen deze werkruimten. Met de standaardvermelding kunt u standaard verifiëren bij uw 'home'-werkruimte, zonder dat u deze expliciet een naam hoeft te geven. Als u nog een werkruimte toevoegt, kunt u een van deze werkruimten configureren als de standaardvermelding .

    In de Azure Machine Learning-omgeving kan het 10-20 seconden duren voordat de instellingeneditor wordt weergegeven.

  2. Controleer uw huidige instellingen en selecteer Instellingen opslaan.

Instellingen voor bedreigingsinformatieprovider toevoegen

In deze procedure wordt beschreven hoe u uw VirusTotal-API-sleutel opslaat in het bestand msticpyconfig.yaml . U kunt ervoor kiezen om de API-sleutel te uploaden naar Azure Key Vault, maar u moet eerst de Key Vault-instellingen configureren. Zie Key Vault-instellingen configureren voor meer informatie.

Voer de volgende stappen uit om VirusTotal-details toe te voegen in de MSTICPy-instellingeneditor.

  1. Voer de volgende code in een codecel in en voer deze uit:

    mpedit.set_tab("TI Providers")
    mpedit
    
  2. Selecteer op het tabblad TI Providers de optie Add prov>VirusTotal>Add.

  3. Selecteer onder Verificatiesleutel tekst naast de optie Opslag.

  4. Plak uw API-sleutel in het veld Waarde .

  5. Selecteer Bijwerken en selecteer vervolgens Instellingen onder aan de instellingeneditor opslaan.

Zie bedreigingsinformatieproviders in de MSTICPy-documentatie en integratie van bedreigingsinformatie in Microsoft Sentinel voor meer informatie over andere ondersteunde bedreigingsinformatieproviders.

GeoIP-providerinstellingen toevoegen

In deze procedure wordt beschreven hoe u een MaxMind GeoLite2-accountsleutel opslaat in het bestand msticpyconfig.yaml , waarmee uw notebook geolocatiezoekservices voor IP-adressen kan gebruiken.

Voer de volgende stappen uit om GeoIP-providerinstellingen toe te voegen in de MSTICPy-instellingeneditor.

  1. Voer de volgende code in een lege codecel in en voer deze uit:

    mpedit.set_tab("GeoIP Providers")
    mpedit
    
  2. Selecteer op het tabblad GeoIP-providers de optie Add prov>GeoIPLite>Add.

  3. Voer in het veld Waarde uw MaxMind-accountsleutel in.

  4. Werk indien nodig de standaardmap ~/.msticpy bij voor het opslaan van de gedownloade GeoIP-database.

    • In Windows wordt deze map toegewezen aan % USERPROFILE%/.msticpy.
    • In Linux of macOS wordt dit pad toegewezen aan de map .msticpy in uw basismap.

Zie de documentatie van MSTICPy GeoIP-providers voor meer informatie over andere ondersteunde geolocatiezoekservices.

Azure Cloud-instellingen configureren

Als uw organisatie de openbare Azure-cloud niet gebruikt, moet u dit opgeven in uw instellingen om gegevens van Microsoft Sentinel en Azure te verifiëren en te gebruiken. Zie De Azure-cloud en de standaardmethoden voor Azure-verificatie opgeven voor meer informatie.

Instellingen valideren

  1. Selecteer Instellingen valideren in de instellingeneditor.

    Waarschuwingsberichten over ontbrekende configuraties worden verwacht, maar u hebt geen instellingen voor bedreigingsinformatieprovider of GeoIP-provider.

  2. Afhankelijk van uw omgeving moet u mogelijk ook Key Vault-instellingen configureren of de Azure-cloud opgeven.

  3. Als u wijzigingen wilt aanbrengen vanwege de validatie, moet u deze wijzigingen aanbrengen en vervolgens Opslaan Instellingen selecteren.

  4. Wanneer u klaar bent, selecteert u de knop Sluiten om de validatie-uitvoer te verbergen.

Zie voor meer informatie: Geavanceerde configuraties voor Jupyter-notebooks en MSTICPy in Microsoft Sentinel

Opgeslagen MSTICPy-instellingen laden

In de procedure Uw configuratiebestand maken hebt u uw instellingen opgeslagen in uw lokale msticpyconfig.yaml-bestand .

MSTICPy laadt deze instellingen echter pas automatisch opnieuw totdat u de kernel opnieuw opstart of een ander notebook uitvoert. Als u wilt afdwingen dat MSTICPy opnieuw wordt geladen vanuit het nieuwe configuratiebestand, gaat u verder met de volgende codecel, met de volgende code en voert u deze uit:

import msticpy
msticpy.settings.refresh_config()

Uw notebook testen

Nu u uw omgeving hebt geïnitialiseerd en basisinstellingen voor uw werkruimte hebt geconfigureerd, gebruikt u de MSTICPy-klasse QueryProvider om het notebook te testen. QueryProvider voert een query uit op een gegevensbron, in dit geval uw Microsoft Sentinel-werkruimte en maakt de opgevraagde gegevens beschikbaar voor weergave en analyse in uw notitieblok.

Gebruik de volgende procedures om een exemplaar van de QueryProvider klasse te maken, te verifiëren bij Microsoft Sentinel vanuit uw notebook en query's met verschillende parameteropties weer te geven en uit te voeren.

U kunt meerdere exemplaren QueryProvider van laden voor gebruik met meerdere Microsoft Sentinel-werkruimten of andere gegevensproviders, zoals Microsoft Defender voor Eindpunt.

QueryProvider laden

Als u de QueryProvider for AzureSentinelwilt laden, gaat u naar de cel met de volgende code en voert u deze uit:

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

Als u een waarschuwing Runtime dependency of PyGObject is missing ziet bij het laden van het Microsoft Sentinel-stuurprogramma, raadpleegt u de fout: Runtime-afhankelijkheid van PyGObject ontbreekt. Deze waarschuwing heeft geen invloed op de functionaliteit van het notitieblok.

Verifiëren bij uw Microsoft Sentinel-werkruimte vanuit uw notitieblok

In Azure Machine Learning-notebooks wordt de verificatie standaard gebruikt met de referenties die u hebt gebruikt om te verifiëren bij de Azure Machine Learning-werkruimte.

Verifieer met beheerde identiteit door de volgende stappen uit te voeren.

  1. Voer de volgende code uit om te verifiëren bij uw Sentinel-werkruimte.

    # 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. Controleer de uitvoer. De weergegeven uitvoer is vergelijkbaar met de volgende afbeelding.

    Schermopname van verificatie bij Azure die eindigt op een verbonden bericht.

Uw aanmeldingstoken in de cache opslaan met behulp van Azure CLI

Om te voorkomen dat u zich opnieuw moet verifiëren als u de kernel opnieuw opstart of een andere notebook uitvoert, kunt u uw aanmeldingstoken in de cache opslaan met behulp van Azure CLI.

Het Azure CLI-onderdeel in het rekenproces slaat een vernieuwingstoken op dat opnieuw kan worden gebruikt totdat er een time-out optreedt voor het token. MSTICPy gebruikt automatisch Azure CLI-referenties als deze beschikbaar zijn.

Als u wilt verifiëren met behulp van Azure CLI, voert u de volgende opdracht in een lege cel in en voert u deze uit:

!az login

U moet opnieuw verifiëren als u uw rekenproces opnieuw start of naar een ander exemplaar overschakelt. Zie de sectie Referenties in cache opslaan met Azure CLI in de gitHub-opslagplaatswiki van Microsoft Sentinel Notebooks voor meer informatie.

Het gegevensschema van de Microsoft Sentinel-werkruimte en ingebouwde MSTICPy-query's weergeven

Nadat u verbinding hebt gemaakt met een Microsoft Sentinel QueryProvider, kunt u de typen gegevens begrijpen die beschikbaar zijn voor query's door een query uit te voeren op het gegevensschema van de Microsoft Sentinel-werkruimte.

Microsoft Sentinel QueryProvider heeft een schema_tables eigenschap, waarmee u een lijst met schematabellen en een schema eigenschap krijgt, die ook de kolomnamen en gegevenstypen voor elke tabel bevat.

De eerste tien tabellen in het Microsoft Sentinel-schema weergeven:

Ga door naar de volgende cel, met de volgende code en voer deze uit. U kunt de lijst [:10] met alle tabellen in uw werkruimte weglaten.

# 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

De volgende uitvoer wordt weergegeven:

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

MSTICPy bevat ook veel ingebouwde query's die u kunt uitvoeren. Vermeld beschikbare query's met .list_queries()en krijg specifieke details over een query door deze aan te roepen met een vraagteken (?) dat is opgenomen als parameter. U kunt ook de lijst met query's en de bijbehorende help bekijken in de querybrowser.

Een voorbeeld van beschikbare query's weergeven:

  1. Ga door naar de volgende cel, met de volgende code en voer deze uit. U kunt de [::5] lijst met alle query's weglaten.

    # Get a sample of available queries
    print(qry_prov.list_queries()[::5])  # showing a sample - remove "[::5]" for whole list
    
  2. Controleer de uitvoer.

    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. Als u hulp wilt krijgen over een query door te geven ? als een parameter:

    # Get help about a query by passing "?" as a parameter
    qry_prov.Azure.list_all_signins_geo("?")
    
  4. Controleer de uitvoer.

    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. Als u zowel tabellen als query's in een schuifbare, filterbare lijst wilt weergeven, gaat u verder met de volgende cel, met de volgende code en voert u deze uit.

    qry_prov.browse_queries()
    
  6. Voor de geselecteerde query worden alle vereiste en optionele parameters weergegeven, samen met de volledige tekst van de query. Voorbeeld:

    Schermopname van tabellen en query's die worden weergegeven in een bladerbare, filterbare lijst.

Hoewel u geen query's vanuit de browser kunt uitvoeren, kunt u het voorbeeld aan het einde van elke query kopiëren en plakken om ergens anders in het notebook uit te voeren.

Zie Een vooraf gedefinieerde query uitvoeren in de MSTICPy-documentatie voor meer informatie.

Query's uitvoeren met tijdparameters

Voor de meeste query's zijn tijdparameters vereist. Datum-/tijdtekenreeksen zijn vervelend om in te typen en ze op meerdere plaatsen te wijzigen, kunnen foutgevoelig zijn.

Elke queryprovider heeft standaard parameters voor begin- en eindtijd voor query's. Deze tijdparameters worden standaard gebruikt wanneer tijdparameters worden aangeroepen. U kunt het standaardtijdbereik wijzigen door het query_time besturingselement te openen. De wijzigingen blijven van kracht totdat u ze opnieuw wijzigt.

  1. Ga door naar de volgende cel, met de volgende code en voer deze uit:

    # Open the query time control for your query provider
    qry_prov.query_time
    
  2. Stel de start en end tijden in waar nodig. Voorbeeld:

    Schermopname van het instellen van standaardtijdparameters voor query's.

Een query uitvoeren met behulp van het ingebouwde tijdsbereik

Queryresultaten worden geretourneerd als een Pandas DataFrame, een gegevensstructuur in tabelvorm, zoals een spreadsheet of databasetabel. Gebruik pandas-functies om extra filters en analyses uit te voeren op de queryresultaten.

  1. Voer de volgende codecel uit. Er wordt een query uitgevoerd met behulp van de standaardtijdinstellingen van de queryprovider. U kunt dit bereik wijzigen en de codecel opnieuw uitvoeren om een query uit te voeren voor het nieuwe tijdsbereik.

    # 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. Controleer de uitvoer. De eerste vijf rijen met resultaten worden weergegeven. Voorbeeld:

    Schermopname van een queryuitvoering met het ingebouwde tijdsbereik.

    Als er geen gegevens zijn, worden alleen de kolomkoppen weergegeven.

Een query uitvoeren met een aangepast tijdsbereik

U kunt ook een nieuw querytijdobject maken en doorgeven aan een query als parameter. Hiermee kunt u een eenmalige query uitvoeren voor een ander tijdsbereik, zonder dat dit van invloed is op de standaardinstellingen van de queryprovider.

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

Nadat u het gewenste tijdsbereik hebt ingesteld, kunt u het tijdsbereik doorgeven aan de queryfunctie, waarbij u de volgende code uitvoert in een afzonderlijke cel van de vorige code:

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

U kunt ook datum/tijd-waarden doorgeven als Python-datum/tijd-tekenreeksen met behulp van de start en end parameters:

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)

Uw query's aanpassen

U kunt de ingebouwde query's aanpassen door meer querylogica toe te voegen of volledige query's uit te voeren met behulp van de exec_query functie.

De meeste ingebouwde query's ondersteunen bijvoorbeeld de add_query_items parameter, die u kunt gebruiken om filters of andere bewerkingen toe te voegen aan de query's.

  1. Voer de volgende codecel uit om een gegevensframe toe te voegen dat het aantal waarschuwingen op waarschuwingsnaam samenvat:

    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. Geef een volledige Kusto-querytaal (KQL)-querytekenreeks door aan de queryprovider. De query wordt uitgevoerd op de verbonden werkruimte en de gegevens worden geretourneerd als een Panda DataFrame. Run:

    # 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())
    
    

Zie voor meer informatie:

VirusTotal testen

  1. Als u bedreigingsinformatie wilt gebruiken om te zien of een IP-adres wordt weergegeven in VirusTotal-gegevens, voert u de cel uit met de volgende code:

    # 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. Controleer de uitvoer. Voorbeeld:

    Schermopname van een IP-adres dat wordt weergegeven in VirusTotal-gegevens.

  3. Schuif omlaag om de volledige resultaten weer te geven.

Zie Threat Intel Lookups in MSTICPy voor meer informatie.

Ip-zoekactie voor geolocatie testen

  1. Als u geolocatiegegevens voor een IP-adres wilt ophalen met behulp van de MaxMind-service, voert u de cel uit met de volgende code:

    # 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. Controleer de uitvoer. Voorbeeld:

    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()}
    

De eerste keer dat u deze code uitvoert, ziet u dat het GeoLite-stuurprogramma de database downloadt.

Zie MSTICPy GeoIP-providers voor meer informatie.

Key Vault-instellingen configureren

Deze sectie is alleen relevant wanneer u geheimen opslaat in Azure Key Vault.

Wanneer u geheimen opslaat in Azure Key Vault, moet u de Key Vault eerst maken in de globale Azure KeyVault-beheerportal.

Vereiste instellingen zijn alle waarden die u ophaalt uit de kluiseigenschappen, hoewel sommige mogelijk andere namen hebben. Voorbeeld:

  • VaultName wordt linksboven in het scherm Eigenschappen van Azure Key Vault weergegeven
  • TenantId wordt weergegeven als map-id
  • AzureRegion wordt weergegeven als Locatie
  • Autoriteit is de cloud voor uw Azure-service.

Alleen VaultName-, TenantId- en Authority-waarden zijn vereist voor het ophalen van geheimen uit de kluis. De andere waarden zijn nodig als u ervoor kiest om een kluis te maken op basis van MSTICPy. Zie Geheimen opgeven als Key Vault-geheimen voor meer informatie.

De optie KeyRing gebruiken is standaard geselecteerd en hiermee kunt u Key Vault-referenties opslaan in een lokale sleutelring. Zie de KeyRing-documentatie voor meer informatie.

Let op

Gebruik de optie Sleutelring gebruiken niet als u de host Compute waarop het notebook wordt uitgevoerd niet volledig vertrouwt.

In ons geval is de berekening de Jupyter-hubserver, waarop de notebook-kernel wordt uitgevoerd, en niet noodzakelijkerwijs de computer waarop uw browser wordt uitgevoerd. Als u Azure ML gebruikt, is de rekenkracht het Azure ML Compute-exemplaar dat u hebt geselecteerd. Met sleutelhanger wordt cache op de host uitgevoerd waarop de notebook-kernel wordt uitgevoerd.

Voer de volgende stappen uit om Key Vault-instellingen toe te voegen in de MSTICPy-instellingeneditor.

  1. Ga door naar de volgende cel, met de volgende code en voer deze uit:

    mpedit.set_tab("Key Vault")
    mpedit
    
  2. Voer de kluisgegevens voor uw Sleutelkluis in. Voorbeeld:

    Schermopname van de sectie Key Vault-installatie

  3. Selecteer Opslaan en vervolgens Instellingen opslaan.

Key Vault testen

Als u uw sleutelkluis wilt testen, controleert u of u verbinding kunt maken en uw geheimen kunt bekijken. Als u geen geheim hebt toegevoegd, ziet u geen details. Als dat nodig is, voegt u een testgeheim vanuit de Azure Key Vault-portal toe aan de kluis en controleert u of dit wordt weergegeven in Microsoft Sentinel.

Voorbeeld:

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

Let op

Laat de uitvoer niet weergegeven in uw opgeslagen notitieblok. Als de uitvoer echte geheimen bevat, gebruikt u de uitvoeropdracht Wissen van het notitieblok voordat u het notitieblok opslaat.

Verwijder ook kopieën in de cache van het notebook. Zoek bijvoorbeeld in de .ipynb_checkpoints submap van uw notitieblokmap en verwijder eventuele kopieën van dit notitieblok. Als u het notitieblok opslaat met een uitgeschakelde uitvoer, moet de kopie van het controlepunt worden overschreven.

Nadat u Key Vault hebt geconfigureerd, kunt u de knop Uploaden naar KV in de secties Gegevensproviders en TI-providers gebruiken om de geselecteerde instelling naar de kluis te verplaatsen. MSTICPy genereert een standaardnaam voor het geheim op basis van het pad van de instelling, zoals TIProviders-VirusTotal-Args-AuthKey.

Als de waarde is geüpload, wordt de inhoud van het veld Waarde in de instellingeneditor verwijderd en wordt de onderliggende instelling vervangen door een tijdelijke aanduidingswaarde. MSTICPy gebruikt deze waarde om aan te geven dat het sleutelkluispad automatisch moet worden gegenereerd bij het ophalen van de sleutel.

Als u de vereiste geheimen al in een sleutelkluis hebt opgeslagen, kunt u de geheime naam invoeren in het veld Waarde . Als het geheim niet is opgeslagen in uw standaardkluis (de waarden die zijn opgegeven in de sectie Key Vault ), kunt u een pad van VaultName/SecretName opgeven.

Het ophalen van instellingen uit een kluis in een andere tenant wordt momenteel niet ondersteund. Zie Geheimen opgeven als Key Vault-geheimen voor meer informatie.

De Azure-cloud- en Azure-verificatiemethoden opgeven

Als u een onafhankelijke of overheidscloud van Azure gebruikt in plaats van de openbare of globale Azure-cloud, moet u de juiste cloud selecteren in uw instellingen. Voor de meeste organisaties is de globale cloud de standaardcloud.

U kunt deze Azure-instellingen ook gebruiken om standaardvoorkeuren voor het Azure-verificatietype te definiëren.

Voer de volgende stappen uit om azure-cloud- en Azure-verificatiemethoden op te geven.

  1. Ga door naar de volgende cel, met de volgende code en voer deze uit:

    mpedit.set_tab("Azure")
    mpedit
    
  2. Selecteer de cloud die door uw organisatie wordt gebruikt of laat de standaard geselecteerde globale optie staan.

  3. Selecteer een of meer van de volgende methoden:

    • env om uw Azure-referenties op te slaan in omgevingsvariabelen.
    • msi voor het gebruik van Managed Service Identity, een identiteit die is toegewezen aan de host of virtuele machine waarop de Jupyter-hub wordt uitgevoerd. MSI wordt momenteel niet ondersteund in Azure Machine Learning Compute-exemplaren.
    • cli om referenties te gebruiken vanuit een geverifieerde Azure CLI-sessie.
    • interactief om de interactieve apparaatautorisatiestroom te gebruiken met behulp van een eenmalige apparaatcode.

    In de meeste gevallen wordt u aangeraden meerdere methoden te selecteren, zoals cli en interactief. Azure-verificatie probeert elk van de geconfigureerde methoden in de vermelde volgorde totdat één methode slaagt.

  4. Selecteer Opslaan en vervolgens Instellingen opslaan.

    Voorbeeld:

    Schermopname van de instellingen die zijn gedefinieerd voor de Azure Government-cloud.

Volgende stappen

In dit artikel worden de basisprincipes beschreven van het gebruik van MSTICPy met Jupyter-notebooks in Microsoft Sentinel. Zie Geavanceerde configuraties voor Jupyter-notebooks en MSTICPy in Microsoft Sentinel voor meer informatie.

U kunt ook andere notebooks uitproberen die zijn opgeslagen in de GitHub-opslagplaats van Microsoft Sentinel Notebooks, zoals:

Als u het notebook gebruikt dat in dit artikel in een andere Jupyter-omgeving wordt beschreven, kunt u elke kernel gebruiken die Ondersteuning biedt voor Python 3.6 of hoger.

Als u MSTICPy-notebooks buiten Microsoft Sentinel en Azure Machine Learning (ML) wilt gebruiken, moet u ook uw Python-omgeving configureren. Installeer Python 3.6 of hoger met de Anaconda-distributie, die veel van de vereiste pakketten bevat.

Meer informatie over MSTICPy en notebooks

De volgende tabel bevat meer verwijzingen voor meer informatie over MSTICPy-, Microsoft Sentinel- en Jupyter-notebooks.

Onderwerp Meer verwijzingen
MSTICPy - CONFIGURATIE VAN MSTICPy-pakket
- MSTICPy Instellingen Editor
- Uw notebookomgeving configureren.
- MP Instellingen Editor notebook.

Opmerking: De Azure-Sentinel-Notebooks GitHub-opslagplaats bevat ook een sjabloon msticpyconfig.yaml-bestand met uitgecommentareerde secties, wat u kan helpen de instellingen te begrijpen.
Microsoft Sentinel- en Jupyter-notebooks - Uw eerste Microsoft Sentinel-notitieblok maken (blogreeks)
- Jupyter Notebooks: Een inleiding
- MSTICPy-documentatie
- Documentatie voor Microsoft Sentinel Notebooks
- Het Infosec Jupyterbook
- Overzicht van Linux Host Explorer Notebook
- Waarom Jupyter gebruiken voor beveiligingsonderzoeken
- Beveiligingsonderzoeken met Microsoft Sentinel & Notebooks
- Documentatie voor Pandas
- Documentatie voor Sdk