MS ETW (DNS logging and diagnostics)
Расширенное ведение журнала DNS и диагностика доступны по умолчанию с версии Windows Server 2016. Эта функция также доступна в Windows Server 2012 R2 при установке исправления для ведения журнала запросов и аудита изменений, доступного по адресу https://support.microsoft.com/kb/2956577
Event Tracing for Windows (ETW) - это механизм логирования различных событий, создаваемых приложениями и драйверами. Фактически является более расширенной версией стандартного журнала событий. Исторически ETW использовался для задач дебага при разработке, сейчас его можно использовать в том числе и для поиска вредоносной активности.
Включение опции логирования ETW оказывает незначительное влияние на производительность (рекомендуется в нагруженных системах). Например, DNS-сервер, работающий на современном оборудовании и получающий 100 000 запросов в секунду (QPS), может испытывать снижение производительности на 5 % при включении аналитических журналов. Очевидного влияния на производительность при скорости запроса 50 000 QPS и ниже не наблюдается. Однако всегда желательно отслеживать производительность DNS-сервера всякий раз, когда включено дополнительное ведение журнала.
Теория
ETW состоит из трёх отдельных компонентов:
- Провайдеры (Providers), в некоторых случаях зовутся поставщиками
- Потребители (Consumers)
- Контроллеры (Controllers)
Провайдеры генерируют события, потребители их используют, а контроллеры управляют всей этой деятельностью. Провайдеры - это приложения, которые содержат функционал отправки событий в ETW. Примеры провайдеров: ядро Windows, драйвера устройств, user-mode приложения и другое ПО. Какие необходимо отправлять события решает разработчик в своём коде, упрощенно говоря, если выполняется важная с точки зрения разработчика функция (открывается доступ к SAM), то создается запись в ETW.
Для отправки провайдеры регистрируются в контроллере, контроллер в свою очередь может включить или отключить источник событий. Отключенный источник события не генерирует. Пример контроллеров - это logman или wevtutil. Для связи между провайдером и потребителем контроллер использует так называемые сессии трассировки. Сессия служит в том числе для фильтрации необходимых данных по различными параметрам, потому что потребителю может быть нужна только одна часть информации, а другому потребителю - другая.
Полезные ссылки:
- https://habr.com/ru/articles/502362/
- https://bmcder.com/blog/a-begginers-all-inclusive-guide-to-etw
- https://learn.microsoft.com/ru-ru/archive/blogs/teamdhcp/network-forensics-with-windows-dns-analytical-logging
Настройка на стороне Windows
Переходим в EventViewer (Выполнить -> eventvwr.msc). Далее переходим в Журналы приложений и служб\Microsoft\Windows\DNS-Server (на англ. Applications and Services Logs\Microsoft\Windows\DNS-Server)
Далее переходим в свойства Аналитического журнала:
Оставляем максимальный размер журнала по умолчнию в 1 Гб:
Нажимаем на чекбокс Включить ведение журнала, затем ОК
Должно полуучиться следующее:
Нажимаем Применить и ОК.
При появлении следующего окна, не пугаемся, при включенной ротации аналитического журнала события не отображаются в интерфейсе, чтобы их увидеть (нам это не понадобится) нужно остановить журнал.
Далее необходимо перейти в Управление компьютером и открыть его от Админимтратора. Переходим Служебные программы - Производительность - Сеансы отслеживания событий запуска.
Создаем группу сборщиков данных:
Задаем имя сборщика, например etwDNS-Analytics:
Добавляем поставщика Microsoft-Windows-DNSServer:
Нажимаем Далее - Далее - Готово.
Запускаем созданного поставщика, как сеанс отслеживания событий:
Далее в сеансах отслеживания событий, в свойствах - Сеансы отслеживания указываем Режим реального времени
Нажимаем применить и ОК.