Введение
История кибербезопасности — это классическая гонка вооружений (arms race). Как только человечество изобретает щит, где-то уже куётся меч, способный его пробить. В 1990-х это была борьба антивируса с вирусом. Сегодня это противостояние целых индустрий: сложнейших АРТ-группировок, поддерживаемых государствами, и распределённых SOC (Security Operations Center), анализирующих петабайты данных.
Чтобы понять, почему архитектура современных систем обнаружения вторжений (СОВ/IDS) выглядит именно так, нужно совершить короткий исторический экскурс. Мы увидим, как эволюция атак вынуждала защитников отказываться от простых сигнатур в пользу эвристик, а затем — и в пользу поведенческого анализа. Кульминацией главы станет ответ на горький, но фундаментальный вопрос: почему даже самый совершенный детектор никогда не достигнет 100% полноты (recall) и 100% точности (precision) одновременно.
1.1. Эпоха «Червей и Вирусов» (конец 1990-х — середина 2000-х): рождение сигнатур
Конец 1990-х и начало 2000-х были временем «романтиков» киберпреступности. Вирусы и черви писались ради славы, хулиганства или эксперимента, реже — ради денег. Достаточно вспомнить Melissa (1999), ILOVEYOU (2000), Code Red (2001) и легендарного SQL Slammer (2003). Скорость распространения Slammer удваивала количество заражённых хостов каждые 8,5 секунд, положив пол-интернета за 10 минут.
Характеристики атак того времени
- Массовость. Атаки были направлены на поражение максимального количества хостов.
- Простота. Использование небольшого количества уязвимостей — в основном переполнение буфера и макросы.
- Шумность. Черви сканировали случайные IP-адреса, создавая гигантский сетевой шум.
Реакция защитников: сигнатурный анализ
Основной вопрос детектора звучал так: «Содержит ли этот файл или пакет известную мне вредоносную последовательность байт (сигнатуру)?»
Так появились первые IDS (Intrusion Detection Systems). Классический пример — Snort, созданный Мартином Рёшем в 1998 году. Анализ сводился к простому сравнению входящего трафика с базой сигнатур:
alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS 80 (
msg:"WEB-IIS CodeRed v2 root.exe access";
content:"/root.exe?"; nocase;
sid:1002; rev:1;
)
Эта сигнатура ищет строку /root.exe? в HTTP-запросе —
характерный признак атаки червя Code Red.
Математическая модель простого сигнатурного детектора
Пусть T — трафик, S = {s₁, s₂, …, sₙ} — множество сигнатур. Сигнатура sᵢ — это кортеж (pattern, protocol, port, …). Функция обнаружения D(T):
- match()
- функция сравнения — простое вхождение строки или соответствие регулярному выражению
1.2. Эра «Целевых атак и Ransomware» (2010-е — настоящее время): охота за стоимостью
К 2010-м годам ландшафт угроз кардинально изменился. Киберпреступность стала индустрией. Появились АРТ-группировки (Advanced Persistent Threat), которые не спешат, действуют тихо и нацелены на конкретные компании. Параллельно расцвёл рынок программ-вымогателей.
Ключевые изменения в природе атак
- Бесшумность (Low-and-Slow). Вместо массового сканирования портов, которое сразу видно, злоумышленники используют легитимные учётные данные — украденные логины и пароли.
- Living-off-the-Land (LotL). Хакеры перестали массово лить шелл-коды. Они используют встроенные средства ОС: PowerShell, WMI, PsExec.
- Ransomware-as-a-Service (RaaS). Атака стала бизнес-моделью: разработчики продают доступ к инфраструктуре шифровальщиков партнёрам-аффилиатам, которые сами ищут жертв.
- Initial Access Brokers (IAB). Сформировался рынок продажи доступа в корпоративные сети — подробнее в главе [[vol1-ch04|4. Экономика ИБ]].
В таблице ниже — статистика по типам атак из датасета
CIC-IDS2017, слепка современного трафика.
| Категория атаки | Примеры в датасете | Характер |
|---|---|---|
| Brute Force | FTP-Patator, SSH-Patator | Подбор паролей |
| Web Attacks | Brute Force, XSS, SQL Injection | Атаки на веб-приложения |
| DoS / DDoS | Hulk, Slowloris, GoldenEye | Истощение ресурсов |
| Botnet | Botnet ARES | Управление через C&C |
| Infiltration | Internal network scan | Разведка внутри сети |
| Heartbleed | Heartbleed exploit | Кража памяти сервера |
Реакция защитников: поведенческий анализ и EDR
Мы больше не можем спрашивать: «Это похоже на атаку?» Вопрос теперь звучит иначе: «Аномально ли это поведение для нашей сети и хоста?»
Вместо IDS появляются EDR (Endpoint Detection and Response) и NDR (Network Detection and Response). Они следят за отклонениями от нормы:
- Процесс
cmd.exeзапускаетpowershell.exe, который соединяется с внешним IP по порту 443 — нетипично для обычного пользователя. - Хост стучится во внутренние IP-адреса, которые раньше не посещал — признак разведки после заражения.
1.3. Почему 100% обнаружения не существует
Причина, по которой мы никогда не достигнем идеального детектора, лежит не в плоскости технологий, а в плоскости математической статистики и теории информации. Сформулируем три фундаментальные причины.
1.3.1. Неразрешимость проблемы поиска (теоретико-вычислительный аспект)
Представим, что мы хотим создать идеальный антивирус, который отвечает на вопрос: «Является ли данный код вредоносным?»
Можно доказать — по аналогии с проблемой остановки — что не существует алгоритма, который для любой программы мог бы точно определить, вредоносная она или нет. Это означает, что всегда найдётся такая вредоносная программа или такой способ обфускации, которая «запутает» детектор.
1.3.2. Асимметрия знаний (информационный аспект)
Защитник должен защитить всё. Злоумышленнику достаточно найти одну дыру.
- Защитник знает о системе всё, но не знает, где и когда ударит злоумышленник.
- Злоумышленник знает о системе мало, но может неделями изучать её изнутри после первого взлома.
Эта асимметрия порождает ситуацию, когда количество возможных векторов атаки (пространство состояний) бесконечно велико, а количество известных сигнатур — конечно.
1.3.3. Компромисс «Точность vs. Полнота» (статистический аспект)
Любой детектор совершает ошибки. Матрица ошибок (Confusion Matrix) — главный инструмент для понимания качества модели.
| Реальная атака (Positive) | Реальная норма (Negative) | |
|---|---|---|
| Сказал «Атака» | True Positive (TP) | False Positive (FP) — ложное срабатывание |
| Сказал «Норма» | False Negative (FN) — пропуск атаки | True Negative (TN) |
На основе этой матрицы вводятся две важнейшие метрики, которые находятся в вечном конфликте.
- Recall
- полнота — доля найденных атак от всех реальных
- TP
- истинно-положительные срабатывания
- FN
- пропущенные атаки
- Precision
- точность — доля истинных атак среди всех срабатываний детектора
- FP
- ложные срабатывания
- F1
- гармоническое среднее Precision и Recall
Интерпретация. Мы не хотим пропустить атаку — Recall должен стремиться к 1. Мы не хотим, чтобы аналитик SOC утонул в мусоре (alert fatigue), — Precision тоже должен стремиться к 1. Проблема в том, что эти стремления противоречат друг другу.
Фундаментальный вывод
Увеличивая полноту (желая находить больше атак), мы неизбежно начинаем реагировать на малейшие отклонения и получаем лавину ложных срабатываний (FP), что снижает точность. Ужесточая же правила и повышая точность, мы рискуем пропустить атаку, которая чуть-чуть замаскировалась под норму (FN).
1.3.4. Экономика безопасности: TCO против ущерба
Даже если бы технически можно было достичь 99.99% точности, вопрос упрётся в деньги. Total Cost of Ownership (TCO) системы обнаружения включает:
- Стоимость оборудования или облачных ресурсов.
- Стоимость лицензий.
- Самое дорогое — зарплата аналитиков, которые разбирают алерты.
Практика: расчёт стоимости ложных срабатываний
Представьте, что в крупной компании происходит 10 млн событий в день. Детектор с точностью 99% генерирует 100 000 ложных срабатываний в день. При производительности одного аналитика в 200 алертов в день потребуется штат из 500 человек.
- Рассчитайте, во сколько обойдётся содержание такого штата в месяц, если средняя зарплата аналитика SOC — 150 000 руб. с налогами.
- Сравните с потенциальным ущербом от одной успешной атаки (например, 15 млн руб. за ransomware-инцидент).
- Какой вывод вы бы сделали для совета директоров: гнаться за 99.99% точности или искать оптимум?
Поэтому мы не гонимся за призрачным идеалом, а ищем оптимум. Мы согласны пропустить какое-то количество низкозначимых атак — или обнаружить их постфактум в ходе Threat Hunting — если цена их закрытия превышает стоимость ущерба от них. Подробнее об экономике — в главе [[vol1-ch04|4. Экономика кибербезопасности]].
1.4. Заключение: смена парадигмы как образ мысли
Мы прошли путь от поиска «известного зла» к выявлению «неизвестного отклонения». В первой половине этого курса мы будем учиться использовать сигнатурные методы (Семестр 1) — они никуда не делись и отлично ловят 80% массового мусора. Но настоящая магия, позволяющая ловить сложных противников, начинается во втором семестре, где на смену сигнатурам приходят статистика и машинное обучение.
Помните: 100% безопасности не существует. Существует лишь приемлемый уровень риска, которого мы достигаем, понимая математику, лежащую в основе детекторов, и экономику, лежащую в основе бизнеса.
Вопросы для самопроверки
- В чём принципиальная разница в поведении сетевого червя (SQL Slammer) и современного АРТ-злоумышленника с точки зрения сетевого трафика? Сравните их по трём параметрам: скорость, шумность, использование легитимных инструментов.
- Почему сигнатурный метод бессилен против атаки, использующей легитимные инструменты ОС (LotL)? Приведите конкретный пример техники ATT&CK, которая обходит сигнатуры.
- Начальник требует от вас внедрить систему, которая будет обнаруживать все атаки с точностью 100%. Используя знание о метриках Precision и Recall, объясните начальнику, почему это невозможно и к каким последствиям для бизнеса приведёт попытка достичь этой цели.
- Детектор имеет Precision = 0.15 и Recall = 0.95. Что это означает на практике? Какие действия вы предложите для улучшения ситуации?
- Проанализируйте ROC-кривую из демонстрации [[demo-roc-simulator]]. Какая точка на ней соответствует параноидальному режиму работы IDS, а какая — слепому?
- Компания обрабатывает 5 млн событий в день. Детектор с Precision = 0.99 генерирует 50 000 ложных срабатываний. Сколько аналитиков нужно нанять, если один обрабатывает 150 алертов в смену? Как изменится ответ, если Precision повысить до 0.999?