Руслан Рахметов, Security Vision
При организации системы управления ИБ в компании множество задач связаны с обеспечением безопасности конечных точек (рабочих станций и серверов) под управлением ОС Windows и Linux. Выбор средств защиты велик, однако определенные ограничения накладывают и выделяемые на ИБ бюджеты, и вопросы совместимости рассматриваемых СЗИ с конкретными ОС. При этом зачастую от защитных решений требуется реализация функций безопасности, которые присутствуют либо в самих ОС в виде встроенного функционала, либо в свободно распространяемом ПО. Примером такого функционала является ведение детальных журналов событий безопасности и передача их в SIEM-системы, с учетом того, что ИБ-аналитиков как правило интересует запуск и остановка процессов и сервисов, сетевые соединения, изменение конфигураций конечных устройств, а также специфические редкие события, указывающие на вредоносную активность. Анализ подобных событий может способствовать выявлению киберинцидентов, а в рамках расследования кибератаки журналы аудита могут стать источником ценных сведений. Одними из самых полезных инструментов аналитика SOC-центра являются решения для защиты конечных точек (EDR, Endpoint Detection and Response), которые объединяют в себе функционал ведения детальных журналов безопасности, мониторинг и блокирование опасных действий, централизованное управление. Однако СЗИ такого типа недешевы, поэтому в некоторых случаях целесообразно рассмотреть некоторые бесплатные утилиты, хотя бы частично реализующие требуемый функционал. Одной из таких программ является утилита Sysmon (сокращение от System Monitor) из официального пакета Microsoft Sysinternals Suite, которая устанавливается на Windows и Linux и позволяет вести глубокий аудит работы ОС в целях выявления кибератак. Данная утилита хорошо зарекомендовала себя как среди исследователей кибербезопасности, так и в среде аналитиков SOC-центров. В данной статье мы подробно расскажем про Sysmon, дадим рекомендации по её настройке и использованию.
В соответствии с описанием на официальной странице Sysmon, данная утилита предназначена для мониторинга и записи системных действий, она устанавливается в виде сервиса и драйвера, а также обладает функционалом предотвращения несанкционированных изменений её работы с помощью технологии защиты процессов Protected Process Light (PPL). Данная технология применяется в ОС старше Windows 8.1 и позволяет защитить критичные системные процессы, подписанные цифровой подписью, от воздействия ВПО или злонамеренных действий пользователей. Установка драйвера утилиты Sysmon позволяет получать более глубокий доступ к данным о работе ОС и начинать сбор событий сразу после включения устройства, что помогает обнаруживать скрытное ВПО, запускаемое до старта основных компонентов ОС. Упрощает централизованный сбор событий аудита в SIEM-систему то, что события Sysmon записываются в стандартный журнал Windows (Applications and Services Logs - Microsoft - Windows - Sysmon / Operational). Принцип сбора данных утилитой Sysmon заключается в выполнении обратных вызовов к ядру ОС Windows (kernel callbacks), использовании трассировки событий Windows (Event Tracing for Windows, сокращенно ETW), а также выполнении API-вызовов поставщиков телеметрии ОС Windows. В ОС Linux работа Sysmon основана на использовании библиотеки sysinternalsEBPF, которая использует технологию eBPF для сбора информации о работе процессов, системных вызовов и сокетов. События Sysmon в ОС Linux записываются в стандартный файл /var/log/syslog.
Актуальная версия утилиты Sysmon для Windows обладает следующим функционалом:
- Регистрирует события создания процесса с командной строкой запуска и данными родительского процесса;
- Фиксирует значение хэш-суммы исполняемого файла процесса с использованием алгоритмов SHA1, MD5, SHA256, IMPHASH;
- Регистрирует загрузку драйверов и DLL с указанием их цифровых подписей и значений хэш-сумм;
- Регистрирует прямой доступ (raw access) к дискам и томам;
- Регистрирует сетевые соединения с указанием имени процесса-инициатора, IP-адреса назначения, имени хоста и номера порта;
- Выявляет изменения в дате создания файлов;
- Позволяет заблокировать создание файлов форматов EXE, DLL, SYS в определенных каталогах, с определенными хэш-суммами, создаваемые определенными родительскими процессами;
- Позволяет создавать гибкие XML-конфигурации с указанием объектов контроля для учета всех особенностей среды функционирования.
Для установки Sysmon в среде Windows потребуется выполнить следующие действия:
1. Скачать дистрибутив с https://learn.microsoft.com/en-us/sysinternals/downloads/sysmon
2. Опционально: создать XML-файл с конфигурацией Sysmon.
3. Установить sysmon (пример для архитектуры x64):
C:\folder\sysmon64.exe -accepteula -i C:\folder\sysmonconfig-export.xml, где sysmonconfig-export.xml - файл конфигурации, sysmon64.exe - файл-установщик.
Поддерживается запуск установки из сетевой папки. Исполняемый файл сервиса Sysmon после установки находится в каталоге C:\Windows\sysmon64.exe.
Для установки Sysmon в среде Linux (например, на Ubuntu) потребуется выполнить следующие действия:
1. Зарегистрировать в системе ключ и репозиторий Microsoft:
wget -q https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
2. Получить актуальный список пакетов:
sudo apt-get update
3. Установить утилиту:
sudo apt-get install sysmonforlinux
sudo sysmon -accepteula -i /opt/sysmon/config.xml , где config.xml - файл конфигурации
Рассмотрим типы событий, которые фиксирует утилита Sysmon в среде Windows:
1. Event ID 1: Process creation (Создание процесса) - регистрируется событие создания процесса с командной строкой запуска, данными родительского процесса, значением ProcessGUID;
2. Event ID 2: A process changed a file creation time (Процесс изменил дату создания файла) - регистрируются изменения в дате создания файлов, поскольку данный прием часто используется атакующими для сокрытия следов вредоносных действий;
3. Event ID 3: Network connection (Сетевое соединение) - регистрируется сетевая активность процессов с указанием пути к процессу, протокола (TCP или UDP), IP-адреса назначения, имени хоста, номера порта;
4. Event ID 4: Sysmon service state changed (Изменение статуса сервиса Sysmon) - регистрируется запуск и остановка сервиса Sysmon;
5. Event ID 5: Process terminated (Процесс завершен) - регистрируется завершение процессов с указанием времени, GUID и ID процесса;
6. Event ID 6: Driver loaded (Драйвер загружен) - регистрируется загрузка драйверов в ОС с указанием их цифровых подписей и значений хэш-сумм;
7. Event ID 7: Image loaded (Образ загружен) - регистрируется загрузка модулей (DLL-библиотек) в память процессов с указанием имени процесса, цифровых подписей и значений хэш-сумм загружаемых модулей;
8. Event ID 8: CreateRemoteThread (Создание удаленного потока) - регистрируется создание потока одного процесса в адресном пространстве другого процесса, т.е. инъекция кода и миграция одного процесса в другой, что часто используется как метод сокрытия вредоносной активности;
9. Event ID 9: RawAccessRead (Прямой доступ на чтение) - регистрируется прямой доступ к дискам и томам (с указанием процесса, получившего доступ, и имени диска/тома), что часто используется атакующими для сокрытия несанкционированного доступа к данным;
10. Event ID 10: ProcessAccess (Доступ к процессу) - регистрируется доступ одного процесса к памяти другого процесса, что используется атакующими для получения чувствительной информации, обрабатываемой критичными системными процессами (например, процессом Lsass.exe, который обрабатывает учетные данные пользователей ОС);
11. Event ID 11: FileCreate (Создание файла) - регистрируется создание и перезапись файлов, что позволяет выявлять создание файлов ВПО в распространенных каталогах (временные папки, папки сетевых загрузок, каталоги автозапуска);
12. Event ID 12: RegistryEvent (Object create and delete) (Создание и удаление объекта реестра) - регистрируется создание и удаление ключей и значений реестра, что позволяет контролировать состояние определенных веток реестра, часто используемых ВПО;
13. Event ID 13: RegistryEvent (Value Set) (Установка значения в реестре) - регистрируется изменение значений в реестре;
14. Event ID 14: RegistryEvent (Key and Value Rename) (Переименование ключей и значений в реестре) - регистрируется внесение изменений в названия ключей и значений в реестре;
15. Event ID 15: FileCreateStreamHash (Создание файлового потока) - регистрируется создание альтернативного потока данных, например, при скачивании файлов из Интернет и установке MOTW-меток браузерами с указанием хэш-суммы файла;
16. Event ID 16: ServiceConfigurationChange (Изменение конфигурации сервиса Sysmon) - регистрируется изменение конфигурации Sysmon;
17. Event ID 17: PipeEvent (Pipe Created) (Создание именованного канала) - регистрируется создание именованного канала, что часто используется ВПО для обмена данными между процессами;
18. Event ID 18: PipeEvent (Pipe Connected) (Подключение к именованному каналу) - регистрируется соединение по именованному каналу между клиентом и сервером;
19. Event ID 19: WmiEvent (WmiEventFilter activity detected) (Выявлена активность создания фильтра событий WMI) - регистрируется создание фильтра событий WMI, что часто используется ВПО для запуска;
20. Event ID 20: WmiEvent (WmiEventConsumer activity detected) (Выявлена активность создания потребителя событий WMI) - регистрируется создание потребителя событий WMI, что часто используется ВПО как метод закрепления в скомпрометированной системе;
21. Event ID 21: WmiEvent (WmiEventConsumerToFilter activity detected) (Выявлена активность подключения потребителя событий WMI к фильтру событий) - регистрируется подключение потребителя событий к фильтру событий WMI;
22. Event ID 22: DNSEvent (DNS query) (Запрос DNS) - регистрируется DNS-запрос от какого-либо процесса вне зависимости от полученного ответа от DNS-сервера;
23. Event ID 23: FileDelete (File Delete archived) (Удаление файла с сохранением его копии) - регистрируется удаление файла с сохранением его копии с каталоге-архиве Sysmon (по умолчанию, используется папка C:\Sysmon);
24. Event ID 24: ClipboardChange (New content in the clipboard) (Изменение содержимого буфера обмена) - регистрируется изменение содержимого буфера обмена;
25. Event ID 25: ProcessTampering (Process image change) (Изменение образа процесса) - регистрируются попытки сокрытия процессов с использованием техник "Herpaderping" и "Hollowing";
26. Event ID 26: FileDeleteDetected (File Delete logged) (Удаление файла) - регистрируется удаление файла;
27. Event ID 27: FileBlockExecutable (Создание исполняемого файла заблокировано) - регистрируется обнаружение и блокирование создания исполняемых файлов;
28. Event ID 28: FileBlockShredding (Удаление файла заблокировано) - регистрируется обнаружение и блокирование удаления файлов с использованием специальных утилит (например, с помощью утилиты SDelete из состава пакета Sysinternals);
29. Event ID 29: FileExecutableDetected (Обнаружено создание исполняемого файла) - регистрируется обнаружение создания исполняемых файлов.
Для Linux-систем регистрируются события типов Event ID 1, 3, 4, 5, 9, 11, 16, 23, описания которых соответствуют приведенным выше.
Отметим, что XML-конфигурации для Sysmon могут быть глубоко кастомизированы для соответствия особенностям любой инфраструктуры. Для примера можно воспользоваться конфигурациями, приведенными ниже, которые сопровождены комментариями авторов, а также учитывают данные проекта MITRE ATT&CK для сопоставления регистрируемых событий с техниками атакующих:
https://github.com/olafhartong/sysmon-modular
https://github.com/ion-storm/sysmon-config
https://github.com/SwiftOnSecurity/sysmon-config
https://github.com/microsoft/MSTIC-Sysmon/tree/main/linux/configs