Introducción a los cuadernos de Jupyter y MSTICPy en Microsoft Sentinel

En este artículo se describe cómo ejecutar el cuaderno Getting Started Guide For Microsoft Sentinel ML Notebooks (Guía de introducción para cuadernos de ML de Microsoft Sentinel), que establece configuraciones básicas para ejecutar cuadernos de Jupyter en Microsoft Sentinel y consultas de datos sencillas.

En el cuaderno Getting Started Guide for Microsoft Sentinel ML Notebooks (Guía de introducción para cuadernos de ML de Microsoft Sentinel) se usa MSTICPy, una biblioteca de Python de herramientas de ciberseguridad creada por Microsoft, que proporciona la funcionalidad de búsqueda e investigación de amenazas.

MSTICPy reduce la cantidad de código que los clientes necesitan escribir para Microsoft Sentinel y proporciona lo siguiente:

  • Funcionalidades de consulta de datos en tablas de Microsoft Sentinel, Microsoft Defender para puntos de conexión, Splunk y otros orígenes de datos.
  • Búsquedas de inteligencia sobre amenazas con proveedores de TI como VirusTotal y AlienVault OTX.
  • Funciones de enriquecimiento como la geolocalización de direcciones IP, la extracción del indicador de riesgo (IoC) y búsquedas WhoIs.
  • Herramientas de visualización mediante escalas de tiempo de eventos, árboles de proceso y asignación geográfica.
  • Análisis avanzados, como la descomposición de series temporales, la detección de anomalías y la agrupación en clústeres.

En los pasos de este artículo se describe cómo ejecutar la guía de Introducción de cuadernos de Ml Notebook de Microsoft Sentinel cuaderno en el área de trabajo de Azure Machine Learning a través de Microsoft Sentinel. También puede usar este artículo como guía para realizar pasos similares a fin de ejecutar cuadernos en otros entornos, incluido el local.

Para obtener más información, vea Uso de cuadernos como tecnología de las investigaciones y Uso de Jupyter Notebook para buscar amenazas de seguridad.

Varios cuadernos de Microsoft Sentinel no usan MSTICPy, como el Analizador de credenciales de cuadernos o los ejemplos de PowerShell y C#. Los cuadernos que no usan MSTICpy no necesitan la configuración de MSTICPy que se describe en este artículo.

Importante

Microsoft Sentinel está disponible como parte de la versión preliminar pública de la plataforma unificada de operaciones de seguridad en el portal de Microsoft Defender. Para obtener más información, consulte Microsoft Sentinel en el portal de Microsoft Defender.

Requisitos previos

Antes de empezar, asegúrese de que tiene los permisos y recursos necesarios.

  • Para usar cuadernos en Microsoft Sentinel, asegúrese de que tiene los permisos necesarios. Para obtener más información, consulte Administración del acceso a los cuadernos de Microsoft Sentinel.

  • Para realizar los pasos de este artículo, necesita Python 3.6 o posterior. En Azure Machine Learning, puede usar un kernel de Python 3.8 (recomendado) o un kernel de Python 3.6.

  • En este cuaderno se usa el servicio de búsqueda de geolocalización MaxMind GeoLite2 para direcciones IP. Para usar el servicio MaxMind GeoLite2, necesita una clave de cuenta. Puede registrarse para obtener una cuenta gratuita y una clave en la página de registro de Maxmind.

  • En este cuaderno se usa VirusTotal (VT) como origen de inteligencia sobre amenazas. Para usar la búsqueda de inteligencia sobre amenazas de VirusTotal, necesita una cuenta de VirusTotal y una clave de API.

    Puede registrarse para obtener una cuenta de VT gratuita en la página de introducción a VirusTotal. Si ya es un usuario de VirusTotal, puede usar la clave existente.

    Advertencia

    Si usa una clave de empresa de VT, almacénela en Azure Key Vault en lugar del archivo msticpyconfig.yaml. Para obtener más información, vea Especificación de secretos como secretos de Key Vault en la documentación de MSTICPY.

    Si no quiere configurar una cuenta de Azure Key Vault en este momento, regístrese y use una cuenta gratuita hasta que pueda configurar el almacenamiento de Key Vault.

Ejecución e inicialización del cuaderno Guía de introducción

En este procedimiento se describe cómo iniciar el cuaderno e inicializar MSTICpy.

  1. Para Microsoft Sentinel en Azure Portal, en Administración de amenazas, seleccione Notebooks.
    Para Microsoft Sentinel en el portal de Defender, seleccione Microsoft Sentinel>Administración de amenazas>Notebooks.

  2. En la pestaña Plantillas, seleccione Guía de introducción para cuadernos de ML de Microsoft Sentinel .

  3. Seleccione Crear desde plantilla.

  4. Edite el nombre y seleccione el área de trabajo de Azure Machine Learning según corresponda.

  5. Seleccione Guardar para guardarlo en el área de trabajo de Azure Machine Learning.

  6. Seleccione Launch notebook (Iniciar cuaderno) para ejecutar el cuaderno. El cuaderno contiene una serie de celdas:

    • Las celdas de Markdown contienen texto y gráficos con instrucciones para usar el cuaderno.
    • Celdas de código contienen código ejecutable que realiza las funciones del cuaderno
  7. Lea y ejecute las celdas de código en orden. Omitir las celdas o ejecutarlas fuera del orden podría provocar errores más adelante en el cuaderno.

    Para ejecutar cada celda, seleccione el botón de reproducción situado a la izquierda. Dependiendo de la función que se realice, el código de la celda puede ejecutarse rápidamente o tardar unos segundos en completarse.

    Cuando se ejecuta la celda, el botón reproducir cambia a un eje de carga y se muestra un estado de Executing en la parte inferior de la celda, junto con el tiempo transcurrido.

    Si el cuaderno no parece funcionar como se describe, reinicie el kernel y ejecute el cuaderno desde el principio. Por ejemplo, si alguna celda del cuaderno Getting Started Guide (Guía de introducción) tarda más de un minuto en ejecutarse, intente reiniciar el kernel y volver a ejecutar el cuaderno.

    En el cuaderno Getting Started Guide (Guía de introducción) se incluyen instrucciones para el uso básico de cuadernos de Jupyter, incluido el reinicio del kernel de Jupyter.

    Después de completar la lectura y ejecución de las celdas en la sección ¿Qué es un cuaderno de Jupyter Notebook?, está listo para iniciar las tareas de configuración, comenzando en la sección Configuración del entorno de cuaderno.

  8. Ejecute la primera celda de código de la sección Configuración del entorno del cuaderno, que incluye el código siguiente:

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

    El estado de inicialización se muestra en la salida. Se esperan advertencias de configuración sobre los valores que faltan en el archivo Missing msticpyconfig.yaml porque aún no configuró nada.

Creación del archivo de configuración

Después de la inicialización básica, está listo para crear el archivo con la configuración básica para trabajar con MSTICPy.

Muchos cuadernos de Microsoft Sentinel se conectan a servicios externos como VirusTotal (VT) para recopilar y enriquecer datos. Para conectarse a estos servicios, debe establecer y almacenar los detalles de configuración, como los tokens de autenticación. Almacenar estos datos en el archivo de configuración evita tener que escribir tokens de autenticación y detalles del área de trabajo cada vez que se usa un cuaderno.

MSTICPy usa msticpyconfig.yaml para almacenar una amplia gama de detalles de configuración. De forma predeterminada, la función de inicialización del cuaderno genera un archivo msticpyconfig.yaml. Si clona este cuaderno desde el portal de Microsoft Sentinel, el archivo de configuración se rellena con los datos del área de trabajo de Microsoft Sentinel. Estos datos se leen desde un archivo config.json , creado en el área de trabajo de Azure Machine Learning al iniciar el cuaderno. Para obtener más información, vea la documentación de configuración de paquetes de MSTICPy.

En las secciones siguientes se describe cómo agregar más detalles de configuración al archivo msticpyconfig.yaml.

Si vuelve a ejecutar el cuaderno Guía de introducción de nuevo, y ya tiene un archivo de msticpyconfig.yaml configurado mínimamente, la función init_notebook no sobrescribe ni modifica el archivo existente.

En cualquier momento, seleccione el menú desplegable -Help (Ayuda) de la herramienta de configuración de MSTICPy para obtener más instrucciones y vínculos a documentación detallada.

Representación del editor de configuraciones de MSTICPy

  1. En una celda de código, ejecute el código siguiente para importar la herramienta MpConfigEdit y mostrar un editor de configuraciones para el archivo msticpyconfig.yaml:

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

    Por ejemplo:

    Captura de pantalla del editor de configuraciones de MSTICPy.

    El archivo msticpyconfig.yaml creado automáticamente, que se muestra en el editor de configuraciones, contiene dos entradas en la sección de Microsoft Sentinel. Las dos se han rellenado con detalles del área de trabajo de Microsoft Sentinel desde la que se ha clonado el cuaderno. Una entrada tiene el nombre del área de trabajo y la otra se denomina Default (Predeterminada).

    MSTICPy permite almacenar configuraciones para varias áreas de trabajo de Microsoft Sentinel y cambiar entre ellas. La entrada Default (Predeterminada) le permite autenticarse en el área de trabajo "principal" de forma predeterminada, sin tener que nombrarla de forma explícita. Si agrega otras áreas de trabajo, puede configurar cualquiera de ellas para que sea la entrada Predeterminado.

    En el entorno de Azure Machine Learning, el editor de configuración puede tardar entre 10 y 20 segundos en aparecer.

  2. Compruebe la configuración actual y seleccione Save Settings (Guardar configuración).

Adición de la configuración del proveedor de inteligencia sobre amenazas

En este procedimiento se describe cómo almacenar la clave de API de VirusTotal en el archivo msticpyconfig.yaml. Puede optar por cargar la clave de API en Azure Key Vault, pero primero debe configurar los valores de Key Vault. Para obtener más información, vea Configuración de los valores de Key Vault.

Para agregar detalles de VirusTotal en el editor de configuración de MSTICPy, complete los pasos siguientes.

  1. Escriba el código siguiente en una celda de código y ejecútelo:

    mpedit.set_tab("TI Providers")
    mpedit
    
  2. En la pestaña TI Providers (Proveedores de TI), seleccione Add prov>VirusTotal>Add (Agregar proveedor > VirusTotal > Agregar).

  3. En Auth Key (Clave de autenticación), seleccione Text (Texto) junto a la opción Storage (Almacenamiento).

  4. Pegue la clave de API en el campo Value (Valor).

  5. Seleccione Update (Actualizar) y después Save Settings (Guardar configuración) en la parte inferior del editor de configuraciones.

Para obtener más información sobre otros proveedores de inteligencia sobre amenazas admitidos, consulte Proveedores de inteligencia sobre amenazas en la documentación de MSTICPy e Integración de inteligencia sobre amenazas en Microsoft Sentinel.

Adición de la configuración del proveedor GeoIP

En este procedimiento se describe cómo almacenar una clave de cuenta de MaxMind GeoLite2 en el archivo msticpyconfig.yaml, lo que permite que el cuaderno use servicios de búsqueda de geolocalización para direcciones IP.

Para agregar la configuración del proveedor GeoIP en el editor de configuración de MSTICPy, complete los pasos siguientes.

  1. Escriba el código siguiente en una celda de código vacía y ejecútelo:

    mpedit.set_tab("GeoIP Providers")
    mpedit
    
  2. En la pestaña GeoIP Providers (Proveedores de GeoIP), seleccione Add prov>GeoIPLite>Add (Agregar proveedor > GeoIPLite > Agregar).

  3. En el campo Value (Valor), escriba la clave de la cuenta de MaxMind.

  4. Si es necesario, actualice la carpeta ~/.msticpy predeterminada para almacenar la base de datos GeoIP descargada.

    • En Windows, esta carpeta se asigna a %USERPROFILE%/.msticpy.
    • En Linux o macOS, esta ruta se asigna a la carpeta .msticpy de la carpeta principal.

Para obtener más información sobre otros servicios de búsqueda de geolocalización admitidos, vea la documentación de proveedores GeoIP de MSTICPy.

Configuración de valores de Azure Cloud

Si en la organización no se usa la nube pública de Azure, debe especificarlo en la configuración para autenticarse y usar correctamente los datos de Microsoft Sentinel y Azure. Para obtener más información, vea Especificación de la nube de Azure y los métodos de autenticación de Azure predeterminados.

Validación de la configuración

  1. Seleccione Validate settings (Validar configuración) en el editor de configuraciones.

    Se esperan mensajes de advertencia sobre las configuraciones que faltan, pero no debe tener ninguna para la configuración del proveedor de inteligencia sobre amenazas o del proveedor GeoIP.

  2. Según el entorno, es posible que también tenga que Configuración del valor de Key Vault o Especifique la nube de Azure.

  3. Si tiene que realizar cambios debido a la validación, hágalos y, después, seleccione Save Settings (Guardar configuración).

  4. Cuando haya terminado, seleccione el botón Close (Cerrar) para ocultar la salida de validación.

Para obtener más información, consulte Configuraciones avanzadas para cuadernos de Jupyter y MSTICPy en Microsoft Sentinel.

Carga de la configuración de MSTICPy guardada

En el procedimiento Creación del archivo de configuración, ha guardado la configuración en el archivo msticpyconfig.yaml local.

Pero MSTICPy no vuelve a cargar automáticamente esta configuración hasta que reinicie el kernel o ejecute otro cuaderno. Para forzar la recarga de MSTICPy desde el nuevo archivo de configuración, vaya a la siguiente celda de código, con el código siguiente y ejecútelo:

import msticpy
msticpy.settings.refresh_config()

Prueba del cuaderno

Ahora que inicializó el entorno y configuró las opciones básicas para el área de trabajo, use la clase MSTICPy QueryProvider para probar el cuaderno. QueryProvider Consulta un origen de datos, en este caso, el área de trabajo de Microsoft Sentinel y hace que los datos consultados estén disponibles para ver y analizar en el cuaderno.

Use los procedimientos siguientes para crear una instancia de la clase QueryProvider, autenticarse en Microsoft Sentinel desde el cuaderno y ver y ejecutar consultas con varias opciones de parámetro diferentes.

Puede tener varias instancias de QueryProvider cargadas para usarlas con varias áreas de trabajo de Microsoft Sentinel u otros proveedores de datos, como Microsoft Defender para punto de conexión.

Carga de QueryProvider

A fin de cargar QueryProvider para AzureSentinel, continúe a la celda con el código siguiente y ejecútelo:

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

Si ve una advertencia Runtime dependency of PyGObject is missing al cargar el controlador de Microsoft Sentinel, consulte el Error: Falta la dependencia en tiempo de ejecución de PyGObject. Esta advertencia no afecta a la funcionalidad del cuaderno.

Autenticación en el área de trabajo de Microsoft Sentinel desde el cuaderno

En los cuadernos de Azure Machine Learning, la autenticación usa las credenciales que usó para autenticarse en el área de trabajo de Azure Machine Learning.

Autentíquese mediante la identidad administrada completando los pasos siguientes.

  1. Ejecute el código siguiente para autenticarse en el área de trabajo de 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. Revise el resultado. La salida mostrada es similar a la siguiente imagen.

    Captura de pantalla que muestra la autenticación en Azure que termina con un mensaje conectado.

Almacenamiento en caché del token de inicio de sesión mediante la CLI de Azure

Para evitar tener que volver a autenticarse si reinicia el kernel o ejecuta otros cuadernos, puede almacenar en caché el token de inicio de sesión mediante la CLI de Azure.

El componente CLI de Azure en la instancia de Proceso almacena en caché un token de actualización que puede volver a usar hasta que se agote el tiempo de espera del token. MSTICPy usa automáticamente las credenciales de la CLI de Azure, si están disponibles.

Para autenticarse mediante la CLI de Azure, escriba el siguiente comando en una celda vacía y ejecútelo:

!az login

Debe volver a autenticarse si reinicia la instancia de Proceso o cambia a otra instancia. Para obtener más información, consulte la sección sobre almacenamiento en caché de credenciales con la CLI de Azure en la wiki del repositorio de GitHub de cuadernos de Microsoft Sentinel.

Visualización del esquema datos del área de trabajo de Microsoft Sentinel y las consultas integradas de MSTICPy

Después de conectarse a una instancia de QueryProvider de Microsoft Sentinel, puede comprender los tipos de datos disponibles para consultar si consulta el esquema de datos del área de trabajo de Microsoft Sentinel.

QueryProvider de Microsoft Sentinel tiene una propiedad schema_tables, que proporciona una lista de tablas de esquema, y una propiedad schema, que también incluye los nombres de columna y los tipos de datos de cada tabla.

Para ver las 10 primeras tablas del esquema de Microsoft Sentinel:

Continúe a la celda siguiente, con el código siguiente, y ejecútelo. Puede omitir [:10] para enumerar todas las tablas del área de trabajo.

# 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

Se mostrará la siguiente salida:

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

MSTICPy también incluye muchas consultas integradas disponibles para su ejecución. Puede enumerar las consultas disponibles con .list_queries(), y obtener detalles específicos sobre una consulta si la llama con un signo de interrogación (?) incluido como parámetro. Como alternativa, puede ver la lista de consultas y la ayuda asociada en el explorador de consultas.

Para ver una muestra de las consultas disponibles:

  1. Continúe a la celda siguiente, con el código siguiente, y ejecútelo. Puede omitir [::5] para enumerar todas las consultas.

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

    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 obtener ayuda sobre una consulta, pase ? como parámetro:

    # Get help about a query by passing "?" as a parameter
    qry_prov.Azure.list_all_signins_geo("?")
    
  4. Revise el resultado.

    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 ver las tablas y las consultas en una lista desplazable y filtrable, continúe con la celda siguiente, con el código siguiente y ejecútelo.

    qry_prov.browse_queries()
    
  6. Para la consulta seleccionada, se muestran todos los parámetros obligatorios y opcionales, junto con el texto completo de la consulta. Por ejemplo:

    Captura de pantalla de las tablas y consultas mostradas en una lista desplazable y con filtros.

Aunque no puede ejecutar consultas desde el explorador, puede copiar y pegar el ejemplo al final de cada consulta para que se ejecute en otro lugar del cuaderno.

Para obtener más información, vea Ejecución de una consulta predefinida en la documentación de MSTICPy.

Ejecución de consultas con parámetros de hora

La mayoría de las consultas necesitan parámetros de hora. Las cadenas de fecha y hora son tediosas de escribir y modificarlas en varios lugares puede dar lugar a errores.

Cada proveedor de consultas tiene parámetros predeterminados de hora de inicio y finalización para las consultas. Estos parámetros de hora se usan de forma predeterminada, siempre que se necesiten. Puede cambiar el intervalo de tiempo predeterminado si abre el control query_time. Los cambios permanecen en vigor hasta que vuelva a cambiarlos.

  1. Continúe a la celda siguiente, con el código siguiente y ejecútelo:

    # Open the query time control for your query provider
    qry_prov.query_time
    
  2. Establezca las horas start y end según sea necesario. Por ejemplo:

    Captura de pantalla del establecimiento de parámetros de hora predeterminados para las consultas.

Ejecución de una consulta mediante el intervalo de tiempo integrado

Los resultados de la consulta se devuelven como un elemento DataFrame de Pandas, que es una estructura de datos tabular, como una hoja de cálculo o una tabla de base de datos. Use funciones pandas para realizar análisis y filtrado adicionales en los resultados de la consulta.

  1. Ejecute la celda de código siguiente. Ejecuta una consulta mediante la configuración de hora predeterminada del proveedor de consultas. Puede cambiar este intervalo y volver a ejecutar la celda de código para consultar el nuevo intervalo de tiempo.

    # 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. Revise el resultado. Muestra las cinco primeras filas de resultados. Por ejemplo:

    Captura de pantalla de la ejecución de una consulta con el intervalo de tiempo integrado.

    Si no hay datos, solo se muestran los títulos de columna.

Ejecución de una consulta mediante un intervalo de tiempo personalizado

También puede crear un nuevo objeto de tiempo de consulta y pasarlo a una consulta como parámetro. Esto le permite ejecutar una consulta única para un intervalo de tiempo diferente, sin afectar a los valores predeterminados del proveedor de consultas.

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

Después de establecer el intervalo de tiempo deseado, puede pasar el intervalo de tiempo a la función de consulta, ejecutando el código siguiente en una celda independiente del código anterior:

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

También puede pasar valores datetime como valores datetime de Python o cadenas de fecha y hora mediante los parámetros start y 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)

Personalización de las consultas

Puede personalizar las consultas integradas agregando más lógica de consulta o ejecutando consultas completas mediante la función exec_query.

Por ejemplo, la mayoría de las consultas integradas admiten el parámetro add_query_items, que puede usar para anexar filtros u otras operaciones a las consultas.

  1. Ejecute la celda de código siguiente para agregar una trama de datos que resuma el número de alertas por nombre 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. Pase una cadena de consulta completa del lenguaje de consulta Kusto (KQL) al proveedor de consultas. La consulta se ejecuta en el área de trabajo conectada y los datos se devuelven como objeto DataFrame de Pandas. Ejecute:

    # 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 más información, consulte:

Prueba VirusTotal

  1. Para usar la inteligencia sobre amenazas a fin de ver si aparece una dirección IP en los datos de VirusTotal, ejecute la celda con el código siguiente:

    # 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. Revise el resultado. Por ejemplo:

    Captura de pantalla de una dirección IP que aparece en los datos de VirusTotal.

  3. Desplácese hacia abajo para ver los resultados completos.

Para obtener más información, vea Búsquedas de inteligencia sobre amenazas en MSTICPy.

Prueba de la búsqueda IP de geolocalización

  1. Para obtener los detalles de geolocalización de una dirección IP mediante el servicio MaxMind, ejecute la celda con el código siguiente:

    # 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. Revise el resultado. Por ejemplo:

    ipaddress
    { 'AdditionalData': {},
      'Address': '85.214.149.236',
      'Location': { 'AdditionalData': {},
                    'CountryCode': 'DE',
                    'CountryName': 'Germany',
                    'Latitude': 51.2993,
                    'Longitude': 9.491,
                    'Type': 'geolocation',
                    'edges': set()},
      'ThreatIntelligence': [],
      'Type': 'ipaddress',
      'edges': set()}
    

La primera vez que ejecute este código, debería ver que el controlador de GeoLite descarga su base de datos.

Para obtener más información, vea Proveedores GeoIP de MSTICPy.

Establecimiento de la configuración de Key Vault

Esta sección solo es relevante cuando se almacenan secretos en Azure Key Vault.

Al almacenar secretos en Azure Key Vault, primero debe crear Key Vault en el portal de administración global de KeyVault de Azure.

La configuración necesaria son todos los valores que obtiene de las propiedades del almacén, aunque algunos pueden tener nombres diferentes. Por ejemplo:

  • VaultName se muestra en la parte superior izquierda de la pantalla Propiedades de Azure Key Vault
  • TenantId se muestra como Id. de directorio
  • AzureRegion se muestra como Ubicación
  • Authority es la nube del servicio de Azure.

Solo se necesitan los valores VaultName, TenantId y Authority para recuperar secretos del almacén. Los demás valores son necesarios si opta por crear un almacén desde MSTICPy. Para obtener más información, vea Especificación de secretos como secretos de Key Vault.

La opción Use KeyRing (Usar conjunto de claves) está seleccionada de forma predeterminada y le permite almacenar en caché las credenciales de Key Vault en un conjunto de claves local. Para obtener más información, vea Documentación de conjunto de claves.

Precaución

No utilice la opción Use KeyRing (Usar conjunto de claves) si no confía completamente en el proceso del host en el que se ejecuta el cuaderno.

En este caso, el proceso es el servidor central de Jupyter, donde se ejecuta el kernel del cuaderno, y no necesariamente la máquina en la que se ejecuta el explorador. Si usa Azure Machine Learning, el proceso será la instancia de Proceso de Azure Machine Learning que haya seleccionado. Keyring realiza su almacenamiento en caché en el host donde se ejecuta el kernel del cuaderno.

Para agregar la configuración de Key Vault en el editor de configuración de MSTICPy, complete los pasos siguientes.

  1. Continúe a la celda siguiente, con el código siguiente y ejecútelo:

    mpedit.set_tab("Key Vault")
    mpedit
    
  2. Escriba los detalles de la instancia de Key Vault. Por ejemplo:

    Captura de pantalla de la sección de instalación de Key Vault

  3. Seleccione Save (Guardar) y después Save Settings (Guardar configuración).

Prueba del almacén de claves

Para probar el almacén de claves, compruebe si puede conectarse y ver los secretos. Si no ha agregado un secreto, no verá ningún detalle. Si es necesario, agregue un secreto de prueba desde el portal de Azure Key Vault al almacén y compruebe que se muestra en Microsoft Sentinel.

Por ejemplo:

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

Precaución

No deje la salida que se muestra en el cuaderno guardado. Si hay secretos reales en la salida, use el comando Borrar salida del cuaderno antes de guardarlo.

Además, elimine las copias del cuaderno almacenadas en caché. Por ejemplo, busque en la subcarpeta .ipynb_checkpoints del directorio del cuaderno y elimine las copias que encuentre de este cuaderno. Al guardar el cuaderno con una salida borrada se debe sobrescribir la copia del punto de control.

Una vez que ha configurado Key Vault, puede usar el botón Upload to KV (Cargar en KV) de las secciones Data Providers (Proveedores de datos) y TI Providers (Proveedores de TI) para mover la configuración seleccionada al almacén. MSTICPy genera un nombre predeterminado para el secreto en función de la ruta de acceso de la configuración, como TIProviders-VirusTotal-Args-AuthKey.

Si el valor se carga correctamente, se elimina el contenido del campo Value (Valor) en el editor de configuraciones y la configuración subyacente se reemplaza por un valor de marcador de posición. MSTICPy usa este valor para indicar que debería generar automáticamente la ruta de acceso de Key Vault al intentar recuperar la clave.

Si ya tiene los secretos necesarios almacenados en un almacén de claves, puede escribir el nombre del secreto en el campo Valor. Si el secreto no se almacena en el almacén predeterminado (los valores especificados en la sección de Key Vault ), puede especificar una ruta de acceso de VaultName/SecretName.

Actualmente no se admite la captura de la configuración de un almacén en otro inquilino. Para obtener más información, vea Especificación de secretos como secretos de Key Vault.

Especificación de la nube de Azure y los métodos de autenticación de Azure

Si usa una nube de Azure soberana o gubernamental, en lugar de la nube pública o global de Azure, debe seleccionar la nube adecuada en la configuración. Para la mayoría de las organizaciones, la nube global es la predeterminada.

También puede usar esta configuración de Azure para definir las preferencias predeterminadas para el tipo de autenticación de Azure.

Para especificar los métodos de autenticación en la nube de Azure y Azure, complete los pasos siguientes.

  1. Continúe a la celda siguiente, con el código siguiente y ejecútelo:

    mpedit.set_tab("Azure")
    mpedit
    
  2. Seleccione la nube que use la organización o deje la opción global seleccionada predeterminada.

  3. Seleccione uno o varios de los métodos siguientes:

    • env para almacenar las credenciales de Azure en variables de entorno.
    • msi para usar Managed Service Identity, que es una identidad asignada al host o la máquina virtual donde se ejecuta el centro de Jupyter. MSI no se admite actualmente en instancias de proceso de Azure Machine Learning.
    • cli para usar las credenciales de una sesión de la CLI de Azure autenticada.
    • interactive para usar el flujo de autorización de dispositivos interactivo mediante un código de dispositivo de un solo uso.

    En la mayoría de los casos, se recomienda seleccionar varios métodos, como cli e interactive. La autenticación de Azure intenta cada uno de los métodos configurados en el orden indicado hasta que se realiza correctamente.

  4. Seleccione Save (Guardar) y después Save Settings (Guardar configuración).

    Por ejemplo:

    Captura de pantalla de la configuración definida para la nube de Azure Government.

Pasos siguientes

En este artículo se han descrito los aspectos básicos del uso de MSTICPy con cuadernos de Jupyter en Microsoft Sentinel. Para obtener más información, consulte Configuraciones avanzadas para cuadernos de Jupyter y MSTICPy en Microsoft Sentinel.

También puede probar otros cuadernos almacenados en el repositorio Microsoft Sentinel Notebooks en GitHub como:

Si usa el cuaderno descrito en este artículo en otro entorno de Jupyter, puede usar cualquier kernel que admita Python 3.6 o posteriores.

Para usar cuadernos de MSTICPy fuera de Microsoft Sentinel y Azure Machine Learning (ML), también debe configurar el entorno de Python. Instale Python 3.6 o posterior con la distribución Anaconda, que incluye muchos de los paquetes necesarios.

Más información sobre MSTICPy y los cuadernos

En la tabla siguiente se enumeran más referencias para obtener información sobre MSTICPy, Microsoft Sentinel y cuadernos de Jupyter.

Firmante Más referencias
MSTICPy - Configuración del paquete MSTICPy
- Editor de configuraciones de MSTICPy
- Configuración del entorno de Notebook.
- Cuaderno MPSettingsEditor.

Nota: El repositorio Azure-Sentinel-Notebooks de GitHub también contiene un archivo msticpyconfig.yaml de plantilla con secciones comentadas, que puede ayudarle a comprender la configuración.
Microsoft Sentinel y cuadernos de Jupyter - Cree su primer cuaderno Microsoft Sentinel (Serie de Blog)
- Cuadernos de Jupyter: introducción
- Documentación de MSTICPy
- Documentación de cuadernos de Microsoft Sentinel
- The Infosec Jupyterbook
- Tutorial del Cuaderno del Explorador de host de Linux
- Por qué usar Jupyter para investigaciones de seguridad
- Investigaciones de seguridad con Microsoft Sentinel y Notebooks
- Documentación de Pandas
- Documentación de Bokeh