Налаштування обладнання та програмного забезпечення

Як подружитися з Procmon

(ProcMon) від Sysinternals.

Нещодавно розповідав одному юному падавану, як користуватися цим чудовим, а в деяких випадках незамінним інструментом. І поки розповідав спала на думку написати таку вступну інструкцію для тих, хто тільки починає свій тернистий шлях адміна.

Взагалі, на мою думку все, що стосується ProcMon, найкраще описано в книзі від розробників, яка так і називається “ Утиліти Sysinternals. Довідник адміністратора”.

Я ж не лізтиму в нетрі, і постараюся викласти з мінімумом теорії, і максимумом практики на конкретному прикладі.

Запуск ProcMon

Реєструє активність файлової системи, реєстру, мережі,процесів, потоків, і навіть завантаження образів у часі.

Ну як? Зрозуміло? ????

Якщо просто запустити ProcMon робоче вікно програми миттєво заповнився різними подіями, навіть якщо ви нічого не робите. Розібратися в цих подіях, і знайти цікаві навіть досвідченому майстру дуже складно. Та й не потрібно, але все по порядку.

Найчастіше ProcMon запускається з конкретною метою, наприклад, визначити, що робить та, чи інша програма, який процес пише файли у певний каталог чи гілка реєстру, куди подінеться місце на диску, тощо. Тому, якщо просто запустити ProcMon, то доведеться зупинити збір подій. Ctrl+E), очистити вже зібрані події ( Ctrl+X), налаштувати фільтри ( Ctrl+L), і знову запустити спостереження. Для того, щоб не робити стільки зайвого руху, передбачено параметр командного рядка /noconnect:

procmon /noconnect

Запуск із цим параметром запускає Procmon, але не починає спостереження, натомість відразу ж відкривається вікно фільтрів.

Взагалі для спрощення запуску, я роблю (і всім раджу робити так), як описується все в тій же книзі:

Мій співавтор Аарон зазвичай створює папку C:\Program Files\Sysinternals і розпаковує вміст пакету Sysinternals Suite. Там утиліти неможливо змінити без прав адміністратора. Потім він додає цей каталог до системної змінної оточення Path, що дозволяє легко запускати утиліти звідки завгодно, в тому числі через меню Start | Run (Пуск | Виконати).

Фільтри в ProcMon

Як було сказано вище, вікно фільтрів відкривається при запуску з параметром /noconnect. Якщо ви його ненароком закрили, або потрібно підправити вже налаштовані фільтри, відкрити вікно фільтрів можна поєднанням клавіш Ctrl+L, або через меню Filter | Filter….

Ось ми і дісталися практики????

Як моніторити реєстр я вже тому сьогодні будемо вчитися моніторити файлову систему. Для прикладу відстежуватимемо які зміни робить стандартний блокнот.

Отже, у нас відчинено вікно фільтрів.

Фільтри в ProcMon

Про всяк випадок натискаємо кнопку скидання фільтрів у стан за замовчуванням – Reset(за замовчуванням у ProcMon налаштовано до фіга фільтрів, не рекомендується їх видаляти) і додаємо фільтр

Process Name is notepad.exe include.

Натискаємо кнопку Add. Як зрозуміти з назви захоплюватися будуть лише події, пов'язані з процесом notepad.exe, тобто. ті події, що генерує блокнот.

Важливий момент:Ім'я процесу має бути вказане повністю – з розширенням, інакше ProcMon нічого не захопить. Як варіант можна використовувати фільтр

Process Name begins with notepad include

У такому разі будуть захоплені події, пов'язані з процесами, що починаються на notepad, це може бути як стандартний блокнот, так іNotepad++, або якийсь ще блокнот. Таким же чином додаємо фільтр на запис файлів:

Operation is WriteFile include

Натискаємо Addі OK(взагалі можна просто натиснути OK, в такому випадку ProcMon скаже, що такого фільтра ще немає, і запитає ми його додати. Справа в тому, що натискання кнопки закриває OKвікно фільтрів, якщо це не єдиний фільтр, краще натиснути кнопку Add, це дозволить додати фільтр, і залишити вікно фільтрів відкритим для наступних фільтрів).

Оскільки нас цікавить лише файлова активність, у головному вікні ProcMon відключаємо значки спостереження за реєстром, мережею та процесами – залишаємо лише спостереження за файловою системою (виділені на скріншоті нижче).

Ще один важливий момент.

За промовчанням ProcMon реєструє всю активність системи, навіть ті події, які не підпадають під фільтри, що в деяких випадках може призводити до гальмування роботи. Якщо ви впевнені в тому, що фільтри налаштовані правильно (в даному прикладі ми впевнені), і вам не потрібні події, приховані ними – їх можна відкинути за допомогою опції Filter | Drop Filtered Events(Видалення відфільтрованих подій) у меню Filter. Цей параметр діє лише для реєстрації поточних подій, раніше записані події з журналу не видаляються.

Після того як фільтри налаштовані запускаємо збір подій (кнопка із зображенням лупи, або Ctrl+E). Запускаємо блокнот, пишемо якийсь текст та зберігаємо файл. Дивимося, що вийшло:

Файлова активність у ProcMon

Як видно з скриношота ProcMon зафіксував подію запису файлу процесом notepad.exe на шляху C:\temp\test.txt.

Проведемо ще один експеримент.

Зупинимо захоплення подій ( Ctrl+E), закриємо блокнот та очистимо зібрані події ( Ctrl+X). Викличемо вікно фільтрів ( Ctrl+L), скинемо фільтри (кнопкою Reset) і додамо наступний фільтр:

Path begins with c:\temp\

Цим самим ми вказуємо, що нас цікавить будь-яка активність на шляху C:\temp. Оскільки значення вказано не точно (не is, а begins with), то будуть захоплюватися події не тільки з цього каталогу, але і з усіх його підкаталогів.

Перевірте, щоб увімкнено спостереження лише за файловою системою (при скиданні фільтрів все скидається в стан за замовчуванням)

Фільтри в ProcMon

Запустимо спостереження. Відкриємо провідник і перейдемо нашим шляхом. Заглянемо до ProcMon.

Так виглядає відкриття каталогу в ProcMon

Там буде купа незрозумілих нам подій, але вони нам і не потрібні, просто подивіться скільки подій відбувається, коли ви лише заходите в каталог.

Можете відкрити файл і подивитися яка плутанина буде в ProcMon. Ось чому я ніколи не раджу запускати ProcMon для того, щоб подивитися, що там відбувається в системі.

Щоб побачити самі події читання файлу, зупиніть збір подій, очистіть вікно результатів, додайте фільтр

Operation is ReadFile

і знову відкрийте файл.

Повинно вийти щось на кшталт цього (як видно зі скріншота я відкривав файл двома різними процесами):

Сподобалась стаття? Поділіться з друзями!
Чи була ця стаття корисною?
Так
Ні
Дякую за ваш відгук!
Щось пішло не так і Ваш голос не було враховано.
Спасибі. Ваше повідомлення надіслано
Знайшли у тексті помилку?
Виділіть її, натисніть Ctrl+Enterі ми все виправимо!