Share via


Introdução ao notebooks Jupyter e à MSTICPy no Microsoft Azure Sentinel

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

O Guia de Introdução para notebooks de ML do Microsoft Azure Sentinel usa o MSTICPy, uma biblioteca do Python com ferramentas de segurança cibernética, criada pela Microsoft, que fornece a busca por ameaças e a funcionalidade de investigação.

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

  • Funcionalidades de consulta de dados, em relação às tabelas do Microsoft Azure Sentinel, do Microsoft Defender para Ponto de Extremidade, do Splunk e de outras fontes de dados.
  • Pesquisas de inteligência contra 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 um IoC (sinal de comprometimento) e pesquisas de WhoIs.
  • Ferramentas de visualização usando linhas do tempo de evento, árvores de processo e mapeamento geográfico.
  • Análises avançadas, como decomposição de série temporal, detecção de anomalias e clustering.

As etapas neste artigo descrevem como executar o notebook Guia de Introdução para Notebooks do ML do Microsoft Sentinel no workspace do Azure Machine Learning por meio do Microsoft Sentinel. Você também pode usar este artigo como guia para realizar etapas semelhantes para executar notebooks em outros ambientes, inclusive localmente.

Para obter mais informações, consulte Usar notebooks para melhorar investigações e Usar notebooks Jupyter para procurar ameaças à segurança.

Vários notebooks do Microsoft Sentinel não usam o MSTICPy, como os notebooks do Verificador de Credenciais ou os exemplos do PowerShell e do C#. Os notebooks 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 versão prévia pública da plataforma unificada de operações de segurança no portal do Microsoft Defender. Para obter mais informações, confira Microsoft Sentinel no portal do Microsoft Defender.

Pré-requisitos

Antes de começar, verifique se você tem as permissões e os recursos necessários.

  • Verifique se você tem as permissões necessárias para usar os notebooks no Microsoft Azure Sentinel. Para saber mais, confira Gerenciar o acesso aos notebooks do Microsoft Azure Sentinel.

  • Para executar as etapas neste artigo, você precisará do Python 3.6 ou posterior. No Azure Machine Learning você pode usar um kernel do Python 3.8 (recomendado) ou um kernel do 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ê precisará de uma chave de conta. Você pode se inscrever para obter uma conta e uma chave gratuitas na página de inscrição do MaxMind.

  • Este notebook usa VirusTotal (VT) como uma fonte de inteligência contra ameaças. Para usar a pesquisa de inteligência contra ameaças do VirusTotal, você precisará de uma conta do VirusTotal e uma chave de API.

    Você pode se inscrever para obter uma conta gratuita do VT na página de introdução do VirusTotal. Se você já for um usuário do VirusTotal, poderá usar sua chave existente.

    Aviso

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

    Se você não quiser configurar um Azure Key Vault no momento, inscreva-se e use uma conta gratuita até poder configurar um armazenamento do Key Vault.

Executar e inicializar o notebook do Guia de Introdução

Este procedimento descreve como iniciar o notebook e inicializar o MSTICpy.

  1. Para o Microsoft Sentinel no portal do Azure, em Gerenciamento de ameaças, selecione Notebooks.
    Para o Microsoft Sentinel no Portal do Defender, selecione Microsoft Sentinel>Gerenciamento de ameaças>Notebooks.

  2. Na guia Modelos, selecione Um Guia de Introdução para Notebooks do ML do Microsoft Sentinel.

  3. Selecione Criar de um modelo.

  4. Edite o nome e selecione o workspace do Azure Machine Learning conforme apropriado.

  5. Selecione Salvar para salvá-lo no workspace do Azure Machine Learning.

  6. Selecione Iniciar notebook para executar o notebook. O notebook contém uma série de células:

    • As células Markdown contêm texto e gráficos com instruções para usar o notebook
    • As células de código contêm código executável que executam as funções de notebook
  7. Ler e executar as células de código em ordem. Ignorar células ou executá-las fora de ordem pode causar erros no notebook mais tarde.

    Executar cada célula selecionando o botão Executar à 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 Executar muda para um controle giratório de carregamento e um status de Executing é exibido na parte inferior da célula, assim como o tempo decorrido.

    Se o seu notebook não estiver funcionando conforme descrito, reinicie o kernel e execute o notebook desde o início. Por exemplo, se qualquer célula no notebook do Guia de Introdução demorar mais do que um minuto para ser executada, tente reiniciar o kernel e executar novamente o notebook.

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

    Após 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 Configurando o ambiente do notebook.

  8. Execute a primeira célula de código na seção Configuração do ambiente do notebook do seu notebook, 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. Os avisos de configuração sobre as configurações ausentes no arquivo Missing msticpyconfig.yaml são esperados porque você ainda não configurou nada.

Criar 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 Azure 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 a necessidade de digitar os tokens de autenticação e os detalhes do espaço de trabalho sempre que você usar um notebook.

O MSTICPy usa um msticpyconfig.yaml para armazenar um intervalo amplo de detalhes de configuração. Por padrão, um arquivo msticpyconfig.yaml é gerado pela função de inicialização do notebook. Se você clonou esse notebook do portal do Microsoft Azure Sentinel, o arquivo de configuração será preenchido com os dados do workspace do Microsoft Sentinel. Esses dados são lidos a partir de um arquivo config.json, criado no workspace do Azure Machine Learning ao iniciar o notebook. Para obter mais informações, confira 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 notebook Guia de Introdução novamente e já tiver um arquivo msticpyconfig.yaml minimamente configurado, a função init_notebook não substituirá nem modificará o arquivo existente.

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

Exibir o editor de configurações do MSTICPy

  1. Em uma célula de código, execute o seguinte código para importar a ferramenta MpConfigEdit e exibir um editor de configurações para o 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 do Microsoft Azure Sentinel. Elas são preenchidas com detalhes do workspace do Microsoft Azure Sentinel do qual o notebook foi clonado. Uma entrada tem o nome do seu espaço de trabalho e a outra é denominada padrão.

    O MSTICPy permite que você armazene configurações para vários workspaces do Microsoft Azure Sentinel e alterne entre eles. A entrada padrão permite que você faça a autenticação no seu espaço de trabalho "inicial" por padrão, sem precisar nomeá-lo explicitamente. Se você adicionar outros workspaces, será possível 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 as configurações atuais e selecione Salvar Configurações.

Adicionar configurações do provedor de inteligência contra ameaças

Este procedimento descreve como armazenar sua Chave de API do VirusTotal no arquivo msticpyconfig.yaml. Você pode optar por carregar a chave de API para o Azure Key Vault, mas primeiro deve definir as configurações de Key Vault. Para saber mais, confira Definir as configurações do Key Vault.

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

  1. Insira o código a seguir 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>Adicionar.

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

  4. No campo valor, cole sua chave de API.

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

Para mais informações sobre outros provedores de inteligência contra ameaças com suporte, confira Provedores de inteligência contra ameaças na documentação do MSTICPy e Integração de inteligência contra ameaças no Microsoft Azure Sentinel.

Adicionar configurações do provedor GeoIP

Este procedimento descreve como armazenar uma chave de conta do MaxMind GeoLite2 no arquivo msticpyconfig.yaml, que habilita o notebook a usar serviços de pesquisa de localização geográfica para endereços IP.

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

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

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

  3. No campo valor, insira sua chave de conta do MaxMind.

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

    • Em Windows, esta pasta está mapeada para o %USERPROFILE%/.msticpy.
    • No Linux ou no macOS, esse caminho é mapeado para a pasta .msticpy em sua pasta base.

Para obter mais informações sobre outros serviços de pesquisa de localização geográfica com suporte, consulte a documentação de provedores GeoIP do MSTICPy.

Definir as configurações da Nuvem do Azure

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

Validar configurações

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

    São esperadas mensagens de aviso sobre configurações ausentes, mas você não deve ter nenhuma sobre as configurações do provedor de inteligência contra ameaças ou do provedor GeoIP.

  2. Dependendo do seu ambiente, talvez você também precise definir as configurações do Key Vault ou especificar a nuvem do Azure.

  3. Se for necessário fazer alterações devido à validação, faça-as e selecione Salvar Configurações.

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

Para mais informações, confira Configurações avançadas para notebooks Jupyter e MSTICPy no Microsoft Azure Sentinel

Carregar configurações salvas do MSTICPy

No procedimento Criar 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, prossiga para próxima célula de código, com o código a seguir e o execute:

import msticpy
msticpy.settings.refresh_config()

Testar seu notebook

Agora que você inicializou o ambiente e definiu as configurações básicas do workspace, use a classe QueryProvider do MSTICPy para testar o notebook. QueryProvider consulta uma fonte de dados, nesse caso, o workspace do Microsoft Sentinel, e disponibiliza os dados consultados para exibição e análise no notebook.

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

Você pode ter várias instâncias de QueryProvider carregadas para usar com vários workspaces do Microsoft Azure Sentinel ou outros provedores de dados, como o Microsoft Defender para Ponto de Extremidade.

Carregar o QueryProvider

Para carregar o QueryProvider para AzureSentinel, prossiga para a célula com o código a seguir 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 Azure Sentinel, confira o Erro: a dependência de runtime do PyGObject está ausente. Esse aviso não afeta a funcionalidade do notebook.

Autenticar-se no workspace do Microsoft Azure Sentinel a partir do notebook

Nos notebooks do Azure Machine Learning, a autenticação usa as credenciais usadas para autenticar no workspace do Azure Machine Learning.

Autentique usando a identidade gerenciada concluindo as etapas a seguir.

  1. Execute o código a seguir para autenticar no workspace 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. Examine 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 o token de credenciais usando a CLI do Azure

Para evitar a necessidade de nova autenticação caso você reinicie o kernel ou execute outros notebooks, você pode armazenar em cache o token de credenciais usando a CLI do Azure.

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

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

!az login

Será necessário se autenticar novamente se você reiniciar a instância de computação ou alternar para uma instância diferente. Para mais informações, confira a seção Credenciais de cache com a CLI do Azure no wiki do repositório de GitHub dos notebooks do Microsoft Azure Sentinel.

Exibir esquema de dados do workspace do Microsoft Azure Sentinel e das consultas MSTICPy internas

Depois de se conectar a um QueryProvider do Microsoft Azure Sentinel, você poderá entender os tipos de dados disponíveis para consulta consultando o esquema de dados do workspace do Microsoft Azure Sentinel.

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

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

Prossiga para a próxima célula, com o código a seguir e execute-o. Você pode omitir o [:10] 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

O seguinte resultado é exibido:

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

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

Para exibir um exemplo de consultas disponíveis:

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

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

    Captura de tela de tabelas e consultas exibidas em uma lista com rolagem e filtragem.

Embora não seja possível executar consultas no navegador, você pode copiar e colar o exemplo no final de cada consulta para ser executado em outro lugar no notebook.

Para obter mais informações, consulte Execução de uma consulta pré-definida na documentação do MSTICPy.

Executar consultas com parâmetros de tempo

A maioria das consultas exige parâmetros de tempo. Cadeias de caracteres de data/hora são entediantes de digitar e modificá-las em vários locais pode gerar erros.

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

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

    # Open the query time control for your query provider
    qry_prov.query_time
    
  2. Defina as horas start 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 DataFrame Pandas, que é uma estrutura de dados tabular, como uma planilha ou tabela de banco de dados. Use as funções pandas para executar filtragem extra e análise nos resultados da consulta.

  1. Execute a célula de código a seguir. Isso executará 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. Examine a saída. Isso exibirá as primeiras cinco linhas de resultados. Por exemplo:

    Captura de tela de uma consulta executada com o intervalo de tempo interno.

    Se não houver dados, somente os títulos de coluna 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 parâmetro. Isso permitirá 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ê poderá 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 de data/hora usando os parâmetros 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)

Personalizar suas consultas

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

Por exemplo, a maioria das consultas internas dá suporte ao parâmetro add_query_items, que você pode usar para anexar 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 do 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 (Linguagem de Consulta Kusto) completa para o provedor de consulta. A consulta é executada no espaço de trabalho conectado e os dados retornam como um DataFrame do Panda. Execute:

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

Test VirusTotal

  1. Para usar a inteligência contra ameaças para ver se um endereço IP aparece nos dados do VirusTotal, execute a célula com o código a seguir:

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

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

  3. Role para baixo para exibir os resultados completos.

Para obter mais informações, consulte Pesquisas Intel contra ameaças no MSTICPy.

Testar a pesquisa de IP de localização geográfica

  1. Para obter detalhes sobre a localização geográfica de um endereço IP usando o serviço MaxMind, execute a célula com o código a seguir:

    # 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. Examine 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()}
    

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

Para obter mais informações, consulte Provedores de GeoIP do MSTICPy.

Definir as configurações do Key Vault

Esta seção é relevante somente se houver armazenamento de segredos no Azure Key Vault.

Ao armazenar segredos no Azure Key Vault, primeiro você precisará criar o Key Vault no portal de gerenciamento do KeyVault global do Azure.

As configurações necessárias são todos os valores obtidos das propriedades do cofre, embora algumas possam ter nomes diferentes. Por exemplo:

  • O Vaultname é exibido na parte superior esquerda da tela Propriedades do Azure Key Vault
  • A Tenantid é mostrada como ID do diretório
  • A AzureRegion é mostrada como localização
  • A Authority é a nuvem para seu serviço do Azure.

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

A opção Usar KeyRing é selecionada por padrão e permite que você armazene em cache credenciais do Key Vault em um KeyRing local. Para obter mais informações, consulte Documentação do KeyRing.

Cuidado

Não use a opção Usar KeyRing se não confiar totalmente na computação do host em que o notebook está sendo executado.

Em nosso caso, a computação é o servidor Hub Jupyter, onde o kernel do notebook está em execução e não necessariamente o computador no qual seu navegador está sendo executado. Se você estiver usando o Azure Machine Learning, a computação será a instância de Computação do Azure Machine Learning que você selecionou. O KeyRing faz seu cache no host onde o kernel do notebook está em execução.

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

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

    mpedit.set_tab("Key Vault")
    mpedit
    
  2. Inserir os detalhes do Vault no seu Key Vault. Por exemplo:

    Captura de tela da seção de instalação do Key Vault

  3. Selecione Salvar e depois Salvar Configurações.

Testar Key Vault

Para testar o cofre de chaves, verifique se você pode se conectar e exibir seus segredos. Se você não adicionou um segredo, não verá nenhum detalhe. Caso seja necessário, adicione ao cofre um segredo de teste a partir do portal do Azure Key Vault e verifique se ele é mostrado no Microsoft Azure Sentinel.

Por exemplo:

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

Cuidado

Não deixe a saída exibida no notebook salvo. Se houver segredos reais na saída, use o comando Limpar saída do notebook antes de salvar o notebook.

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

Após configurar o Key Vault, você pode usar o botão Upload para KV nas seções Provedores de dados e Provedores de TI para mover a configuração selecionada para o cofre. O MSTICPy gerará 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. O MSTICPy usará esse valor para indicar que ele deve gerar automaticamente o caminho do Key Vault ao tentar recuperar a chave.

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

No momento, não há suporte para a busca de configurações de um cofre em um locatário diferente. Para obter mais informações, consulte Especificar segredos como segredos do Key Vault.

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

Se você estiver usando uma nuvem soberana ou governamental do Azure, em vez de uma nuvem pública ou global do Azure, deverá selecionar a nuvem apropriada em suas configuraçõ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 as 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 código a seguir e execute-o:

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

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

    • env para armazenar suas credenciais do Azure em variáveis de ambiente.
    • MSI para usar identidade de serviço gerenciada, que é uma identidade atribuída ao host ou à máquina virtual em que o Hub Jupyter está em execução. No momento, a MSI não tem suporte em instâncias de computação do Azure Machine Learning.
    • cli para usar credenciais de uma sessão da CLI do Azure autenticada.
    • interactive para usar o fluxo de autorização de dispositivo interativo usando um código de dispositivo único.

    Na maioria dos casos, é recomendável selecionar vários métodos, como o CLI e interactive. A autenticação do Azure tentará cada um dos métodos configurados na ordem listada até que um deles seja bem-sucedido.

  4. Selecione Salvar e depois Salvar Configurações.

    Por exemplo:

    Captura de tela das configurações definidas para a nuvem do Azure Governamental.

Próximas etapas

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

Você também pode experimentar outros notebooks armazenados no Repositório GitHub de notebooks do Microsoft Azure Sentinel, como:

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

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

Mais leituras sobre MSTICPy e notebooks

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

Assunto Mais referências
MSTICPy - Configuração do pacote MSTICPy
- Editor de Configurações MSTICPy
- Configurando o ambiente do notebook.
- Notebook MPSettingsEditor.

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