Защита сети по сценарию (часть 2) — события Perfmon и триггеры задач

Опубликовано: 20 Марта, 2023

Введение

В первой части этой серии мы обсудили идею глубокоэшелонированной защиты и то, как с помощью сценариев ПК могут взять на себя часть бремени защиты от сетевых атак. Мы взялись за одну из классических атак в мире Ethernet, отравление ARP, и показали, как можно попытаться победить ее программно. В этом примере сценарий запускался один раз при загрузке и устанавливал статическую запись в таблице ARP для шлюза Windows по умолчанию.

Однако сети очень динамичны, и может потребоваться постоянный мониторинг. Сценарий, который запускается только один раз при загрузке, а затем завершается, не будет соответствовать всем требованиям. В этой статье рассказывается об использовании событий и триггеров задач, генерируемых монитором производительности Windows (Perfmon). Эти инструменты позволят вам проводить специальный мониторинг на уровне хоста и защиту сетевого стека по сценарию на основе любой метрики в Perfmon.

Наводнение

В качестве следующего примера рассмотрим классическую сетевую атаку типа «отказ в обслуживании» (DoS), основанную на переполнении жертвы поддельными пакетами TCP SYN. Это старая атака, но в ОС Windows до сих пор не установлена встроенная защита (вы можете увидеть некоторые значения реестра, как указано в статье ниже, но они не установлены «из коробки»). Если вы не в курсе этой атаки, вот пара хороших источников:

  1. Оригинальный совет CERT
  2. Рекомендации Microsoft по укреплению стека TCP

Вы также можете найти обсуждение этой атаки на форумах нашего собственного сайта WindowsNetwork.com. Следует отметить, что сетевые брандмауэры и маршрутизаторы могут быть настроены для смягчения такого рода атак, но в этой статье, опять же, основное внимание уделяется безопасности на уровне хоста.

Здесь я хочу рассмотреть, как можно обнаружить атаку в режиме реального времени и автоматически получить ценные улики. Для этого мы будем использовать Perfmon для разработки набора сборщиков данных, который может запускать выбранный нами сценарий, когда определенные параметры, которые он отслеживает, превышают пороговое значение. Это звучит как полный рот, но это не сложно — давайте пройдемся по процессу.

Чтобы сгенерировать условия атаки в своей лаборатории, я использовал бесплатный инструмент сетевой безопасности / взлома Ettercap для создания DoS-атаки (я не буду описывать его использование здесь, но если вы действительно заинтересованы, в Интернете есть много бесплатных видеоуроков). Один из его многочисленных подключаемых модулей для атак удобно помечен как DoS Attack. Не бойтесь экспериментировать с такими инструментами (но делайте это в лаборатории, а не в рабочей локальной сети!). Эти инструменты используют не только плохие парни — специалисты по безопасности учатся защищаться от атак, запуская их вживую в своей лаборатории.

Сигнатура атаки

Половина успеха при попытке противостоять потенциальной атаке — это выяснить, как ее обнаружить. Или, говоря шпионским жаргоном, что представляет собой «сигнатура» атаки? Лично мне нравится использовать Perform, добавлять множество счетчиков в его список наблюдения, запускать атаку и смотреть, что выделяется как отклонение от нормы, т.е. я пытаюсь позволить системе научить меня. Эта процедура является не только наукой, но и искусством, и определение того, что, по вашему мнению, стоит отслеживать, становится проще и быстрее с опытом.

В случае с TCP SYN-флудом простейшая возможная сигнатура атаки довольно очевидна: большое количество TCP-соединений. Вам следует запустить Perfmon, чтобы получить представление о том, как выглядит обычный трафик в вашей среде, но здравый смысл подсказывает, что, за исключением самых загруженных серверов, все, что превышает пару тысяч подключений, будет необычным.

Запустите Perfmon, нажмите большую кнопку «+», найдите TCPv4 и добавьте нужный счетчик:

Изображение 18690
Рисунок 1: Счетчик Perfmon для обнаружения возможной атаки SYN-флуда

Я обнаружил, что типичная SYN-атака в моей лаборатории привела к быстрому увеличению количества установленных соединений до более чем 30 000:

Изображение 18691
Рисунок 2: Возможная сигнатура SYN-флуда

Непрерывный мониторинг

Теперь, когда мы знаем, как выглядит атака, мы можем воспользоваться функцией Perfmon, известной как набор сборщиков данных, определяемый пользователем (UDDCS), который позволяет нам периодически отслеживать любой системный счетчик и генерировать предупреждение или запускать скрипт в зависимости от условий. нашего выбора. Чтобы создать нашу UDDCS, разверните наборы сборщиков данных в окне Perfmon, щелкните правой кнопкой мыши User Defined и создайте новый набор:

Изображение 18692
Рисунок 3: Создание пользовательского набора сборщиков данных

В этом случае мы будем использовать ручной (расширенный) метод, чтобы мы могли выбирать наши собственные счетчики. Нажмите «Далее» и выберите «Предупреждение счетчика производительности».

Изображение 18693
Рисунок 4. Мы хотим, чтобы наш набор сборщиков данных генерировал предупреждение

Нажмите «Далее», затем выберите нужный счетчик и пороговое значение:

Изображение 18694
Рисунок 5: Значение и пороговое значение для мониторинга

Нажмите «Далее» и выберите изменение свойств этой UDDCS:

Изображение 18695
Рисунок 6

Нажмите «Готово» и установите расписание. По сути, мы хотим, чтобы эта задача мониторинга выполнялась в фоновом режиме на постоянной основе. Мы просто запустим его, но не будем устанавливать никаких условий остановки (ниже мы устанавливаем фактический интервал выборки). В качестве альтернативы вы можете настроить набор сборщиков данных для запуска только в определенное время дня — это подходит для многих целей, но не для постоянного мониторинга.

Изображение 18696
Рисунок 7. Выберите любое время — мы просто хотим убедиться, что задача начинается

Нажмите «ОК». Когда вы вернетесь в главное окно Perfmon, щелкните правой кнопкой мыши DataCollector01:

Изображение 18697
Рисунок 8

Следующее, что мы настроим, — это интервал выборки. Для наших целей один раз в минуту, вероятно, подойдет:

Изображение 18698
Рисунок 9: Выбор интервала выборки

Затем нажмите «Действие оповещения» и настройте это оповещение, чтобы сделать запись в журнале событий:

Изображение 18699
Рисунок 10: Настройте оповещение для записи в журнал событий

Теперь запустите задачу (Perfmon > Наборы сборщиков данных > Определяется пользователем > Детектор атак SYN Flood > щелкните правой кнопкой мыши > Пуск). В этот момент вы можете попытаться вызвать предупреждение, например, запустив атаку, от которой вы пытаетесь защититься. Проверьте журналы производительности и оповещения в средстве просмотра событий > Журнал приложений и служб > Microsoft > Windows > Diagnosis-PLA и найдите событие с идентификатором 2031:

Изображение 18700
Рис. 11. Предупреждения для определенных пользователем условий хранятся в Diagnosis-PLA.

Идентификатор события 2031 — это общее предупреждение, которое может применяться к любому условию, определяемому администратором, но для простоты мы будем считать, что это единственное предупреждение, которое мы решили определить (если у вас возникнет необходимость различать разные типы событий)., дополнительные сценарии сделают свое дело).

Магия задач

Теперь самое волшебство — мы прикрепим к оповещению задачу. Всякий раз, когда предупреждение записывается в журнал событий Windows, оно также запускает задачу, например сценарий, действия которого ограничены только вашим воображением. Например:

  • Щелкните правой кнопкой мыши событие с идентификатором 2031 и выберите «Прикрепить задачу к этому событию».
  • В разделе «Создать базовую задачу» нажмите «Далее».
  • Нажмите «Далее» еще раз
  • На панели «Действие» нажмите «Запустить программу», затем «Далее».
  • Я собираюсь запустить программу c:adminscriptssynflood-forensics.bat.

Изображение 18701
Рис. 12. Сценарий для запуска при регистрации события с идентификатором 2031.

В этом случае мы собираемся сделать криминалистический снимок ключевых сетевых данных в момент атаки:

У Wireshark, бесплатного сетевого сканера, есть версия командной строки, которую я говорю запускать с первого интерфейса сетевого адаптера, запускать в течение 10 секунд и записывать результаты в файл PCAP. (Обычно SYN-флуд использует поддельный IP-адрес, но не всегда скрывает свой MAC-адрес, что может быть полезно при расследовании).

Закончите, и новая задача будет записана в папку C:WindowsSystem32TasksEvent Viewer Tasks. Теперь у вас есть полнофункциональный монитор флуда TCP SYN, который автоматически собирает данные об атаках, как только условие (более 25 000 сеансов TCP) вызывает событие с идентификатором 2031.

Очевидно, что вы не хотите выполнять эти шаги вручную на каждом ПК, который хотите защитить. Хотя у нас нет места, чтобы охватить его здесь, существуют различные способы сценария всего этого процесса для развертывания с помощью вашего стандартного механизма пакетов, групповых политик AD и т. д. Вы также можете очистить сценарий, чтобы он не перезаписывает старые криминалистические данные или, возможно, предпринимает какие-либо другие действия.

В этой серии мы впервые рассмотрели основные идеи защиты сети с помощью сценариев, начиная с примера установки статического шлюза по умолчанию при загрузке (часть первая). В этой статье мы обсудили, как использовать системный монитор для наблюдения за определенными условиями и настройки механизма срабатывания для реагирования на них. В заключительной части этой серии, которая будет следующей, мы углубимся в инструментарий управления Windows, самый глубокий уровень мониторинга, который вы можете получить в Windows, не заходя в ядро.