Начало работы с записными книжками Jupyter и MSTICPy в Microsoft Sentinel

В этой статье описывается запуск записной книжки Записных книжек Машинного обучения Microsoft Sentinel, которая настраивает базовые конфигурации для запуска записных книжек Jupyter в Microsoft Sentinel и выполнения простых запросов к данным.

Записная книжка Руководство по началу работы с записными книжками ML Microsoft Sentinel использует MSTICPy — разработанную корпорацией Майкрософт библиотеку Python для средств кибербезопасности, которая обеспечивает функции обнаружения и исследования угроз.

MSTICPy позволяет пользователям писать меньше кода для Microsoft Sentinel и предоставляет:

  • Возможности запросов данных для таблиц Microsoft Sentinel, Microsoft Defender для конечной точки, Splunk и других источников данных.
  • Поиск по аналитике угроз с помощью поставщиков аналитики угроз (TI), таких как VirusTotal и AlienVault OTX.
  • Функции обогащения, такие как географическое положение IP-адресов, индикатор компрометации (IoC) и поиск WhoIs.
  • Средства визуализации, использующие временные шкалы событий, деревья процессов и географические сопоставления.
  • Расширенный анализ, например декомпозицию временных рядов, обнаружение аномалий и кластеризация.

В этой статье описано, как запустить руководство по началу работы записной книжки Microsoft Sentinel ML Notebooks в рабочей области Машинное обучение Azure через Microsoft Sentinel. Вы также можете использовать эту статью в качестве руководства для выполнения аналогичных действий для запуска записных книжек в других средах, включая локально.

Дополнительные сведения см. в статье Использование записных книжек для эффективного проведения исследований и Использование записных книжек Jupyter для охоты на угрозы безопасности.

Несколько записных книжек Microsoft Sentinel не используют MSTICPy, например записные книжки проверки учетных данных, или примеры PowerShell и C#. Записные книжки, не использующие MSTICpy, не нуждаются в конфигурации MSTICPy, описанной в этой статье.

Внимание

Microsoft Sentinel доступен в рамках общедоступной предварительной версии для единой платформы операций безопасности на портале Microsoft Defender. Дополнительные сведения см . на портале Microsoft Defender в Microsoft Sentinel.

Необходимые компоненты

Перед началом работы убедитесь, что у вас есть необходимые разрешения и ресурсы.

  • Чтобы использовать записные книжки в Microsoft Sentinel, убедитесь, что у вас есть необходимые разрешения. Дополнительные сведения см. в статье Управление доступом к записным книжкам Microsoft Sentinel.

  • Чтобы выполнить действия, описанные в этой статье, вам потребуется Python 3.6 или более поздней версии. В Машинное обучение Azure можно использовать ядро Python 3.8 (рекомендуется) или ядро Python 3.6.

  • Эта записная книжка использует для IP-адресов службу поиска географического положения MaxMind GeoLite2. Чтобы использовать службу MaxMind GeoLite2, вам потребуется ключ учетной записи. Вы можете зарегистрироваться для доступа к бесплатной учетной записи и ключу на странице регистрации MaxMind.

  • В этой записной книжке в качестве источника аналитики угроз используется VirusTotal (VT). Чтобы использовать поиск аналитики угроз VirusTotal, вам потребуется учетная запись VirusTotal и ключ API.

    Вы можете зарегистрироваться для получения бесплатной учетной записи VT на странице начала работы с VirusTotal. Если вы уже являетесь пользователем VirusTotal, вы можете использовать существующий ключ.

    Предупреждение

    Если вы используете корпоративный ключ VT, сохраните его в Azure Key Vault, а не в файле msticpyconfig.yaml. Дополнительные сведения см. в разделе Указание секретов как секретов Key Vault документации MSTICPY.

    Если вы не хотите настраивать Azure Key Vault прямо сейчас, зарегистрируйтесь и используйте бесплатную учетную запись, пока не настроите хранилище Key Vault.

Запуск и инициализация записной книжки "Руководство по началу работы"

В этой процедуре описывается, как запустить записную книжку и инициализировать MSTICpy.

  1. Для Microsoft Sentinel в портал Azure в разделе "Управление угрозами" выберите "Записные книжки".
    Для Microsoft Sentinel на портале Defender выберите записные книжки Управления>угрозами Microsoft Sentinel>.

  2. На вкладке "Шаблоны" выберите руководство по началу работы для записных книжек машинного обучения Microsoft Sentinel.

  3. Выберите "Создать из шаблона".

  4. Измените имя и выберите рабочую область Машинное обучение Azure соответствующим образом.

  5. Нажмите кнопку "Сохранить", чтобы сохранить ее в рабочей области Машинное обучение Azure.

  6. Выберите Запустить записную книжку, чтобы запустить записную книжку. Записная книжка содержит ряд ячеек:

    • Ячейки Markdown содержат текст и графику с инструкциями по использованию записной книжки
    • Ячейки кода содержат исполняемый код, выполняющий функции записной книжки
  7. Ячейки кода нужно считывать т выполнять по порядку. Пропуск ячеек или выполнение их вне порядка может привести к ошибкам позже в записной книжке.

    Для запуска ячеек нажимайте кнопку "Воспроизвести" слева от ячейки. В зависимости от выполняемой функции код в ячейке может выполняться быстро или может занять несколько секунд.

    Когда ячейка запущена, кнопка воспроизведения изменяется на спиннер загрузки, а состояние Executing отображается в нижней части ячейки вместе с истекшего времени.

    Если записная книжка не работает как описано, перезапустите ядро и выполните записную книжку с самого начала. Например, если выполнение какой-либо ячейки в записной книжке Руководство по началу работы занимает больше минуты, попробуйте перезапустить ядро и повторно выполнить записную книжку.

    В записной книжке Руководство по началу работы содержатся инструкции по базовому использованию записных книжек Jupyter, включая перезапуск ядра Jupyter.

    После завершения чтения и запуска ячеек в разделе "Что такое Jupyter Notebook", вы можете запустить задачи настройки, начиная с раздела "Настройка среды записной книжки".

  8. Запустите первую ячейку кода в разделе Настройка среды записной книжки записной книжки, которая содержит следующий код:

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

    Состояние инициализации отображается в выходных данных. Ожидается предупреждение конфигурации о отсутствующих параметрах в Missing msticpyconfig.yaml файле, так как вы еще не настроили ничего.

Создание файла конфигурации

После базовой инициализации вы можете создать файл конфигурации с базовыми параметрами для работы с MSTICPy.

Многие записные книжки Microsoft Sentinel подключаются к внешним службам, таким как VirusTotal (VT), для накопления и обогащения данных. Чтобы подключиться к этим службам, необходимо задать и сохранить сведения о конфигурации, например маркеры проверки подлинности. Наличие этих данных в файле конфигурации избавляет от необходимости вводить маркеры проверки подлинности и сведения о рабочей области при каждом использовании записной книжки.

MSTICPy использует файл msticpyconfig.yaml для хранения широкого спектра сведений о конфигурации. По умолчанию файл msticpyconfig.yaml создается функцией инициализации записной книжки. Если вы клонировали эту записную книжку на портале Microsoft Sentinel, файл конфигурации заполняется данными рабочей области Microsoft Sentinel. Эти данные считываются из файла config.json, созданного в рабочей области Машинное обучение Azure при запуске записной книжки. Дополнительные сведения см. в документации по конфигурации пакета MSTICPy.

В следующих разделах описывается добавление дополнительных сведений о конфигурации в файл msticpyconfig.yaml .

Если вы снова запускаете записную книжку руководства по началу работы и уже имеете минимально настроенный файл msticpyconfig.yaml , init_notebook функция не перезаписывает или не изменяет существующий файл.

Вы можете в любой момент времени щелкнуть раскрывающееся меню –Справка в средстве настройки MSTICPy, чтобы получить дополнительные инструкции и ссылки на подробную документацию.

Отображение редактора параметров MSTICPy

  1. В ячейке кода выполните следующий код, чтобы импортировать средство MpConfigEdit и отобразить редактор параметров для файла msticpyconfig.yaml:

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

    Например:

    Снимок экрана: редактор параметров MSTICPy.

    Автоматически созданный файл msticpyconfig.yaml, который отображается в редакторе параметров, содержит две записи в разделе Microsoft Sentinel. В обеих этих записях указаны сведения о рабочей области Microsoft Sentinel, из которой была клонирована записная книжка. Имя одной записи совпадает с именем рабочей области, а другая называется По умолчанию.

    MSTICPy позволяет хранить конфигурации для нескольких рабочих областей Microsoft Sentinel и переключаться между ними. Запись По умолчанию позволяет проходить проверку подлинности в вашей домашней рабочей области по умолчанию, не указывая имя явно. При добавлении других рабочих областей можно настроить любую из них для записи по умолчанию .

    В среде Машинное обучение Azure редактор параметров может занять 10–20 секунд.

  2. Проверьте текущие параметры и щелкните Сохранить параметры.

Добавление параметров поставщика аналитики угроз

В этой процедуре описывается, как сохранить ключ API VirusTotal в файле msticpyconfig.yaml. Вы можете пожелать отправить ключ API в Azure Key Vault, но сначала необходимо настроить параметры Key Vault. Дополнительные сведения см. в статье Настройка параметров Key Vault.

Чтобы добавить сведения о VirusTotal в редакторе параметров MSTICPy, выполните следующие действия.

  1. Введите следующий код в ячейку кода и выполните его:

    mpedit.set_tab("TI Providers")
    mpedit
    
  2. На вкладке Поставщики TI выберите Добавить подготовку>VirusTotal>Добавить.

  3. В разделе Ключ проверки подлинности выберите Текст рядом с параметром Служба хранилища.

  4. В поле Значение вставьте ключ API.

  5. Выберите Обновить, а затем щелкните Сохранить параметры в нижней части редактора параметров.

Дополнительные сведения о других поддерживаемых поставщиках аналитики угроз см. в разделе Поставщики аналитики угроз в документации MSTICPy и в статье Интеграция аналитики угроз в Microsoft Sentinel.

Добавление параметров поставщика GeoIP

В этой процедуре описывается, как сохранить ключ учетной записи MaxMind GeoLite2 в файле msticpyconfig.yaml, который позволяет записной книжке использовать службы поиска географического положения для IP-адресов.

Чтобы добавить параметры поставщика GeoIP в редакторе параметров MSTICPy, выполните следующие действия.

  1. Введите следующий код в пустую ячейку кода и выполните его:

    mpedit.set_tab("GeoIP Providers")
    mpedit
    
  2. На вкладке Поставщики GeoIP выберите Добавить подготовку>GeoIPLite>Добавить.

  3. В поле Значение введите ключ учетной записи MaxMind.

  4. При необходимости обновите папку по умолчанию ~/.msticpy, чтобы в ней хранилась скачанная база данных GeoIP.

    • В Windows эта папка сопоставлена с %USERPROFILE%/.msticpy.
    • В Linux или macOS этот путь сопоставлен с папкой .msticpy в домашней папке.

Дополнительные сведения о других поддерживаемых службах поиска географического положения см. в документации по поставщикам GeoIP MSTICPy.

Настройка параметров облака Azure

Если организация не использует общедоступное облако Azure, необходимо указать это в параметрах для успешной проверки подлинности и использования данных из Microsoft Sentinel и Azure. Дополнительные сведения см. в статье Указание облака Azure и методов проверки подлинности Azure по умолчанию.

Проверка параметров

  1. Выберите Параметры проверки в редакторе параметров.

    Скорее всего, будут выданы предупреждающие сообщения об отсутствующих конфигурациях, но у вас не должно быть никаких параметров поставщика аналитики угроз или поставщика GeoIP.

  2. В зависимости от среды также может потребоваться настроить параметры Key Vault или указать облако Azure.

  3. Если из-за проверки необходимо внести какие-либо изменения, сделайте это и щелкните Сохранить параметры.

  4. Когда все будет готово, нажмите кнопку Закрыть, чтобы скрыть выходные данные проверки.

Дополнительные сведения см. в статье Расширенные конфигурации для записных книжек Jupyter и MSTICPy в Microsoft Sentinel.

Загрузка сохраненных параметров MSTICPy

В процедуре создания файла конфигурации вы сохранили параметры в локальном файле msticpyconfig.yaml.

Однако MSTICPy не перезагрузит эти параметры автоматически, пока не будет перезагружено ядро или запущена другая записная книжка. Чтобы MSTICPy произвела перезагрузку из нового файла конфигурации, перейдите к следующей ячейке с приведенным ниже кодом и запустите ее:

import msticpy
msticpy.settings.refresh_config()

Тестирование записной книжки

Теперь, когда вы инициализировали среду и настроили базовые параметры для рабочей области, используйте класс MSTICPy QueryProvider для тестирования записной книжки. QueryProvider запрашивает источник данных, в этом случае рабочая область Microsoft Sentinel, и делает запрашиваемую информацию доступной для просмотра и анализа записной книжки.

Используйте следующие процедуры для создания экземпляра QueryProvider класса, проверки подлинности в Microsoft Sentinel из записной книжки и просмотра и выполнения запросов с различными параметрами параметров.

Вы можете использовать несколько загруженных экземпляров QueryProvider с несколькими рабочими областями Microsoft Sentinel или другими поставщиками данных, например Microsoft Defender для конечной точки.

Загрузка QueryProvider

Чтобы загрузить QueryProvider для AzureSentinel, перейдите к ячейке со следующим кодом и запустите ее:

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

Если при загрузке драйвера Microsoft Sentinel появляется предупреждение Runtime dependency of PyGObject is missing, см. статью Ошибка: отсутствует зависимость среды выполнения PyGObject. Это предупреждение не влияет на функциональные возможности записной книжки.

Проверка подлинности в рабочей области Microsoft Sentinel из записной книжки

В записных книжках Машинное обучение Azure проверка подлинности по умолчанию использует учетные данные, используемые для проверки подлинности в рабочей области Машинное обучение Azure.

Выполните проверку подлинности с помощью управляемого удостоверения, выполнив следующие действия.

  1. Выполните следующий код для проверки подлинности в рабочей области 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. Просмотрите выходные данные. Выходные данные похожи на следующее изображение.

    Снимок экрана: проверка подлинности в Azure, которая заканчивается подключенным сообщением.

Кэширование маркера входа с помощью Azure CLI

Чтобы избежать повторной проверки подлинности при перезапуске ядра или запуске других записных книжек, можно кэшировать маркер входа с помощью Azure CLI.

Компонент Azure CLI на вычислительном экземпляре кэширует маркер обновления, который может повторно использоваться до истечения времени ожидания маркера. MSTICPy автоматически использует учетные данные Azure CLI, если они доступны.

Чтобы выполнить проверку подлинности с помощью Azure CLI, введите следующую команду в пустую ячейку и запустите ее:

!az login

При перезапуске вычислительного экземпляра или переключении на другой экземпляр необходимо повторно выполнить проверку подлинности. Дополнительные сведения см. в разделе Кэширование учетных данных с помощью Azure CLI вики-сайта репозитория GitHub для записных книжек Microsoft Sentinel.

Просмотр схемы данных рабочей области Microsoft Sentinel и встроенных запросов MSTICPy

После подключения к QueryProvider Microsoft Sentinel можно узнать, какие типы данных доступны для запроса, выполнив запрос к схеме данных рабочей области Microsoft Sentinel.

QueryProvider Microsoft Sentinel обладает свойством schema_tables, которое предоставляет список таблиц схемы, и свойством schema, которое включает еще и имена столбцов и типы данных для каждой таблицы.

Чтобы просмотреть первые 10 таблиц в схеме Microsoft Sentinel, выполните следующие действия:

Перейдите к следующей ячейке с приведенным ниже кодом и запустите ее. Можно опустить, [:10] чтобы вывести список всех таблиц в рабочей области.

# 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

Отображаются следующие результаты:

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

MSTICPy также включает множество встроенных запросов, доступных для выполнения. Выведите список доступных запросов с помощью .list_queries() и получите конкретные сведения о запросе, вызвав его с вопросительным знаком (?) в качестве параметра. Кроме того, можно просмотреть список запросов и связанную справку в браузере запросов.

Чтобы просмотреть пример доступных запросов, выполните следующие действия:

  1. Перейдите к следующей ячейке с приведенным ниже кодом и запустите ее. Можно опустить [::5], чтобы вывести список всех запросов.

    # Get a sample of available queries
    print(qry_prov.list_queries()[::5])  # showing a sample - remove "[::5]" for whole list
    
  2. Просмотрите выходные данные.

    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. Чтобы получить справку о запросе, передав ? в качестве параметра:

    # Get help about a query by passing "?" as a parameter
    qry_prov.Azure.list_all_signins_geo("?")
    
  4. Просмотрите выходные данные.

    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. Чтобы просмотреть таблицы и запросы в прокручиваемом, фильтруемом списке, перейдите к следующей ячейке со следующим кодом и запустите его.

    qry_prov.browse_queries()
    
  6. Для выбранного запроса отображаются все обязательные и необязательные параметры, а также полный текст запроса. Например:

    Снимок экрана: таблицы и запросы, отображаемые в прокручиваемом списке с возможностью фильтрации.

Хотя запросы нельзя выполнять из браузера, можно скопировать и вставить пример в конце каждого запроса, чтобы выполнить его в любом месте записной книжки.

Дополнительные сведения см. в разделе Выполнение предопределенного запроса в документации MSTICPy.

Выполнение запросов с параметрами времени

Большинству запросов необходимы параметры времени. Вводить строки даты и времени утомительно, а изменяя их в нескольких местах, легко наделать ошибок.

Каждый поставщик запросов предоставляет заданные по умолчанию параметры времени начала и окончания для запросов. Эти параметры времени используются по умолчанию при их вызове. Вы можете изменить диапазон времени по умолчанию, открыв элемент управления query_time. Изменения остаются в силе, пока вы не внесете новые изменения.

  1. Перейдите к следующей ячейке с приведенным ниже кодом и запустите ее.

    # Open the query time control for your query provider
    qry_prov.query_time
    
  2. Задайте требуемое время start и end. Например:

    Снимок экрана: настройка параметров времени по умолчанию для запросов.

Выполнение запроса с помощью встроенного диапазона времени

Результаты запроса возвращаются в виде кадра данных Pandas, который представляет собой табличную структуру, например электронную таблицу или таблицу базы данных. Используйте функции Pandas для выполнения дополнительной фильтрации и анализа результатов запроса.

  1. Выполните следующую ячейку кода. Он запускает запрос с помощью параметров времени по умолчанию поставщика запросов. Вы можете изменить этот диапазон и заново запустить ячейку кода, чтобы отправить запрос для нового временного диапазона.

    # 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. Просмотрите выходные данные. В нем отображаются первые пять строк результатов. Например:

    Снимок экрана: выполнение запроса со встроенным диапазоном времени.

    Если данные отсутствуют, отображаются только заголовки столбцов.

Выполнение запроса с использованием настраиваемого диапазона времени

Можно также создать объект времени запроса и передать его в запрос в качестве параметра. Это позволяет выполнять одноразовый запрос для другого диапазона времени, не затрагивая поставщик запросов по умолчанию.

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

После задания требуемого диапазона времени можно передать диапазон времени функции запроса, выполнив следующий код в отдельной ячейке предыдущего кода:

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

Значения даты и времени можно также передать как дату и время Python или строки даты-времени, используя параметры start и 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)

Настройка запросов

Встроенные запросы можно настроить, добавив дополнительную логику запроса или выполнив полные запросы с помощью exec_query функции.

Например, большинство встроенных запросов поддерживает параметр add_query_items, который можно использовать для добавления в запросы фильтров или других операций.

  1. Запустите следующую ячейку кода, чтобы добавить кадр данных, который суммирует количество оповещений по имени оповещения:

    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. Передайте полную строку запроса язык запросов Kusto (KQL) поставщику запросов. Запрос выполняется в подключенной рабочей области, а данные возвращаются в виде кадра данных Panda. Запустить:

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

Дополнительные сведения см. в разделе:

Тестирование VirusTotal

  1. Чтобы проверить с помощью аналитики угроз, отображается ли IP-адрес в данных VirusTotal, запустите ячейку со следующим кодом:

    # 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. Просмотрите выходные данные. Например:

    Снимок экрана: IP-адрес, отображаемый в данных VirusTotal.

  3. Прокрутите вниз, чтобы просмотреть полные результаты.

Дополнительные сведения см. в статье Поиск по аналитике угроз в MSTICPy.

Проверка поиска IP-адресов геолокации

  1. Чтобы получить сведения о географическом положении для IP-адреса с помощью службы MaxMind, запустите ячейку со следующим кодом:

    # 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. Просмотрите выходные данные. Например:

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

При первом запуске этого кода вы увидите, как драйвер GeoLite загружает свою базу данных.

Дополнительные сведения см. в статье Поставщики GeoIP MSTICPy.

Настройка параметров Key Vault

Этот раздел относится только к хранению секретов в Azure Key Vault.

При хранении секретов в Azure Key Vault необходимо сначала создать Key Vault на глобальном портале управления KeyVault Azure.

Обязательные параметры — это все значения, полученные из свойств Хранилища, хотя некоторые из них могут иметь разные имена. Например:

  • VaultName отображается в верхнем левом углу экрана Свойства Azure Key Vault
  • TenantId отображается как Идентификатор каталога
  • AzureRegion отображается как Расположение
  • Authority — это облако для службы Azure.

Для получения секретов из хранилища требуются только значения VaultName, TenantId и Authority. Другие значения необходимы, если вы хотите создать хранилище из MSTICPy. Дополнительные сведения см. статье Указание секретов как секретов Key Vault.

По умолчанию выбран параметр Использовать KeyRing, который позволяет кэшировать учетные данные Key Vault в локальном KeyRing. Дополнительные сведения см. в документации KeyRing.

Внимание

Не применяйте параметр Использовать KeyRing, если вы не полностью доверяете вычислительной среде узла, на котором выполняется записная книжка.

В нашем случае вычислительной средой является сервер-концентратор Jupyter, на котором работает ядро записной книжки, а не обязательно компьютер, на котором работает браузер. Если используется Azure ML, вычислительной средой будет выбранный вами экземпляр Вычислительной среды ML Azure. KeyRing выполняет кэширование на узле, где работает ядро записной книжки.

Чтобы добавить параметры Key Vault в редакторе параметров MSTICPy, выполните следующие действия.

  1. Перейдите к следующей ячейке с приведенным ниже кодом и запустите ее.

    mpedit.set_tab("Key Vault")
    mpedit
    
  2. Введите сведения о хранилище для Key Vault. Например:

    Снимок экрана: раздел

  3. Выберите Сохранить, а затем — Сохранить параметры.

Тестирование Key Vault

Чтобы протестировать хранилище ключей, проверьте возможность подключения к секретам и их просмотра. Если вы не добавили секрет, вы не видите никаких сведений. При необходимости добавьте в хранилище секрет для тестирования с портала Azure Key Vault и убедитесь, что он отображается в Microsoft Sentinel.

Например:

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

Внимание

Не оставляйте выходные данные, отображаемые в сохраненной записной книжке. Если в выходных данных есть реальные секреты, перед сохранением записной книжки используйте ее команду Очистить выходные данные.

Кроме того, удалите кэшированные копии записной книжки. Например, просмотрите папку .ipynb_checkpoints в каталоге записной книжки и удалите все найденные копии этой записной книжки. При сохранении записной книжки с очищенными выходными данными необходимо перезаписать копию контрольной точки.

Когда настройка Key Vault будет завершена, можно использовать кнопку Отправить в KV в разделах "Поставщики данных" и "Поставщики TI", чтобы переместить выбранный параметр в хранилище. MSTICPy создает имя по умолчанию для секрета на основе пути параметра, например TIProviders-VirusTotal-Args-AuthKey.

Если значение успешно отправлено, содержимое поля Значение в редакторе параметров будет удалено, а базовый параметр заменен значением заполнителя. MSTICPy использует это значение, чтобы указать, что при попытке получить ключ автоматически следует создать путь Key Vault.

Если у вас уже есть необходимые секреты, хранящиеся в Key Vault, можно ввести имя секрета в поле "Значение ". Если секрет не хранится в хранилище по умолчанию (значения, указанные в разделе Key Vault ), можно указать путь к VaultName или SecretName.

В настоящее время не поддерживается получение параметров из хранилища в другом клиенте. Дополнительные сведения см. статье Указание секретов как секретов Key Vault.

Задание облака Azure и способов проверки подлинности Azure

Если вы используете национальное или государственное облако Azure, а не общедоступное или глобальное облако Azure, необходимо выбрать соответствующее облако в параметрах. Для большинства организаций глобальная облачная среда используется по умолчанию.

С помощью этих параметров Azure можно также задать предпочтения по умолчанию для типа проверки подлинности Azure.

Чтобы указать методы проверки подлинности в облаке Azure и Azure, выполните следующие действия.

  1. Перейдите к следующей ячейке с приведенным ниже кодом и запустите ее.

    mpedit.set_tab("Azure")
    mpedit
    
  2. Выберите облако, используемое в вашей организации, или оставьте выбранный по умолчанию глобальный вариант.

  3. Выберите один или несколько следующих способов:

    • env, чтобы учетные данные Azure хранились в переменных среды.
    • msi, чтобы использовать управляемое удостоверение службы, т. е. удостоверение, назначенное узлу или виртуальной машине, где работает концентратор Jupyter. MSI в настоящее время не поддерживается в Машинное обучение Azure вычислительных экземплярах.
    • cli, чтобы использовать учетные данные из сеанса Azure CLI, прошедшего проверку подлинности.
    • interactive чтобы использовать интерактивный поток авторизации устройств с помощью одноразового кода устройства.

    В большинстве случаев рекомендуется выбрать несколько способов, например cli и interactive. Проверка подлинности Azure пытается выполнить все настроенные методы в указанном порядке до тех пор, пока не будет выполнена проверка подлинности Azure.

  4. Выберите Сохранить, а затем — Сохранить параметры.

    Например:

    Снимок экрана: параметры, определенные для облака Azure для государственных организаций.

Следующие шаги

В этой статье приведены основные сведения об использования MSTICPy с записными книжками Jupyter в Microsoft Sentinel. Дополнительные сведения см. в статье Расширенные конфигурации для записных книжек Jupyter и MSTICPy в Microsoft Sentinel.

Вы также можете испытать другие записные книжки, хранящиеся в репозитории GitHub для записных книжек Microsoft Sentinel, например:

Если вы используете записную книжку, описанную в этой статье, в другой среде Jupyter можно использовать любое ядро, поддерживающее Python 3.6 или более поздней версии.

Чтобы использовать записные книжки MSTICPy за пределами Microsoft Sentinel и Машинное обучение Azure (ML), также необходимо настроить среду Python. Установите Python 3.6 или более поздней версии с помощью дистрибутива Anaconda, который включает множество необходимых пакетов.

Дополнительные материалы по MSTICPy и записным книжкам

В следующей таблице приведены дополнительные справочные материалы по MSTICPy, Microsoft Sentinel и записным книжкам Jupyter.

Тема Дополнительные ссылки
MSTICPy - Конфигурация пакета MSTICPy
- Редактор параметров MSTICPy
- Настройка среды записной книжки
- Записная книжка MPSettingsEditor.

Примечание. Репозиторий GitHub Azure-Sentinel-Notebooks также содержит шаблон файла msticpyconfig.yaml с комментариями к разделам, что может помочь в понимании параметров.
Записные книжки Microsoft Sentinel и Jupyter - Создайте свою первую записную книжку Microsoft Sentinel (серия публикаций в блоге)
- Введение в Jupyter Notebooks
- Документация по MSTICPy
- Документация по записным книжкам Microsoft Sentinel
- Infosec Jupyterbook
- Пошаговое руководство по записной книжке обозревателя узла Linux
- Преимущества Jupyter для исследований, связанных с безопасностью
- Исследования безопасности с помощью Microsoft Sentinel и записных книжек
- Документация Pandas
- Документация Bokeh