Skip to main content

Sysmon

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

Что такое Sysmon

System Monitor (Sysmon) — это инструмент мониторинга системы для Windows от 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 не анализирует генерируемые им события и не пытается скрыть свое присутствие от злоумышленников.

Принцип работы

Установка и настройка 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

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

image.png

  • Проветье статус службы Sysmon:
Get-Service -Name 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 будут доступны с любого DCконтроллера домена по пути \\<ANY_DC>\SYSVOL\<domain>\scripts\sysmon\. ЭтоТаким обеспечиваетобразом высокуюобеспечивается отказоустойчивость.высокая доступность исполняемого файла Sysmon.exe и файла конфигурации.

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

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

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

image.png

  • Создайте скрипт установки (deploy_sysmon.cmd):
@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=\\truecompany.local\SYSVOL\truecompany.local\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 былибыл примененыприменен на рабочих станцияхстанциях, необходимо перезагрузить устройства и выполнить вход пользователя.
  • Для проверкипроверки, успешного применениячто GPO перейдитебыла вуспешно журналприменена событийи Sysmon был установлен, на тестовомодном компьютереиз тестовых устройств:
    • Нажмите кнопку Win, введите eventvwr.msc и запустите Просмотр событий (Event ViewerViewer) ->от Applicationsимени andадминистратора.
    • Services
    • Перейдите Logsв ->Журналы приложений и служб Microsoft -> Windows -> Sysmon → Operational. Если в появившемся окне Operational отображаются события Sysmon, значит cлужба Sysmon ->установлена Operational).и Должнынастроена появиться события.
      корректно. 

image.png

Рекомендации для сервера WEC
Официальная справка

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

Настройка службы 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

Описать настройку подписки через wecutil

Нужно ли ставить Sysmon на сам WEC-сервер? Например, в описании к событиям есть такая ошибка. Пропадет ли она если поставить службу?

image.png

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

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

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

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

Убедитесь, что на 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

https://learn.microsoft.com/en-us/sysinternals/downloads/sysmon

For example, you will need to exclude actions of your antivirus, which will otherwise likely fill up your logs with useless information.

I do recommend using a minimal number of configurations within your environment for multiple obvious reasons, like; maintenance, output equality, manageability and so on. But do make tailored configurations for Domain Controllers, Servers and workstations.