Написание правил обнаружения угроз
Движок обнаружения SecureExec оценивает входящие события по вашему набору правил в режиме реального времени. При совпадении правила генерируется событие Detection с уровнем серьёзности и сохраняется вместе с исходной телеметрией в Elasticsearch. В этой статье разбирается написание эффективных правил для распространённых сценариев угроз.
Структура события обнаружения
Событие обнаружения содержит:
rule_name— имя сработавшего правилаseverity— одно из значений:low,medium,high,criticaldescription— описание на человеческом языкеsource_event_ids— идентификаторы исходных событий, вызвавших обнаружениеprocess_uid— задействованный процесс
Идентификаторы исходных событий позволяют напрямую перейти от обнаружения к сырым событиям в консоли событий.
Пример: обнаружение веб-шелла
Веб-шелл часто проявляется как порождение шелла веб-сервером (nginx, apache, gunicorn). Правило для этого паттерна:
name: webshell_spawn
severity: critical
description: Веб-сервер породил дочерний шелл
match:
event_type: process_create
parent_process_name:
- nginx
- apache2
- gunicorn
- httpd
process_name:
- sh
- bash
- zsh
- python
- perl
Пример: обнаружение исходящих подключений на нестандартных портах
Вредоносное ПО часто связывается с управляющим сервером через нестандартные порты, чтобы обойти простые правила брандмауэра:
name: unusual_outbound_port
severity: medium
description: Процесс установил исходящее соединение на нестандартном порту
match:
event_type: net_connect
dst_port:
not_in: [80, 443, 22, 53, 25, 587, 993]
process_name:
not_in: [curl, wget, apt, yum, pip]
Пример: обнаружение доступа к файлам учётных данных
Обращение к /etc/shadow или .ssh/id_rsa за пределами ожидаемых системных процессов — явный признак перехвата учётных данных:
name: credential_file_read
severity: high
description: Файл учётных данных открыт неожиданным процессом
match:
event_type: file_modify
path:
- /etc/shadow
- /etc/passwd
- "**/.ssh/id_rsa"
- "**/.ssh/authorized_keys"
process_name:
not_in: [passwd, sshd, sudo]
Рекомендации по уровням серьёзности
| Уровень | Когда применять |
|---|---|
low | Аномалия, но распространённый шум; используйте для базирования |
medium | Подозрительная активность, требующая расследования |
high | Явный признак компрометации; оповестите дежурного |
critical | Активная атака; немедленное реагирование |
Поиск обнаружений в Elasticsearch
Все события обнаружения индексируются в secureexec-events-{org_id} с event_type: detection. Поиск всех критических обнаружений за последние 24 часа:
{
"query": {
"bool": {
"must": [
{ "term": { "event_type": "detection" } },
{ "term": { "severity": "critical" } },
{ "range": { "@timestamp": { "gte": "now-24h" } } }
]
}
}
}
Используйте консоль событий в веб-приложении для визуального выполнения этих запросов с фильтрацией по тексту и временному диапазону.