AI UEBA — аналитика поведения пользователей и объектов
Insider threat и скомпрометированные аккаунты — это атаки, которые по определению используют легитимные учётные данные. Подписи вредоносного ПО здесь не помогают. UEBA (User and Entity Behavior Analytics) работает с другим принципом: не «это известная угроза», а «это аномальное поведение для конкретного субъекта».
Что анализирует UEBA
User behavior. Паттерны работы конкретного сотрудника: в какое время работает, к каким системам обращается, какой объём данных перемещает, с каких устройств/локаций. Логин в 3 часа ночи из Дублина при том, что человек работает в Москве и никогда не бывал в Ирландии — это аномалия. Логин в нерабочее время на следующий день после получения уведомления об увольнении — высокоприоритетная.
Entity behavior. Поведение не-человеческих субъектов: серверов, IoT-устройств, сервисных аккаунтов, API-ключей. Сервер приложений, который внезапно начинает сканировать внутреннюю сеть — скомпрометирован.
Peer group analysis. Сравнение поведения пользователя с его «группой сверстников» (коллеги в том же отделе, той же должности). Доступ к 500 файлам в день при норме в группе 30 — аномалия, даже если абсолютная цифра не триггерит правило.
Построение поведенческого baseline
Baseline — это не простое «среднее за последние 30 дней». Нужно учитывать:
- Сезонность. Бухгалтер обрабатывает больший объём данных в период отчётности — это норма, не аномалия.
- День недели. Активность в пятницу вечером для большинства ниже, чем в среду.
- Роль. DevOps регулярно обращается к production-серверам, рядовой менеджер — нет.
- Эволюция. Новый сотрудник осваивает системы — базовая активность растёт первые 2–3 месяца.
Технически: ARIMA + Seasonal Decomposition для временных рядов. Отдельные baseline'ы по каждому пользователю и каждому типу активности. Exponentially weighted moving average для адаптации к изменениям паттернов.
class UserBehaviorBaseline:
def __init__(self, lookback_days=90, min_data_points=30):
self.models = {}
self.lookback = lookback_days
def build_baseline(self, user_id: str, activity_type: str,
events: pd.Series) -> None:
# Seasonal decomposition (недельный период)
decomposition = seasonal_decompose(
events, model='additive', period=7, extrapolate_trend='freq'
)
# Robust statistics для устойчивости к выбросам
mad = median_abs_deviation(decomposition.resid.dropna())
self.models[(user_id, activity_type)] = {
'trend': decomposition.trend,
'seasonal': decomposition.seasonal,
'mad': mad,
'median_resid': np.median(decomposition.resid.dropna())
}
def anomaly_score(self, user_id: str, activity_type: str,
value: float, timestamp: datetime) -> float:
baseline = self.models.get((user_id, activity_type))
if not baseline:
return 0.5 # unknown user — medium risk
expected = baseline['trend'].iloc[-1] + self._seasonal_component(baseline, timestamp)
deviation = abs(value - expected) / (baseline['mad'] + 1e-8)
return min(1.0, deviation / 10.0) # нормализация в [0, 1]
Risk scoring и приоритизация
Единичная аномалия — шум. Реальный инцидент — паттерн. UEBA агрегирует anomaly scores по нескольким измерениям в единый risk score:
- Аномальная активность по доступу к файлам: +0.3
- Аномальный объём исходящего трафика: +0.4
- Логин с нового устройства: +0.2
- Доступ к HR-данным (новая категория для этого пользователя): +0.5
- Composite risk score: 0.87 → HIGH priority alert
Важно: риск-скор учитывает контекст. Тот же сотрудник в период онбординга нового сотрудника (HR-процесс) — базовый риск ниже для HR-доступа.
Детекция data exfiltration
Один из ключевых UEBA use cases для insider threats. Признаки предстоящего ухода с кражей данных:
- Резкий рост объёма загружаемых на USB/облако файлов за 1–4 недели до увольнения
- Доступ к данным вне обычного рабочего scope (клиентские базы при работе в технической роли)
- Поиск по ключевым словам типа «confidential», «secret», «customer list»
- Массовое скачивание в нерабочее время
Практический кейс
Юридическая фирма, 200 сотрудников, чувствительные клиентские дела. Проблема: уволился партнёр, унёс данные по 40 клиентам. Обнаружили через 3 недели.
UEBA внедрили через 2 месяца после инцидента. Через 4 месяца:
- Система детектировала сотрудника, который за 2 недели до подачи заявления об уходе загрузил 8 GB на личный Dropbox (при норме 200 MB/месяц)
- Риск-скор за неделю: 0.91 (max)
- Немедленное уведомление CISO
- Данные не покинули компанию — USB заблокирован, Dropbox sync остановлен до расследования
Ключевой insight: поведение начало меняться за 3 недели до формального уведомления об уходе. Без UEBA это было бы незаметно.
Сроки: 6–10 недель для базового UEBA с готовыми baseline-моделями, 3–5 месяцев для кастомного решения с domain-specific признаками и интеграцией в существующий SIEM.







