Introdução aos notebooks Jupyter e MSTICPy no Microsoft Sentinel

Este artigo descreve como executar o Guia de Introdução para o notebook Microsoft Sentinel ML Notebooks , que define configurações básicas para executar blocos de anotações Jupyter no Microsoft Sentinel e executar consultas de dados simples.

O Guia de Introdução para o notebook Microsoft Sentinel ML Notebooks usa o MSTICPy, uma biblioteca Python de ferramentas de segurança cibernética criada pela Microsoft, que fornece funcionalidade de caça e investigação de ameaças.

O MSTICPy reduz a quantidade de código que os clientes precisam escrever para o Microsoft Sentinel e fornece:

  • Recursos de consulta de dados, em tabelas do Microsoft Sentinel, Microsoft Defender for Endpoint, Splunk e outras fontes de dados.
  • Pesquisas de inteligência de ameaças com provedores de TI, como VirusTotal e AlienVault OTX.
  • Funções de enriquecimento como geolocalização de endereços IP, extração de Indicador de Compromisso (IoC) e pesquisas WhoIs.
  • Ferramentas de visualização usando cronogramas de eventos, árvores de processo e mapeamento geográfico.
  • Análises avançadas, como decomposição de séries temporais, deteção de anomalias e agrupamento.

As etapas neste artigo descrevem como executar o Guia de Introdução para o notebook Microsoft Sentinel ML Notebooks em seu espaço de trabalho do Azure Machine Learning por meio do Microsoft Sentinel. Você também pode usar este artigo como orientação para executar etapas semelhantes para executar blocos de anotações em outros ambientes, inclusive localmente.

Para obter mais informações, consulte Usar blocos de anotações para potencializar investigações e Usar blocos de anotações Jupyter para caçar ameaças à segurança.

Vários blocos de anotações do Microsoft Sentinel não usam o MSTICPy, como os blocos de anotações do Credential Scanner ou os exemplos do PowerShell e C#. Os blocos de anotações que não usam o MSTICpy não precisam da configuração do MSTICPy descrita neste artigo.

Importante

O Microsoft Sentinel está disponível como parte da visualização pública da plataforma unificada de operações de segurança no portal Microsoft Defender. Para obter mais informações, consulte Microsoft Sentinel no portal do Microsoft Defender.

Pré-requisitos

Antes de começar, certifique-se de que tem as permissões e os recursos necessários.

  • Para utilizar blocos de notas no Microsoft Sentinel, certifique-se de que tem as permissões necessárias. Para obter mais informações, consulte Gerenciar o acesso aos blocos de anotações do Microsoft Sentinel.

  • Para executar as etapas neste artigo, você precisa do Python 3.6 ou posterior. No Azure Machine Learning, você pode usar um kernel Python 3.8 (recomendado) ou um kernel Python 3.6.

  • Este notebook usa o serviço de pesquisa de geolocalização MaxMind GeoLite2 para endereços IP. Para usar o serviço MaxMind GeoLite2, você precisa de uma chave de conta. Você pode se inscrever para uma conta gratuita e chave na página de inscrição Maxmind.

  • Este notebook usa o VirusTotal (VT) como uma fonte de informações sobre ameaças. Para usar a pesquisa de informações sobre ameaças do VirusTotal, você precisa de uma conta e chave de API do VirusTotal.

    Pode inscrever-se para obter uma conta VT gratuita na página de introdução do VirusTotal. Se já for um utilizador do VirusTotal, pode utilizar a sua chave existente.

    Aviso

    Se você estiver usando uma chave empresarial VT, armazene-a no Cofre de Chaves do Azure em vez do arquivo msticpyconfig.yaml . Para obter mais informações, consulte Especificar segredos como segredos do Cofre da Chave na documentação do MSTICPY.

    Se você não quiser configurar um Cofre da Chave do Azure agora, inscreva-se e use uma conta gratuita até poder configurar o armazenamento do Cofre da Chave.

Executar e inicializar o bloco de anotações do Guia de Introdução

Este procedimento descreve como iniciar seu bloco de anotações e inicializar o MSTICpy.

  1. Para o Microsoft Sentinel no portal do Azure, em Gerenciamento de ameaças, selecione Blocos de anotações.
    Para Microsoft Sentinel no portal do Defender, selecione Microsoft Sentinel>Threat management>Notebooks.

  2. Na guia Modelos, selecione Um Guia de Introdução para Blocos de Anotações do Microsoft Sentinel ML .

  3. Selecione Criar a partir do modelo.

  4. Edite o nome e selecione o espaço de trabalho do Azure Machine Learning conforme apropriado.

  5. Selecione Salvar para salvá-lo em seu espaço de trabalho do Azure Machine Learning.

  6. Selecione Iniciar bloco de anotações para executá-lo. O bloco de notas contém uma série de células:

    • As células de marcação contêm texto e gráficos com instruções para utilizar o bloco de notas
    • As células de código contêm código executável que executa as funções do bloco de notas
  7. Leia e execute as células de código em ordem. Ignorar células ou executá-las fora de ordem pode causar erros posteriormente no bloco de anotações.

    Execute cada célula selecionando o botão de reprodução à esquerda de cada célula. Dependendo da função que está sendo executada, o código na célula pode ser executado rapidamente ou pode levar alguns segundos para ser concluído.

    Quando a célula está em execução, o botão de reprodução muda para um girador de carregamento e um status de é exibido na parte inferior da célula, juntamente com o tempo decorrido Executing .

    Se o seu bloco de notas não estiver a funcionar como descrito, reinicie o kernel e execute-o desde o início. Por exemplo, se alguma célula do bloco de anotações do Guia de Introdução demorar mais de um minuto para ser executada, tente reiniciar o kernel e executar novamente o bloco de anotações.

    O bloco de anotações Guia de Introdução inclui instruções para o uso básico de blocos de anotações Jupyter, incluindo a reinicialização do kernel Jupyter.

    Depois de concluir a leitura e a execução das células na seção O que é um Jupyter Notebook, você estará pronto para iniciar as tarefas de configuração, começando na seção Configuração do ambiente do bloco de anotações.

  8. Execute a primeira célula de código na secção Configurar o ambiente do bloco de notas do seu bloco de notas, que inclui o seguinte código:

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

    O status de inicialização é mostrado na saída. Avisos de configuração sobre configurações ausentes no Missing msticpyconfig.yaml arquivo são esperados porque você ainda não configurou nada.

Crie seu arquivo de configuração

Após a inicialização básica, você estará pronto para criar seu arquivo de configuração com as configurações básicas para trabalhar com o MSTICPy.

Muitos notebooks do Microsoft Sentinel se conectam a serviços externos, como o VirusTotal (VT), para coletar e enriquecer dados. Para se conectar a esses serviços, você precisa definir e armazenar detalhes de configuração, como tokens de autenticação. Ter esses dados em seu arquivo de configuração evita que você precise digitar tokens de autenticação e detalhes do espaço de trabalho cada vez que usar um bloco de anotações.

MSTICPy usa um msticpyconfig.yaml para armazenar uma ampla gama de detalhes de configuração. Por padrão, um arquivo msticpyconfig.yaml é gerado pela função de inicialização do notebook. Se você clonou este bloco de anotações do portal do Microsoft Sentinel, o arquivo de configuração será preenchido com dados do espaço de trabalho do Microsoft Sentinel. Esses dados são lidos de um arquivo de config.json , criado no espaço de trabalho do Aprendizado de Máquina do Azure quando você inicia seu bloco de anotações. Para obter mais informações, consulte a documentação de configuração do pacote MSTICPy.

As seções a seguir descrevem como adicionar mais detalhes de configuração ao arquivo msticpyconfig.yaml .

Se você executar o bloco de anotações Guia de Introdução novamente e já tiver um arquivo msticpyconfig.yaml minimamente configurado, a função não substituirá ou modificará o init_notebook arquivo existente.

A qualquer momento, selecione o menu suspenso -Help na ferramenta de configuração MSTICPy para obter mais instruções e links para documentação detalhada.

Exibir o editor de configurações MSTICPy

  1. Em uma célula de código, execute o seguinte código para importar a MpConfigEdit ferramenta e exibir um editor de configurações para seu arquivo msticpyconfig.yaml :

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

    Por exemplo:

    Captura de tela do editor de configurações do MSTICPy.

    O arquivo msticpyconfig.yaml criado automaticamente, mostrado no editor de configurações, contém duas entradas na seção Microsoft Sentinel. Ambos são preenchidos com detalhes do espaço de trabalho do Microsoft Sentinel do qual o notebook foi clonado. Uma entrada tem o nome do seu espaço de trabalho e a outra é chamada Padrão.

    O MSTICPy permite armazenar configurações para vários espaços de trabalho do Microsoft Sentinel e alternar entre eles. A entrada Padrão permite que você se autentique em seu espaço de trabalho "inicial" por padrão, sem ter que nomeá-lo explicitamente. Se você adicionar outros espaços de trabalho, poderá configurar qualquer um deles para ser a entrada Padrão .

    No ambiente do Azure Machine Learning, o editor de configurações pode levar de 10 a 20 segundos para aparecer.

  2. Verifique suas configurações atuais e selecione Salvar configurações.

Adicionar configurações do provedor de informações sobre ameaças

Este procedimento descreve como armazenar a chave da API do VirusTotal no arquivo msticpyconfig.yaml . Você pode optar por carregar a chave da API no Cofre da Chave do Azure, mas primeiro deve definir as configurações do Cofre da Chave. Para obter mais informações, consulte Definir configurações do Cofre da Chave.

Para adicionar detalhes do VirusTotal no editor de configurações do MSTICPy, conclua as etapas a seguir.

  1. Insira o seguinte código em uma célula de código e execute:

    mpedit.set_tab("TI Providers")
    mpedit
    
  2. Na guia Provedores de TI, selecione Adicionar prov>VirusTotal>Add.

  3. Em Chave de Autenticação, selecione Texto ao lado da opção Armazenamento .

  4. No campo Valor, cole a chave da API.

  5. Selecione Atualizar e, em seguida, selecione Salvar configurações na parte inferior do editor de configurações.

Para obter mais informações sobre outros provedores de inteligência de ameaças suportados, consulte Provedores de inteligência de ameaças na documentação do MSTICPy e Integração de inteligência de ameaças no Microsoft Sentinel.

Adicionar configurações do provedor GeoIP

Este procedimento descreve como armazenar uma chave de conta MaxMind GeoLite2 no arquivo msticpyconfig.yaml, que permite que seu notebook use serviços de pesquisa de geolocalização para endereços IP.

Para adicionar as configurações do provedor GeoIP no editor de configurações MSTICPy, conclua as etapas a seguir.

  1. Insira o seguinte código em uma célula de código vazia e execute:

    mpedit.set_tab("GeoIP Providers")
    mpedit
    
  2. Na guia Provedores GeoIP, selecione Adicionar prov>GeoIPLite>Add.

  3. No campo Valor, insira a chave da sua conta MaxMind.

  4. Se necessário, atualize a pasta padrão ~/.msticpy para armazenar o banco de dados GeoIP baixado.

    • No Windows, essa pasta é mapeada para % USERPROFILE%/.msticpy.
    • No Linux ou macOS, esse caminho é mapeado para a pasta .msticpy na sua pasta inicial.

Para obter mais informações sobre outros serviços de pesquisa de geolocalização suportados, consulte a documentação MSTICPy GeoIP Providers.

Definir definições da Nuvem do Azure

Se sua organização não usa a nuvem pública do Azure, você deve especificar isso em suas configurações para autenticar e usar com êxito os dados do Microsoft Sentinel e do Azure. Para obter mais informações, consulte Especificar a Nuvem do Azure e os métodos padrão de Autenticação do Azure.

Validar configurações

  1. Selecione Validar configurações no editor de configurações.

    Mensagens de aviso sobre configurações ausentes são esperadas, mas você não deve ter nenhuma para configurações de provedor de inteligência de ameaças ou provedor GeoIP.

  2. Dependendo do seu ambiente, você também pode precisar definir as configurações do Cofre da Chave ou Especificar a nuvem do Azure.

  3. Se você precisar fazer alterações por causa da validação, faça essas alterações e selecione Salvar configurações.

  4. Quando terminar, selecione o botão Fechar para ocultar a saída de validação.

Para obter mais informações, consulte: Configurações avançadas para notebooks Jupyter e MSTICPy no Microsoft Sentinel

Carregar configurações salvas do MSTICPy

No procedimento Criar seu arquivo de configuração, você salvou suas configurações no arquivo msticpyconfig.yaml local.

No entanto, o MSTICPy não recarrega automaticamente essas configurações até que você reinicie o kernel ou execute outro notebook. Para forçar o MSTICPy a recarregar a partir do novo arquivo de configuração, vá para a próxima célula de código, com o seguinte código, e execute-o:

import msticpy
msticpy.settings.refresh_config()

Teste o seu bloco de notas

Agora que você inicializou seu ambiente e definiu as configurações básicas para seu espaço de trabalho, use a classe MSTICPy QueryProvider para testar o bloco de anotações. QueryProvider consulta uma fonte de dados, neste caso, seu espaço de trabalho do Microsoft Sentinel e disponibiliza os dados consultados para exibição e análise em seu bloco de anotações.

Use os procedimentos a seguir para criar uma instância da classe, autenticar no Microsoft Sentinel a partir do seu bloco de anotações e exibir e executar consultas com várias opções de QueryProvider parâmetros diferentes.

Você pode ter várias instâncias carregadas para uso com vários espaços de trabalho do Microsoft Sentinel ou outros provedores de QueryProvider dados, como o Microsoft Defender for Endpoint.

Carregue o QueryProvider

Para carregar o QueryProvider for AzureSentinel, vá para a célula com o seguinte código e execute-o:

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

Se você vir um aviso Runtime dependency of PyGObject is missing ao carregar o driver do Microsoft Sentinel, consulte o Erro: dependência de tempo de execução do PyGObject está faltando. Este aviso não afeta a funcionalidade do bloco de notas.

Autenticar no espaço de trabalho do Microsoft Sentinel a partir do seu bloco de notas

Nos blocos de anotações do Azure Machine Learning, a autenticação assume como padrão o uso das credenciais usadas para autenticar no espaço de trabalho do Azure Machine Learning.

Autentique-se usando a identidade gerenciada concluindo as etapas a seguir.

  1. Execute o código a seguir para autenticar em seu espaço de trabalho do 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. Reveja a saída. A saída exibida é semelhante à imagem a seguir.

    Captura de tela que mostra a autenticação no Azure que termina com uma mensagem conectada.

Armazenar em cache seu token de entrada usando a CLI do Azure

Para evitar ter que autenticar novamente se você reiniciar o kernel ou executar outro bloco de anotações, você pode armazenar em cache seu token de entrada usando a CLI do Azure.

O componente CLI do Azure na instância de computação armazena em cache um token de atualização que pode ser reutilizado até que o token atinja o tempo limite. O MSTICPy usa automaticamente as credenciais da CLI do Azure, se estiverem disponíveis.

Para autenticar usando a CLI do Azure, insira o seguinte comando em uma célula vazia e execute-o:

!az login

Você precisará autenticar novamente se reiniciar sua instância de computação ou alternar para uma instância diferente. Para obter mais informações, consulte a seção Caching credentials with Azure CLI no wiki do repositório GitHub do Microsoft Sentinel Notebooks.

Exibir o esquema de dados do espaço de trabalho do Microsoft Sentinel e consultas MSTICPy internas

Depois de se conectar a um Microsoft Sentinel QueryProvider, você pode entender os tipos de dados disponíveis para consulta consultando o esquema de dados do espaço de trabalho do Microsoft Sentinel.

O Microsoft Sentinel QueryProvider tem uma schema_tables propriedade, que fornece uma lista de tabelas de esquema, e uma schema propriedade, que também inclui os nomes de coluna e tipos de dados para cada tabela.

Para exibir as primeiras 10 tabelas no esquema do Microsoft Sentinel:

Prossiga para a próxima célula, com o código a seguir, e execute-a. Você pode omitir a [:10] lista para listar todas as tabelas em seu espaço de trabalho.

# 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

É apresentada a seguinte saída:

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

MSTICPy também inclui muitas consultas internas disponíveis para você executar. Liste consultas disponíveis com .list_queries()o , e obtenha detalhes específicos sobre uma consulta chamando-a com um ponto de interrogação (?) incluído como parâmetro. Como alternativa, você pode visualizar a lista de consultas e a ajuda associada no navegador de consultas.

Para visualizar um exemplo de consultas disponíveis:

  1. Prossiga para a próxima célula, com o código a seguir, e execute-a. Você pode omitir o [::5] para listar todas as consultas.

    # Get a sample of available queries
    print(qry_prov.list_queries()[::5])  # showing a sample - remove "[::5]" for whole list
    
  2. Reveja a saída.

    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. Para obter ajuda sobre uma consulta passando ? como parâmetro:

    # Get help about a query by passing "?" as a parameter
    qry_prov.Azure.list_all_signins_geo("?")
    
  4. Reveja a saída.

    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. Para exibir tabelas e consultas em uma lista rolável e filtrável, vá para a próxima célula, com o código a seguir, e execute-a.

    qry_prov.browse_queries()
    
  6. Para a consulta selecionada, todos os parâmetros obrigatórios e opcionais são exibidos, juntamente com o texto completo da consulta. Por exemplo:

    Captura de tela de tabelas e consultas exibidas em uma lista rolável e filtrável.

Embora não seja possível executar consultas a partir do navegador, você pode copiar e colar o exemplo no final de cada consulta para ser executado em outro lugar do bloco de anotações.

Para obter mais informações, consulte Executando uma consulta predefinida na documentação do MSTICPy.

Executar consultas com parâmetros de tempo

A maioria das consultas requer parâmetros de tempo. As cadeias de caracteres de data/hora são entediantes de digitar, e modificá-las em vários lugares pode ser propenso a erros.

Cada provedor de consulta tem parâmetros padrão de hora de início e término para consultas. Esses parâmetros de tempo são usados por padrão, sempre que os parâmetros de tempo são necessários. Você pode alterar o intervalo de tempo padrão abrindo o query_time controle. As alterações permanecem em vigor até serem alteradas novamente.

  1. Prossiga para a próxima célula, com o seguinte código, e execute-a:

    # Open the query time control for your query provider
    qry_prov.query_time
    
  2. Defina os start horários e end conforme necessário. Por exemplo:

    Captura de tela da configuração de parâmetros de tempo padrão para consultas.

Executar uma consulta usando o intervalo de tempo interno

Os resultados da consulta retornam como um Pandas DataFrame, que é uma estrutura de dados tabular, como uma planilha ou tabela de banco de dados. Use funções pandas para executar filtragem e análise extra nos resultados da consulta.

  1. Execute a seguinte célula de código. Ele executa uma consulta usando as configurações de tempo padrão do provedor de consulta. Você pode alterar esse intervalo e executar a célula de código novamente para consultar o novo intervalo de 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. Reveja a saída. Ele exibe as cinco primeiras linhas de resultados. Por exemplo:

    Captura de ecrã de uma consulta executada com o intervalo de tempo incorporado.

    Se não houver dados, apenas os cabeçalhos das colunas serão exibidos.

Executar uma consulta usando um intervalo de tempo personalizado

Você também pode criar um novo objeto de tempo de consulta e passá-lo para uma consulta como um parâmetro. Isso permite que você execute uma consulta única para um intervalo de tempo diferente, sem afetar os padrões do provedor de consulta.

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

Depois de definir o intervalo de tempo desejado, você pode passar o intervalo de tempo para a função de consulta, executando o seguinte código em uma célula separada do código anterior:

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

Você também pode passar valores datetime como datetimes do Python ou cadeias de caracteres date-time usando os start parâmetros and 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)

Personalize as suas consultas

Você pode personalizar as consultas internas adicionando mais lógica de consulta ou executar consultas completas usando a exec_query função.

Por exemplo, a maioria das consultas internas suporta o add_query_items parâmetro, que você pode usar para acrescentar filtros ou outras operações às consultas.

  1. Execute a célula de código a seguir para adicionar um quadro de dados que resume o número de alertas por nome de alerta:

    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. Passe uma cadeia de caracteres de consulta KQL (Kusto Query Language) completa para o provedor de consulta. A consulta é executada no espaço de trabalho conectado e os dados retornam como um DataFrame panda. Executar:

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

Para obter mais informações, consulte:

Teste VirusTotal

  1. Para usar informações sobre ameaças para ver se um endereço IP aparece nos dados do VirusTotal, execute a célula com o seguinte código:

    # 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. Reveja a saída. Por exemplo:

    Captura de ecrã de um endereço IP que aparece nos dados do VirusTotal.

  3. Desloque-se para baixo para ver os resultados completos.

Para obter mais informações, consulte Threat Intel Lookups in MSTICPy.

Testar pesquisa de IP de geolocalização

  1. Para obter detalhes de geolocalização para um endereço IP usando o serviço MaxMind, execute a célula com o seguinte código:

    # 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. Reveja a saída. Por exemplo:

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

A primeira vez que você executar este código, você deve ver o driver GeoLite baixando seu banco de dados.

Para obter mais informações, consulte MSTICPy GeoIP Providers.

Definir configurações do Cofre da Chave

Esta seção é relevante somente ao armazenar segredos no Cofre da Chave do Azure.

Quando você armazena segredos no Cofre de Chaves do Azure, precisa criar o Cofre da Chave primeiro no portal de gerenciamento global do KeyVault do Azure.

As configurações necessárias são todos os valores que você obtém das propriedades do Vault, embora alguns possam ter nomes diferentes. Por exemplo:

  • VaultName é exibido no canto superior esquerdo da tela Propriedades do Cofre da Chave do Azure
  • TenantId é mostrado como Directory ID
  • AzureRegion é mostrado como Local
  • Autoridade é a nuvem para o seu serviço do Azure.

Somente os valores VaultName, TenantId e Authority são necessários para recuperar segredos do Vault. Os outros valores são necessários se você optar por criar um cofre a partir do MSTICPy. Para obter mais informações, consulte Especificando segredos como segredos do Cofre da Chave.

A opção Usar KeyRing é selecionada por padrão e permite armazenar em cache as credenciais do Key Vault em um KeyRing local. Para obter mais informações, consulte a documentação do KeyRing.

Atenção

Não use a opção Usar chaveiro se você não confiar totalmente no host Compute em que o bloco de anotações está sendo executado.

No nosso caso, a computação é o servidor hub Jupyter, onde o kernel do notebook está sendo executado, e não necessariamente a máquina em que seu navegador está sendo executado. Se você estiver usando o Azure ML, a computação será a instância de computação do Azure ML selecionada. O chaveiro faz seu cache no host onde o kernel do notebook está sendo executado.

Para adicionar as configurações do Cofre da Chave no editor de configurações do MSTICPy, conclua as etapas a seguir.

  1. Prossiga para a próxima célula, com o seguinte código, e execute-a:

    mpedit.set_tab("Key Vault")
    mpedit
    
  2. Introduza os detalhes do Cofre para o Cofre da Chave. Por exemplo:

    Captura de ecrã da secção Configuração do Cofre da Chave

  3. Selecione Guardar e, em seguida, Guardar Definições.

Cofre da chave de teste

Para testar o cofre de chaves, verifique se consegue ligar e ver os seus segredos. Se você não adicionou um segredo, não verá nenhum detalhe. Se precisar, adicione um segredo de teste do portal do Cofre de Chaves do Azure ao cofre e verifique se ele aparece no Microsoft Sentinel.

Por exemplo:

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

Atenção

Não deixe a saída exibida no seu bloco de anotações salvo. Se houver segredos reais na saída, use o comando Limpar saída do bloco de anotações antes de salvá-lo.

Além disso, exclua cópias em cache do bloco de anotações. Por exemplo, procure na subpasta .ipynb_checkpoints do diretório do seu bloco de anotações e exclua todas as cópias deste bloco de anotações encontradas. Salvar o bloco de anotações com uma saída limpa deve substituir a cópia do ponto de verificação.

Depois de configurar o Cofre da Chave, você pode usar o botão Carregar para KV nas seções Provedores de Dados e Provedores de TI para mover a configuração selecionada para o Cofre. MSTICPy gera um nome padrão para o segredo com base no caminho da configuração, como TIProviders-VirusTotal-Args-AuthKey.

Se o valor for carregado com êxito, o conteúdo do campo Valor no editor de configurações será excluído e a configuração subjacente será substituída por um valor de espaço reservado. MSTICPy usa esse valor para indicar que ele deve gerar automaticamente o caminho do Cofre da Chave ao tentar recuperar a chave.

Se você já tiver os segredos necessários armazenados em um Cofre de Chaves, poderá inserir o nome do segredo no campo Valor . Se o segredo não estiver armazenado no Vault padrão (os valores especificados na seção Cofre da Chave ), você poderá especificar um caminho de VaultName/SecretName.

Atualmente, não há suporte para a busca de configurações de um Vault em um locatário diferente. Para obter mais informações, consulte Especificando segredos como segredos do Cofre da Chave.

Especificar a nuvem do Azure e os métodos de autenticação do Azure

Se estiver a utilizar uma nuvem do Azure soberana ou governamental, em vez da nuvem pública ou global do Azure, tem de selecionar a nuvem adequada nas suas definições. Para a maioria das organizações, a nuvem global é o padrão.

Você também pode usar essas configurações do Azure para definir preferências padrão para o tipo de autenticação do Azure.

Para especificar a nuvem do Azure e os métodos de autenticação do Azure, conclua as etapas a seguir.

  1. Prossiga para a próxima célula, com o seguinte código, e execute-a:

    mpedit.set_tab("Azure")
    mpedit
    
  2. Selecione a nuvem usada pela sua organização ou deixe a opção global selecionada padrão.

  3. Selecione um ou mais dos seguintes métodos:

    • env para armazenar suas credenciais do Azure em variáveis de ambiente.
    • msi para usar a Identidade de Serviço Gerenciado, que é uma identidade atribuída ao host ou à máquina virtual onde o hub Jupyter está sendo executado. Atualmente, não há suporte para MSI em instâncias de computação do Azure Machine Learning.
    • cli para usar credenciais de uma sessão autenticada da CLI do Azure.
    • interativo para usar o fluxo de autorização de dispositivo interativo usando um código de dispositivo único.

    Na maioria dos casos, recomendamos selecionar vários métodos, como cli e interativo. A autenticação do Azure tenta cada um dos métodos configurados na ordem listada até que um seja bem-sucedido.

  4. Selecione Guardar e, em seguida, Guardar Definições.

    Por exemplo:

    Captura de ecrã das definições definidas para a nuvem do Azure Government.

Próximos passos

Este artigo descreveu os conceitos básicos do uso do MSTICPy com notebooks Jupyter no Microsoft Sentinel. Para obter mais informações, consulte Configurações avançadas para notebooks Jupyter e MSTICPy no Microsoft Sentinel.

Você também pode experimentar outros blocos de anotações armazenados no repositório GitHub do Microsoft Sentinel Notebooks, como:

Se você usar o notebook descrito neste artigo em outro ambiente Jupyter, poderá usar qualquer kernel que suporte Python 3.6 ou posterior.

Para usar blocos de anotações MSTICPy fora do Microsoft Sentinel e do Azure Machine Learning (ML), você também precisa configurar seu ambiente Python. Instale o Python 3.6 ou posterior com a distribuição Anaconda, que inclui muitos dos pacotes necessários.

Mais informações sobre MSTICPy e cadernos

A tabela a seguir lista mais referências para aprender sobre os notebooks MSTICPy, Microsoft Sentinel e Jupyter.

Assunto Mais referências
MSTICPy - Configuração do pacote MSTICPy
- Editor de configurações MSTICPy
- Configurar o ambiente do seu bloco de notas.
- Caderno MPSettingsEditor.

Nota: O Azure-Sentinel-Notebooks repositório GitHub também contém um arquivo msticpyconfig.yaml de modelo com seções comentadas, o que pode ajudá-lo a entender as configurações.
Notebooks Microsoft Sentinel e Jupyter - Crie seu primeiro notebook Microsoft Sentinel (série de blogs)
- Cadernos Jupyter: uma introdução
- Documentação MSTICPy
- Documentação do Microsoft Sentinel Notebooks
- O Infosec Jupyterbook
- Passo a passo do Linux Host Explorer Notebook
- Por que usar o Jupyter para investigações de segurança
- Investigações de segurança com o Microsoft Sentinel & Notebooks
- Documentação Pandas
- Documentação Bokeh