Condividi tramite


Introduzione ai notebook di Jupyter e MSTICPy in Microsoft Sentinel

Questo articolo descrive come eseguire il notebook Guida introduttiva notebook di Microsoft Sentinel ML, che imposta le configurazioni di base per l'esecuzione di notebook Jupyter in Microsoft Sentinel e l’esecuzione di query di dati semplici.

Il notebook Guida introduttiva notebook di Microsoft Sentinel ML usa MSTICPy, una libreria Python di strumenti di cybersecurity compilata da Microsoft, che fornisce funzionalità di ricerca e analisi delle minacce.

MSTICPy riduce la quantità di codice che i clienti devono scrivere per Microsoft Sentinel e fornisce:

  • Funzionalità di query dei dati, su tabelle di Microsoft Sentinel, Microsoft Defender per endpoint, Splunk e altre origini dati.
  • Ricerche di intelligence sulle minacce con provider TI, ad esempio VirusTotal e AlienVault OTX.
  • Funzioni di arricchimento come la georilevazione degli indirizzi IP, l'estrazione dell’indicatore di compromissione (IoC) e le ricerche di WhoIs.
  • Strumenti di visualizzazione che usano sequenze temporali degli eventi, alberi di elaborazione e mapping geografico.
  • Analisi avanzate, ad esempio la scomposizione di serie temporali, il rilevamento anomalie e il clustering.

I passaggi descritti in questo articolo descrivono come eseguire il notebook Guida introduttiva notebook di Microsoft Sentinel MLnotebook nell'area di lavoro di Azure Machine Learning tramite Microsoft Sentinel. È anche possibile usare questo articolo come materiale sussidiario per eseguire passaggi simili per l’esecuzione di notebook in altri ambienti, tra cui in locale.

Per altre informazioni, vedere Usare notebook per potenziare le indagini e Usare notebook di Jupyter per cercare minacce alla sicurezza.

Diversi notebook di Microsoft Sentinel non usano MSTICPy, ad esempio i notebook Scanner di credenziali o gli esempi di PowerShell e C#. I notebook che non usano MSTICpy non necessitano della configurazione MSTICPy descritta in questo articolo.

Importante

Microsoft Sentinel è disponibile al pubblico nel portale di Microsoft Defender nella della piattaforma operativa di sicurezza unificata Microsoft. Per altre informazioni, vedere Microsoft Sentinel nel portale di Microsoft Defender.

Prerequisiti

Prima di iniziare, assicurarsi di disporre delle autorizzazioni e delle risorse necessarie.

  • Per usare i notebook in Microsoft Sentinel, assicurarsi di disporre delle autorizzazioni necessarie. Per altre informazioni, vedere Gestire l'accesso ai notebook di Microsoft Sentinel.

  • Per eseguire i passaggi descritti in questo articolo, è necessario Python 3.6 o versione successiva. In Azure Machine Learning è possibile usare un kernel Python 3.8 (scelta consigliata) o un kernel Python 3.6.

  • Questo notebook usa il servizio di ricerca della georilevazione per gli indirizzi IP MaxMind GeoLite2. Per usare il servizio MaxMind GeoLite2, è necessaria una chiave dell'account. È possibile iscriversi per ottenere un account gratuito e una chiave nella pagina di iscrizione Maxmind.

  • Questo notebook usa VirusTotal (VT) come origine di intelligence sulle minacce. Per usare la ricerca di intelligence sulle minacce VirusTotal, sono necessari un account VirusTotal e una chiave API.

    È possibile iscriversi per ottenere un account VT gratuito nella pagina introduttiva VirusTotal. Se si è già un utente VirusTotal, è possibile usare la chiave esistente.

    Avviso

    Se si usa una chiave aziendale VT, archiviarla in Azure Key Vault invece del file msticpyconfig.yaml. Per altre informazioni, vedere Specificare i segreti come segreti di Key Vault nella documentazione di MSTICPY.

    Se non si vuole configurare un insieme di credenziali delle chiavi di Azure al momento, iscriversi e usare un account gratuito fino a quando non è possibile configurare l'archiviazione di Key Vault.

Eseguire e inizializzare il notebook della Guida introduttiva

Questa procedura descrive come avviare il notebook e inizializzare MSTICpy.

  1. Per Microsoft Sentinel nel portale di Azure, in Gestione delle minacce, selezionare Notebook.
    Per Microsoft Sentinel nel portale di Defender, selezionare Microsoft Sentinel>Gestione delle minacce>Notebooks.

  2. Nella scheda Modelli selezionare Guida introduttiva per i notebook di Microsoft Sentinel ML.

  3. Selezionare Crea dal modello.

  4. Modificare il nome e selezionare l'area di lavoro di Azure Machine Learning in base alle esigenze.

  5. Selezionare Salva per salvarlo nell'area di lavoro di Azure Machine Learning.

  6. Selezionare Avvia notebook per eseguire il notebook. Il notebook contiene una serie di celle:

    • Celle markdown contengono testo e grafica con istruzioni per l'uso del notebook
    • Celle di codice contengono codice eseguibile che esegue le funzioni del notebook
  7. Leggere ed eseguire le celle di codice in ordine. Saltare le celle o eseguirle in ordine sparso potrebbe causare errori più avanti nel notebook.

    Eseguire ogni cella selezionando il pulsante di riproduzione a sinistra della stessa. A seconda della funzione eseguita, il codice nella cella potrebbe essere eseguito rapidamente o il completamento potrebbe richiedere alcuni secondi.

    Quando la cella è in esecuzione, il pulsante di riproduzione diventa una rotellina di caricamento e lo stato di Executing viene visualizzato nella parte inferiore della cella, insieme al tempo trascorso.

    Se il notebook non sembra funzionare come descritto, riavviare il kernel ed eseguire il notebook dall'inizio. Ad esempio, se una cella del notebook della Guida introduttiva richiede più di un minuto, provare a riavviare il kernel ed eseguire nuovamente il notebook.

    Il notebook Guida introduttiva include le istruzioni per l'uso di base dei notebook di Jupyter, incluso il riavvio del kernel Jupyter.

    Dopo aver completato la lettura e l'esecuzione delle celle nella sezione Cos’è un notebook Jupyter, è possibile iniziare le attività di configurazione, a partire dalla sezione Impostazione dell'ambiente del notebook.

  8. Eseguire la prima cella di codice nella sezione del notebook Impostazione dell'ambiente del notebook, che include il codice seguente:

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

    Lo stato di inizializzazione viene visualizzato nell'output. Gli avvisi di configurazione relativi alle impostazioni mancanti nel file Missing msticpyconfig.yaml sono previsti perché non sono ancora stati configurati elementi.

Creare il file di configurazione

Dopo l'inizializzazione di base, è possibile creare il file di configurazione con le impostazioni di base per l'uso di MSTICPy.

Molti notebook di Microsoft Sentinel si connettono a servizi esterni, ad esempio VirusTotal (VT) per raccogliere e arricchire i dati. Per connettersi a questi servizi è necessario impostare e archiviare i dettagli di configurazione, ad esempio i token di autenticazione. La presenza di questi dati nel file di configurazione evita di dover digitare i token di autenticazione e i dettagli dell'area di lavoro ogni volta che si usa un notebook.

MSTICPy usa un msticpyconfig.yaml per archiviare un'ampia gamma di dettagli di configurazione. Per impostazione predefinita, un file msticpyconfig.yaml viene generato dalla funzione di inizializzazione del notebook. Se si clona questo notebook dal portale di Microsoft Sentinel, il file di configurazione viene popolato con i dati dell'area di lavoro di Microsoft Sentinel. Questi dati vengono letti da un file config.json, creato nell'area di lavoro di Azure Machine Learning quando si avvia il notebook. Per altre informazioni, vedere la documentazione di configurazione del pacchetto MSTICPy.

Le sezioni seguenti descrivono come aggiungere altri dettagli di configurazione al file msticpyconfig.yaml.

Se si esegue di nuovo il notebook Guida introduttiva e si dispone già di un file msticpyconfig.yaml, la funzione init_notebook non sovrascrive o modifica il file esistente.

In qualsiasi momento, selezionare il menu a discesa -Guida nello strumento di configurazione MSTICPy per altre istruzioni e collegamenti alla documentazione dettagliata.

Visualizzare l'editor delle impostazioni MSTICPy

  1. In una cella di codice eseguire il codice seguente per importare lo strumento MpConfigEdit e visualizzare un editor delle impostazioni per il file msticpyconfig.yaml:

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

    Ad esempio:

    Screenshot dell'editor delle impostazioni MSTICPy.

    Il file creato automaticamente msticpyconfig.yaml, illustrato nell'editor delle impostazioni, contiene due voci nella sezione Microsoft Sentinel. Entrambi vengono popolati con i dettagli dell'area di lavoro di Microsoft Sentinel da cui è stato clonato il notebook. Una voce ha il nome dell'area di lavoro e l'altra è denominata Predefinita.

    MSTICPy consente di archiviare le configurazioni per più aree di lavoro di Microsoft Sentinel e passare da un'area di lavoro all'altra. La voce Predefinita consente di eseguire l'autenticazione nell'area di lavoro "home" per impostazione predefinita, senza dover assegnarne il nome in modo esplicito. Se si aggiungono altre aree di lavoro, è possibile configurare una di esse in modo che sia la voce Predefinita.

    Nell'ambiente Azure Machine Learning, per comparire l'editor delle impostazioni potrebbe richiedere 10-20 secondi.

  2. Verificare le impostazioni correnti e selezionare Salva impostazioni.

Aggiungere impostazioni del provider di intelligence sulle minacce

Questa procedura descrive come archiviare la chiave API VirusTotal nel file msticpyconfig.yaml. È possibile scegliere di caricare la chiave API in Azure Key Vault, ma è prima necessario configurare le impostazioni di Key Vault. Per altre informazioni, vedere Configurare le impostazioni di Key Vault.

Per aggiungere i dettagli di VirusTotal nell'editor delle impostazioni MSTICPy, seguire questa procedura.

  1. Immettere il codice seguente in una cella di codice ed eseguire:

    mpedit.set_tab("TI Providers")
    mpedit
    
  2. Nella scheda provider TI selezionare Aggiungi prov>VirusTotal>Aggiungi.

  3. In chiave di autenticazione selezionare testo accanto all'opzione Archiviazione.

  4. Nel campo valore incollare la chiave API.

  5. Selezionare Aggiorna e quindi selezionare Salva impostazioni nella parte inferiore dell'editor delle impostazioni.

Per altre informazioni su altri provider di intelligence sulle minacce supportati, vedere provider di intelligence sulle minacce nella documentazione di MSTICPy e l'integrazione di Intelligence sulle minacce in Microsoft Sentinel.

Aggiungere le impostazioni del provider GeoIP

Questa procedura descrive come archiviare una chiave dell'account MaxMind GeoLite2 nel file msticpyconfig.yaml, che consente al notebook di usare i servizi di ricerca della georilevazione per gli indirizzi IP.

Per aggiungere le impostazioni del provider GeoIP nell'editor delle impostazioni MSTICPy, seguire questa procedura.

  1. Immettere il codice seguente in una cella di codice vuota ed eseguire:

    mpedit.set_tab("GeoIP Providers")
    mpedit
    
  2. Nella scheda provider GeoIP selezionare Aggiungi prov>GeoIPLite>Aggiungi.

  3. Nel campo Valore immettere la chiave dell'account MaxMind.

  4. Se necessario, aggiornare la cartella ~/.msticpy predefinita per archiviare il database GeoIP scaricato.

    • In Windows, questa cartella viene mappata al %USERPROFILE%/.msticpy.
    • In Linux o macOS questo percorso viene mappato alla cartella .msticpy nella home directory.

Per altre informazioni su altri servizi di ricerca della georilevazione supportati, vedere la documentazione provider geoIP MSTICPy.

Configurare le impostazioni del cloud di Azure

Se l'organizzazione non usa il cloud pubblico di Azure, è necessario specificarlo nelle impostazioni per autenticare e usare correttamente i dati di Microsoft Sentinel e Azure. Per altre informazioni, vedere Specificare il cloud di Azure e i metodi di autenticazione di Azure predefiniti.

Convalidare le impostazioni

  1. Selezionare Convalida impostazioni nell'editor delle impostazioni.

    Sono previsti messaggi di avviso relativi alle configurazioni mancanti, ma non è necessario disporre di alcuna impostazione per il provider di intelligence sulle minacce o il provider GeoIP.

  2. A seconda dell'ambiente, potrebbe anche essere necessario Configurare le impostazioni di Key Vault o Specificare il cloud di Azure.

  3. Se è necessario apportare modifiche a causa della convalida, apportare tali modifiche e quindi selezionare Salva impostazioni.

  4. Al termine, selezionare il pulsante Chiudi per nascondere l'output di convalida.

Per altre informazioni, vedere: Configurazioni avanzate per notebook di Jupyter e MSTICPy in Microsoft Sentinel

Caricare le impostazioni MSTICPy salvate

Nella procedura Creare il file di configurazione sono state salvate le impostazioni nel file locale msticpyconfig.yaml.

Tuttavia, MSTICPy non ricarica automaticamente queste impostazioni finché non si riavvia il kernel o si esegue un altro notebook. Per forzare il ricaricamento di MSTICPy dal nuovo file di configurazione, passare alla cella di codice successiva, con il codice seguente ed eseguirlo:

import msticpy
msticpy.settings.refresh_config()

Testare il notebook

Dopo aver inizializzato l'ambiente e configurato le impostazioni di base per l'area di lavoro, usare la classe QueryProvider MSTICPy per testare il notebook. QueryProvider esegue query su un'origine dati, in questo caso l'area di lavoro di Microsoft Sentinel e rende disponibili i dati sottoposti a query per visualizzare e analizzare nel notebook.

Usare le procedure seguenti per creare un'istanza della classe QueryProvider, eseguire l'autenticazione a Microsoft Sentinel dal notebook e visualizzare ed eseguire query con diverse opzioni di parametro.

È possibile caricare più istanze di QueryProvider per l'uso con più aree di lavoro di Microsoft Sentinel o altri provider di dati, ad esempio Microsoft Defender per endpoint.

Caricare il QueryProvider

Per caricare il QueryProvider per AzureSentinel, passare alla cella con il codice seguente ed eseguirlo:

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

Se viene visualizzato un avviso Runtime dependency of PyGObject is missing durante il caricamento del driver di Microsoft Sentinel, vedere l'Errore: dipendenza runtime di PyGObject mancante. Questo avviso non influisce sulla funzionalità del notebook.

Eseguire l'autenticazione nell'area di lavoro di Microsoft Sentinel dal notebook

Nei notebook di Azure Machine Learning l'autenticazione usa per impostazione predefinita le credenziali usate per l'autenticazione nell'area di lavoro di Azure Machine Learning.

Eseguire l'autenticazione usando l'identità gestita completando i passaggi seguenti.

  1. Eseguire il codice seguente per effettuare l'autenticazione nell'area di lavoro di Sentinel.

    # 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. Esaminare l'output. L'output visualizzato è simile all'immagine seguente.

    Screenshot che mostra l'autenticazione in Azure che termina con un messaggio connesso.

Memorizzare nella cache il token di accesso usando l'interfaccia della riga di comando di Azure

Per evitare di dover ripetere l'autenticazione se si riavvia il kernel o si esegue un altro notebook, è possibile memorizzare nella cache il token di accesso usando l'interfaccia della riga di comando di Azure.

Il componente dell'interfaccia della riga di comando di Azure nell'istanza di calcolo memorizza nella cache un token di aggiornamento che può riutilizzare fino al timeout del token. MSTICPy usa automaticamente le credenziali dell'interfaccia della riga di comando di Azure, se disponibili.

Per eseguire l'autenticazione con l'interfaccia della riga di comando di Azure, immettere il comando seguente in una cella vuota ed eseguirlo:

!az login

È necessario ripetere l'autenticazione se si riavvia l'istanza di calcolo o si passa a un'istanza diversa. Per altre informazioni, vedere la sezione Memorizzazione nella cache delle credenziali con l'interfaccia della riga di comando di Azure nel wiki del repository GitHub dei notebook di Microsoft Sentinel.

Visualizzare lo schema dei dati dell'area di lavoro di Microsoft Sentinel e le query MSTICPy predefinite

Dopo aver eseguito la connessione a un oggetto QueryProvider di Microsoft Sentinel, è possibile comprendere i tipi di dati disponibili per l'esecuzione di query eseguendo una query sullo schema dei dati dell'area di lavoro di Microsoft Sentinel.

Microsoft Sentinel QueryProvider ha una proprietà schema_tables, che fornisce un elenco di tabelle dello schema, e una proprietà schema, che include anche i nomi delle colonne e i tipi di dati per ogni tabella.

Per visualizzare le prime 10 tabelle nello schema di Microsoft Sentinel:

Passare alla cella successiva, con il codice seguente ed eseguirlo. È possibile omettere il [:10] per elencare tutte le tabelle nell'area di lavoro.

# 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

Viene visualizzato l'output seguente:

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

MSTICPy include anche molte query predefinite disponibili per l'esecuzione. Elencare le query disponibili con .list_queries() e ottenere dettagli specifici su una query chiamandola con un punto interrogativo (?) incluso come parametro. In alternativa, è possibile visualizzare l'elenco delle query e la Guida associata nel browser di query.

Per visualizzare un esempio di query disponibili:

  1. Passare alla cella successiva, con il codice seguente ed eseguirlo. È possibile omettere il [::5] per elencare tutte le query.

    # Get a sample of available queries
    print(qry_prov.list_queries()[::5])  # showing a sample - remove "[::5]" for whole list
    
  2. Esaminare l'output.

    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. Per ottenere informazioni su una query passando ? come parametro:

    # Get help about a query by passing "?" as a parameter
    qry_prov.Azure.list_all_signins_geo("?")
    
  4. Esaminare l'output.

    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. Per visualizzare sia tabelle che query in un elenco scorrevole e filtrabile, passare alla cella successiva, con il codice seguente ed eseguirla.

    qry_prov.browse_queries()
    
  6. Per la query selezionata, vengono visualizzati tutti i parametri obbligatori e facoltativi, insieme al testo completo della query. Ad esempio:

    Screenshot delle tabelle e delle query visualizzate in un elenco scorrevole e filtrabile.

Anche se non è possibile eseguire query dal browser, è possibile copiare e incollare l'esempio alla fine di ogni query per l'esecuzione altrove nel notebook.

Per altre informazioni, vedere Esecuzione di una query predefinita nella documentazione di MSTICPy.

Eseguire query con parametri di orario

La maggior parte delle query richiede parametri di orario. Le stringhe di data/ora sono noiose da digitare e modificarle in più posizioni può renderle soggette a errori.

Ogni provider di query dispone di parametri di orario di inizio e di fine predefiniti per le query. Questi parametri di orario vengono usati per impostazione predefinita, ogni volta che vengono chiamati parametri di orario. È possibile modificare l'intervallo di tempo predefinito aprendo il controllo query_time. Le modifiche rimangono effettive fino a quando non vengono modificate di nuovo.

  1. Passare alla cella successiva, con il codice seguente ed eseguirlo:

    # Open the query time control for your query provider
    qry_prov.query_time
    
  2. Impostare il start e end volte in base alle esigenze. Ad esempio:

    Screenshot dell'impostazione dei parametri di orario predefiniti per le query.

Eseguire una query usando l'intervallo di tempo predefinito

I risultati della query vengono restituiti come DataFrame Pandas, ovvero una struttura di dati tabulari, ad esempio un foglio di calcolo o una tabella di database. Usare funzioni pandas per eseguire ulteriori filtri e analisi sui risultati della query.

  1. Eseguire la cella di codice seguente. Esegue una query usando le impostazioni predefinite del provider di query. È possibile modificare questo intervallo ed eseguire di nuovo la cella di codice per eseguire una query per il nuovo intervallo di tempo.

    # 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. Esaminare l'output. Visualizza le prime cinque righe di risultati. Ad esempio:

    Screenshot di una query eseguita con l'intervallo di tempo predefinito.

    Se non sono presenti dati, vengono visualizzate solo le intestazioni di colonna.

Eseguire una query usando un intervallo di tempo personalizzato

È anche possibile creare un nuovo oggetto orario di query e passarlo a una query come parametro. Ciò consente di eseguire una query una tantum per un intervallo di tempo diverso, senza influire sulle impostazioni predefinite del provider di query.

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

Dopo aver impostato l'intervallo di tempo desiderato, è possibile passare l'intervallo di tempo alla funzione di query, eseguendo il codice seguente in una cella separata dal codice precedente:

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

È anche possibile passare valori datetime come stringhe datetime Python o date-time usando i parametri start e end:

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)

Personalizzare le query

È possibile personalizzare le query predefinite aggiungendo più logica di query oppure eseguendo query complete usando la funzione exec_query.

Ad esempio, la maggior parte delle query predefinite supporta il parametro add_query_items, che è possibile usare per aggiungere filtri o altre operazioni alle query.

  1. Eseguire la cella di codice seguente per aggiungere un frame di dati che riepiloga il numero di avvisi in base al nome dell'avviso:

    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. Passare una stringa di query di Linguaggio di query Kusto (KQL) completa al provider di query. La query viene eseguita sull'area di lavoro connessa e i dati vengono restituiti come DataFrame panda. Eseguire:

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

Per altre informazioni, vedi:

Test VirusTotal

  1. Per usare l'intelligence sulle minacce per verificare se un indirizzo IP viene visualizzato nei dati VirusTotal, eseguire la cella con il codice seguente:

    # 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. Esaminare l'output. Ad esempio:

    Screenshot di un indirizzo IP visualizzato nei dati VirusTotal.

  3. Scorrere verso il basso per visualizzare i risultati completi.

Per altre informazioni, vedere Ricerche di minacce Intel in MSTICPy.

Testare la ricerca ip di georilevazione

  1. Per ottenere i dettagli della georilevazione per un indirizzo IP usando il servizio MaxMind, eseguire la cella con il codice seguente:

    # 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. Esaminare l'output. Ad esempio:

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

La prima volta che si esegue questo codice, verrà visualizzato il driver GeoLite che scarica il relativo database.

Per altre informazioni, vedere provider GeoIP MSTICPy.

Configurare le impostazioni di Key Vault

Questa sezione è rilevante solo quando si archiviano segreti in Azure Key Vault.

Quando si archiviano segreti in Azure Key Vault, è necessario creare prima l'insieme di credenziali delle chiavi nel portale di gestione globale di Azure KeyVault.

Le impostazioni obbligatorie sono tutti i valori che si ottengono dalle proprietà dell'insieme di credenziali, anche se alcuni potrebbero avere nomi diversi. Ad esempio:

  • VaultName viene visualizzato nella parte superiore sinistra della schermata Proprietà di Azure Key Vault
  • TenantId viene visualizzato come ID directory
  • AzureRegion viene visualizzato come Percorso
  • Authority è il cloud per il servizio di Azure.

Per recuperare i segreti dall'insieme di credenziali sono necessari solo i valori VaultName, TenantId e Authority. Gli altri valori sono necessari se si sceglie di creare un insieme di credenziali da MSTICPy. Per altre informazioni, vedere Specifica di segreti come segreti di Key Vault.

L'opzione Usa KeyRing è selezionata per impostazione predefinita e consente di memorizzare nella cache le credenziali di Key Vault in un KeyRing locale. Per altre informazioni, vedere la documentazione KeyRing.

Attenzione

Non usare l'opzione Usa KeyRing se non si considera completamente attendibile l'host Calcolo su cui è in esecuzione il notebook.

In questo caso, l’ambiente di calcolo è il server di hub Jupyter, in cui è in esecuzione il kernel del notebook e non necessariamente il computer su cui è in esecuzione il browser. Se si usa Azure ML, l’ambiente di calcolo sarà l'istanza dell’ambiente di calcolo di Azure ML selezionata. Keyring esegue la memorizzazione nella cache nell'host in cui è in esecuzione il kernel del notebook.

Per aggiungere le impostazioni Key Vault nell'editor delle impostazioni MSTICPy, seguire questa procedura.

  1. Passare alla cella successiva, con il codice seguente ed eseguirlo:

    mpedit.set_tab("Key Vault")
    mpedit
    
  2. Immettere i dettagli dell’insieme di credenziali per Key Vault. Ad esempio:

    Screenshot della sezione Configurazione di Key Vault

  3. Selezionare Salva e quindi Salva impostazioni.

Testare Key Vault

Per testare l'insieme di credenziali delle chiavi, verificare se è possibile connettersi e visualizzare i segreti. Se non è stato aggiunto un segreto, non vengono visualizzati dettagli. Se è necessario, aggiungere un segreto di test dal portale di Azure Key Vault all'insieme di credenziali e verificare che venga visualizzato in Microsoft Sentinel.

Ad esempio:

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

Attenzione

Non lasciare l'output visualizzato nel notebook salvato. Se nell'output sono presenti segreti reali, usare il comando Cancella output del notebook prima di salvare il notebook.

Inoltre, eliminare anche le copie memorizzate nella cache del notebook. Ad esempio, cercare nella sottocartella .ipynb_checkpoints della directory del notebook ed eliminare eventuali copie di questo notebook trovato. Il salvataggio del notebook con un output cancellato deve sovrascrivere la copia del checkpoint.

Dopo aver configurato Key Vault, è possibile usare il pulsante Carica in KV nelle sezioni Provider di dati e Provider TI per spostare l'impostazione selezionata nell'insieme di credenziali. MSTICPy genera un nome predefinito per il segreto in base al percorso dell'impostazione, ad esempio TIProviders-VirusTotal-Args-AuthKey.

Se il valore viene caricato correttamente, il contenuto del campo Valore nell'editor delle impostazioni viene eliminato e l'impostazione sottostante viene sostituita con un valore segnaposto. MSTICPy usa questo valore per indicare che deve generare automaticamente il percorso Key Vault quando si tenta di recuperare la chiave.

Se i segreti necessari sono già archiviati in un Key Vault, è possibile immettere il nome del segreto nel campo valore. Se il segreto non è archiviato nell'insieme di credenziali predefinito (i valori specificati nella sezione Key Vault), è possibile specificare un percorso di VaultName/SecretName.

Il recupero delle impostazioni da un insieme di credenziali in un tenant diverso non è attualmente supportato. Per altre informazioni, vedere Specifica di segreti come segreti di Key Vault.

Specificare i metodi di autenticazione del cloud di Azure e di Azure

Se si usa un cloud di Azure sovrano o per enti pubblici, anziché il cloud di Azure pubblico o globale, è necessario selezionare il cloud appropriato nelle impostazioni. Per la maggior parte delle organizzazioni, il cloud globale è l'impostazione predefinita.

È anche possibile usare queste impostazioni di Azure per definire le preferenze predefinite per il tipo di autenticazione di Azure.

Per specificare i metodi di autenticazione di Azure e cloud di Azure, seguire questa procedura.

  1. Passare alla cella successiva, con il codice seguente ed eseguirlo:

    mpedit.set_tab("Azure")
    mpedit
    
  2. Selezionare il cloud usato dall'organizzazione oppure lasciare l'opzione predefinita globale.

  3. Selezionare uno o più dei metodi seguenti:

    • env per archiviare le credenziali di Azure nelle variabili di ambiente.
    • msi usare l'identità del servizio gestita, ovvero un'identità assegnata all'host o alla macchina virtuale in cui è in esecuzione l'hub Jupyter. L'identità del servizio gestito non è attualmente supportata nelle istanze dell’ambiente di calcolo di Azure Machine Learning.
    • cli per usare le credenziali da una sessione dell'interfaccia della riga di comando di Azure autenticata.
    • interattivo per usare il flusso di autorizzazione interattiva del dispositivo usando un codice di dispositivo monouso.

    Nella maggior parte dei casi, è consigliabile selezionare più metodi, ad esempio cli e interattivo. L'autenticazione Azure tenta ciascuno dei metodi configurati nell'ordine elencato, finché uno di essi non ha successo.

  4. Selezionare Salva e quindi Salva impostazioni.

    Ad esempio:

    Screenshot delle impostazioni definite per il cloud di Azure per enti pubblici.

Passaggi successivi

Questo articolo descrive le nozioni di base sull'uso di MSTICPy con i notebook di Jupyter in Microsoft Sentinel. Per altre informazioni, vedere: Configurazioni avanzate per notebook di Jupyter e MSTICPy in Microsoft Sentinel.

È anche possibile provare altri notebook archiviati nel repository GitHub Notebook di Microsoft Sentinel, ad esempio:

Se si usa il notebook descritto in questo articolo in un altro ambiente Jupyter, è possibile usare qualsiasi kernel che supporti Python 3.6 o versione successiva.

Per usare notebook MSTICPy all'esterno di Microsoft Sentinel e Azure Machine Learning (ML), è anche necessario configurare l'ambiente Python. Installare Python 3.6 o versione successiva con la distribuzione di Anaconda, che include molti dei pacchetti necessari.

Altre informazioni su MSTICPy e notebook

La tabella seguente elenca altri riferimenti per informazioni sui notebook MSTICPy, Microsoft Sentinel e Jupyter.

Oggetto Altri riferimenti
MSTICPy - Configurazione del pacchetto MSTICPy
- Editor delle impostazioni MSTICPy
- Configurazione dell'ambiente notebook.
- Notebook MPSettingsEditor.

Nota: il repository GitHub Azure-Sentinel-Notebooks contiene anche un file di modello msticpyconfig.yaml con sezioni impostate come commento, che possono essere utili per comprendere le impostazioni.
Notebook di Microsoft Sentinel e Jupyter - Creare il primo notebook di Microsoft Sentinel (serie di blog)
- Notebook di Jupyter: introduzione
- Documentazione di MSTICPy
- Documentazione di Microsoft Sentinel Notebooks
- Jupyterbook InfoSec
- Procedura dettagliata del notebook di Esplora host Linux
- Perché usare Jupyter per le indagini sulla sicurezza
- Indagine della sicurezza con Microsoft Sentinel e Notebook
- Documentazione di Pandas
- Documentazione di Bokeh