Миграция правил обнаружения ArcSight в Microsoft Sentinel
Эта статья содержит сведения об определении, сравнении и миграции правил обнаружения ArcSight в правила аналитики Microsoft Sentinel.
Определение и перенос правил
В Microsoft Sentinel используется аналитика на основе машинного обучения. Она применяется для создания высокоточных инцидентов с действиями, а некоторые имеющиеся средства обнаружения могут быть избыточными в Microsoft Sentinel. Поэтому не следует бездумно переносить все правила обнаружения и аналитики. При определении существующих правил обнаружения необходимо учитывать следующие рекомендации.
- Обязательно выберите варианты использования, которые позволят согласовать перенос правил, учитывая приоритетность и эффективность для бизнеса.
- Убедитесь, что вы понимаете типы правил Microsoft Sentinel.
- Убедитесь, что вы понимаете терминологию правил.
- Проверьте все правила, которые не активировали оповещения за последние 6–12 месяцев, и определите, по-прежнему ли они актуальны.
- Устраните низкоуровневые угрозы или оповещения, которые обычно игнорируются.
- Используйте существующие функции и проверьте, можно ли применить встроенные правила аналитики Microsoft Sentinel в рамках текущих вариантов использования. Так как в Microsoft Sentinel используется аналитика на основе машинного обучения для создания высокоточных инцидентов с действиями, высока вероятность того, что некоторые имеющиеся средства обнаружения могут стать избыточными.
- Убедитесь, что источники данных подключены, и проверьте методы подключения к данным. Повторно рассмотрите сбор данных, чтобы обеспечить глубину и обширность данных в различных вариантах использования, которые планируется обнаруживать.
- Ознакомьтесь с такими ресурсами сообщества, как SOC Prime Threat Detection Marketplace, чтобы проверить, доступны ли ваши правила.
- Подумайте, можно ли использовать для работы с вашими правилами такой преобразователь запросов в сети, как Uncoder.io.
- Если правила недоступны или не могут быть преобразованы, их необходимо создать вручную с помощью запроса KQL. Проверьте сопоставление правил, чтобы создать новые запросы.
Ознакомьтесь с дополнительными сведениями о рекомендациях по миграции правил обнаружения.
Чтобы перенести правила аналитики в Microsoft Sentinel, выполните следующие действия:
Убедитесь в наличии системы тестирования для каждого правила, которое необходимо перенести.
Подготовьте процесс проверки перенесенных правил, включая скрипты и сценарии полного тестирования.
Убедитесь, что у вашей команды есть полезные ресурсы для тестирования перенесенных правил.
Убедитесь, что все необходимые источники данных подключены, и проверьте методы подключения к данным.
Проверьте, доступны ли ваши средства обнаружения в качестве встроенных шаблонов в Microsoft Sentinel:
Если встроенных правил достаточно, используйте встроенные шаблоны правил, чтобы создать правила для собственной рабочей области.
Чтобы создать и изменить соответствующие правила аналитики, в Microsoft Sentinel выберите Configuration (Конфигурация) > Analytics (Аналитика) > Rule templates (Шаблоны правил).
Дополнительные сведения см. в разделе "Создание правил запланированной аналитики" из шаблонов.
При наличии средств обнаружения, не охватываемых встроенными правилами Microsoft Sentinel, попробуйте использовать преобразователь запросов в Интернете, например Uncoder.io, чтобы преобразовать свои запросы в KQL.
Определите условие триггера и действие правила, а затем создайте и просмотрите запрос KQL.
Если ни встроенных правил, ни преобразователя правил в Интернете не достаточно, необходимо создать правило вручную. В таких случаях выполните приведенные ниже действия, чтобы приступить к созданию правила.
Определите источники данных, которые будут использоваться в правиле. Чтобы определить таблицы, к которым необходимо выполнить запрос, потребуется создать таблицу сопоставления источников данных и таблиц данных в Microsoft Sentinel.
Определите все атрибуты, поля или сущности в данных, которые будут использоваться в правилах.
Определите критерии и логику правила. На этом этапе вы можете использовать шаблоны правил в качестве примеров для создания запросов KQL.
Рассмотрите фильтры, правила корреляции, активные списки, эталонные наборы, списки видео к просмотру, аномалии обнаружения, агрегаты и т. д. Вы можете использовать справочные материалы, предоставляемые устаревшим решением SIEM, чтобы понять, как лучше сопоставить синтаксис запросов.
Определите условие триггера и действие правила, а затем создайте и просмотрите запрос KQL. При просмотре запроса учтите рекомендации по оптимизации KQL.
Протестируйте правило для каждого соответствующего ему варианта использования. Если оно не выдало ожидаемых результатов, возможно, потребуется отредактировать запрос KQL и снова проверить его.
Когда результаты будут удовлетворительными, можно будет считать, что правило перенесено. При необходимости создайте сборник схем для действия правила. Дополнительные сведения см. в разделе Автоматизация реагирования на угрозы с помощью сборников схем в Microsoft Sentinel.
См. правила аналитики:
- Правила запланированной аналитики в Microsoft Sentinel. Используйте группирование оповещений, чтобы уменьшить усталость от оповещений за счет группирования оповещений, происходящих в течение заданного периода времени.
- Сопоставьте поля данных с сущностями в Microsoft Sentinel, чтобы позволить инженерам SOC определять сущности как часть свидетельств, которые подлежат отслеживанию во время исследования. Сопоставление сущностей также позволяет аналитикам SOC воспользоваться преимуществами интуитивно понятного графика исследования, который может помочь сократить время и усилия.
- Изучите инциденты с помощью данных UEBA в качестве примера использования свидетельств для отображения событий, оповещений и всех закладок, связанных с конкретным инцидентом, в области просмотра инцидентов.
- Язык запросов Kusto (KQL) можно использовать для отправки запросов только для чтения к базе данных Log Analytics для обработки данных и возвращения результатов. KQL также используется в других службах Майкрософт, например в Microsoft Defender для конечной точки и Application Insights.
Сравнение терминологии правил
С помощью этой таблицы вы сможете прояснить для себя концепцию правила в Microsoft Sentinel по сравнению с ArcSight.
ArcSight | Microsoft Sentinel | |
---|---|---|
Тип правила | • Правило фильтра • Правило присоединения • Активное правило списка • И прочее |
• Запланированный запрос • Слияние • Безопасность Microsoft • Аналитика поведения для машинного обучения (ML) |
Критерии | Определение в условиях правила | Определение в KQL |
Условие активации | • Определение в действии • Определение в агрегате (для агрегирования событий) |
Порог: количество результатов запроса |
Действие | • Задание поля события • Отправка уведомления • Создание нового варианта • Добавление в активный список • И прочее |
• Создание оповещения или инцидента • Интеграция с Logic Apps |
Сопоставление и сравнение примеров правил
Используйте эти примеры для сравнения и сопоставления правил из ArcSight с Microsoft Sentinel в различных сценариях.
Правило | Description | Пример правила обнаружения (QRadar) | Пример запроса KQL | Ресурсы |
---|---|---|---|---|
Фильтр (AND ) |
Пример правила с условиями AND . Событие должно соответствовать всем условиям. |
Пример фильтра (AND) | Пример фильтра (AND) | Фильтр строк: • Строковые операторы Числовой фильтр: • Числовые операторы Фильтр даты и времени: • назад • Дата и время • между • сейчас Анализ: • анализ • извлечение • parse_json • parse_csv • parse_path • parse_url |
Фильтр (OR ) |
Пример правила с условиями OR . Событие может соответствовать любому из условий. |
Пример фильтра (OR) | Пример фильтра (OR) | • Строковые операторы • в |
Вложенный фильтр | Пример правила с вложенными условиями фильтрации. Правило включает инструкцию MatchesFilter , которая также включает условия фильтрации. |
Пример вложенного фильтра | Пример вложенного фильтра | • Пример функции KQL • Пример функции параметра • соединение • где |
Активный список (поиск) | Пример правила подстановки, использующего инструкцию InActiveList . |
Пример активного списка (поиск) | Пример активного списка (поиск) | • Список отслеживания является эквивалентом функции активного списка. Дополнительная информация о списках отслеживания. • Другие способы реализации подстановок |
Корреляция (сопоставление) | Пример правила, определяющего условие для набора базовых событий с помощью инструкции Matching Event . |
Пример корреляции (сопоставления) | Пример корреляции (сопоставления) | оператор соединения: • соединение • соединение с временным окном • перетасовка • Трансляция • Объединение инструкция по определению: • разрешение Агрегат: • make_set • make_list • make_bag • bag_pack |
Корреляция (временное окно) | Пример правила, определяющего условие для набора базовых событий с помощью инструкции Matching Event и использующего условие фильтра Wait time . |
Пример корреляции (временное окно) | Пример корреляции (временное окно) | • соединение • Правила Microsoft Sentinel и оператор соединения |
Пример фильтра (AND): ArcSight
Ниже приведен пример правила фильтра с AND
условиями в ArcSight.
Пример фильтра (AND): KQL
Ниже приведено правило фильтрации с условиями AND
в KQL.
SecurityEvent
| where EventID == 4728
| where SubjectUserName =~ "AutoMatedService"
| where isnotempty(SubjectDomainName)
Это правило предполагает, что агент мониторинга Azure (AMA) собирает события Безопасность Windows. Поэтому правило использует таблицу Microsoft Sentinel SecurityEvent .
Рассмотрим следующие рекомендации.
- Чтобы оптимизировать запросы, не используйте операторы без учета регистра, если это возможно:
=~
. - Используйте
==
, если значение не учитывает регистр. - Упорядочить фильтры, начиная с инструкции
where
, которая отфильтровывает большинство данных.
Пример фильтра (OR): ArcSight
Ниже приведен пример правила фильтра с OR
условиями в ArcSight.
Пример фильтра (OR): KQL
Ниже приведено несколько способов написания правила фильтра с OR
условиями в KQL.
В качестве первого варианта используйте инструкцию in
:
SecurityEvent
| where SubjectUserName in
("Adm1","ServiceAccount1","AutomationServices")
В качестве второго варианта используйте инструкцию or
:
SecurityEvent
| where SubjectUserName == "Adm1" or
SubjectUserName == "ServiceAccount1" or
SubjectUserName == "AutomationServices"
Хотя оба варианта идентичны в производительности, рекомендуется использовать первый вариант, который проще читать.
Пример вложенного фильтра: ArcSight
Ниже приведен пример правила вложенного фильтра в ArcSight.
Вот правило для фильтра /All Filters/Soc Filters/Exclude Valid Users
.
Пример вложенного фильтра: KQL
Ниже приведено несколько способов написания правила фильтра с OR
условиями в KQL.
В качестве первого варианта используйте прямой фильтр с инструкцией where
:
SecurityEvent
| where EventID == 4728
| where isnotempty(SubjectDomainName) or
isnotempty(TargetDomainName)
| where SubjectUserName !~ "AutoMatedService"
В качестве второго варианта используйте функцию KQL:
Сохраните следующий запрос как функцию KQL с псевдонимом
ExcludeValidUsers
.SecurityEvent | where EventID == 4728 | where isnotempty(SubjectDomainName) | where SubjectUserName =~ "AutoMatedService" | project SubjectUserName
Используйте следующий запрос, чтобы отфильтровать псевдоним
ExcludeValidUsers
.SecurityEvent | where EventID == 4728 | where isnotempty(SubjectDomainName) or isnotempty(TargetDomainName) | where SubjectUserName !in (ExcludeValidUsers)
В качестве третьего варианта используйте функцию параметра:
Создайте функцию параметра с
ExcludeValidUsers
в качестве имени и псевдонима.Определите параметры функции. Например:
Tbl: (TimeGenerated:datetime, Computer:string, EventID:string, SubjectDomainName:string, TargetDomainName:string, SubjectUserName:string)
Функция
parameter
использует следующие значения по умолчанию:Tbl | where SubjectUserName !~ "AutoMatedService"
Выполните следующий запрос, чтобы вызвать функцию параметра:
let Events = ( SecurityEvent | where EventID == 4728 ); ExcludeValidUsers(Events)
В качестве четвертого варианта используйте функцию join
:
let events = (
SecurityEvent
| where EventID == 4728
| where isnotempty(SubjectDomainName)
or isnotempty(TargetDomainName)
);
let ExcludeValidUsers = (
SecurityEvent
| where EventID == 4728
| where isnotempty(SubjectDomainName)
| where SubjectUserName =~ "AutoMatedService"
);
events
| join kind=leftanti ExcludeValidUsers on
$left.SubjectUserName == $right.SubjectUserName
Рекомендации:
- Рекомендуется использовать прямой фильтр с инструкцией
where
(первым вариантом ) из-за простоты. Для оптимизации производительности избегайте использованияjoin
(четвертый вариант). - Чтобы оптимизировать запросы, не используйте операторы
=~
и!~
без учета регистра, если это возможно. Используйте операторы==
и!=
, если значение не учитывает регистр.
Пример активного списка (поиск): ArcSight
Вот правило активного списка (поиска) в ArcSight.
Пример активного списка (поиск): KQL
Это правило предполагает, что список отслеживания учетных записей исключений Cyber-Ark существует в Microsoft Sentinel с полем "Учетная запись".
let Activelist=(
_GetWatchlist('Cyber-Ark Exception Accounts')
| project Account );
CommonSecurityLog
| where DestinationUserName in (Activelist)
| where DeviceVendor == "Cyber-Ark"
| where DeviceAction == "Get File Request"
| where DeviceCustomNumber1 != ""
| project DeviceAction, DestinationUserName,
TimeGenerated,SourceHostName,
SourceUserName, DeviceEventClassID
Упорядочить фильтры, начиная с инструкции where
, которая отфильтровывает большинство данных.
Пример корреляции (сопоставления): ArcSight
Пример правила ArcSight, определяющего условие для набора базовых событий с помощью инструкции Matching Event
.
Пример корреляции (сопоставления): KQL
let event1 =(
SecurityEvent
| where EventID == 4728
);
let event2 =(
SecurityEvent
| where EventID == 4729
);
event1
| join kind=inner event2
on $left.TargetUserName==$right.TargetUserName
Рекомендации.
- Чтобы оптимизировать запрос, убедитесь, что меньшая таблица находится в левой части функции
join
. - Если левая часть таблицы относительно мала (до 100 K записей), добавьте
hint.strategy=broadcast
для повышения производительности.
Пример корреляции (временное окно): ArcSight
Пример правила ArcSight, определяющего условие для набора базовых событий с помощью инструкции Matching Event
и использующего условие фильтра Wait time
.
Пример корреляции (временное окно): KQL
let waittime = 10m;
let lookback = 1d;
let event1 = (
SecurityEvent
| where TimeGenerated > ago(waittime+lookback)
| where EventID == 4728
| project event1_time = TimeGenerated,
event1_ID = EventID, event1_Activity= Activity,
event1_Host = Computer, TargetUserName,
event1_UPN=UserPrincipalName,
AccountUsedToAdd = SubjectUserName
);
let event2 = (
SecurityEvent
| where TimeGenerated > ago(waittime)
| where EventID == 4729
| project event2_time = TimeGenerated,
event2_ID = EventID, event2_Activity= Activity,
event2_Host= Computer, TargetUserName,
event2_UPN=UserPrincipalName,
AccountUsedToRemove = SubjectUserName
);
event1
| join kind=inner event2 on TargetUserName
| where event2_time - event1_time < lookback
| where tolong(event2_time - event1_time ) >=0
| project delta_time = event2_time - event1_time,
event1_time, event2_time,
event1_ID,event2_ID,event1_Activity,
event2_Activity, TargetUserName, AccountUsedToAdd,
AccountUsedToRemove,event1_Host,event2_Host,
event1_UPN,event2_UPN
Пример агрегата: ArcSight
Ниже приведен пример правила ArcSight с параметрами агрегата: три совпадения в течение 10 минут.
Пример агрегата: KQL
SecurityEvent
| summarize Count = count() by SubjectUserName,
SubjectDomainName
| where Count >3
Следующие шаги
Из этой статьи вы узнали, как сопоставить правила миграции из QRadar с Microsoft Sentinel.