Skip to main content

Sysmon

Информация, приведенная на данной странице, является разработкой команды pre-sales и/или community KUMA и НЕ является официальной рекомендацией вендора.

Что такое Sysmon

System Monitor (Sysmon) — это инструмент мониторинга ОС от Microsoft, который входит в пакет Sysinternals Suite. Представляет собой системную службу и драйвер устройства Windows, которые после установки постоянно работают в системе, в том числе после перезагрузки.

Типы событий, создаваемые Sysmon: https://learn.microsoft.com/ru-ru/sysinternals/downloads/sysmon#event-id-1-process-creation

Sysmon предоставляет подробную информацию о создании процессов, сетевых подключениях и изменениях времени создания файлов. За счет сбора событий Sysmon средствами сбора событий Windows (Windows Event Collection) или SIEM-системами и последующего их анализа,  можно выявлять вредоносную или аномальную активность и понять, как злоумышленники и вредоносное ПО действуют в вашей сети. Служба работает как защищенный процесс, что блокирует широкий спектр взаимодействий из пользовательского режима.

Sysmon не анализирует генерируемые им события и не пытается скрыть свое присутствие от злоумышленников.

Описание схемы работы

Схема работы абсолютно идентична схеме работы, приведенной в разделе Описание схемы работы с Windows Event Collector статьи MS WEC.

Установка и настройка Sysmon

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

В статье используется готовый шаблон файла конфигурации из репозитория - https://github.com/SwiftOnSecurity/sysmon-config.

По умолчанию в шаблоне включены достаточно "шумные" правила для мониторинга DNS-запросов. Если их мониторинг не требуется просто удалите эту секцую или закомментируйте правила.

На отдельной рабочей станции/сервере

  • Выполните загрузку Sysmon.exe с официального сайта Sysinternals:
Invoke-WebRequest -Uri "https://download.sysinternals.com/files/Sysmon.zip" -OutFile "<Путь для загрузки файла>\<Имя файла>"

image.png

  • Распакуйте архив средствами проводника Windows или с помощью PowerShell-команды:
Expand-Archive -Path "<Путь, куда был загружен файл>\<Имя файла>" -DestinationPath "<Путь для загрузки файла>\<Имя файла>" -Force

image.png

  • Загрузите готовый конфигурационный файл Sysmon. Можно использовать конфигурационные файлы из других репозиториев, например, отсюда или создать собственный (подробнее см. здесь):
Invoke-WebRequest -Uri "https://github.com/SwiftOnSecurity/sysmon-config/blob/master/sysmonconfig-export.xml" -OutFile "<Путь для загрузки файла>\<Имя файла>" 

image.png

  • Запустите PowerShell с правами администратора и выполните установку Sysmon с ранее загруженной (или собственной) конфигурацией:
<Путь до файла>\Sysmon.exe -accepteula -i "<Путь до файла конфигурации>\<Имя файла конфигурации>"

image.png

  • Проветье статус службы Sysmon:
Get-Service -Name Sysmon

image.png

  • Нажмите кнопку Win, введите eventvwr.msc и запустите Просмотр событий (Event Viewer) от имени администратора.
  • Перейдите в Журналы приложений и служб Microsoft → Windows → Sysmon → Operational. Если в появившемся окне Operational отображаются события Sysmon, значит cлужба Sysmon установлена и настроена корректно. 
    • image.png

    На группе рабочих станций/серверов средствами GPO

    При наличии опыта администрирования Windows инфраструктуры вы можете использовать наиболее привычный для Вас способ. Ниже описан один из вариантов установки и настройки Sysmon.

    • Выполните загрузку Sysmon.exe с официального сайта Sysinternals:
    Invoke-WebRequest -Uri "https://download.sysinternals.com/files/Sysmon.zip" -OutFile "<Путь для загрузки файла>\<Имя файла>"

    image.png

    • Распакуйте архив средствами проводника Windows или с помощью PowerShell-команды:
    Expand-Archive -Path "<Путь, куда был загружен файл>\<Имя файла>" -DestinationPath "<Путь для загрузки файла>\<Имя файла>" -Force

    image.png

    • Загрузите готовый конфигурационный файл Sysmon. Можно использовать конфигурационные файлы из других репозиториев, например, отсюда или создать собственный (подробнее см. здесь):
    Invoke-WebRequest -Uri "https://github.com/SwiftOnSecurity/sysmon-config/blob/master/sysmonconfig-export.xml" -OutFile "<Путь для загрузки файла>\<Имя файла>" 

    image.png

    • На контроллере домена создайте папку sysmon по пути \\<Имя контроллера домена>\SYSVOL\<Название домена>\scripts\.

    Почему SYSVOL?
    Репликация и доступность:
    Папка SYSVOL автоматически реплицируется между всеми контроллерами домена (DC). Это означает, что файлы Sysmon будут доступны с любого контроллера домена по пути \\<ANY_DC>\SYSVOL\<domain>\scripts\sysmon\. Таким образом обеспечивается высокая доступность исполняемого файла Sysmon.exe и файла конфигурации.

    Гарантированный доступ с компьютеров домена:
    По умолчанию у всех компьютеров в домене есть право на чтение из SYSVOL. Вам не потребуется вручную настраивать права NTFS или общие ресурсы (Network Shares).

    Безопасность:
    Поскольку запись в SYSVOL по умолчанию разрешена только администраторам домена, риск случайного или злонамеренного изменения скриптов или файлов Sysmon посторонними лицами минимален.

    • Скопируйте файл Sysmon.exe и файл конфигурации sysmonconfig-export.xml на контроллер домена в \\<Имя контроллера домена>\SYSVOL\<Название домена>\scripts\sysmon.

    image.png

    • Создайте скрипт установки deploy_sysmon.cmd (укажите актуальное имя домена в значении переменной SYSMON_NETWORK_PATH):
    @echo off
    setlocal EnableDelayedExpansion
    
    rem --- Проверка установлен ли уже Sysmon ---
    sc query Sysmon >nul 2>&1
    if !ERRORLEVEL! EQU 0 (
        echo [INFO] Sysmon is already installed. Exiting.
        goto :clean_exit
    )
    
    rem --- Пути ---
    set "SYSMON_NETWORK_PATH=\\<Domain Name>\SYSVOL\<Domain Name>\scripts\sysmon"
    set "CONFIG_FILE=%SYSMON_NETWORK_PATH%\sysmonconfig-export.xml"
    set "SYSMON_EXE=%SYSMON_NETWORK_PATH%\Sysmon.exe"
    
    rem --- Локальный путь для копирования ---
    set "SYSMON_LOCAL_DIR=C:\Windows\Temp\SysmonDeploy"
    set "SYSMON_LOCAL_EXE=%SYSMON_LOCAL_DIR%\Sysmon.exe"
    set "CONFIG_LOCAL_FILE=%SYSMON_LOCAL_DIR%\sysmonconfig-export.xml"
    
    rem --- Создание локальной папки ---
    if not exist "%SYSMON_LOCAL_DIR%" mkdir "%SYSMON_LOCAL_DIR%"
    
    rem --- Копирование файлов с контроллера домена в локальную папку ---
    echo Copying files from SYSVOL...
    copy /Y "%SYSMON_EXE%" "%SYSMON_LOCAL_DIR%\" >nul
    copy /Y "%CONFIG_FILE%" "%SYSMON_LOCAL_DIR%\" >nul
    
    rem --- Установка Sysmon ---
    echo [INFO] Installing Sysmon...
    "%SYSMON_LOCAL_EXE%" -i "%CONFIG_LOCAL_FILE%" -accepteula
    
    rem --- Очистка временных файлов ---
    rd /S /Q "%SYSMON_LOCAL_DIR%" >nul 2>&1
    
    :clean_exit
    endlocal
    echo Sysmon deployment task completed.

    Вместо использования имени конкретного контроллера домена в скрипте используется полное имя домена. Это обеспечивает отказоустойчивость: если "вернувшийся" в запросе контроллер домена будет недоступен, устройства автоматически обратятся к другому контроллеру домена за файлами.

    GPO можно применять к группе компьютеров, к OU, к сайт или всему домену. Первоначально рекомендуется выполнить развертывание службы Sysmon на нескольких некритичных рабочих станциях и далее после успешного тестирования постепенно масштабировать GPO на другие группы компьютеров и/или OU.

    • В нашем примере будет использоваться группа компьютеров - создайте группу компьютеров средствами Active Directory – пользователи и компьютеры, задайте имя группе, например, KUMA Sysmon. Добавьте в данную группу несколько некритичных рабочих станций, на которых предполагается развертывание службы Sysmon.

    image.png

    • Для того, чтобы изменения вступили в силу (в данном случае членство в новой группе), выполните перезагрузку устройства. Альтернативным вариантом может быть перевыпуск Kerberos-тикетов для устройства с помощью klist.exe. 

    Проверить, что устройство стало членом группы можно с помощью команды: gpresult /r /scope:computer

    • На контроллере домена запустите оснастку Управление групповой политикой: нажмите Win + R gpmc.msc.
    • Создайте новый объект групповой политики, например, Deploy Sysmon: ПКМ Объекты групповой политики Создать введите в качестве имени объекта Deploy Sysmon.

    image.png

    • Далее выберите созданный объект групповой политики Deploy Sysmon и нажмите Изменить.
    • Перейдите в Конфигурация компьютера Политики Конфигурация Windows Сценарии (Запуск/Завершение)Автозагрузка (Computer Configuration → Policies → Windows Settings → Scripts (Startup/Shutdown) → Startup)
    • Нажмите Добавить и в появившемся окне Добавление сценария нажмите Обзор.

    image.png

    • В окне Проводника в папку \\<Наименование домена>\SysVol\<Наименование домена>\Policies\<GUID политики>\Machine\Scripts\Startup скопируйте ранее созданный скрипт deploy_sysmon.cmd, далее выберите скрипт и нажмите Открыть.

    image.png

    • Нажмите ОК.
    • В окне Свойства: Автозагрузка нажмите ОК. Таким образом, скрипт, устанавливающий службу Sysmon будет выполняться при запуске ОС.
    • Далее вернитесь в окно Управление групповой политикой выберите объект групповой политики Deploy Sysmon в окне справа Фильтры безопасности удалите группу Прошедшие проверку и добавьте группу KUMA Sysmon.

    image.png

    • Нажмите ПКМ на домен и выберите Связать существующий объект групповой политики выберите KUMA Sysmon и нажмите ОК. 

    image.png

    • Итоговый вид политики должен выглядеть следующим образом (см. скриншот). 

    image.png

    • Для того, чтобы скрипт установки Sysmon из новой GPO был применен на рабочих станциях, необходимо перезагрузить устройства и выполнить вход под УЗ пользователя.
    • Для проверки, что GPO была успешно применена и Sysmon был установлен, на одном из тестовых устройств:
      • Проверьте статус службы Sysmon:
    Get-Service -Name Sysmon

    image.png

        • Нажмите кнопку Win, введите eventvwr.msc и запустите Просмотр событий (Event Viewer) от имени администратора.
        • Перейдите в Журналы приложений и служб Microsoft → Windows → Sysmon → Operational. Если в появившемся окне Operational отображаются события Sysmon, значит cлужба Sysmon установлена и настроена корректно. 

    image.png


    Настройка WEC-сервера

    Рекомендуемые системные требования для WEC-сервера
    Best Practice от MS

    Настройка службы Windows Event Collector (WEC)

    Если служба Windows Event Collector (WEC) еще не настроена см. раздел Настройка службы Windows Event Collector (WEC)

    Настройка подписки для событий Sysmon на WEC-сервере

    Чтобы настроить подписку для событий Sysmon на WEC-сервере:

    • Нажмите кнопку Win, введите eventvwr.msc и запустите Просмотр событий от имени администратора.
    • Выберите Подписки правой кнопкой мыши Создать подписку  Укажите имя подписки, например, KUMA Sysmon и тип подписки Инициировано исходным компьютером.

    image.png

    • Выберите отдельные компьютеры или группу компьютеров, на которых установлен Sysmon и события которых требуется собирать. В нашем примере – это группа компьютеров KUMA Sysmon: нажмите Выбрать группы компьютеров Добавить доменный компьютер в поле Введите имена выбираемых объектов укажите ранее созданную группу компьютеров и нажмите ОК.

    Если предполагается сбор событий с контроллера домена, в таком случае, контроллер домена можно добавить как отдельный доменный компьютер.

    image.png

    image.png

    image.png

    • Задайте собираемые события: Выбрать события → перейдите на вкладку XML и установите флажок Изменить запрос вручную.
    • Вставьте в поле следующий фильтр событий:
    <QueryList>
      <Query Id="0" Path="Microsoft-Windows-Sysmon/Operational">
        <Select Path="Microsoft-Windows-Sysmon/Operational">*</Select>
      </Query>
    </QueryList>
    • Нажмите ОК.

    image.png

    • Далее в окне Свойства подписки нажмите Дополнительно и для параметра Оптимизация доставки событий укажите Уменьшенная задержка.
    • Нажмите ОК.

    image.png


    Настройка WinRM и подписки на источниках событий

    Для отдельной рабочей станции/сервера

    Если WinRM и подписка на источниках событий еще не настроены см. раздел Настройка WinRM и подписки на источниках событий (Для отдельной рабочей станции/сервера)

    Для группы рабочих станций/серверов

    Если WinRM и подписка на источниках событий еще не настроены см. раздел Настройка WinRM и подписки на источниках событий (Для группы рабочих станций/серверов).

    В качестве объекта групповой политики используйте Deploy Sysmon.

    Проверка поступления событий

    Убедитесь, что на WEC-сервер поступают события Sysmon с рабочих станций/серверов:

    • На WEC-сервере нажмите кнопку Win, введите eventvwr.msc и запустите Просмотр событий от имени администратора.
    • Перейдите в Журналы WindowsПеренаправленные события (Forwarded Events).
    • В панели справа выберите Фильтр текущего журнала.
    • В окне Фильтровать текущий журнал в поле Источники событий укажите Microsoft-Windows-Sysmon и нажмите ОК.

    image.png

    • Если в окне Перенаправленные события (Forwarded Events) отображаются события Sysmon, значит подписка работает корректно.

    image.png

    Для MS Server 2016 и 2019 в случае если события не пересылаются, выполнить шаги по этой инструкции. При добавлении разрешения для URL-адреса с помощью netsh http add urlacl добавьте кавычки "..." в параметре SDDL:
    netsh http delete urlacl url=http://+:5985/wsman/ netsh http add urlacl url=http://+:5985/wsman/ sddl="D:(A;;GX;;;S-1-5-80-569256582-2953403351-2909559716-1301513147-412116970)(A;;GX;;;S-1-5-80-4059739203-877974739-1245631912-527174227-2996563517)" netsh http delete urlacl url=https://+:5986/wsman/ netsh http add urlacl url=https://+:5986/wsman/ sddl="D:(A;;GX;;;S-1-5-80-569256582-2953403351-2909559716-1301513147-412116970)(A;;GX;;;S-1-5-80-4059739203-877974739-1245631912-527174227-2996563517)"

    В случае если от источников не поступают события Sysmon проверьте на WEC-сервере в журнале Microsoft/windows/event_forwardingPlugin/Operational события с кодом 5004 (ошибка отправки логов на WEC-сервер), если там есть такие события, то выполните рекомендации согласно этой статье: https://learn.microsoft.com/ru-ru/troubleshoot/windows-server/system-management-components/security-event-log-forwarding-fails-error-0x138c-5004 

    Настройка коллектора и агента KUMA

    Если Вы уже ранее развернули агент KUMA на WEC-сервере и настроили сервис коллектор для сбора событий Windows (см. статью MS WEC), в таком случае дополнительных действий не требуется и можно переходить к шагу Проверка поступления событий Windows в KUMA.

    В случае если агент KUMA и сервис коллектора для событий Windows ранее не настраивались - см. раздел Настройка коллектора и агента KUMA.

    Проверка поступления событий Windows в KUMA

    Для проверки, что сбор событий Sysmon успешно настроен перейдите в РесурсыАктивные сервисы → выберите коллектор для событий Windows/Sysmon и нажмите Перейти к событиям.

    image.png


    2. В открывшемся окне События добавьте в поисковый запрос условие DeviceProduct = 'Sysmon' и убедитесь, что события Sysmon доступны.

    image.png


    Полезные ссылки

    Статья MS о Sysmon - https://learn.microsoft.com/en-us/sysinternals/downloads/sysmon

    Шаблон файла конфигурации Sysmon - https://github.com/SwiftOnSecurity/sysmon-config