Миграция правил обнаружения 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, чтобы позволить инженерам SOC определять сущности как часть свидетельств, которые подлежат отслеживанию во время исследования. Сопоставление сущностей также позволяет аналитикам SOC использовать преимущества интуитивно понятного графа исследований (investigate-cases.md#use-the-investigation-graph-to-deep-dive), который поможет сократить затрачиваемые время и усилия.
- Изучите инциденты с помощью данных UEBA в качестве примера использования свидетельств для отображения событий, оповещений и всех закладок, связанных с конкретным инцидентом, в области просмотра инцидентов.
- Язык запросов Kusto (KQL) можно использовать для отправки запросов только для чтения к базе данных Log Analytics для обработки данных и возвращения результатов. KQL также используется в других службах Майкрософт, например в Microsoft Defender для конечной точки и Application Insights.
Сравнение терминологии правил
С помощью этой таблицы вы сможете прояснить для себя концепцию правила в Microsoft Sentinel по сравнению с ArcSight.
ArcSight | Microsoft Sentinel | |
---|---|---|
Тип правила | • Правило фильтра • Правило присоединения • Активное правило списка • И прочее |
• Запланированный запрос • Fusion • Microsoft Security • Аналитика поведения машинного обучения (ML) |
Критерии | Определение в условиях правила | Определение в KQL |
Условие запуска | • Определение в действии • Определение в агрегате (для агрегирования событий) |
Порог: количество результатов запроса |
Действие | • Задание поля события • Отправка уведомления • Создание нового варианта • Добавление в активный список • И прочее |
• Создание оповещения или инцидента • Интеграция с Logic Apps |
Сопоставление и сравнение примеров правил
Используйте эти примеры для сравнения и сопоставления правил из ArcSight с Microsoft Sentinel в различных сценариях.
Правило | Описание | Пример правила обнаружения (QRadar) | Пример запроса KQL | Ресурсы |
---|---|---|---|---|
Фильтр (AND ) |
Пример правила с условиями AND . Событие должно соответствовать всем условиям. |
Пример фильтра (AND) | Пример фильтра (AND) | Фильтр строк: • Строковые операторы Числовой фильтр: • Числовые операторы Фильтр даты и времени: • назад • Дата и время • между • сейчас Анализ: • анализ • извлечение • parse_json • parse_csv • parse_path • parse_url |
Фильтр (OR ) |
Пример правила с условиями OR . Событие может соответствовать любому из условий. |
Пример фильтра (OR) | Пример фильтра (OR) | • Строковые операторы • в |
Вложенный фильтр | Пример правила с вложенными условиями фильтрации. Правило включает инструкцию MatchesFilter , которая также включает условия фильтрации. |
Пример вложенного фильтра | Пример вложенного фильтра | • Пример функции KQL • Пример функции параметра • join • где |
Активный список (поиск) | Пример правила подстановки, использующего инструкцию InActiveList . |
Пример активного списка (поиск) | Пример активного списка (поиск) | • Список отслеживания является эквивалентом функции активного списка. Дополнительная информация о списках отслеживания. • Другие способы реализации подстановок |
Корреляция (сопоставление) | Пример правила, определяющего условие для набора базовых событий с помощью инструкции Matching Event . |
Пример корреляции (сопоставления) | Пример корреляции (сопоставления) | оператор соединения: • join • соединение с временным окном • перетасовка • Трансляция • Объединение инструкция по определению: • разрешение Объединение. • make_set • make_list • make_bag • пакет |
Корреляция (временное окно) | Пример правила, определяющего условие для набора базовых событий с помощью инструкции Matching Event и использующего условие фильтра Wait time . |
Пример корреляции (временное окно) | Пример корреляции (временное окно) | • join • Правила Microsoft Sentinel и оператор соединения |
Пример фильтра (AND): ArcSight
Ниже приведен пример правила фильтра с AND
условиями в ArcSight.
Пример фильтра (AND): KQL
Ниже приведено правило фильтрации с условиями AND
в KQL.
SecurityEvent
| where EventID == 4728
| where SubjectUserName =~ "AutoMatedService"
| where isnotempty(SubjectDomainName)
Это правило предполагает, что Microsoft Monitoring Agent (MMA) или агент мониторинга 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:datatime, 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.