
Облачный SIEM для интеллектуальной аналитики безопасности вашего предприятия.
Добро пожаловать в единый репозиторий Microsoft Sentinel и Microsoft 365 Defender! Этот репозиторий содержит готовые детекции, запросы для исследования, запросы для охоты, книги, плейбуки и многое другое, чтобы помочь вам освоиться с Microsoft Sentinel и предоставить вам контент для безопасности вашей среды и охоты за угрозами. Запросы для охоты также включают запросы для охоты Microsoft 365 Defender для продвинутых сценариев охоты как в Microsoft 365 Defender, так и в Microsoft Sentinel. Вы также можете отправить запросы на любые примеры или ресурсы, которые вы хотели бы здесь видеть, когда присоединяетесь к Microsoft Sentinel. Этот репозиторий приветствует вклад и ссылается на вики этого репозитория для начала работы. По вопросам и обратной связи обращайтесь по адресу [email protected]
Мы ценим вашу обратную связь. Вот несколько каналов, которые помогут задать вопросы или поделиться отзывами:
Этот проект приветствует вклад и предложения. Большинство вкладов требует согласия с лицензионным соглашением участника (CLA), которое подтверждает, что вы имеете право и действительно предоставляете нам права на использование вашего вклада. Подробнее см. на https://cla.microsoft.com.
Примечание: Если вы впервые вносите вклад в этот репозиторий, ознакомьтесь с общим руководством по форку репозитория GitHub перед клонированием или конкретными шагами для репозитория Sentinel.
Создание нового или обновление вклада с помощью следующих методов:
В рамках проверок PR мы проводим валидацию структуры, чтобы убедиться, что все необходимые части YAML-структуры включены. Для детекций есть новый раздел, который должен быть включён. Подробнее см. в рекомендациях по вкладу. Если этот или любой другой обязательный раздел не включён, возникнет ошибка валидации, подобная приведённой ниже. Пример - если в YAML отсутствует раздел entityMappings:
A total of 1 test files matched the specified pattern.
[xUnit.net 00:00:00.95] Kqlvalidations.Tests.DetectionTemplateStructureValidationTests.Validate_DetectionTemplates_HaveValidTemplateStructure(detectionsYamlFileName: "ExcessiveBlockedTrafficGeneratedbyUser.yaml") [FAIL]
X Kqlvalidations.Tests.DetectionTemplateStructureValidationTests.Validate_DetectionTemplates_HaveValidTemplateStructure(detectionsYamlFileName: "ExcessiveBlockedTrafficGeneratedbyUser.yaml") [104ms]
Error Message:
Expected object to be <null>, but found System.ComponentModel.DataAnnotations.ValidationException with message "An old mapping for entity 'AccountCustomEntity' does not have a matching new mapping entry."
В рамках проверок PR мы проводим синтаксическую валидацию KQL-запросов, определённых в шаблоне. Если эта проверка не пройдена, перейдите в Azure Pipeline (нажав на ссылку ошибок на вкладке проверок в вашем PR)
В конвейере вы можете увидеть, какой тест не пройден и в чём причина:

Пример сообщения об ошибке:
A total of 1 test files matched the specified pattern.
[xUnit.net 00:00:01.81] Kqlvalidations.Tests.KqlValidationTests.Validate_DetectionQueries_HaveValidKql(detectionsYamlFileName: "ExcessiveBlockedTrafficGeneratedbyUser.yaml") [FAIL]
X Kqlvalidations.Tests.KqlValidationTests.Validate_DetectionQueries_HaveValidKql(detectionsYamlFileName: "ExcessiveBlockedTrafficGeneratedbyUser.yaml") [21ms]
Error Message:
Template Id:fa0ab69c-7124-4f62-acdd-61017cf6ce89 is not valid Errors:The name 'SymantecEndpointProtection' does not refer to any known table, tabular variable or function., Code: 'KS204', Severity: 'Error', Location: '67..93',The name 'SymantecEndpointProtection' does not refer to any known table, tabular variable or function., Code: 'KS204', Severity: 'Error', Location: '289..315'
Если вы используете пользовательскую таблицу журналов (таблицу, которая по умолчанию не определена во всех рабочих областях), убедитесь, что схема таблицы определена в JSON-файле в папке Azure-Sentinel\.script\tests\KqlvalidationsTests\CustomTables
Пример для таблицы tablexyz.json
{
"Name": "tablexyz",
"Properties": [
{
"Name": "SomeDateTimeColumn",
"Type": "DateTime"
},
{
"Name": "SomeStringColumn",
"Type": "String"
},
{
"Name": "SomeDynamicColumn",
"Type": "Dynamic"
}
]
}
Чтобы запустить валидацию KQL перед отправкой Pull Request на локальной машине:
Azure-Sentinel\\.script\tests\KqlvalidationsTests\dotnet testПример вывода (в Ubuntu):
Welcome to .NET Core 3.1!
----------------------
SDK Version: 3.1.403
Telemetry
---------
The .NET Core tools collect usage data in order to help us improve your experience. The data is anonymous. It is collected by Microsoft and shared with the community. You can opt-out of telemetry by setting the DOTNET_CLI_TELEMETRY_OPTOUT environment variable to '1' or 'true' using your favorite shell.
Read more about .NET Core CLI Tools telemetry: https://aka.ms/dotnet-cli-telemetry
----------------
Explore documentation: https://aka.ms/dotnet-docs
Report issues and find source on GitHub: https://github.com/dotnet/core
Find out what's new: https://aka.ms/dotnet-whats-new
Learn about the installed HTTPS developer cert: https://aka.ms/aspnet-core-https
Use 'dotnet --help' to see available commands or visit: https://aka.ms/dotnet-cli-docs
Write your first app: https://aka.ms/first-net-core-app
--------------------------------------------------------------------------------------
Test run for /mnt/c/git/Azure-Sentinel/.script/tests/KqlvalidationsTests/bin/Debug/netcoreapp3.1/Kqlvalidations.Tests.dll(.NETCoreApp,Version=v3.1)
Microsoft (R) Test Execution Command Line Tool Version 16.7.0
Copyright (c) Microsoft Corporation. All rights reserved.
Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
Test Run Successful.
Total tests: 171
Passed: 171
Total time: 25.7973 Seconds
Аналогично валидации KQL, существует автоматическая валидация схемы детекции. Валидация схемы включает частоту и период детекции, тип триггера и порог, валидность идентификаторов коннекторов (список валидных ID коннекторов) и т.д. Неправильный формат или отсутствующие атрибуты приведут к информативному сбою проверки, который должен помочь вам в устранении проблемы, но обязательно ознакомьтесь с форматом уже одобренных детекций.
Чтобы запустить валидацию схемы детекции перед отправкой Pull Request на локальной машине:
Azure-Sentinel\\.script\tests\DetectionTemplateSchemaValidation\dotnet testКогда вы отправляете pull request, бот CLA автоматически определит, нужно ли вам предоставить CLA, и соответствующим образом оформит PR (например, меткой, комментарием). Просто следуйте инструкциям, предоставленным ботом. Вам нужно будет сделать это только один раз для всех репозиториев, использующих нашу CLA.
Этот проект принял Кодекс поведения Microsoft с открытым исходным кодом. Для получения дополнительной информации см. Часто задаваемые вопросы о Кодексе поведения или свяжитесь с [email protected] по любым дополнительным вопросам или комментариям.
Для получения информации о том, что вы можете внести, и дополнительных сведений обратитесь к разделу "Начать работу" в вики проекта.