У цій статті ми розглянемо, як відстежувати подію запуску певної програми (процес) у Windows та виконати певну дію (запустіть сценарій, надсилати електронну пошту тощо.D.). Як приклад, ми відстежуємо запуск процесу Блокнот.Екзе
, Коли користувач відкриває цю програму, Windows автоматично запускає певний сценарій PowerShell.
Перш за все, у Windows потрібно налаштувати політику аудиту процесу. На окремому комп’ютері ви можете налаштувати аудиторську політику через редактор локального GPO ( Gpedit.MSC
), якщо вам потрібно налаштувати політику на доменних комп'ютерах/серверах, використовуйте редактор домену GPMC.MSC
.
- Перейдіть до розділу Конфігурація комп'ютера -> Налаштування Windows -> Налаштування безпеки -> Місцева політика -> Аудиторська політика;
- Відкрийте властивості політики Відстеження процесів аудиту, Увімкніть його для подій Успіх.
- Оновіть місцевих політиків:
Gpupdate /force
Тепер, коли запускає будь -який процес у Windows у перегляді подій журналу -> Журнали Windows -> Захист з’явиться подією EventID 4688 (Новий процес був віросповіданням). Подія вказує, хто запустив процес ( Назва рахунку
), назва процесу ( Нова назва процесу
) і назва батьківського процесу ( Назва процесу творця
).
Get -wineeent -filterhashtable @
Logname = 'безпека'
Id = 4688
| Виберіть -Object timecreted,@name = 'newProcessName'; exmanse = $ _.Властивості [5].Значення, @name = 'user'; exmanse = $ _.Властивості [1].Значення | Що -Object $ _.Newprocessname -подібний "*блокнот.exe*"
Як результат, ми отримали таблицю, що вказує на користувачів, які запустили певну програму.
Тепер вам потрібно створити завдання планувальника, яке слід запустити, коли подія з’явиться 4688.
- Завдання запуску Sheduler (
TaskShd.MSC
) і створити нове завдання -> Створити завдання; - Вкажіть назву завдання та вкажіть, що воно повинно бути запущено для всіх користувачів (під час виконання завдання використовуйте наступний обліковий запис користувача -> Вбудовані \ користувачі). Якщо ви створюєте завдання планувальника через GPO, використовуйте формат
%Logondomain%\%logonuser%
; - На вкладці Дії Попросіть дію, яку ви хочете виконати. У цьому прикладі я запускаю сценарій PowerShell (зателефонуйте до програми
PowerShell.Екзе
З атрибутами-ExectutionPolicy Bypass -file "C: \ ps \ processrun.PS1
" - Тепер вам потрібно пов'язати завдання планувальника до події Windows. Перейдіть на вкладку Тригер -> Новий -> На події -> Звичайний -> Новий фільтр подій;
- У вікні, яке відкриється, потрібно вказати такі параметри фільтра подій: Журнали події:
Безпека
Ідентифікатор події:4688
Ключові слова:Успіх аудиту
- Тепер перейдіть на вкладку XML І увімкніть варіант Редагувати запит мановольно. Відредагуйте запит, додавши рядок до фільтра:
та *[EventData [дані [@name = 'newProcessName'] та (data = 'c: \ windows \ system32 \ блокнот.exe ')]]
- Буде отримано запит XML:
*[System [постачальник [@name = 'Microsoft-Windows-Security-Auditing'] та завдання = 13312 та (діапазони (ключові слова, 9007199254740992)) та (eventId = 4688)]]]]]]]]]]]]]]]]]]]]]]] ]])
і
*[EventData [дані [@Name = 'newProcessName'] та (data = 'C: \ Windows \ System32 \.exe ')]]
- Збережіть завдання планувальника.
Спробуйте запустити процес блокнота зараз.Екзе. Тепер кожного разу, коли користувач запускає зошит, виконується ваш сценарій PowerShell.
У цьому прикладі я через PowerShell відображаю повідомлення про вікна з вікон. Ви можете використовувати будь -який інший сценарій PowerShell - наприклад, надсилати лист, що завгодно.
Якщо вам потрібно відстежувати завершення програми, використовуйте ідентифікатор події 4689 - Процес вийшов. Після завершення програми іноді потрібно запустити резервний сценарій тощо.D.Раніше ми розглядали сценарій PowerShell для автоматичного перезапуску процесу у разі зупинки. Рішення з відстеженням запуску/зупинки процесів є більш елегантним і не вимагає розширеного сценарію PowerShell для моніторингу робочих процесів.