Системный монитор (Sysmon) — это системная служба Windows и драйвер устройства, который после установки в системе остается резидентом во время перезагрузки системы для мониторинга и регистрации действий системы в журнал событий Windows. Он предоставляет подробные сведения о создании процессов, сетевых подключениях и изменениях времен созданий файлов. Собирая события, создаваемые с помощью коллекции событий Windows или агентов SIEM , а затем анализируя их, можно определить вредоносные или аномальные действия и понять, как злоумышленники и вредоносные программы работают в вашей сети. Служба выполняется как защищенный процесс, поэтому не позволяет выполнять широкий спектр взаимодействий в пользовательском режиме.
Обратите внимание, что Sysmon не предоставляет анализ событий, которые он создает, и не пытается скрыть себя от злоумышленников.
Общие сведения о возможностях sysmon
Sysmon включает следующие возможности:
Создание журнала с полной командной строкой для текущих и родительских процессов.
Записывает хэш файлов изображений процесса с помощью SHA1 (по умолчанию), MD5, SHA256 или IMPHASH.
Одновременно можно использовать несколько хэшей.
Включает GUID процесса в процессе создания событий, чтобы обеспечить корреляцию событий, даже если Windows повторно использует идентификаторы процессов.
Содержит GUID сеанса в каждом событии, чтобы разрешить корреляцию событий в одном сеансе входа.
Регистрирует загрузку драйверов или библиотек DLL с их подписями и хэшами.
Журналы открываются для необработанного доступа на чтение дисков и томов.
При необходимости регистрирует сетевые подключения, включая исходный процесс каждого подключения, IP-адреса, номера портов, имена узлов и имена портов.
Обнаруживает изменения во время создания файла, чтобы понять, когда файл был создан на самом деле. Изменение меток времени создания файла — это метод, часто используемый вредоносными программами для покрытия его треков.
Автоматически перезагрузите конфигурацию при изменении в реестре.
Фильтрация правил для включения или исключения определенных событий динамически.
Создает события из начального процесса загрузки для отслеживания действий, сделанных даже сложными вредоносными программами в режиме ядра.
Снимки экрана
Использование
Частое использование с простыми параметрами командной строки для установки и удаления Sysmon, а также для проверки и изменения конфигурации:
Установите службу и драйвер. При необходимости возьмите файл конфигурации.
-c
Обновите конфигурацию установленного драйвера Sysmon или дампа текущей конфигурации, если другой аргумент не указан. При необходимости принимает файл конфигурации.
-m
Установите манифест события (неявно выполнено при установке службы).
-s
Определение схемы конфигурации печати.
-u
Удаление службы и драйвера. Использование -u force приводит к удалению, даже если некоторые компоненты не установлены.
Служба регистрирует события немедленно, и драйвер устанавливает в качестве драйвера начального запуска для записи действий с начала загрузки, которые служба будет записывать в журнал событий при запуске.
В Vista и более поздних версиях события хранятся в Applications and Services Logs/Microsoft/Windows/Sysmon/Operational.
В старых системах события записываются в System журнал событий.
Если вам нужна дополнительная информация о файлах конфигурации, используйте -? config команду.
Укажите -accepteula , чтобы автоматически принять EULA при установке, в противном случае вам будет предложено принять его в интерактивном режиме.
Ни установка, ни удаление не требуют перезагрузки.
Примеры
Установите с параметрами по умолчанию (хэшированные образы с помощью SHA1 и нет сетевого мониторинга)
sysmon -accepteula -i
Установите Sysmon с файлом конфигурации (как описано ниже)
sysmon -accepteula -i c:\windows\config.xml
Удаление
sysmon -u
Дампа текущей конфигурации
sysmon -c
Перенастройка активного sysmon с помощью файла конфигурации (как описано ниже)
sysmon -c c:\windows\config.xml
Изменение конфигурации на параметры по умолчанию
sysmon -c --
Отображение схемы конфигурации
sysmon -s
События
В Vista и более поздних версиях события хранятся System в Applications and Services Logs/Microsoft/Windows/Sysmon/Operationalжурнале событий.
Метки времени событий находятся в формате UTC в стандартном времени.
Ниже приведены примеры каждого типа события, создаваемого sysmon.
Идентификатор события 1. Создание процесса
Событие создания процесса предоставляет расширенные сведения о созданном процессе. Полная командная строка предоставляет контекст для выполнения процесса. Поле ProcessGUID является уникальным значением для этого процесса в домене, чтобы упростить корреляцию событий. Хэш — это полный хэш файла с алгоритмами в HashType поле.
Идентификатор события 2. Процесс изменил время создания файла
Событие времени создания файла изменений регистрируется при явном изменении времени создания файла процессом. Это событие помогает отслеживать реальное время создания файла. Злоумышленники могут изменить время создания файла backdoor, чтобы он выглядел так, как он был установлен с операционной системой. Обратите внимание, что многие процессы законно изменяют время создания файла; Он не обязательно указывает на вредоносные действия.
Идентификатор события 3. Сетевое подключение
Журналы событий сетевого подключения записывают подключения TCP/UDP на компьютере. Он отключен по умолчанию. Каждое соединение связано с процессом через ProcessId поля и ProcessGuid поля. Событие также содержит IP-адреса исходного и целевого узлов, номера портов и состояние IPv6.
Идентификатор события 4. Изменено состояние службы Sysmon
Событие изменения состояния службы сообщает о состоянии службы Sysmon (запущена или остановлена).
Идентификатор события 5. Завершение процесса
Процесс завершает отчеты о событиях при завершении процесса. Он предоставляет UtcTimeи ProcessGuidProcessId процесс.
Идентификатор события 6. Драйвер загружен
События, загруженные драйвером, предоставляют сведения о загрузке драйвера в систему. Настроенные хэши предоставляются, а также сведения о сигнатуре. Подпись создается асинхронно по соображениям производительности и указывает, был ли файл удален после загрузки.
Идентификатор события 7. Загруженный образ
Журналы событий, загруженные изображением, когда модуль загружается в определенный процесс. Это событие отключено по умолчанию и должно быть настроено с параметром "–l". Он указывает процесс загрузки модуля, хэши и сведения о сигнатуре. Подпись создается асинхронно по соображениям производительности и указывает, был ли файл удален после загрузки. Это событие следует тщательно настроить, так как мониторинг всех событий загрузки изображений приведет к значительному количеству ведения журнала.
Идентификатор события 8. CreateRemoteThread
Событие CreateRemoteThread обнаруживает, когда процесс создает поток в другом процессе. Этот метод используется вредоносными программами для внедрения кода и скрытия в других процессах. Событие указывает исходный и целевой процесс. Он содержит сведения о коде, который будет выполняться в новом потоке: StartAddressStartModule и StartFunction. Обратите внимание, что StartModule и StartFunction поля выводятся, они могут быть пустыми, если начальный адрес находится за пределами загруженных модулей или известных экспортированных функций.
Идентификатор события 9: RawAccessRead
Событие RawAccessRead обнаруживает, когда процесс проводит операции чтения с диска с помощью \\.\ денотации. Этот метод часто используется вредоносными программами для кражи данных файлов, которые заблокированы для чтения, а также для предотвращения доступа к файлам средств аудита. Событие указывает исходный процесс и целевое устройство.
Идентификатор события 10: ProcessAccess
Отчеты о событиях, к которым обращается процесс, когда процесс открывает другой процесс, операция, за которой часто следуют запросы информации или чтение и запись адресного пространства целевого процесса. Это позволяет обнаруживать средства взлома, которые считывают содержимое памяти таких процессов, как локальный центр безопасности (Lsass.exe), чтобы украсть учетные данные для использования в атаках Pass-the-Hash. Включение может создавать значительные объемы ведения журнала, если есть служебные программы диагностики, которые неоднократно открытые процессы для запроса их состояния, поэтому обычно это необходимо сделать только с фильтрами, которые удаляют ожидаемые доступы.
Идентификатор события 11. FileCreate
Операции создания файлов регистрируются при создании или перезаписи файла.
Это событие полезно для мониторинга расположений автозапуска, таких как папка запуска, а также временные и скачиваемые каталоги, которые являются общими местами для удаления вредоносных программ во время первоначальной инфекции.
Идентификатор события 12. RegistryEvent (создание и удаление объекта)
Раздел реестра и значение создают и удаляют операции сопоставления с этим типом событий, что может быть полезно для мониторинга изменений в расположениях автозапуска реестра или конкретных изменений реестра вредоносных программ.
Sysmon использует сокращенные версии корневых ключей реестра со следующими сопоставлениями:
Имя ключа
Аббревиатура
HKEY_LOCAL_MACHINE
HKLM
HKEY_USERS
HKU
HKEY_LOCAL_MACHINE\System\ControlSet00x
HKLM\System\CurrentControlSet
HKEY_LOCAL_MACHINE\Classes
HKCR
Идентификатор события 13: RegistryEvent (значение)
Этот тип события реестра определяет изменения значений реестра. Событие записывает значение, записанное для значений реестра типа DWORD и QWORD.
Идентификатор события 14. RegistryEvent (переименование ключа и значения)
Раздел реестра и операции переименования значений сопоставляются с этим типом события, записывая новое имя ключа или значения, переименованного.
Идентификатор события 15: FileCreateStreamHash
Это событие регистрируется при создании именованного потока файлов и создает события, которые регистрируют хэш содержимого файла, которому назначается поток (неименованный поток), а также содержимое именованного потока. Существуют варианты вредоносных программ, которые сбрасывают исполняемые файлы или параметры конфигурации через скачивание браузера, и это событие предназначено для записи, основанной на браузере, включающего Zone.Identifier "знак веб-" потока.
Идентификатор события 16: ServiceConfigurationChange
Это событие регистрирует изменения в конфигурации Sysmon, например при обновлении правил фильтрации.
Идентификатор события 17: PipeEvent (создан канал)
Это событие создает при создании именованного канала. Вредоносные программы часто используют именованные каналы для взаимодействия между процессами.
Идентификатор события 18: PipeEvent (подключен канал)
Это событие регистрируется при подключении именованного канала между клиентом и сервером.
Идентификатор события 19: WmiEvent (обнаружено действие WmiEventFilter)
При регистрации фильтра событий WMI, который является методом, используемым вредоносными программами для выполнения, это событие регистрирует пространство имен WMI, имя фильтра и выражение фильтра.
Идентификатор события 20: WmiEvent (обнаружено действие WmiEventConsumer)
Это событие регистрирует регистрацию потребителей WMI, записывая имя потребителя, журнал и назначение.
Идентификатор события 21: WmiEvent (обнаружено действие WmiEventConsumerToFilter)
Когда потребитель привязывается к фильтру, это событие регистрирует имя потребителя и путь фильтра.
Идентификатор события 22: DNSEvent (DNS-запрос)
Это событие создается при выполнении DNS-запроса, будь то результат успешно или завершается сбоем, кэширован или нет. Данные телеметрии для этого события добавлены для Windows 8.1, поэтому она недоступна в Windows 7 и более ранних версиях.
Идентификатор события 23: FileDelete (архивированный файл)
Файл был удален. Кроме того, чтобы регистрировать событие, удаленный файл также сохраняется в ArchiveDirectory (который по умолчанию).C:\Sysmon В обычных условиях работы этот каталог может увеличиться до неразумного размера— см. идентификатор события 26: FileDeleteDetected для аналогичного поведения, но без сохранения удаленных файлов.
Идентификатор события 24: ClipboardChange (новое содержимое в буфере обмена)
Это событие создается при изменении содержимого буфера обмена системы.
Идентификатор события 25: ProcessTampering (изменение образа процесса)
Это событие создается при обнаружении методов скрытия процесса, таких как "пустое" или "herpaderp".
Идентификатор события 26: FileDeleteDetected (файл удален)
Файл был удален.
Идентификатор события 27: FileBlockExecutable
Это событие создается при обнаружении и блокировке создания исполняемых файлов (формат PE).
Идентификатор события 28: FileBlockShredding
Это событие создается при обнаружении и блокировке измельчения файлов из таких средств, как SDelete.
Идентификатор события 29: FileExecutableDetected
Это событие создается при обнаружении sysmon создания нового исполняемого файла (формат PE).
Идентификатор события 255: ошибка
Это событие создается при возникновении ошибки в системе Sysmon. Они могут произойти, если система находится под тяжелой нагрузкой и некоторые задачи не могут быть выполнены, или ошибка существует в службе Sysmon, или даже если определенные условия безопасности и целостности не выполнены. Вы можете сообщить о любых ошибках на форуме Sysinternals или через Twitter (@markrussinovich).
Файлы конфигурации
Файлы конфигурации можно указать после коммутаторов конфигурации -i (установка) или -c (установка). Они упрощают развертывание предварительно заданной конфигурации и фильтрацию захваченных событий.
Простой XML-файл конфигурации выглядит следующим образом:
<Sysmon schemaversion="4.82">
<!-- Capture all hashes -->
<HashAlgorithms>*</HashAlgorithms>
<EventFiltering>
<!-- Log all drivers except if the signature -->
<!-- contains Microsoft or Windows -->
<DriverLoad onmatch="exclude">
<Signature condition="contains">microsoft</Signature>
<Signature condition="contains">windows</Signature>
</DriverLoad>
<!-- Do not log process termination -->
<ProcessTerminate onmatch="include" />
<!-- Log network connection if the destination port equal 443 -->
<!-- or 80, and process isn't InternetExplorer -->
<NetworkConnect onmatch="include">
<DestinationPort>443</DestinationPort>
<DestinationPort>80</DestinationPort>
</NetworkConnect>
<NetworkConnect onmatch="exclude">
<Image condition="end with">iexplore.exe</Image>
</NetworkConnect>
</EventFiltering>
</Sysmon>
Файл конфигурации содержит атрибут schemaversion в теге Sysmon. Эта версия не зависит от двоичной версии Sysmon и позволяет анализировать старые файлы конфигурации. Текущую версию схемы можно получить с помощью командной строки "-? config". Записи конфигурации находятся непосредственно под тегом Sysmon и фильтрами находятся под тегом EventFiltering .
Записи конфигурации
Записи конфигурации похожи на параметры командной строки и включают следующие элементы.
Записи конфигурации включают следующие:
Формат ввода
значение
Описание
ArchiveDirectory
Строка
Имя каталогов в корне тома, в которые перемещаются файлы копирования при удалении. Каталог защищен системой ACL (можно использовать PsExec из Sysinternals для доступа к каталогу с помощью psexec -sid cmd). По умолчанию: Sysmon
CheckRevocation
Логический
Управляет проверками отзыва подписей. По умолчанию: True
CopyOnDeletePE
Логический
Сохраняет удаленные исполняемые файлы изображений. По умолчанию: False
CopyOnDeleteSIDs
Строки
Разделенный запятыми список идентификаторов учетных записей, для которых будут сохранены удаленные файлы.
CopyOnDeleteExtensions
Строки
Расширения для файлов, которые сохраняются при удалении.
CopyOnDeleteProcesses
Строки
Имена процессов, для которых будут сохранены удаленные файлы.
DnsLookup
Логический
Управляет обратным поиском DNS. По умолчанию: True
DriverName
Строка
Использует указанное имя для образов драйверов и служб.
HashAlgorithms
Строки
Хэш-алгоритмы, применяемые для хэширования. Поддерживаемые алгоритмы включают MD5, SHA1, SHA256, IMPHASH и * (все). По умолчанию: None
Параметры командной строки имеют запись конфигурации, описанную в выходных данных использования Sysmon. Параметры являются необязательными на основе тега. Если параметр командной строки также включает событие, его необходимо настроить, хотя его тег фильтра. Можно указать -s параметр для печати полной схемы конфигурации, включая теги событий, а также имена полей и типы для каждого события. Например, вот схема типа RawAccessRead события:
Фильтрация событий позволяет фильтровать созданные события. Во многих случаях события могут быть шумным и собирать все невозможно. Например, вы можете заинтересовать сетевые подключения только для определенного процесса, но не все из них. Вы можете отфильтровать выходные данные на узле, уменьшая собираемые данные.
Каждое событие имеет собственный тег фильтра в узле EventFiltering в файле конфигурации:
ID
Тег
Мероприятие
1
ProcessCreate;
Создание процесса
2
FileCreateTime
Время создания файла
3
NetworkConnect
Обнаружено сетевое подключение
4
Недоступно
Изменение состояния службы sysmon (невозможно отфильтровать)
5
ProcessTerminate
Процесс завершен
6
DriverLoad
Драйвер загружен
7
ImageLoad
Загруженный образ
8
CreateRemoteThread
Обнаружено CreateRemoteThread
9
RawAccessRead
Обнаружен RawAccessRead
10
ProcessAccess
Доступ к процессу
11
FileCreate
Файл создан
12
RegistryEvent
Добавлен или удален объект реестра
13
RegistryEvent
Набор значений реестра
14
RegistryEvent
Объект реестра переименован
15
FileCreateStreamHash
Файловый поток создан
16
Н/Д
Изменение конфигурации sysmon (не может быть отфильтровано)
17
PipeEvent
Именованный канал создан
18
PipeEvent
Именованный канал подключен
19
WmiEvent
Фильтр WMI
20
WmiEvent
Потребитель WMI
21
WmiEvent
Фильтр потребителя WMI
22
DNSQuery
Запрос DNS
23
FileDelete
Удаление файла архивировано
24
Буфер обменаChange
Новое содержимое в буфере обмена
25
ProcessTampering
Изменение образа процесса
26
FileDeleteDetected
Удаление файла в журнале
27
FileBlockExecutable
Исполняемый файловый блок
28
FileBlockShredding
Перемешивание блока файлов
29
FileExecutableDetected
Обнаруженный исполняемый файл
Эти теги также можно найти в средстве просмотра событий в имени задачи.
Фильтр применяется, onmatch если совпадают события. Его можно изменить с onmatch помощью атрибута для тега фильтра. Если значение равно "include", это означает, что включены только соответствующие события. Если для него задано значение "exclude", событие будет включено, за исключением случаев, когда соответствует правилу. Можно указать как набор фильтров включения, так и набор фильтров исключений для каждого идентификатора события, где приоритет имеют совпадения исключений.
Каждый фильтр может содержать ноль или больше правил. Каждый тег под тегом фильтра — это имя поля из события. Правила, указывающие условие для того же имени поля, что и условия OR, и те, которые указывают другое имя поля, ведут себя как условия AND. Правила полей также могут использовать условия для сопоставления значения. Условия приведены следующим образом (все являются нечувствительными к регистру):
Условие
Description
is
По умолчанию значения равны
— любой
Поле является одним из значений ; с разделителями
Нет
Значения отличаются
contains
Поле содержит это значение
содержит любой
Поле содержит любые значения ; с разделителями
содержит все
Поле содержит все ; значения с разделителями
Исключает
Поле не содержит этого значения.
исключает любой из
Поле не содержит одного или нескольких значений ; с разделителями
исключает все
Поле не содержит каких-либо значений ; с разделителями
началось с
Поле начинается с этого значения.
конец
Поле заканчивается этим значением.
не начинается с
Поле не начинается с этого значения.
не заканчивается
Поле не заканчивается этим значением.
Менее
Лексографическое сравнение меньше нуля
более
Лексографическое сравнение больше нуля
Изображение
Сопоставление пути изображения (полный путь или только имя изображения). Например: lsass.exe будет соответствовать c:\windows\system32\lsass.exe
Можно использовать другое условие, указав его в качестве атрибута. Это исключает сетевое действие из процессов с iexplore.exe в пути:
Вы можете использовать правила включения и исключения для одного тега, где правила исключения переопределяют правила включения. В правиле условия фильтрации имеют ИЛИ поведение.
В примере конфигурации, показанной ранее, сетевой фильтр использует как правило включения, так и исключения для записи действий в порт 80 и 443 всеми процессами, за исключением тех, которые имеют iexplore.exe свое имя.
Кроме того, можно переопределить способ объединения правил с помощью группы правил, которая позволяет использовать тип объединения правил для одного или нескольких событий, которые должны быть явно заданы как AND или OR.
Использование этого метода показано в следующем примере. В первой группе правил создается событие создания процесса при timeout.exe выполнении только с аргументом 100командной строки, но событие завершения процесса будет создано для завершения ping.exe и timeout.exe.