Sysmon (System Monitor)
Sysmon — это системная утилита из пакета Sysinternals от Microsoft. Она работает как драйвер и служба в Windows и позволяет логировать детализированную активность процессов, сетевых подключений, файловых операций и многое другое в Windows Event Log.
Используется администраторами и специалистами по безопасности для мониторинга подозрительной активности и расследования инцидентов.
Основные возможности
- Логирование запуска процессов (пути, аргументы, хеши файлов)
- Отслеживание загрузки драйверов
- Сетевые подключения (IP-адреса, порты, PID процессов)
- Создание и изменение файлов
- Модификации реестра
- Создание удалённых потоков и внедрение кода
- Настройка через XML-конфигурацию
Установка
- Скачать Sysmon с сайта Sysinternals: https://learn.microsoft.com/en-us/sysinternals/downloads/sysmon
- Распаковать архив и открыть PowerShell/Command Prompt от имени администратора
- Установить Sysmon с базовой конфигурацией:
sysmon.exe -accepteula -i
- Проверить работу:
Журналы событий: Applications and Services Logs → Microsoft → Windows → Sysmon/Operational
Базовые команды
- Установка с конфигом:
sysmon.exe -accepteula -i sysmonconfig.xml
- Удаление Sysmon:
sysmon.exe -u
- Обновление конфигурации:
sysmon.exe -c sysmonconfig.xml
- Показать текущую конфигурацию:
sysmon.exe -c
Конфигурации
- Можно написать самостоятельно (XML)
- Или использовать готовые community-конфиги:
- SwiftOnSecurity sysmon-config — популярный набор правил
- Рекомендуется адаптировать под свои нужды (исключать лишние события)
Типичные события Sysmon
- Event ID 1 — Запуск процесса
- Event ID 3 — Сетевое подключение
- Event ID 7 — Загрузка DLL
- Event ID 11 — Создание файла
- Event ID 13 — Изменение реестра
- Event ID 22 — DNS-запрос
- Event ID 25 — Named Pipe подключение
Советы
- Используйте готовую конфигурацию — иначе слишком много шума
- Настройте пересылку логов в SIEM/Elastic/Graylog
- Обновляйте Sysmon и конфиги — добавляются новые Event ID
- Не включайте все события подряд, выбирайте только необходимые
Расширенный пример sysmonconfig.xml
Ниже — пример расширенной конфигурации Sysmon, которая логирует ключевые артефакты:
- Запуск процессов (Event ID 1)
- Сетевые подключения (Event ID 3)
- Загрузку модулей/DLL (Event ID 7)
- Создание файлов (Event ID 11)
- Изменения реестра (Event ID 13/14)
- DNS‑запросы (Event ID 22)
- Создание удалённых потоков (Event ID 8)
- Использование именованных каналов (Event ID 17/18)
- WMI‑события (Event ID 19/20/21)
Конфигурация построена по принципу «всё включено, кроме шумов» — для каждого события применены типичные исключения (их нужно адаптировать под вашу инфраструктуру).
Установка
# Установка/обновление конфигурации sysmon.exe -accepteula -i sysmonconfig.xml # Либо обновить уже установленный Sysmon без переустановки службы sysmon.exe -c sysmonconfig.xml
Файл sysmonconfig.xml
<Sysmon schemaversion="4.50"> <!-- Общие параметры --> <HashAlgorithms>sha256</HashAlgorithms> <CheckRevocation>false</CheckRevocation> <DnsLookup>True</DnsLookup> <!-- добавляет обратное разрешение для некоторых событий --> <EventFiltering> <!-- 1. Process Create (Event ID 1) --> <ProcessCreate onmatch="exclude"> <!-- Исключить шумные/системные процессы и инструмент админа --> <Image condition="end with">\\Sysmon.exe</Image> <Image condition="end with">\\Sysmon64.exe</Image> <Image condition="is">C:\Windows\System32\svchost.exe</Image> <Image condition="is">C:\Windows\System32\conhost.exe</Image> <Image condition="is">C:\Windows\System32\WerFault.exe</Image> <ParentImage condition="is">C:\Windows\System32\smss.exe</ParentImage> <!-- Пример: исключить штатные апдейтеры (кастомизируйте) --> <Image condition="end with">\\GoogleUpdate.exe</Image> <Image condition="end with">\\OneDrive.exe</Image> </ProcessCreate> <!-- 3. Network Connect (Event ID 3) --> <NetworkConnect onmatch="exclude"> <!-- Локалхост и link-local --> <DestinationIp condition="is">127.0.0.1</DestinationIp> <DestinationIp condition="is">::1</DestinationIp> <DestinationIp condition="is">fe80::</DestinationIp> <!-- RFC1918 внутренние адреса (кастомизируйте под свой ландшафт) --> <DestinationIp condition="begin with">10.</DestinationIp> <DestinationIp condition="begin with">172.16.</DestinationIp> <DestinationIp condition="begin with">192.168.</DestinationIp> <!-- Исключить часто-шумные системные бинарники --> <Image condition="is">C:\Windows\System32\svchost.exe</Image> <Image condition="is">C:\Windows\System32\lsass.exe</Image> <Image condition="is">C:\Windows\System32\services.exe</Image> </NetworkConnect> <!-- 7. Image Load (Event ID 7) --> <ImageLoad onmatch="exclude"> <!-- Исключить базовые системные каталоги (снижение шума) --> <ImageLoaded condition="begin with">C:\Windows\System32\</ImageLoaded> <ImageLoaded condition="begin with">C:\Windows\SysWOW64\</ImageLoaded> <!-- Но оставить загрузки из пользовательских профилей и Temp по умолчанию (не исключаем их) --> <!-- Пример: исключить Microsoft подписанные общие библиотеки (опционально) --> <Signed condition="is">true</Signed> <Signature condition="contains">Microsoft Windows</Signature> </ImageLoad> <!-- 8. CreateRemoteThread (Event ID 8) --> <CreateRemoteThread onmatch="exclude"> <!-- Частая легитимная активность системных процессов --> <SourceImage condition="is">C:\Windows\System32\svchost.exe</SourceImage> <TargetImage condition="is">C:\Windows\System32\svchost.exe</TargetImage> <TargetImage condition="is">C:\Windows\System32\lsass.exe</TargetImage> </CreateRemoteThread> <!-- 11. File Create (Event ID 11) --> <FileCreate onmatch="include"> <!-- Включаем создание потенциально опасных исполняемых из пользовательских областей --> <TargetFilename condition="contains">\AppData\Local\Temp\</TargetFilename> <TargetFilename condition="contains">\AppData\Roaming\</TargetFilename> <TargetFilename condition="end with">.exe</TargetFilename> <TargetFilename condition="end with">.dll</TargetFilename> <TargetFilename condition="end with">.sys</TargetFilename> <TargetFilename condition="end with">.scr</TargetFilename> <TargetFilename condition="end with">.ps1</TargetFilename> <TargetFilename condition="end with">.vbs</TargetFilename> <TargetFilename condition="end with">.js</TargetFilename> <TargetFilename condition="end with">.hta</TargetFilename> <TargetFilename condition="end with">.jar</TargetFilename> </FileCreate> <!-- 12/13/14. Registry Events (Set, Create/Delete Key/Value) --> <RegistryEvent onmatch="include"> <!-- Автозапуски и политики --> <TargetObject condition="contains">\Software\Microsoft\Windows\CurrentVersion\Run</TargetObject> <TargetObject condition="contains">\Software\Microsoft\Windows\CurrentVersion\RunOnce</TargetObject> <TargetObject condition="contains">\Software\Microsoft\Windows\CurrentVersion\Policies\System</TargetObject> <!-- Services --> <TargetObject condition="contains">\System\CurrentControlSet\Services\</TargetObject> <!-- AppCompat/IFEO --> <TargetObject condition="contains">\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\</TargetObject> </RegistryEvent> <!-- 17/18. Pipe Created/Connected --> <PipeEvent onmatch="exclude"> <!-- Исключить известные системные пайпы (пример; пополняйте список по месту) --> <PipeName condition="is">\InitShutdown</PipeName> <PipeName condition="is">\LSM_API_service</PipeName> <PipeName condition="is">\ntsvcs</PipeName> <PipeName condition="is">\scerpc</PipeName> <PipeName condition="is">\Winsock2\CatalogChangeListener-</PipeName> </PipeEvent> <!-- 19/20/21. WMI Events --> <WmiEvent onmatch="include"> <!-- Ловим создание подписок и провайдеров --> <Operation condition="is">Created</Operation> <Operation condition="is">Deleted</Operation> <Operation condition="is">Modified</Operation> </WmiEvent> <!-- 22. DNS Query --> <DnsQuery onmatch="exclude"> <!-- Исключить localhost/внутренние/шум --> <QueryName condition="is">localhost</QueryName> <QueryName condition="end with">.local</QueryName> <QueryName condition="end with">.intranet</QueryName> <QueryName condition="end with">.lan</QueryName> <!-- Пример: исключить WPAD/MDM и т.п. (проверьте у себя) --> <QueryName condition="is">wpad</QueryName> <Image condition="is">C:\Windows\System32\svchost.exe</Image> </DnsQuery> <!-- 23. File Delete (archive) — полезно видеть удаление подозрительных исполняемых --> <FileDelete onmatch="include"> <TargetFilename condition="contains">\AppData\Local\Temp\</TargetFilename> <TargetFilename condition="end with">.exe</TargetFilename> <TargetFilename condition="end with">.dll</TargetFilename> <TargetFilename condition="end with">.ps1</TargetFilename> </FileDelete> </EventFiltering> </Sysmon>
Примечания
- Список исключений — ориентировочный. Обязательно адаптируйте его под ваш софт, чтобы не «съесть» важные события.
- Блоки с onmatch="exclude" означают: логировать всё, КРОМЕ перечисленного.
- Блоки с onmatch="include" — логировать ТОЛЬКО перечисленные условия (используется, чтобы не тонуть в шуме).
- Для сетевых событий проверьте, не хотите ли логировать и внутренние подсети — тогда удалите соответствующие исключения DestinationIp.
- После правок конфига обновляйте его командой: sysmon.exe -c sysmonconfig.xml.