Поделиться через


Добавление запросов сообщества Advanced Hunting в Microsoft Defender XDR и Microsoft Sentinel

Создание и совместное использование запросов Advanced Hunting в Microsoft Defender не только повышает эффективность ваших собственных операций безопасности, но и способствует более широкому сообществу пользователей Defender. В этом руководстве описан процесс создания или изменения существующих запросов и их публикации в разделе Запросы сообщества на портале Microsoft Defender.

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

Снимок экрана: запросы сообщества в расширенной охоте на портале Microsoft Defender.

Предварительные условия

  • Учетная запись GitHub.

  • Процедуры, описанные в этой статье, используют Visual Studio Code (VS Code) для вилки, клонирования, создания и синхронизации запросов к репозиторию GitHub Sentinel Azure и из нее. Для всех этих задач доступны различные средства с разными инструкциями.

  • Подписка На Microsoft 365, которая включает расширенную охоту. Например:

    • Microsoft Defender XDR
    • Microsoft Sentinel
    • Microsoft Defender для Office 365 (план 2)

Шаг 1. Вилка репозитория Azure Sentinel GitHub для учетной записи GitHub

Так как у вас нет разрешений администратора на репозиторий Azure Sentinel GitHub, необходимо создать вилку репозитория, и единственным доступным назначением является учетная запись GitHub.

  1. Откройте репозиторий Azure Sentinel GitHub по адресу https://github.com/Azure/Azure-Sentinel/.

  2. Выберите Fork (Fork), чтобы создать собственную копию репозитория. На открывающейся странице Создание вилки просмотрите следующие параметры по умолчанию:

    • Владелец: убедитесь, что отображается имя учетной записи GitHub.
    • Имя репозитория: проверьте значение Azure-Sentinel.
    • Описание: проверьте текст описания.
    • Скопируйте только ветвь main. Убедитесь, что выбран этот параметр.

    Завершив работу на странице Создание вилки, выберите Создать новую вилку.

    Снимок экрана: верхняя часть репозитория azure Sentinel GitHub с выбранной вилкой.

    Снимок экрана: страница

  3. После успешного создания вилки вы перейдете к URL-адресу Azure-Sentinel вилки репозитория в учетной записи GitHub: https://github.com/<YourGitHubAccountName>/Azure-Sentinel. На этой странице выберите Код. На вкладке Локальный в открывающемся раскрывающемся списке выберите Копировать URL-адрес в буфер обмена на вкладке HTTPS раздела Клонирование . Скопированный URL-адрес: https://github.com/<YourGitHubAccountName>/Azure-Sentinel.git.

    Снимок экрана: копирование URL-адреса в буфер обмена с помощью кнопки

Шаг 2. Клонирование репозитория GitHub на локальный компьютер

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

  1. Откройте VS Code. Если вы еще не находитесь в чистом сеансе без открытия других файлов, выберите Файл>Создать окно или нажмите клавиши CTRL+SHIFT+N.

  2. Выберите Элемент управления версиями или нажмите клавиши CTRL+SHIFT+G.

    Снимок экрана: Visual Studio Code с выбранным элементом управления версиями.

  3. Во всплывающем окне Система управления версиями выберите Клонировать репозиторий.

    Снимок экрана: клонирование репозитория в Visual Studio Code с выбранным параметром

  4. В открывшемся диалоговом окне вставьте https://github.com/<YourGitHubAccountName>/Azure-Sentinel.git URL-адрес, скопированный на шаге 1.3, в поле, а затем выберите Клонировать из URL-адреса , который появится под полем.

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

  5. В открывшемся диалоговом окне Выберите папку для клонирования https://github.com/<YourGitHubAccountName>/Azure-Sentinel.git найдите или создайте локальную родительскую папку (например, C:\GitHub) для клонированного вилки репозитория, а затем выберите Выбрать как назначение репозитория. Локальный клон вилки репозитория содержится в папке <ParentFolder>\<RepositoryName> (например, C:\GitHub\Azure-Sentinel).

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

  6. Подождите несколько минут, пока завершится клонирование репозитория Azure-Sentinel.

    Снимок экрана: диалоговое окно выполнения в Visual Studio Code при клонировании репозитория Azure-Sentinel.

  7. После завершения клонирования откроется диалоговое окно Открыть репозиторий клонирования? Выберите Открыть , чтобы открыть клонированные репозитории в VS Code (например, папку C:\GitHub\Azure-Sentinel и ее содержимое).

    Снимок экрана: открытие репозитория клонирования диалоговое окно из Visual Studio Code диалоговое окно, которое открывается после завершения клонирования репозитория с выделенным параметром Открыть.

  8. Если вы недавно создали структуру папок на локальном диске, вы можете получить значение Доверяете авторам файлов в этой папке?, которое ссылается на папку Azure-Sentinel (вы доверяете им).

    Чтобы доверять любым будущим репозиториям, клонированные в родительской папке (например, C:\GitHub), выберите Доверять авторам всех файлов в родительской папке <ParentFolderName>.

    Чтобы продолжить, выберите Да, я доверяю авторам.

    Снимок экрана: доверяете ли вы авторам файлов в этой папке? диалоговое окно из Visual Studio Code диалоговое окно, которое может открыться. Да, я доверяю авторам.

Шаг 3. Создание рабочей ветви в клонированного репозитория на локальном компьютере

После нажатия кнопки Да, я доверяю авторам, VS Code откроется в Обозреватель представлении с выбранной Azure-Sentinel папкой. Все файлы и папки из родительского репозитория можно просмотреть на сайте GitHub.

По умолчанию ветвь master (main) активна при открытии клонированного вилки репозитория. Не делайте обновления в ветви master. Вместо этого создайте рабочую ветвь в локально клонируемой вилке копии репозитория, из нее будет работать.

  1. В VS Code выберите имя активной ветви в левом нижнем углу (что, скорее всего, master).

    Снимок экрана: активная (открытая) ветвь, выделенная в Visual Studio Code.

  2. В открывшемся диалоговом окне выберите Создать новую ветвь из..., а затем выберите master (другие доступные ветви также отображаются в списке).

    Снимок экрана: диалоговое окно, которое открывается после выбора активной (открытой) ветви в Visual Studio Code с параметром Создать новую ветвь из... Выделены.

    Снимок экрана: диалоговое окно, которое открывается после нажатия кнопки Создать ветвь из... в Visual Studio Code с выделенной ветвью master.

  3. В открывшемся диалоговом окне Укажите имя новой ветви введите подходящее имя для ветви (например, new-mdo-queries), а затем нажмите клавишу ВВОД, чтобы подтвердить.

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

Активная ветвь изменяется с master на новую созданную ветвь.

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

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

Шаг 4. Создание запросов Advanced Hunting в рабочей ветви в клонированного репозитория на локальном компьютере

При открытии VS Code для создания или обновления запросов всегда убедитесь, что требуемая рабочая ветвь является активной (не master):

Снимок экрана: активная (открытая) ветвь, выделенная в Visual Studio Code, которая теперь является новой ветвью, созданной на предыдущем шаге.

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

  1. Теперь вы можете создавать запросы охоты в рабочей ветви. Например, следующий запрос язык запросов Kusto (KQL) представляет собой базовый отчет о получателях, получающих больше всего фишинговых сообщений.

    EmailEvents
    | where ThreatTypes has "Phish" and EmailDirection == "Inbound"
    | summarize count() by RecipientEmailAddress
    | sort by count_
    | top 15 by count_
    
  2. Протестируйте запрос на странице Расширенная охота на портале Defender по , https://security.microsoft.com/v2/advanced-hunting чтобы убедиться, что запрос не содержит ошибок и возвращает данные должным образом.

    Снимок экрана: страница

  3. В представлении Обозреватель VS Code перейдите к одной из следующих родительских папок в зависимости от использования и доступности запроса на портале Defender:

    • \Azure-Sentinel\Hunting Queries\Microsoft 365 Defender\Email Queries: доступно в разделе "Запросы сообщества " на вкладке Запросы страницы"Расширенный поиск " на портале Defender по адресу https://security.microsoft.com/v2/advanced-hunting.
    • \Azure-Sentinel\Solutions\Microsoft Defender XDR\Hunting Queries\Email Queries: доступно в виде запросов Sentinel (решение Microsoft Defender XDR).

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

  4. В VS Code создайте YAML-файл в соответствующей подпапке этих расположений. Есть много вложенных папок на выбор. В нашем примере логическое имя и расположение нового файла запроса находится Top users receiving phish.yaml во вложенной папке Phish .

    Дополнительные сведения о требованиях и структуре YAML-файла см. в руководстве по стилю запросов на вики-сайте репозитория Azure-Sentinel.

    Используйте командлет New-Guid в Windows PowerShell, чтобы создать уникальный идентификатор GUID для свойства id файла запроса (например, 36f68d74-3e45-44d8-9915-0d35b7567bcf).

    Готовый Top users receiving phish.yaml файл выглядит примерно так:

    id: 36f68d74-3e45-44d8-9915-0d35b7567bcf
    name: Friendly name describing the query
    description: |
      A short description of what the query does.
    description-detailed: |
      A much longer description of the intention of the query within Defender for Office 365.
    requiredDataConnectors:
    - connectorId: MicrosoftThreatProtection
      dataTypes:
      - EmailEvents
    tactics:
      - InitialAccess
    relevantTechniques:
      - T1566
    query: |
      EmailEvents
      | where ThreatTypes has "Phish" and EmailDirection == "Inbound"
      | summarize count() by RecipientEmailAddress
      | sort by count_
      | top 15 by count_
    version: l.0.0
    
  5. После завершения и сохранения файла запроса в одном расположении скопируйте файл в другое расположение, чтобы можно было использовать запрос как в расширенной охоте, так и в Microsoft Sentinel.

Шаг 5. Синхронизация изменений с локального компьютера с вилкой в учетной записи GitHub

После добавления файлов запросов .yaml в клонированную репозиторий на локальном компьютере необходимо синхронизировать эти обновления обратно с вилкой копии репозитория Sentinel Azure в учетной записи GitHub.

  1. В VS Code выберите представление Системы управления версиями .

    Снимок экрана: Visual Studio Code с выделенным представлением системы управления версиями.

  2. В открывшемся диалоговом окне в разделе Изменения перечислены все файлы, измененные в текущей ветви:

    Снимок экрана: представление системы управления версиями в Visual Studio Code с выделенным элементом

    • Если щелкнуть имя файла, откроется измененный файл с выделенным измененным текстом. Вы можете просмотреть изменения на наличие проблем или ошибок, прежде чем продолжить.

    • В поле Сообщение введите краткое описание изменений. Используйте краткий язык. Например, добавлен запрос к списку основных получателей фишинга. По завершении нажмите кнопку Зафиксировать.

      Снимок экрана: представление системы управления версиями в Visual Studio Code с заполненным полем Сообщение и выделенной кнопкой Фиксация.

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

      Снимок экрана: представление системы управления версиями в Visual Studio Code с выделенной кнопкой

    В будущем при синхронизации локальных изменений в рабочей ветви с вилкой в учетной записи GitHub вы получите синхронизировать изменения .

Шаг 6. Создание запроса на вытягивание из вилки в учетной записи GitHub в общедоступный репозиторий azure Sentinel

После синхронизации обновлений с вилкой копии репозитория в учетной записи GitHub создайте запрос на вытягивание, чтобы объединить эти изменения обратно в общедоступный репозиторий Azure Sentinel GitHub.

Совет

Пока запрос на вытягивание не был объединен, можно повторить шаги 4 и 5 , чтобы обновить исходные файлы в разветвленной копии репозитория, что изменяет активный запрос на вытягивание.

  1. Перейдите по ссылке из https://github.com/<YourGitHubAccountName>/Azure-Sentinelшага 1.

  2. При необходимости обновите страницу, чтобы увидеть уведомление о том, что рабочая ветвь, синхронизированная на предыдущем шаге, недавно изменилась. Выберите Сравнить & запрос на вытягивание. ветвь внесены последние изменения.

    Снимок экрана: страница запроса на вытягивание &.

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

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

  5. Кто-то с разрешениями на слияние запроса на вытягивание будет проверять ваши изменения. Рецензент может запросить дополнительные изменения в соответствии со стандартами репозитория. С помощью шагов 4 и 5 можно внести запрошенные изменения на локальном компьютере и синхронизировать их обратно в вилку, чтобы они были включены в запрос на вытягивание.

См. также