Udostępnij za pośrednictwem


Wprowadzenie do notesów Jupyter i biblioteki MSTICPy w usłudze Microsoft Sentinel

W tym artykule opisano sposób uruchamiania notesu Wprowadzenie dla notesów uczenia maszynowego usługi Microsoft Sentinel, który konfiguruje podstawowe konfiguracje uruchamiania notesów Jupyter w usłudze Microsoft Sentinel i uruchamiania prostych zapytań dotyczących danych.

Notes Wprowadzenie dla notesów uczenia maszynowego usługi Microsoft Sentinel korzysta z biblioteki MSTICPy, biblioteki narzędzi cyberbezpieczeństwa w języku Python utworzonych przez firmę Microsoft, która zapewnia wyszukiwanie zagrożeń i funkcje badania.

Rozwiązanie MSTICPy zmniejsza ilość kodu, który klienci muszą napisać dla usługi Microsoft Sentinel i udostępnia:

  • Możliwości zapytań dotyczących danych względem tabel usługi Microsoft Sentinel, Ochrona punktu końcowego w usłudze Microsoft Defender, splunk i innych źródeł danych.
  • Wyszukiwanie analizy zagrożeń za pomocą dostawców TI, takich jak VirusTotal i AlienVault OTX.
  • Funkcje wzbogacania, takie jak geolokalizacja adresów IP, wyodrębnianie wskaźnika kompromisu (IoC) i wyszukiwanie WhoIs.
  • Narzędzia do wizualizacji korzystające z osi czasu zdarzeń, drzew procesów i mapowania geograficznego.
  • Zaawansowane analizy, takie jak dekompozycja szeregów czasowych, wykrywanie anomalii i klastrowanie.

W krokach opisanych w tym artykule opisano sposób uruchamiania notesu Wprowadzenie dla notesów uczenia maszynowego usługi Microsoft Sentinel w obszarze roboczym usługi Azure Machine Learning za pośrednictwem usługi Microsoft Sentinel. Możesz również użyć tego artykułu jako wskazówek dotyczących wykonywania podobnych kroków, aby uruchamiać notesy w innych środowiskach, w tym lokalnie.

Aby uzyskać więcej informacji, zobacz Używanie notesów do badania mocy i Używanie notesów Jupyter do polowania na zagrożenia bezpieczeństwa.

Kilka notesów usługi Microsoft Sentinel nie korzysta z biblioteki MSTICPy, takich jak notesy skanera poświadczeń ani przykładów programu PowerShell i języka C#. Notesy, które nie korzystają z narzędzia MSTICpy, nie wymagają konfiguracji MSTICPy opisanej w tym artykule.

Ważne

Usługa Microsoft Sentinel jest teraz ogólnie dostępna na platformie Ujednolicone operacje zabezpieczeń firmy Microsoft w portalu usługi Microsoft Defender. Aby uzyskać więcej informacji, zobacz Microsoft Sentinel w portalu usługi Microsoft Defender.

Wymagania wstępne

Przed rozpoczęciem upewnij się, że masz wymagane uprawnienia i zasoby.

  • Aby korzystać z notesów w usłudze Microsoft Sentinel, upewnij się, że masz wymagane uprawnienia. Aby uzyskać więcej informacji, zobacz Zarządzanie dostępem do notesów usługi Microsoft Sentinel.

  • Aby wykonać kroki opisane w tym artykule, potrzebujesz języka Python w wersji 3.6 lub nowszej. W usłudze Azure Machine Learning można użyć jądra języka Python 3.8 (zalecane) lub jądra języka Python 3.6.

  • W tym notesie jest używana usługa wyszukiwania geolokalizacji MaxMind GeoLite2 dla adresów IP. Aby użyć usługi MaxMind GeoLite2, potrzebny jest klucz konta. Możesz zarejestrować się w celu uzyskania bezpłatnego konta i klucza na stronie rejestracji Maxmind.

  • Ten notes używa biblioteki VirusTotal (VT) jako źródła analizy zagrożeń. Aby użyć wyszukiwania analizy zagrożeń VirusTotal, potrzebujesz konta VirusTotal i klucza interfejsu API.

    Możesz zarejestrować się w celu uzyskania bezpłatnego konta VT na stronie Wprowadzenie do aplikacji VirusTotal. Jeśli jesteś już użytkownikiem VirusTotal, możesz użyć istniejącego klucza.

    Ostrzeżenie

    Jeśli używasz klucza przedsiębiorstwa VT, zapisz go w usłudze Azure Key Vault zamiast pliku msticpyconfig.yaml . Aby uzyskać więcej informacji, zobacz Określanie wpisów tajnych jako wpisów tajnych usługi Key Vault w dokumentacji MSTICPY.

    Jeśli nie chcesz teraz skonfigurować usługi Azure Key Vault, zarejestruj się i użyj bezpłatnego konta, dopóki nie będzie można skonfigurować magazynu usługi Key Vault.

Uruchamianie i inicjowanie notesu Przewodnika wprowadzającego

W tej procedurze opisano sposób uruchamiania notesu i inicjowania narzędzia MSTICpy.

  1. W przypadku usługi Microsoft Sentinel w witrynie Azure Portal w obszarze Zarządzanie zagrożeniami wybierz pozycję Notesy.
    W przypadku usługi Microsoft Sentinel w portalu usługi Defender wybierz pozycję Notesy zarządzania zagrożeniami>w usłudze Microsoft Sentinel.>

  2. Na karcie Szablony wybierz pozycję Przewodnik wprowadzający dla notesów uczenia maszynowego usługi Microsoft Sentinel.

  3. Wybierz pozycję Utwórz na podstawie szablonu.

  4. Edytuj nazwę i wybierz odpowiedni obszar roboczy usługi Azure Machine Learning.

  5. Wybierz pozycję Zapisz , aby zapisać go w obszarze roboczym usługi Azure Machine Learning.

  6. Wybierz pozycję Uruchom notes , aby uruchomić notes. Notes zawiera serię komórek:

    • Komórki markdown zawierają tekst i grafikę z instrukcjami dotyczącymi korzystania z notesu
    • Komórki kodu zawierają kod wykonywalny, który wykonuje funkcje notesu
  7. Odczytywanie i uruchamianie komórek kodu w kolejności. Pomijanie komórek lub ich brak kolejności może spowodować błędy w dalszej części notesu.

    Uruchom każdą komórkę, wybierając przycisk odtwarzania po lewej stronie każdej komórki. W zależności od wykonywanej funkcji kod w komórce może działać szybko lub może upłynąć kilka sekund.

    Gdy komórka jest uruchomiona, przycisk odtwarzania zmienia się na pokrętło ładowania, a stan Executing jest wyświetlany w dolnej części komórki wraz z upływem czasu.

    Jeśli notes nie działa zgodnie z opisem, uruchom ponownie jądro i uruchom notes od początku. Jeśli na przykład którakolwiek komórka w notesie Przewodnika wprowadzającego trwa dłużej niż minutę, spróbuj ponownie uruchomić jądro i ponownie uruchomić notes.

    Notes Wprowadzenie zawiera instrukcje dotyczące podstawowego korzystania z notesów Jupyter, w tym ponownego uruchamiania jądra Jupyter.

    Po zakończeniu odczytywania i uruchamiania komórek w sekcji Co to jest notes Jupyter Notebook możesz rozpocząć zadania konfiguracyjne, począwszy od sekcji Konfigurowanie środowiska notesu.

  8. Uruchom pierwszą komórkę kodu w sekcji Konfigurowanie środowiska notesu notesu, która zawiera następujący kod:

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

    Stan inicjowania jest wyświetlany w danych wyjściowych. Ostrzeżenia konfiguracji dotyczące brakujących ustawień w Missing msticpyconfig.yaml pliku są oczekiwane, ponieważ nie skonfigurowano jeszcze żadnych ustawień.

Tworzenie pliku konfiguracji

Po zainicjowaniu podstawowym możesz utworzyć plik konfiguracji z podstawowymi ustawieniami pracy z biblioteką MSTICPy.

Wiele notesów usługi Microsoft Sentinel łączy się z usługami zewnętrznymi, takimi jak VirusTotal (VT), aby zbierać i wzbogacać dane. Aby nawiązać połączenie z tymi usługami, należy ustawić i zapisać szczegóły konfiguracji, takie jak tokeny uwierzytelniania. Posiadanie tych danych w pliku konfiguracji pozwala uniknąć konieczności wpisywania tokenów uwierzytelniania i szczegółów obszaru roboczego za każdym razem, gdy używasz notesu.

Oprogramowanie MSTICPy używa pliku msticpyconfig.yaml do przechowywania szerokiego zakresu szczegółów konfiguracji. Domyślnie plik msticpyconfig.yaml jest generowany przez funkcję inicjowania notesu. Jeśli ten notes został sklonowany z portalu usługi Microsoft Sentinel, plik konfiguracji zostanie wypełniony danymi obszaru roboczego usługi Microsoft Sentinel. Te dane są odczytywane z pliku config.json utworzonego w obszarze roboczym usługi Azure Machine Learning podczas uruchamiania notesu. Aby uzyskać więcej informacji, zobacz dokumentację konfiguracji pakietu MSTICPy.

W poniższych sekcjach opisano sposób dodawania dodatkowych szczegółów konfiguracji do pliku msticpyconfig.yaml .

Jeśli ponownie uruchomisz notes Przewodnik wprowadzający i masz już plik msticpyconfig.yaml o minimalnych konfiguracjach, init_notebook funkcja nie zastępuje ani nie modyfikuje istniejącego pliku.

W dowolnym momencie wybierz menu rozwijane -Help w narzędziu konfiguracji MSTICPy, aby uzyskać więcej instrukcji i linki do szczegółowej dokumentacji.

Wyświetlanie edytora ustawień MSTICPy

  1. W komórce kodu uruchom następujący kod, aby zaimportować MpConfigEdit narzędzie i wyświetlić edytor ustawień dla pliku msticpyconfig.yaml :

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

    Na przykład:

    Zrzut ekranu przedstawiający edytor ustawień MSTICPy.

    Automatycznie utworzony plik msticpyconfig.yaml , pokazany w edytorze ustawień, zawiera dwa wpisy w sekcji Microsoft Sentinel. Są one wypełniane szczegółami obszaru roboczego usługi Microsoft Sentinel, z którego został sklonowany notes. Jeden wpis ma nazwę obszaru roboczego, a drugi ma nazwę Domyślna.

    Rozwiązanie MSTICPy umożliwia przechowywanie konfiguracji dla wielu obszarów roboczych usługi Microsoft Sentinel i przełączanie się między nimi. Wpis Domyślny umożliwia domyślne uwierzytelnianie w obszarze roboczym "strona główna" bez konieczności jawnego nadawania mu nazwy. Jeśli dodasz kolejne obszary robocze, możesz skonfigurować dowolny z nich jako wpis domyślny .

    W środowisku usługi Azure Machine Learning edytor ustawień może pojawić się po 10–20 sekundach.

  2. Sprawdź bieżące ustawienia i wybierz pozycję Zapisz ustawienia.

Dodawanie ustawień dostawcy analizy zagrożeń

W tej procedurze opisano sposób przechowywania klucza interfejsu API VirusTotal w pliku msticpyconfig.yaml . Możesz zdecydować się na przekazanie klucza interfejsu API do usługi Azure Key Vault, ale najpierw musisz skonfigurować ustawienia usługi Key Vault. Aby uzyskać więcej informacji, zobacz Konfigurowanie ustawień usługi Key Vault.

Aby dodać szczegóły VirusTotal w edytorze ustawień MSTICPy, wykonaj następujące kroki.

  1. Wprowadź następujący kod w komórce kodu i uruchom polecenie:

    mpedit.set_tab("TI Providers")
    mpedit
    
  2. Na karcie Dostawcy ti wybierz pozycję Dodaj prov>VirusTotal>Dodaj.

  3. W obszarze Klucz uwierzytelniania wybierz pozycję Tekst obok opcji Magazyn .

  4. W polu Wartość wklej klucz interfejsu API.

  5. Wybierz pozycję Aktualizuj, a następnie wybierz pozycję Zapisz ustawienia w dolnej części edytora ustawień.

Aby uzyskać więcej informacji na temat innych obsługiwanych dostawców analizy zagrożeń, zobacz Dostawcy analizy zagrożeń w dokumentacji MSTICPy i integracja analizy zagrożeń w usłudze Microsoft Sentinel.

Dodawanie ustawień dostawcy geoIP

W tej procedurze opisano sposób przechowywania klucza konta MaxMind GeoLite2 w pliku msticpyconfig.yaml , który umożliwia notesowi używanie usług wyszukiwania geolokalizacji dla adresów IP.

Aby dodać ustawienia dostawcy GeoIP w edytorze ustawień MSTICPy, wykonaj następujące kroki.

  1. Wprowadź następujący kod w pustej komórce kodu i uruchom polecenie:

    mpedit.set_tab("GeoIP Providers")
    mpedit
    
  2. Na karcie Dostawcy geoIP wybierz pozycję Dodaj prov>GeoIPLite>Dodaj.

  3. W polu Wartość wprowadź klucz konta MaxMind.

  4. W razie potrzeby zaktualizuj domyślny folder ~/.msticpy do przechowywania pobranej bazy danych GeoIP.

    • W systemie Windows ten folder jest mapowany na %USERPROFILE%/.msticpy.
    • W systemie Linux lub macOS ta ścieżka jest mapowana na folder msticpy w folderze głównym.

Aby uzyskać więcej informacji na temat innych obsługiwanych usług wyszukiwania geolokalizacji, zobacz dokumentację dostawców geoip MSTICPy.

Konfigurowanie ustawień chmury platformy Azure

Jeśli Twoja organizacja nie korzysta z chmury publicznej platformy Azure, musisz określić to w ustawieniach, aby pomyślnie uwierzytelnić i używać danych z usług Microsoft Sentinel i Azure. Aby uzyskać więcej informacji, zobacz Określanie chmury platformy Azure i domyślnych metod uwierzytelniania platformy Azure.

Weryfikowanie ustawień

  1. Wybierz pozycję Zweryfikuj ustawienia w edytorze ustawień.

    Oczekiwane są komunikaty ostrzegawcze dotyczące brakujących konfiguracji, ale nie powinny być dostępne żadne ustawienia dostawcy analizy zagrożeń ani dostawcy geoIP.

  2. W zależności od środowiska może być również konieczne skonfigurowanie ustawień usługi Key Vault lub określenie chmury platformy Azure.

  3. Jeśli musisz wprowadzić jakiekolwiek zmiany ze względu na walidację, wprowadź te zmiany, a następnie wybierz pozycję Zapisz ustawienia.

  4. Po zakończeniu wybierz przycisk Zamknij , aby ukryć dane wyjściowe weryfikacji.

Aby uzyskać więcej informacji, zobacz: Advanced configurations for Jupyter notebooks and MSTICPy in Microsoft Sentinel (Zaawansowane konfiguracje notesów Jupyter i biblioteki MSTICPy w usłudze Microsoft Sentinel)

Ładowanie zapisanych ustawień MSTICPy

W procedurze Tworzenie pliku konfiguracji zapisano ustawienia w lokalnym pliku msticpyconfig.yaml.

Jednak narzędzie MSTICPy nie automatycznie ponownie ładuje tych ustawień do momentu ponownego uruchomienia jądra lub uruchomienia innego notesu. Aby wymusić ponowne załadowanie biblioteki MSTICPy z nowego pliku konfiguracji, przejdź do następnej komórki kodu z następującym kodem i uruchom go:

import msticpy
msticpy.settings.refresh_config()

Testowanie notesu

Po zainicjowaniu środowiska i skonfigurowaniu podstawowych ustawień obszaru roboczego użyj klasy MSTICPy QueryProvider do przetestowania notesu. QueryProvider Wysyła zapytanie do źródła danych, w tym przypadku obszaru roboczego usługi Microsoft Sentinel i udostępnia zapytania dotyczące danych w celu wyświetlania i analizowania w notesie.

Skorzystaj z poniższych QueryProvider procedur, aby utworzyć wystąpienie klasy, uwierzytelnić się w usłudze Microsoft Sentinel z notesu i wyświetlić i uruchomić zapytania z różnymi opcjami parametrów.

Można mieć wiele wystąpień załadowanych QueryProvider do użycia z wieloma obszarami roboczymi usługi Microsoft Sentinel lub innymi dostawcami danych, takimi jak Ochrona punktu końcowego w usłudze Microsoft Defender.

Ładowanie dostawcy zapytań

Aby załadować element QueryProvider for AzureSentinel, przejdź do komórki przy użyciu następującego kodu i uruchom go:

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

Jeśli podczas ładowania sterownika usługi Microsoft Sentinel zostanie wyświetlone ostrzeżenie, zobacz Błąd: brak zależności środowiska uruchomieniowego obiektu PyGObject.Runtime dependency of PyGObject is missing To ostrzeżenie nie ma wpływu na funkcjonalność notesu.

Uwierzytelnianie w obszarze roboczym usługi Microsoft Sentinel z poziomu notesu

W notesach usługi Azure Machine Learning uwierzytelnianie jest domyślnie używane do uwierzytelniania w obszarze roboczym usługi Azure Machine Learning.

Uwierzytelnij się przy użyciu tożsamości zarządzanej, wykonując następujące kroki.

  1. Uruchom następujący kod, aby uwierzytelnić się w obszarze roboczym usługi 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. Przejrzyj dane wyjściowe. Wyświetlone dane wyjściowe są podobne do poniższej ilustracji.

    Zrzut ekranu przedstawiający uwierzytelnianie na platformie Azure kończące się połączonym komunikatem.

Buforowanie tokenu logowania przy użyciu interfejsu wiersza polecenia platformy Azure

Aby uniknąć konieczności ponownego uwierzytelniania w przypadku ponownego uruchomienia jądra lub uruchomienia innych notesów, możesz buforować token logowania przy użyciu interfejsu wiersza polecenia platformy Azure.

Składnik interfejsu wiersza polecenia platformy Azure w wystąpieniu obliczeniowym buforuje token odświeżania, który może być używany ponownie do czasu limitu czasu tokenu. Narzędzie MSTICPy automatycznie używa poświadczeń interfejsu wiersza polecenia platformy Azure, jeśli są dostępne.

Aby uwierzytelnić się przy użyciu interfejsu wiersza polecenia platformy Azure, wprowadź następujące polecenie w pustej komórce i uruchom je:

!az login

Jeśli ponownie uruchomisz wystąpienie obliczeniowe lub przełączysz się do innego wystąpienia, musisz ponownie przeprowadzić uwierzytelnianie. Aby uzyskać więcej informacji, zobacz sekcję Buforowanie poświadczeń za pomocą interfejsu wiersza polecenia platformy Azure w witrynie typu wiki repozytorium GitHub notesów usługi Microsoft Sentinel.

Wyświetlanie schematu danych obszaru roboczego usługi Microsoft Sentinel i wbudowanych zapytań MSTICPy

Po nawiązaniu połączenia z dostawcą zapytań usługi Microsoft Sentinel możesz zrozumieć typy danych dostępnych do wykonywania zapytań, wykonując zapytanie względem schematu danych obszaru roboczego usługi Microsoft Sentinel.

Obiekt QueryProvider usługi Microsoft Sentinel ma schema_tables właściwość, która udostępnia listę tabel schematów oraz schema właściwość, która zawiera również nazwy kolumn i typy danych dla każdej tabeli.

Aby wyświetlić pierwsze 10 tabel w schemacie usługi Microsoft Sentinel:

Przejdź do następnej komórki z następującym kodem i uruchom ją. Możesz pominąć listę [:10] wszystkich tabel w obszarze roboczym.

# 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

Wyświetlane są następujące dane wyjściowe:

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

Narzędzie MSTICPy zawiera również wiele wbudowanych zapytań dostępnych do uruchomienia. Wyświetl listę dostępnych zapytań z elementem .list_queries()i uzyskaj szczegółowe informacje o zapytaniu, wywołując je za pomocą znaku zapytania (?) dołączonego jako parametru. Alternatywnie możesz wyświetlić listę zapytań i skojarzona pomoc w przeglądarce zapytań.

Aby wyświetlić przykład dostępnych zapytań:

  1. Przejdź do następnej komórki z następującym kodem i uruchom ją. Możesz pominąć polecenie [::5] , aby wyświetlić listę wszystkich zapytań.

    # Get a sample of available queries
    print(qry_prov.list_queries()[::5])  # showing a sample - remove "[::5]" for whole list
    
  2. Przejrzyj dane wyjściowe.

    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. Aby uzyskać pomoc dotyczącą zapytania, przekazując ? go jako parametr:

    # Get help about a query by passing "?" as a parameter
    qry_prov.Azure.list_all_signins_geo("?")
    
  4. Przejrzyj dane wyjściowe.

    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. Aby wyświetlić zarówno tabele, jak i zapytania w przewijanej, filtrowalnej liście, przejdź do następnej komórki z następującym kodem i uruchom go.

    qry_prov.browse_queries()
    
  6. Dla wybranego zapytania są wyświetlane wszystkie wymagane i opcjonalne parametry wraz z pełnym tekstem zapytania. Na przykład:

    Zrzut ekranu przedstawiający tabele i zapytania wyświetlane na liście z możliwością przewijania i filtrowania.

Chociaż nie można uruchamiać zapytań z przeglądarki, możesz skopiować i wkleić przykład na końcu każdego zapytania, aby uruchomić je gdzie indziej w notesie.

Aby uzyskać więcej informacji, zobacz Uruchamianie wstępnie zdefiniowanego zapytania w dokumentacji biblioteki MSTICPy.

Uruchamianie zapytań z parametrami czasu

Większość zapytań wymaga parametrów czasu. Ciągi daty/godziny są żmudne do wpisywania i modyfikowanie ich w wielu miejscach może być podatne na błędy.

Każdy dostawca zapytań ma domyślne parametry czasu rozpoczęcia i zakończenia dla zapytań. Te parametry czasu są używane domyślnie za każdym razem, gdy są wywoływane parametry czasu. Domyślny zakres czasu można zmienić, otwierając kontrolkę query_time . Zmiany pozostaną w mocy, dopóki nie zmienisz ich ponownie.

  1. Przejdź do następnej komórki z następującym kodem i uruchom go:

    # Open the query time control for your query provider
    qry_prov.query_time
    
  2. Ustaw czasy i end zgodnie z start potrzebami. Na przykład:

    Zrzut ekranu przedstawiający ustawianie domyślnych parametrów czasu dla zapytań.

Uruchamianie zapytania przy użyciu wbudowanego zakresu czasu

Wyniki zapytania są zwracane jako ramka danych Pandas, która jest strukturą danych tabelarycznych, na przykład arkuszem kalkulacyjnym lub tabelą bazy danych. Za pomocą funkcji biblioteki pandas można wykonywać dodatkowe filtrowanie i analizę wyników zapytania.

  1. Uruchom następującą komórkę kodu. Uruchamia zapytanie przy użyciu domyślnych ustawień czasu dostawcy zapytań. Możesz zmienić ten zakres i ponownie uruchomić komórkę kodu, aby wykonać zapytanie o nowy zakres czasu.

    # 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. Przejrzyj dane wyjściowe. Wyświetla pięć pierwszych wierszy wyników. Na przykład:

    Zrzut ekranu przedstawiający uruchamianie zapytania z wbudowanym zakresem czasu.

    Jeśli nie ma żadnych danych, zostaną wyświetlone tylko nagłówki kolumn.

Uruchamianie zapytania przy użyciu niestandardowego zakresu czasu

Możesz również utworzyć nowy obiekt czasu zapytania i przekazać go do zapytania jako parametru. Umożliwia to uruchomienie jednorazowego zapytania dla innego zakresu czasu bez wpływu na domyślne ustawienia dostawcy zapytań.

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

Po ustawieniu żądanego zakresu czasu można przekazać zakres czasu do funkcji zapytania, uruchamiając następujący kod w osobnej komórce od poprzedniego kodu:

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

Możesz również przekazać wartości daty/godziny jako ciągi daty/godziny lub daty/godziny języka Python przy użyciu start parametrów i 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)

Dostosowywanie zapytań

Wbudowane zapytania można dostosować, dodając więcej logiki zapytań lub uruchamiając pełne zapytania przy użyciu exec_query funkcji .

Na przykład większość wbudowanych zapytań obsługuje add_query_items parametr , którego można użyć do dołączania filtrów lub innych operacji do zapytań.

  1. Uruchom następującą komórkę kodu, aby dodać ramkę danych podsumowującą liczbę alertów według nazwy alertu:

    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. Przekaż pełny ciąg zapytania język zapytań Kusto (KQL) do dostawcy zapytań. Zapytanie jest uruchamiane względem połączonego obszaru roboczego, a dane są zwracane jako ramka danych panda. Uruchom:

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

Aby uzyskać więcej informacji, zobacz:

Test VirusTotal

  1. Aby użyć analizy zagrożeń, aby sprawdzić, czy adres IP pojawia się w danych VirusTotal, uruchom komórkę z następującym kodem:

    # 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. Przejrzyj dane wyjściowe. Na przykład:

    Zrzut ekranu przedstawiający adres IP wyświetlany w danych VirusTotal.

  3. Przewiń w dół, aby wyświetlić pełne wyniki.

Aby uzyskać więcej informacji, zobacz Threat Intel Lookups in MSTICPy (Wyszukiwanie funkcji Intel dla zagrożeń w narzędziu MSTICPy).

Testowanie wyszukiwania adresów IP geolokalizacji

  1. Aby uzyskać szczegóły geolokalizacji adresu IP przy użyciu usługi MaxMind, uruchom komórkę z następującym kodem:

    # 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. Przejrzyj dane wyjściowe. Na przykład:

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

Przy pierwszym uruchomieniu tego kodu powinien zostać wyświetlony sterownik GeoLite pobierający jego bazę danych.

Aby uzyskać więcej informacji, zobacz MSTICPy GeoIP Providers (Dostawcy geoIP MSTICPy).

Konfigurowanie ustawień usługi Key Vault

Ta sekcja ma zastosowanie tylko podczas przechowywania wpisów tajnych w usłudze Azure Key Vault.

Podczas przechowywania wpisów tajnych w usłudze Azure Key Vault należy najpierw utworzyć usługę Key Vault w globalnym portalu zarządzania usługi KeyVault platformy Azure.

Wymagane ustawienia to wszystkie wartości, które są uzyskiwane z właściwości magazynu, chociaż niektóre mogą mieć różne nazwy. Na przykład:

  • Nazwa magazynu jest wyświetlana w lewym górnym rogu ekranu Właściwości usługi Azure Key Vault
  • Identyfikator dzierżawy jest wyświetlany jako identyfikator katalogu
  • Region platformy Azure jest wyświetlany jako Lokalizacja
  • Urząd to chmura dla usługi platformy Azure.

Do pobrania wpisów tajnych z magazynu są wymagane tylko wartości VaultName, TenantId i Authority . Inne wartości są potrzebne, jeśli zdecydujesz się utworzyć magazyn na podstawie biblioteki MSTICPy. Aby uzyskać więcej informacji, zobacz Określanie wpisów tajnych jako wpisów tajnych usługi Key Vault.

Opcja Użyj funkcji KeyRing jest domyślnie zaznaczona i umożliwia buforowanie poświadczeń usługi Key Vault w lokalnym module KeyRing. Aby uzyskać więcej informacji, zobacz dokumentację usługi KeyRing.

Uwaga

Nie używaj opcji Użyj funkcji KeyRing , jeśli nie ufasz w pełni hostowi obliczeniowemu, na którym działa notes.

W naszym przypadku obliczenia to serwer centrum Jupyter, na którym działa jądro notesu, a niekoniecznie maszyna, na której działa przeglądarka. Jeśli używasz usługi Azure ML, obliczenia będą wybranym wystąpieniem obliczeniowym usługi Azure ML. Usługa Keyring wykonuje buforowanie na hoście, na którym jest uruchomione jądro notesu.

Aby dodać ustawienia usługi Key Vault w edytorze ustawień MSTICPy, wykonaj następujące kroki.

  1. Przejdź do następnej komórki z następującym kodem i uruchom go:

    mpedit.set_tab("Key Vault")
    mpedit
    
  2. Wprowadź szczegóły magazynu dla usługi Key Vault. Na przykład:

    Zrzut ekranu przedstawiający sekcję Konfiguracja usługi Key Vault

  3. Wybierz pozycję Zapisz , a następnie pozycję Zapisz ustawienia.

Testowanie usługi Key Vault

Aby przetestować magazyn kluczy, sprawdź, czy możesz nawiązać połączenie z wpisami tajnymi i wyświetlić je. Jeśli nie dodano wpisu tajnego, nie widzisz żadnych szczegółów. Jeśli chcesz, dodaj wpis tajny testowy z portalu usługi Azure Key Vault do magazynu i sprawdź, czy jest on wyświetlany w usłudze Microsoft Sentinel.

Na przykład:

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

Uwaga

Nie pozostawiaj danych wyjściowych wyświetlanych w zapisanym notesie. Jeśli w danych wyjściowych znajdują się prawdziwe wpisy tajne, przed zapisaniem notesu użyj polecenia Clear output notesu.

Ponadto usuń buforowane kopie notesu. Na przykład zajrzyj do folderu podrzędnego .ipynb_checkpoints katalogu notesu i usuń wszystkie znalezione kopie tego notesu. Zapisanie notesu przy użyciu wyczyszczonego danych wyjściowych powinno zastąpić kopię punktu kontrolnego.

Po skonfigurowaniu usługi Key Vault możesz użyć przycisku Przekaż do KV w sekcjach Dostawca danych s i dostawców ti, aby przenieść wybrane ustawienie do magazynu. Narzędzie MSTICPy generuje domyślną nazwę wpisu tajnego na podstawie ścieżki ustawienia, takiej jak TIProviders-VirusTotal-Args-AuthKey.

Jeśli wartość zostanie pomyślnie przekazana, zawartość pola Wartość w edytorze ustawień zostanie usunięta, a ustawienie bazowe zostanie zastąpione wartością symbolu zastępczego. Narzędzie MSTICPy używa tej wartości, aby wskazać, że powinna automatycznie wygenerować ścieżkę usługi Key Vault podczas próby pobrania klucza.

Jeśli masz już wymagane wpisy tajne przechowywane w usłudze Key Vault, możesz wprowadzić nazwę wpisu tajnego w polu Wartość . Jeśli wpis tajny nie jest przechowywany w magazynie domyślnym (wartości określone w sekcji usługi Key Vault ), możesz określić ścieżkę VaultName/SecretName.

Pobieranie ustawień z magazynu w innej dzierżawie nie jest obecnie obsługiwane. Aby uzyskać więcej informacji, zobacz Określanie wpisów tajnych jako wpisów tajnych usługi Key Vault.

Określanie metod uwierzytelniania w chmurze platformy Azure i platformy Azure

Jeśli używasz suwerennej lub rządowej chmury platformy Azure, a nie publicznej lub globalnej chmury platformy Azure, musisz wybrać odpowiednią chmurę w ustawieniach. W przypadku większości organizacji chmura globalna jest domyślna.

Możesz również użyć tych ustawień platformy Azure, aby zdefiniować domyślne preferencje dla typu uwierzytelniania platformy Azure.

Aby określić metody uwierzytelniania w chmurze platformy Azure i platformy Azure, wykonaj następujące kroki.

  1. Przejdź do następnej komórki z następującym kodem i uruchom go:

    mpedit.set_tab("Azure")
    mpedit
    
  2. Wybierz chmurę używaną przez organizację lub pozostaw domyślną wybraną opcję globalną .

  3. Wybierz co najmniej jedną z następujących metod:

    • env do przechowywania poświadczeń platformy Azure w zmiennych środowiskowych.
    • tożsamość usługi zarządzanej, która jest tożsamością przypisaną do hosta lub maszyny wirtualnej, na której działa centrum Jupyter. Tożsamość usługi zarządzanej nie jest obecnie obsługiwana w wystąpieniach obliczeniowych usługi Azure Machine Learning.
    • interfejs wiersza polecenia służący do używania poświadczeń z uwierzytelnionej sesji interfejsu wiersza polecenia platformy Azure.
    • interakcyjny do korzystania z interaktywnego przepływu autoryzacji urządzenia przy użyciu jednorazowego kodu urządzenia.

    W większości przypadków zalecamy wybranie wielu metod, takich jak interfejs wiersza polecenia i interakcyjne. Uwierzytelnianie platformy Azure próbuje każdą ze skonfigurowanych metod w podanej kolejności, dopóki nie powiedzie się.

  4. Wybierz pozycję Zapisz , a następnie pozycję Zapisz ustawienia.

    Na przykład:

    Zrzut ekranu przedstawiający ustawienia zdefiniowane dla chmury Azure Government.

Następne kroki

W tym artykule opisano podstawy korzystania z biblioteki MSTICPy z notesami Jupyter w usłudze Microsoft Sentinel. Aby uzyskać więcej informacji, zobacz Advanced configurations for Jupyter notebooks and MSTICPy in Microsoft Sentinel (Zaawansowane konfiguracje notesów Jupyter i biblioteki MSTICPy w usłudze Microsoft Sentinel).

Możesz również wypróbować inne notesy przechowywane w repozytorium GitHub notesów usługi Microsoft Sentinel, takie jak:

Jeśli używasz notesu opisanego w tym artykule w innym środowisku Jupyter, możesz użyć dowolnego jądra obsługującego język Python 3.6 lub nowszy.

Aby korzystać z notesów MSTICPy poza usługami Microsoft Sentinel i Azure Machine Learning (ML), należy również skonfigurować środowisko języka Python. Zainstaluj środowisko Python w wersji 3.6 lub nowszej przy użyciu dystrybucji Anaconda, która zawiera wiele wymaganych pakietów.

Więcej informacji na temat biblioteki MSTICPy i notesów

W poniższej tabeli wymieniono więcej informacji na temat notesów MSTICPy, Microsoft Sentinel i Jupyter.

Temat Więcej odwołań
MSTICPy - Konfiguracja pakietu MSTICPy
- Edytor ustawień MSTICPy
- Konfigurowanie środowiska notesu.
- Notes MPSettingsEditor.

Uwaga: repozytorium Azure-Sentinel-Notebooks GitHub zawiera również plik msticpyconfig.yaml z sekcjami z komentarzami, co może ułatwić zrozumienie ustawień.
Notesy Microsoft Sentinel i Jupyter - Tworzenie pierwszego notesu usługi Microsoft Sentinel (seria blogów)
- Notesy Jupyter: wprowadzenie
- Dokumentacja biblioteki MSTICPy
- Dokumentacja notesów usługi Microsoft Sentinel
- Podręcznik Jupyterbook programu Infosec
- Przewodnik po notesie Eksploratora hostów systemu Linux
- Dlaczego warto używać programu Jupyter do badania zabezpieczeń
- Badania zabezpieczeń za pomocą usługi Microsoft Sentinel i notesów
- Dokumentacja biblioteki Pandas
- Dokumentacja bokeh