
Тюнинг и рефакторинг Google Chronicle Curated Detections для устранения усталости от алертов и исправления логических ошибок/багов.
Этот репозиторий документирует архитектурные недостатки проектирования, логические расхождения и стратегии настройки для нативных курируемых детекций Google SecOps (Chronicle).
Хотя Google Threat Intelligence (GTIG) обеспечивает исключительное концептуальное покрытие угроз (например, отслеживание кампаний APT29/BRICKSTORM), необработанные реализации курируемых правил на YARA-L иногда страдают от упущений при реализации, таких как противоречия в логике группировки и жёстко заданные пороговые переменные. В реальных корпоративных средах это часто приводит к массовой усталости от оповещений.
Этот проект анализирует, почему нативные правила ломаются или заваливают SOC, и делится оптимизированными пользовательскими правилами и патчами для решения этих проблем.
Google выпустил набор правил для обнаружения массового вывода электронной почты из Microsoft 365 Exchange Online скомпрометированными субъектами-службами (техники, активно используемые APT29/Midnight Blizzard).
Затронутые курируемые правила:
O365 Mailbox Access by Service Principal with Multiple User AgentsO365 Multiple Mailboxes Accessed by Service PrincipalO365 Mailbox Access by Service Principal from Multiple ASNsO365 Multiple Mailboxes Accessed via Microsoft Graph APIЭтот набор правил содержит системные логические несоответствия между заявленной целью и реализацией на YARA-L, вероятно, из-за повторного использования кода в пакете правил. Правила не позволяют должным образом отличить автоматизированные субъекты-службы от стандартной активности людей, в результате чего оповещения срабатывают на нормальное поведение сотрудников.
Несмотря на то, что описание правила явно утверждает: «Обнаруживает субъект-службу с одним идентификатором сеанса O365...», раздел match в YARA-L правила «Multiple User Agents» группирует по $application_id, а не по идентификатору сеанса ($session_id). Это полностью противоречит заявленной цели правила.
Правила отслеживают аномальные поведенческие паттерны (смену IP-адресов, ASN или User-Agent), связанные с конкретным ClientAppId. Хотя Google включает regex-исключение для нескольких нативных приложений Microsoft, они необъяснимо упустили самый распространённый клиент для мобильных устройств: Microsoft Outlook Mobile App (27922004-5251-4030-b22d-91ecd9a37ea4).
Multiple ASNs. Разные сотрудники, использующие iOS и Android для проверки одного и того же ведомственного почтового ящика, вызывают срабатывание оповещения Multiple User Agents.Для идентификации сервисных учётных записей бэкенда логика Google опирается на это условие:
$e.principal.user.userid != $e.target.user.userid
[email protected]). Этот недостаток дизайна порождает массовый шум на стандартном операционном человеческом трафике.Чтобы исправить эти недостатки дизайна, у вас есть два варианта в зависимости от ваших операционных потребностей:
Вариант 1: Нативные исключения SIEM (быстрое исправление)
Вам не обязательно отключать правила или писать собственный код. Вы можете просто создать Exclusion непосредственно в интерфейсе Google SecOps SIEM. Просто добавьте исключение, нацеленное на ClientAppId Outlook Mobile (27922004-5251-4030-b22d-91ecd9a37ea4) и ваши авторизованные приложения резервного копирования (например, Keepit). Это немедленно остановит поток ложных срабатываний, сохраняя курируемые правила Google активными.
Вариант 2: Развёртывание пользовательских правил (архитектурное исправление)
Если вы хотите полностью исправить недостатки базовой логики группировки (такие как несоответствие $application_id), вы должны отключить курируемые детекции и развернуть пользовательские правила. Исправления включают:
27922004-...) в белый список.match для корректной агрегации по сессии.rule custom_ttp_o365_mailbox_access_by_service_principal_with_multiple_uas {
meta:
rule_name = "[CUSTOM] O365 Mailbox Access by Service Principal with Multiple User Agents"
description = "Detects a Service Principal with a single O365 session ID accessing O365 mailboxes with multiple user agents. Tuned to fix grouping logic and exclude Outlook Mobile (Public Client) human traffic."
severity = "Low"
tactic = "TA0009"
technique = "T1114.002"
events:
$e.metadata.log_type = "OFFICE_365"
$e.metadata.product_event_type = "MailItemsAccessed" nocase
$e.target.application = "Exchange"
$e.security_result.detection_fields["RecordType"] = /^(2|50)$/
// Extract actual Session ID and App ID
$session_id =$e.network.session_id
$application_id =$e.additional.fields["ClientAppId"]
$e.principal.user.userid !=$e.target.user.userid
(
$e.network.http.user_agent = /AppId/ nocase or$e.additional.fields["ClientAppId"] = /./
)