מדריך הסופר ל-Procmon

Procmon. הכלי השם המוכר של Sysinternals של Windows למעקב אחר פעילות בכל הקשור לווינדוס. מוכר כתוכנה מסוגתו שיכולה לעקוב אחרי מתקן תוכנה רוג', עושה שינויים לרשומות הרישום או אולי בודק את עקבות הוירוס.

אם תצטרכו לבדוק את רישום הווינדוס, מערכת הקבצים, התהליכים או פעילות הרשת והחלטתם להשתמש ב-procmon, מאמר זה מיועד לכם.

במדריך האולטימטיבי הזה, תלמדו הכול על השימוש בכלי procmon מההתקנה, דרך השימוש הבסיסי ועד למקרים שונים שיעזרו לכם לעקוב אחרי כל סוג של פעילות.

דרישות מוקדמות

המדריך האולטימטיבי הזה יחול על רוב מערכות הווינדוס אך, למען השלמות (וכדי למנוע מכם לנסות להפעיל את procmon על מחשב עם ווינדוס 3.1), תצטרכו לזהות את הפריטים הבאים:

  • A Windows Vista or Windows Server 2008 or higher machine (x86 or x64)

זהו! תורידו ותתקינו את procmon בקטעים הבאים. המדריך ישתמש בגרסה 3.6 של procmon על מחשב בעל מערכת הפעלה Windows 10 Build 1909 x64.

הורדה והפעלת Procmon

כדי להתחיל, תצטרכו להפעיל את procmon על מחשב הווינדוס שלכם. תוכלו לעשות זאת בשני דרכים שונות; דרך ההורדה המסורתית או מה ש-Sysinternals של Windows קוראת Sysinternals Live .

בדרך הישנה

Procmon לא צריך להתקין; זהו קובץ יישומון בודד. תוכל להוריד אותו על ידי הורדת קובץ ה-ZIP. לאחר שתוריד אותו, תחלץ את קובץ ה-ZIP בעזרת הכלי האהוב עליך. להלן קטע קוד PowerShell אם שמרת עליו בתיקיית הבית שלך. קטע קוד זה ייצור תיקייה ב-~\ProcessMonitor עם כל הקבצים הדרושים.

Expand-Archive -Path '~\ProcessMonitor.zip' -Destination ProcessMonitor

בתוך התיקייה ~\ProcessMonitor, תראה חמישה קבצים:

  • Eula.txt – ההסכם הרשיוני שעליך לקבל לפני הפעלת procmon.
  • procmon.chm – קובץ העזרה המכיל את כל התיעוד שניתן לך.
  • Procmon.exe – הקובץ הנפרד הראשי שיפעיל את ההתקן הנכון של procmon (x86 או x64).
  • Procmon64.exe – הבינארי x64 של procmon.
  • Procmon64a.exe – הבינארי x64 אלפא של procmon.

כעת הפעל את procmon על ידי הפעלת קובץ ~\ProcessMonitor\procmon.exe.

Procmon רץ רק עם הרשאות מלאות, כך שתתבקש לקבל את זה אם יש לך UAC מופעל כאשר אתה מפעיל אותו. יש דרך לעבור על זה שתתפסט במהלך זה.

Sysinternals Live

אם לא תרצה (או לא תוכל) להוריד קובץ EXE, תוכל גם להשתמש בתיקיית הגלישה החיה של Sysinternals. כדי לעשות זאת, פתח את מסיימת הקבצים והדבק \\live.sysinternals.com\tools. אז תראה תיקייה כמו כל תיקיית שיתוף רשת רגילה המכילה את כל קבצי Sysinternals כולל procmon.

Sysinternals Live

גלול מטה עד שתמצא procmon, לחץ פעמיים ווואלה, אתה מפעיל את procmon!

התאמה אישית של הפעלת Procmon

בדרך כלל, procmon משיק אותך להסכים להסכם רישיון של משתמש סופי (EULA) וגם לפתוח חלון. באמצעות שורת הפקודה, תוכל להתאים אישית את ההתנהגות ברירת המחדל הזו.

לדוגמה, אם תרצה להפעיל את procmon במצב ממוזער על ידי השימוש במתג /Minimized.

.\procmon.exe /Minimized

אולי אתה מפעיל את procmon על מחשב חדש ותוכל לעדיף שלא לראות את תיבת ההסכמה להפעלה. באפשרותך לנטרל את זה בהפעלה באמצעות המתג /AcceptEula.

.\procmon.exe /AcceptEula

למרות שזה פחות סביר בימינו, בכל פעם שתפעיל את procmon, הוא יזהה האם אתה מריץ מערכת הפעלה 64-ביטית או 32-ביטית. אם אתה על מחשב 64-ביטי, הוא יפעיל תהליך 64-ביטי ולהיפך. אם אתה על מחשב 64-ביטי ותרצה להריץ את procmon כתהליך 32-ביטי או לקרוא קובץ לוג (עוד על זה מאוחר יותר) שנוצר ממחשב 32-ביטי, השתמש במתג /Run32.

.\procmon.exe /Run32

Procmon יש לו מתגי שורת פקודה אחרים שמתאימים את ההתנהגות אך תלמד על זה בסעיפים הבאים.

מבוא ל-Procmon

כאשר אתה מפעיל את procmon לראשונה, ייתכן שתתפלא מהאפשרויות. אל דאגה, תלמד על כל מה שצריך במדריך הזה! תוכל לראות למטה דוגמה של תפיסת procmon בתהליך.

Default Procmon process view

ברגע שאתה מפעיל את procmon, הוא מתחיל לתפוס מגוון של אירועי Windows שונים.

אם אינך רוצה ש-procmon יתחיל לתפוס אירועים באופן אוטומטי, תוכל להתחיל אותו מהשורת פקודה על ידי הרצת procmon.exe /NoConnect.

כפי שניתן לראות בתמונת המסך למעלה בעמודת פעולה, ישנם סמלים שונים המייצגים כל מחלקה של אירועי Windows. Procmon מתפס אירועים מחמישה מחלקות שונות:

  • Registry
  • Filesystem
  • Network
  • Processes
  • Profiling events

כל אירוע בכל מחלקה מיוצג בפנל רשימה יחיד של שבע עמודות:

  • זמן היום – הזמן בו התרחש האירוע.
  • שם התהליך – שם התהליך שגרם לאירוע.
  • PID – מזהה התהליך.
  • פעולה – סוג האירוע כמו אם התהליך פתח קובץ, שינה ערך של מפתח ברישום, וכו'
  • נתיב – הנתיב אל האובייקט שהאירוע פעל עליו כמו נתיב קובץ, נתיב רישום, וכו'.
  • תוצאה – בעמודה זו יהיו מספר ערכים שיציינו את תוצאת האירוע. ערך זה יכול להיות כל כך פשוט כמו הצלחה או ספציפי לאירוע כמו REPARSE, BUFFER OVERFLOW, NAME NOT FOUND וכו '.
  • פרט – בעמודה זו נמצאים כל הפרטים הקטנים עם שהיית רוצה לראות אירוע.

אם תרצה שלא לראות עמוד מסוים או תרצה לראות אילו עמודות אחרות יש לך זמינות, לחץ עם העכבר על כותרת העמודה ובחר בחר עמודות. תקבל תיבת דו שיח שבה תוכל להתאים אישית את העמודות שניתן להציג.

Customizing procmon columns

בחלון האירועים, לחץ פעמיים על אירוע מסוים. תוכל למצוא עוד פרטים רבים על התהליך והאירוע עצמו בעזרת צפייה בכרטיסיות אירוע, תהליך, ו- מחסנית.

Procmon event properties window

הפעלת וניטרול תפיסות

יש לך שליטה מוחלטת על תהליך התפיסה. באפשרותך להשבית את כל תהליך התפיסה או להשבית תפיסה לפי קטגוריה של אירוע.

בתפריט העליון, תראה סמל זכוכית מגדלת (למטה). אם על הזכוכית המגדלת יש X אדום מעליה, זה אומר שהתפיסה מנוטרלת. אחרת, התפיסה מופעלת.

Procmon actively capturing events

אל תשאיר את Procmon מקלוט אירועים לזמן רב יותר מהנדרש. זה משתמש בזיכרון וירטואלי כדי לאחסן את כל האירועים האלה ואם אתה לא זהיר, ייתכן שתגרום להתהפכות בווינדוס! אפשר לשנות את ההתנהגות הזו כפי שתראה מעט מאוחר יותר.

אם ברצונך להיות יותר בררני, תוכל גם לשלוט על תפיסת כל קבוצת אירועים. בסרגל התפריט, תראה חמישה סמלים זהים המוצגים בעמודת פעולה. על ידי לחיצה על הכפתורים אלו, תוכל לאפשר או להשבית כל קבוצת אירועים שלמה.

Types of Windows events

העבר את העכבר מעל כל סמל כדי לראות איזה פעילות מסוג כל סמל מייצג.

תראה מיד לאחר שתלחץ על סמל, procmon יפעיל מסנן אירועים. בהתאם לכמות האירועים שנתפסו עד כה, עשוי להופיע חלון קופץ כמו התמונה למטה.

Types of Windows events

לפי ברירת המחדל, הסמל הרחוק ביותר לימין (הגרף השחור והירוק) לא מופעל. אם ברצונך להפעיל קבוצת אירועים זו כאשר procmon מתחיל, תוכל להפעיל את procmon משורת הפקודה באמצעות .\procmon.exe /Profiling.

תוכל לראות את מספר האירועים בחלון על ידי הסתכלות למטה. כפי שתוכל לראות מתחת, procmon עיבד 84,334 אירועים אך עקב המסנן שהופעל, רק 15,912 מהם מוצגים או 18% מהם. תוכל גם לראות כי האירועים אלה מאוחסנים בזיכרון וירטואלי (יותר על כך מאוחר יותר).

Number of Events in the Window

מסנני אירועים

כדי להבין את procmon, חשוב בוודאות להבין את המושג של מסנני אירועים. מסנני אירועים הם אופן הבחנה בין הרעש לאות. מסנני האירועים מסתירים את כל האירועים שאינך מעוניין בהם. למעלה, פעלת במסנני אירועים לפי קבוצות אירועים שלמות אך תוכל להיות הרבה יותר דקדוקי.

ישנם מספר דרכים להתקשר עם מסנני אירועים. בואו נתחיל בדברים פשוטים. לחצו על פריט התפריט מסנן בחלק העליון. תראו מספר אפשרויות שונות לעבוד עם מסננים.

Filter menu options

צפייה במסננים

באופן ברירת מחדל, Procmon יוצר מסנן עבורך. בתפריט מסנן, לחצו על מסנן…. תראו חלון מסנן של מוניטור תהליכים עם שתי אזורים; אחד לסינון של כללי המסנן שלך ואחד לצפייה בכל הכללים שהגדרת. תראו דוגמה לכך למטה.

Filter rules

באופן ברירת המחדל, Procmon יציג את המסננים הנ"ל בכל פעם שתפעילו אותו. אם תרצו להסתיר את החלון הזה, תוכלו לעשות זאת על ידי הפעלת Procmon עם המתג /Quiet.

תראו שללא יצירת מסננים משלכם, Procmon משתמש גם הוא בערכי מסננים מובנים. אם תגללו למטה בחלון מסנן של מוניטור תהליכים, תראו שונות רבה של כללים מוגדרים. כאן תוכלו לצפות בכל קטגוריה, אופרטור, ערך ופעולה לביצוע על כל כלל.

המסננים האלו מיושמים מכיוון שבדרך כלל לא תצטרכו לראות את האירועים שהמסננים האלו מוחקים. אך, אם תרצו לראות את כל האירועים, תוכלו גם להסיר את כל המסננים ברירת המחדל או ללחוץ על מסנן —> אפשר פלט מתקדם כפי שמוצג למטה.

Enable Advanced Output

לדוגמה, תראו כמה כללים בראש העמוד שמציגים את שם התהליך לערך העמוד , הוא לערך היחס, תהליכים הקשורים ל-procmon לערך העמוד , ופעולה של הוסר. בעברית פשוטה, הכללים האלה אומרים ל-procmon לא להציג (להוסיף) תהליך בשם procmon.exe, לדוגמה.

ניהול כללי סינון אירועים

בהתאם לשימוש שלך, כמובן שתצטרך להוסיף את הכללים שלך. ישנם כמה דרכים שונות להוסיף כללים.

שימוש בתיבת סינון של Process Monitor

בחלק האחרון, ראיתם איך נראית תיבת הסינון של Process Monitor והצגת כל הכללים. בתיבה זו, אתם יכולים גם ליצור, לשנות ולהסיר כללים.

נניח תרצו לראות רק את הפעמים בהן התהליך explorer.exe חיפש מפתח ברישום.

הוספת סנני אירועים

בתיבת הסינון של Process Monitor:

  1. לחצו על רשימת הנפילה השמאלית ביותר. ברשימה זו מוצגות כל הקטגוריות השונות של האירועים שאפשר לסנן לפין. ניתן לראות למטה שיש הרבה מאוד!

    כל פריט שנראה ברשימה זו מתאים לעמוד המוצג בחלק הראשי כפי שמוצג למטה. לצורך המאמר הזה, בחרו ב-שם התהליך.

Process Monitor Filter

2. בחר קטגוריה ואז בחר אופרטור. כברירת מחדל, תיבת הנפתחות תהיה הוא אך יש לך הרבה אפשרויות אחרות אם תלחץ על התיבה הנפתחת. אלה האופרטורים מאפשרים לך לסנן את האפשרות שבחרת בכמה דרכים שונות. מאחר שאתה מחפש תהליך שהוא בדיוק explorer.exe, בחר הוא.

Operator List

3. לבסוף, בחר את שם התהליך כפי שמוצג למטה. תישים לב שמאחר שבחרת שם התהליך כקטגוריה, Procmon מביא אוטומטית את כל התהליכים שרצים כרגע לבחירה.

Process Name in Process Monitor Filter

4. ודא שבחרת כולל מאחר שאתה רק רוצה לראות את האירועים שמתאימים לקריטריון זה. ולאחר מכן לחץ על כפתור ההוספה הוסף כדי להוסיף את הכלל לסינון הנוכחי שלך. כפי שניתן לראות למטה, הכלל של הכלול מוצג כסימן ביטוח ירוק.

5. לבסוף, מאחר שאתה רוצה את כל האירועים שבהם explorer.exe מפעיל שאילתה ברשומת הרגיסטר, וודא שגם הפעולה RegQueryKey מתווספת. כאשר אתה מסיים, עליך לראות את שני הכללים המתווספים.

RegQueryKey

6. לחץ על אישור ולאחר מכן תראה את החלון הראשי מסיר את כל האירועים שאינם תואמים לכללי הסינון שהגדרת כעת.

Events that do not match the filter rules

מחיקת כללי סינון לאירועים

באפשרותך גם להסיר ולשנות כללי סינון בקלות כאמצעות הקישור.

  1. לחץ על סמל הסינון בראש החלון הראשי כדי לפתוח את תיבת סינון עבור ניטור התהליכים.
Process Monitor Filter Box

2. הדגש את שני כללי הסינון שיצרת למעלה, לחץ על הכפתור הסר כפי שמוצג למטה ולחץ אישור. פעולה זו תסיר את שני כללי הסינון המותאמים אישית שנוספו לפני כן.

remove both of the custom rules added

בנוסף, תוכל גם ללחוץ על הכפתור איפוס כדי להסיר אוטומטית את כל כללי הסינון המותאמים אישית.

כל פעם שתחילה סינון, תפסיק את procmon ותתחיל אותו שוב, הסינון הזה יחול שוב. אם ברצונך לוודא שאין שום סינון שנחול כאשר אתה מפעיל את procmon, תוכל להפעיל את procmon עם המפתח /NoFilter.

הוספת כללי סינון באמצעות לחיצה ימנית

תוכל גם להוסיף כללי סינון באמצעות תפריט לחיצה ימנית אם תלחץ על תהליך. כפי שתוכל לראות למטה, תוכל ליצור כל סוג של כלל ישירות מהתפריט הזה; אין צורך לעבור לתיבת Process Monitor Filter בכלל!

add filter rules via a right-click menu

כדי להסיר כללי סינון שנוצרו דרך תפריט הלחיצה הימנית, עדיין תצטרך לעבור לתיבת Process Monitor Filter כדי להסיר אותם.

שמירה וניהול של סינונים מותאמים אישית

אם אתה משתמש מתקדם ב-procmon, ייתכן ובזמן מסוים תהיה לך סטים של כללי סינון למגוון מקרים. באמצעות יכולות השמירה והארגון של procmon, תוכל לנהל ולשמור על כמה מהסטים האלה ככל שתרצה.

נניח שיש לך סט כללי סינון מותאמים אישית רבים ותרצה לשמור אותם כדי להשתמש בהם שוב בעתיד. תוכל לשמור את הסינון הזה על ידי מעבר ל- Filter, בחירת Save Filter וסימון שם כפי שמוצג למעלה.

Saving a filter

פעם שהמסנן נשמר, תוכל לעלות לפי מסנן, ללחוץ על ארגן מסננים ושם תראה את כל המסננים ששמרת. מכאן, תוכל ללחוץ על מסנן, ללחוץ אישור והמסנן ששמרת ייחול לחלון הנוכחי.

Viewing and loading filters

בנוסף, תוכל לטעון מסנן ששמרת על ידי העברת העכבר מעל טען מסנן בתפריט הנפתח מסנן ובחירת המסנן ששמרת מהרשימה בימין.

Loading a filter

ייבוא וייצוא של מסננים

אם תרצה לטעון את Procmon במחשב אחר ולשמור את כל המסננים ששמרת, תצטרך להתאכסן. Procmon אין לו שירות ענן לסנכרון מסננים. אך, תוכל לייצא מסננים באופן ידני ולייבא אותם מאוחר יותר.

לייצוא מסנני Procmon:

  1. עבור לתיבת ארגן מסננים.
  2. לחץ על המסנן שכבר שמרת ותרצה לייצא.
  3. לחץ על הכפתור ייצוא.
  4. ציין שם, בחר נתיב ולחץ אישור. תראה שכל מסנני Procmon נשמרים עם סיומת PMF.

לייבוא מסנני Procmon:

  1. עבור לתיבת ארגן מסננים.
  2. לחץ על הכפתור ייבא.
  3. מצא את המסנן שתרצה לייבא ולחץ אישור.

תוכל לראות הדרכה חזותית של השלבים הללו למטה.

import procmon filters

ייבוא וייצוא תצורות Procmon

כפי שלמדתם לעיל, ניתן לייצא ולייבא פילטרים של Procmon דרך קבצי PMF. אך הפילטרים הם רק אחד מהרכיבים שמרכיבים את התהליך של Procmon. ניתן להתאים אישית את העמודות, לשנות את מיקום האחסון (יותר על כך מאוחר יותר) ועוד. האם לא היה נחמד לשמור את כל ההגדרות האלה גם? אפשר!

כדי לשמור את כל התצורה של Procmon, לחצו על קובץ —> ייצוא הגדרות ואז בחרו מיקום בו תרצו לשמור את קובץ ה-PMC (הגדרות Procmon).

Export Configuration

לאחר שנשמר, תוכלו לסגור את Procmon באותו מחשב (או אפילו במחשב שונה), לפתוח מחדש את Procmon וללחוץ על קובץ —> ייבוא הגדרות, כאשר Procmon יחיל את כל הפילטרים וההגדרות השונות בדיוק כפי שיצאו.

ניתן גם לטעון הגדרות שנשמרו (כולל פילטרים) דרך שורת הפקודה באמצעות הפרמטר /LoadConfig ולאחריו את הנתיב של הקובץ למשל: ./procmon.exe /LoadConfig C:\ProcmonConfigs\file_deletion.pmc.

הדגשת אירועים והמרתם לפילטרים

אולי תרצו להפוך אירועים מסוימים לניתנים לזיהוי יותר אך לא בהכרח תרצו להסתיר כל אירוע מהתצוגה עם פילטר. במקרה כזה, ניתן להשתמש בהדגשות. הדגשות מאפשרות לך לבנות סטים של כללים בדיוק כמו פילטרים אך במקום להסתיר אירועים, צבע רקע האירועים משתנה.

אולי אתה רואה תהליך ברשימת האירועים בשם ctfmon.exe שתרצה להדגיש ברשימה. תוכל ליצור כלל הדגשה על ידי:

  1. לחיצה ימנית על האירוע שברצונך להדגיש את המאפיין שלו.
  2. לחץ על הדגש ובחר מאפיין של אותו אירוע להדגשה. בדוגמה זו, תבחר שם תהליך. תראה אז שהצבע הרקע משתנה לצבע כחול בהיר.
  3. לאחר שנוצרה חוק ההדגשה, תוכל לעבור לתיבת הדגשות במוניטור תהליכים על ידי לחיצה על סנן —> הדגש. תראה שם את חוק ההדגשה שנוצר.
  4. מתוך תיבת הדגשות במוניטור תהליכים, תוכל להוסיף ולהסיר חוקים כמו שניתן לעשות עם פילטר.
  5. אם יצרת חוקי הדגשה ותרצה להפוך אותם לפילטר, תוכל לעשות זאת על ידי לחיצה על כפתור צור פילטר בתיבת הדגשות במוניטור תהליכים.

תוכל לראות הדרכה חזותית של השלבים הללו למטה.

Highlighting Events and Converting to Filters

ייצוא ופתיחת אירועים אל/מקבצי יומן

כדי ש־Procmon יציג אירועים לך בחלון, עליך לאחסן אותם במקום מסוים. באופן ברירת המחדל, האירועים מאוחסנים בזיכרון וירטואלי, ובדיוק כמו יש לך קובץ דף.

events are stored in virtual memory

תלוי בגודל של קובץ הדף שהגדרת (ובמגבלת המערכת) תלוי כמה אירועים יכול Procmon לאחסן.

Procmon יכול לתפוס עד 199 מיליון אירועים.

שמירת אירועים לקובץ יומן

אולי עליך לשמור את האירועים הללו לחקירה מאוחרת או wel אולי לטעון על מחשב אחר? במקרה כזה, עליך לשמור את האירועים לקובץ יומן (PML).

דרך אחת לשמור את האירועים השימושיים האלה היא ללחוץ על קובץ —> שמור. פעולה זו מעלה את תיבת הדו-שיח "שמור בקובץ" למטה שבה תוצג בפניך מספר אפשרויות.

אירועים לשמירה:

  • כל האירועים – אפשרות זו היא בדיוק כפי שנשמע. היא תשמור את כל האירועים שה- Procmon תפס בלתי תלוי אם החלפת מסנן אירוע או לא לקובץ.
  • אירועים המוצגים באמצעות מסנן האירוע הנוכחי – אפשרות זו אינה שומרת את כל האירועים שתפסת, אלא רק את אלה שעברו את מסנני האירוע הפעילים כעת.
  • אירועים מודגשים – אפשרות זו מייצאת ליומן רק את האירועים שבחרת כעת.

תבנית:

  • תבנית מוניטור תהליכים טבעית (PML) – התבנית ברירת המחדל לשמירת כל האירועים (PML).
  • ערכים מופרדים בפסיקים (CSV) – שמירת כל האירועים בקובץ CSV.
  • שפת סימון תגיות נרחבת (XML) – שמירת כל האירועים בקובץ XML. תבנית זו גם נותנת לך את היכולת לשמור מעקבי מסלול (עוד על כך מאוחר יותר) ותפתור סמלי תקנים.
Events

לחץ אישור וה- Procmon יקבע את כל האירועים שתפס כעת לקובץ שבחרת.

פתיחת יומני אירועים שנשמרו

לקחת אלפי אירועים מהתקן האחד, לשמור את ההפעלה הזו לקובץ PML ולהעתיק אותו למחשב אחר לצורך חקירה. וכעת מה? יש לך לפתוח את הקובץ.

ניתן לפתוח כל קובץ PML, ללא קשר אם נתפס על המחשב המקומי שלך או לא, פשוט על ידי המעבר ל File —> Open ובחירת הקובץ PML.

ניתן גם לפתוח לוגים מהשורת פקודה באמצעות המפתח /OpenLog לדוג' procmon.exe /OpenLog C:\MyLogFile.pml.

שמירה אוטומטית של אירועים

בחלק הקודם, למדת כיצד לייצא אירועים ללוג לאחר שתפסת אותם. אך מה לעשות אם אתה יודע מראש שברצונך לקבל אירועים בקובץ PML, XML או CSV? אפשר לקבוע ש-Procmon ילכוד אוטומטית אירועים באחד מפורמטי הלוג האלו.

גם שמירה של אירועים בקובץ הדף יכולה להיות אפשרות אם אתה נמצא בסשן פרובלמים פשוט שעשוי להימשך פחות משעה. אך ישנם כמה חסרונות לשיטה זו.

  1. כל פעם שתסגור את Procmon, האירועים יימחקו.
  2. כפי שאומר לפני, גודל קובץ הדף שלך יכול לצמוח מחורבן.

כאשר אתה משתמש בזיכרון וירטואלי כמקום אחסון, אתה יכול לראות כמה מקום פנוי נשמר ל-Procmon על ידי לחיצה על File —> Backing Files.

מה לעשות? לשנות את מקום האחסון.

שמירת אירועים בדיסק

אתה יכול לשנות את המקום שבו Procmon שומרת אירועים מהקובץ הדף שלך לדיסק על ידי:

  1. לעצור את הלכידה אם אתה מפעיל אותה כרגע.

2. לחץ על קובץ —> קבצי גיבוי. תראה כעת סיכום של אירועים שמאוחסנים וגודלם, יחד עם אפשרות לשנות את מיקום האחסון.

Process Monitor Backing Files

3. כדי לשנות את מיקום האחסון לקובץ, לחץ על שדה השתמש בשם הקובץ:, לחץ על לחצן הנקודות הגלויות והגדר מיקום לקובץ.

נסה להשתמש בנפח דיסק שונה מהנפח שבו פועל procmon לביצועים מיטביים.

אפשר לכפות על procmon להשתמש בקובץ כמקום אחסון על ידי הפעלתו גם מהשורת פקודה ושימוש במתג /BackingFile. אם תרצה לחזור לשימוש בקובץ דף שוב, השתמש במתג /PagingFile.

המרת קבצי לוג

Procmon יכול לשמור קבצי לוג בשלושה פורמטים שונים: PML, CSV ו-XML. אולי שמרת קובץ לוג כ-PML ותצטרך לפענח את האירועים עם סקריפט או כלי אחר. במקרה כזה, ניתן להמיר את קובץ הלוג הזה מ-PML ל-XML או CSV בשורת הפקודה.

נניח שיש לך קובץ לוג בפורמט PML בנתיב C:\capture.pml. תרצה להמיר את קובץ הלוג הזה ל-XML ול-CSV. ניתן לעשות זאת תחילה על ידי פתיחת הקובץ לוג עם מתג /OpenLog ולאחר מכן להשתמש במתג /Save* כדי לשמור אותו.

יש ל-Procmon פרמטר סטנדרטי בשם /SaveAs שמאפשר לך לשמור לוג באחד משלושת הפורמטים שנאמרו למעלה. הפרמטר /SaveAs יגדיר את פורמט הקובץ על פי הסיומת שתספק.

להלן דוגמאות:

המרת קובץ capture.pml לקובץ capture.xml:

procmon.exe /OpenLog C:\capture.pml /SaveAs C:\capture.xml

המר את קובץ ה־capture.pml ל־capture.csv:

procmon.exe /OpenLog C:\capture.pml /SaveAs C:\capture.csv

זכור את אפשרויות ה־stack trace וה־stack symbol resolution בתיבת הדו־שיח שמעל? ניתן להפעיל גם את האפשרויות הללו באמצעות /SaveAs1 ו־/SaveAs2.

ניתן לשמור רק עקבות מחסנית ומידע סמל בפורמט XML.

המר את קובץ ה־capture.pml ל־capture.xml כולל מידע על המחסנית:

procmon.exe /OpenLog C:\capture.pml /SaveAs1 C:\capture.xml

המר את קובץ ה־capture.pml ל־capture.xml כולל מידע על המחסנית עם סמלים:

procmon.exe /OpenLog C:\capture.pml /SaveAs2 C:\capture.xml

שים לב שהוספת עקבות מחסנית וסמלים תגדיל באופן משמעותי את זמן ההמרה וללא ספק תראה מחולק כהלך כמודגם למטה.

Progress Indicator

לכידת אירועי זמן אם ההפעלה

לעתים קרובות המידע שאתה זקוק לחקר לא נוצר כאשר Windows פועל. יתכן גם שתצטרך לחקור מה תהליך עושה בעת שהווינדוס רק מתחיל להפעיל.

נפוץ לצורך לאתר בעיות כמו ביצועי אתחול איטיים או אולי תוכנת זדון שמחליטה להפעיל מיד כשהווינדוס מתחיל להפעיל. Procmon מציע את אפשרות הקריאה לרישום זמן אתחול שניתן להפעיל כדי ללכוד את המידע הזה.

כדי להפעיל רישום אתחול, לחץ על אפשרויות —> הפעל רישום אתחול בתפריט כפי שמוצג למטה.

Enabling boot logging

לאחר שתלחץ על הפעל רישום אתחול, תראה תיבת דו־שיח קופצת ששואלת על מידע אופציונלי. תיבת הדו־שיח הזו היא המקום בו תוכל ללכוד אירועי פרופיל תהליך.

הפעלת אירועים של פרופיל תהליכי תהליכות הוא מקרה שימוש מתקדם. כשאתה מפעיל פרופיל של תהליכי תהליכות, procmon מקלט גלישות תרשימיות של תהליכי תהליכות ושימוש במעבד שתוכל להשתמש בו כדי לזהות את מקור הבעיות בביצועי המעבד.

Optional thread-profiling events for boot time logging

לאחר שתלחץ על אשר, procmon יפעיל רישום זמן טעינת מערכת שמורה על תהליך הסינון (יותר על כך מאוחר יותר) לחכות להפעלה מחדש של Windows. כשתפעיל מחדש את Windows, procmon יתחיל לרשום אירועי תהליכים כמו שהיית מפעיל אותו באופן ידני.

כל נתוני האירועים בזמן הטעינה מאוחסנים בקובץ יומן זמני בשם C:\Windows\procmon.pmb.

כש-Windows עולה מחדש, פתח מחדש את procmon. תראה תיבת דו-שיח כמו בתמונה למטה. כאן, לחץ על כן כדי להמיר את נתוני הטעינה לתבנית ה-PML על ידי בחירת קובץ היומן לשמירת הנתונים בו.

Confirmation to convert boot-time events to PML

בזמן המרת הנתונים על ידי procmon, תראה סרגל התקדמות כפי שמוצג בתמונה למטה.

Converting boot-time event data to PML

אל תשכח לפתוח מחדש את procmon לאחר הפעלה מחדש! Procmon יתחיל לרשום אירועים בהתחלת עליה של Windows ב-C:\Windows\procmon.pmb. הוא ימשיך לעשות זאת עד שתכבה אותו על ידי פתיחה מחדש של procmon.

הפעלת Procmon מרחוק

אף על פי ש-procmon רץ רק במחשב מרוחק במערכת Windows, אתה יכול להפעיל את procmon מרחוק באמצעות psexec או פקודת Invoke-Command בפוֹוֶרְשסֶל.

קשור: PsExec: המדריך המוחלט, Invoke-Command: הדרך הטובה ביותר להפעיל קוד מרחוק

כדי להפעיל את procmon עם פקודת Invoke-Command של PowerShell, עקוב אחר השלבים הבאים:

  1. הפעל את פעולת הריבוי של PowerShell על המחשב המרוחק אם עדיין לא מופעלת.

העתק את תיקיית ה-procmon למחשב המרוחק דרך מסוף הפקודות של PowerShell.

Copy-Item -Path C:\procmon \\MYPC\c$

הפעל את procmon דרך PowerShell וודא שאתה דולף את אישור תנאי השימוש ומכריח את procmon לאחסן את האירועים בקובץ תמיכה במקום בזיכרון וירטואלי ולא לבקש משתמש את המסנן בהפעלה.

Invoke-Command -Computer MYPC -ScriptBlock { C:\procmon\procmon.exe /AcceptEula /BackingFile C:\capture.pml /Quiet }

בנקודה זו, procmon התחיל לכוד. שחזר את הבעיה שאתה מנסה לתפוס.

עצור את procmon על המחשב המרוחק על ידי שימוש במתג /Terminate.

Invoke-Command -Computer MYPC -ScriptBlock { C:\procmon\procmon.exe /Terminate }

חכה שה-procmon ייסגר. כדי לחסוך זמן, אתה יכול לבדוק מדי פעם אם תהליך ה-procmon סיים ולהחזיר שליטה למסוף הפקודות של PowerShell כאשר הוא מושלם.

while (Invoke-Command -Computer MYPC -ScriptBlock { Get-Process procmon -ErrorAction Ignore }) {
     Write-Host "Waiting on procmon to exit…"
     Start-Sleep -Seconds 5
 }

העתק את קובץ היומן המרוחק למחשב המקומי.

$session = New-PSSession -ComputerName MYPC
Copy-Item -Path C:\log.pml -Destination C:\ -FromSesson $session
$session | Remove-PSSession

עכשיו יש לך את קובץ היומן שנכנס לתהליך במחשב המקומי שלך!

אם ברצונך סקריפט PowerShell מתאים כדי לנהל את תהליך התפיסה הזה, תוכל למצוא אותו למטה.

[CmdletBinding()]
 param(
     [Parameter()]
     [string]$ComputerName, 
     [Parameter()]
     [string]$LogFilePath = 'C:\capture.pml'
 )
 $procmonFolderPath = 'C:\procmon'
 try {
     $session = New-PSSession -ComputerName $ComputerName
     Copy-Item -Path $procmonFolderPath -Destination $procmonFolderPath -ToSession $session $scriptBlock = {
         & "$using:procmonFolderPath\procmon.exe" /AcceptEula /BackingFile $using:LogFilePath /Quiet
         & "$using:procmonFolderPath\procmon.exe" /Terminate
         while (Get-Process procmon -ErrorAction Ignore) {
             Write-Host "Waiting on procmon to exit…"
             Start-Sleep -Seconds 5
         }
     }
     Copy-Item -Path $LogFilePath -Destination C:\ -FromSesson $session
 } catch {
     throw $_
 } finally {
     $session | Remove-PSSession
 }

הגדרת תהליכי תפיסת Procmon הרצים לטווח זמן ארוך

A busy Windows system can produce a lot of events procmon captures that can overwhelm your PC. If you intend to run procmon for an extended amount of time, there a few measure you should take into consideration.

הורדת אירועים מסוננים

כאשר procmon רץ בתהליך תפיסה, הוא מכיל אירועים כל. אתה יכול ליצור ולהחיל סינוני אירועים אך סינונים אלו רק מסתירים את האירועים במסך; הם לא מונעים מ-procmon לתפוס אותם.

אם אתה מתכוון לבצע תפיסות Procmon ארוכות יותר, תמיד כדאי לבחור ב שחרור אירועים מסוננים מתוך תפריט סנן כפי שמוצג למטה.

Drop Filtered Events

פעם שתבחר בפריט שחרור אירועים מסוננים, Procmon מתחיל מיד לשחרר את כל האירועים המסוננים. Procmon לא מציג אותם על המסך ולא שומר אותם בזיכרון וירטואלי או בקובץ לוג. שחרור אירועים שאינם רצויים באופן מוחלט עוזר לשמור על משאבים.

נושאים מתקדמים

האם עדיין אתה רוצה מידע נוסף על Procmon ואיך להשתמש בו? בוא נתעקב אחרי כמה נושאים מתקדמים! אלה הם הנושאים שאולי לא תצטרך לדעת עליהם כל כך הרבה. אלה הם נושאים סביב יותר מתכונת האוכלוסייה של תכונות procmon, אך, מידע זה יכול להיות מועיל בעת פיתרון בעיות של Procmon.

מנהלי סננים

כדי לתפוס אירועים, Procmon רשום ומשתמש במנהל סינון שמשתמש ב מנהל סינון Windows (FltDrv). מנהל סינון זה בשם PROCMON24 מותקן כאשר אתה מתחיל תפיסה. לפעמים מנהל הסינון הזה יכול להתנגש עם יישומים אחרים.

לאחר שאתה מתחיל את Procmon, פתח קונסולת פווה או פקודה מוגברת של PowerShell והפעל את fltmc filters. הכלי fltmc מפרט, טוען ומוריד מנהלי סינון. כשאתה מריץ את זה, תראה את הסינון PROCMON24 טעון כפי שמוצג למטה.

שים לב שהגובה של PROCMON24 ברירת המחדל הוא 385200, עם מסננים אחרים שיש להם מספר נמוך יותר. גובה דרך המסנן מייצג את הרמה בה ניתן לפקח על אירועים במסנן. לדוגמה, אירועים שקורים ברמות wcifs, luafv או Wof, procmon לא יוכל לזהות. יותר על שינוי זה בהמשך.

Procmon 24

מסנן PROCMON24 נשאר טעון גם כש-procmon אינו פועל.

לעיתים ייתכן שייתכן ש-procmon ייתקל בבעיות בטעינה של מסנן. לצורך איתור תקלות, פתח את procmon עם ההפעלה /NoConnection כדי למנוע מ-procmon להתחבר למסנן.

פתיחת מסנן PROCMON24

ישנם מקרים בהם מסנן PROCMON24 עשוי להתנגש עם מספר מכשירים חומרה שונים ותהליך הפתיחה שלו עשוי לא להיות פשוט כפי שנראה.

ניתן לפתוח מסננים באמצעות הפקודה fltmc unload ואז הכנס את שם המסנן.

fltmc unload PROCMON24

אם תנסה את הפקודה הנ"ל, בקרוב תגלה שזה לא עובד. אי אפשר לפתוח מסנן זה מכיוון שדבר נראה שהמפתח לא הוסיף את היכולת הזו.

Can’t Unload the Filter

אם יש צורך לפתוח את מסנן PROCMON24, אין ברירה, עליך לאתחל את המחשב לצורך כך.

עקבות מחסנית

לפעמים אירועים פשוטים כמו קריאה לרגיסטרי, פתיחת קובץ או קריאה לכתובת רשת אינם מספיקים במידה מסוימת. יש צורך לחפש עמוק יותר ולראות היסטוריית שיחות הפונקציות האמיתיות של API של Windows שתהליך קורא. יש להביט ב-עקבות הערמה של התהליך.

A stack trace is the history of various functions called during various function calls when a process is running.

עם רשימת אירועים שמופיעים ב-Procmon, יש ללחוץ פעמיים על כל אירוע וללחוץ על לשונית ה-ערימה כפי שמוצג למטה. לשונית ה-ערימה מייצגת שיחות לפונקציות שהתהליך הפרטי קרא בזמן ביצוע האירוע.

Stack Tab

נושא עקבות הערימה יכול להיות מורכב לזמן רב. אם ברצונך לדעת עוד על הבנת ערימת שיחות של תהליך, אני ממליץ לקרוא את המאמר שיפור עקבות הערימה ב-Process Monitor

שינוי אלטיטיוד של Procmon (ללכידת אירועים ברמה נמוכה)

כפי שכבר נדון למעלה, Procmon משתמש במנהל סינון כדי ללכוד אירועים. אף שיש תחושה ש-Procmon לוכדת כל אירוע ב-Windows (יש הרבה אירועים שמופיעים בחלון ה-Procmon!), זה אינו נכון. Procmon רק לוכדת אירועים שהמנהל סינון שלו מכיר או את ה-אלטיטיוד שלו.

לדוגמה, אם יש צורך לרשום פעילות של אנטיוירוס, אחסון ברמה נמוכה ואירועים אחרים ברמה נמוכה של חומרה, יש לשנות את האלטיטיוד של נהג הסינון PROCMON24 להיות נמוך מאחרים.

לעשות זאת:

  1. וודא ש־procmon נסגר.

2. מצא את הגובה הנמוך ביותר של דרייברי המסננים שטעונים כעת עם הפקודה fltmc.

fltmc filter

3. שנה את ערך הרישום של הגובה תחת מפתח הרישום HKLM\System\CurrentControlSet\Services\PROCMON24\Instances\Process Monitor 24 Instance ל־100 פחות מערך הגובה הנמוך ביותר (כדי לראות את כל האירועים).

בהתאם לגרסה של procmon שמותקנת לך עשויים להשתנות מיקום מפתח הרישום. המדריך הזה משתמש ב־Procmon 2.4.

ניתן לפתוח סשן PowerShell מוגבה ולהריץ את קטע הקוד הבא כדי לשנות במהירות את הערך.

Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Services\PROCMON24\Instances\Process Monitor 24 Instance' -Name 'Altitude' -Value 40400

ככל שתקבע את הגובה למטה, כך יהיו לך יותר אירועים לניהול. אל תקבע את הגובה למטה ממה שאתה צריך.

4. השעה מחק וזכויות ה־הגדר ערך עבור כל אחד על המפתח Process Monitor 24 Instance. כאשר procmon ירוץ שוב, הוא ינסה להגדיר את ערך ה־Altitude חזרה לברירת המחדל. ניתן לשנות את ההרשאות הללו דרך כלי העריכת הרישום regedit או פשוט להריץ את קטע הקוד ב־PowerShell הבא.

$regKeyPath = 'HKLM:\System\CurrentControlSet\Services\PROCMON24\Instances\Process Monitor 24 Instance'
$acl = Get-Acl $regKeyPath
$idRef = System.Security.Principal.NTAccount
$regRights = @([System.Security.AccessControl.RegistryRights]::Delete,[System.Security.AccessControl.RegistryRights]::SetValue) 
$inhFlags = [System.Security.AccessControl.InheritanceFlags]::None
$prFlags = [System.Security.AccessControl.PropagationFlags]::None
$acType = [System.Security.AccessControl.AccessControlType]::Deny
$rule = New-Object System.Security.AccessControl.RegistryAccessRule ($idRef, $regRights, $inhFlags, $prFlags, $acType) 
$acl.SetAccessRule($rule) $acl | Set-Acl -Path $regKeyPath

5. הפעל מחדש את מנהל המכשירים של Windows כדי לבטל את דרייבר המסנן PROCMON24.

6. הפעל את procmon.

7. פתח קונסולת PowerShell או פקודת ה-prompt והרץ את fltmc filters. עכשיו אתה צריך לראות את דרייבר המסנן של procmon בגובה החדש.

PowerShell console or command prompt

אתה יכול כעת ללכוד כל מה שאתה צריך. אם תוריד את הרמה של Altitude של procmon לנמוכה ביותר שהיא, תהיה מוכן לאירועי הגשם!

דוגמאות מהחיים האמיתיים

עכשיו אמור לך להבין באופן טוב מה יכול procmon לעשות ואיך הוא יכול לעזור לך לעקוב אחר אירועי Windows. נעבור עכשיו ליישום הידע הזה ונכסה כמה מקרים נפוצים שבהם עשוי להיות צורך בסוג זה של ידע.

מציאת מי מוחק קובץ

אם יש לך קובץ במחשב ה-Windows שלך שממשיך להימחק מסיבה לא ידועה ואתה רוצה לעקוב אחריו, procmon יכול לעזור (וזה די פשוט).

אולי ניסית לפתוח את procmon ולנסות להגדיר קובץ אירוע שנקרא Delete או Remove אבל לתסריט שלך, לא קיימת פעולה כזו. במקום זאת, כדי למצוא אירועי הסרת קבצים, עליך לסנן את האירועים עם Operation של:

  • SetDispositionInformationFile
  • SetDispositionInformationEx

אם המערכת שלך מסירה הרבה קבצים, תרצה גם להגביל את אירועי המחיקה של הקבצים לשם הקובץ או הנתיב באמצעות סינון ה-Path.

Operation is          SetDispositionInformationEx   Include
Operation is          SetDispositionInformationFile Include
Path      begins with C:\MyFolder                   Include

מעקב אחרי בעיות בקבצים נעולים

כולנו היינו שם; אתה מנסה להעביר או להסיר קובץ והוא נעול על ידי תהליך אחר. לפעמים, אם אתה מנסה להסיר יישום, לדוגמה, לעולם לא תדע אם השגיאה האקראית שאתה רואה קשורה לקובץ נעול למעשה!

כדי להבין מתי Windows מנסה להסיר או לשנות קובץ נעול, השתמש בסט הסינונים הבא.

Operation is CreateFile        Include
Result    is SHARING VIOLATION Include

תיקון בעיות ביישומים שדורשים הרשאות מנהל

האם אתה עובד עם יישום שבהוראותיו, אמור לעבוד אך לא עושה זאת? כולנו עברנו דרך זו. לפעמים תהליך מסוים שהיישום יוצר מחייב הרשאות מוגבלות אך לא יגיד לך איפה או כיצד. אתה יכול להפעיל את procmon כדי לעזור.

דרך אחת לאתר תהליכים שמתנגדים בגלל הרשאות מוגבלות היא לסנן לפי התוצאה של אירוע.

כל פעם שקורה אירוע שמתנגד בגלל חוסר הרשאות מוגבלות, בדרך כלל תראה תוצאה של ACCESS DENIED. ידעת זאת, תוכל בקלות לבנות סינון פשוט שמראה את כל האירועים עם תוצאה של ACCESS DENIED כפי שמוצג למטה.

Result is ACCESS DENIED Include

מכאן, אתה יכול להוסיף עוד סינונים כמו נתיב הרשומה או התיקייה עם המאפיין Path גם.

מציאת התהליך שגושב כתובת IP

אולי יש לך התנהגות רשת עקומה עם Wireshark וצריך להבין איזה תהליך מתחיל את התקשורת הזו. הפעל את procon והוסף את סט הכללים לסינון הבא.

כללי הסינון האלה מגבילים את האירועים לתעבורת רשת שמופעלת מקומית בלבד עם יעד של כתובת IP יחידה.

Operation   is       TCP Send        Include
Operation   is       UDP Send        Include
Path        contains ->  Include
Event Class is       Network         Include

פתרון בעיות באיחול איטי

לפעמים חלון מחשב יכול להיות איטי באיחול. האיטיות הזו יכולה להיות תוצאה של רבים מרכיבי חלון, יישומים מותקנים, וכן הלאה. באמצעות יכולת הלוג של נעילת האיחול של procmon, תוכל לעקוב אחר הבעיה ולתקן אותה.

  1. עמידות האתרים. ניתן למצוא איך לעשות זאת בקטע המתאים של לכידת אירועי זמן ההפעלה.

2. בתיבת הדו-שיח אפשר רישום ההפעלה, הקפיצו לוודא שהתיבה צור אירועי פרופילינג לעצור מסומנת. לחצו על כפתור הרדיו כל שנייה וזה יהיה מספיק.

Enabling thread profiling events on boot

3. לאחר האתחול, פתחו את procmon, לחצו ימינה על כל עמודה ובחרו בחר עמודות.

4. בתיבת בחירת עמודות למוניטור, סמנו משך. לאחר שתעשו זאת, תוכלו לראות כמה זמן כל אירוע לקחת להרץ.

Process Monitor Column

5. כעת ניתן ליצור כלל סינון על משך למספר שניות שאתם חושבים שיהיה מספיק. כלל הסינון למטה יציג רק אירועים שלקחו מעל חמישה שניות להשלים.

filter rule on Duration

6. לבסוף, דרך נוספת ושימושית לחקור את האירועים האיטיים האלו היא באמצעות עץ התהליכים של procmon. עץ התהליכים מראה יחסים בין תהליכי הורה וילד ומכיל את זמני ההתחלה והסיום של כל תהליך. כדי למצוא את זה, לחצו על כלים —> עץ תהליכים.

Process Tree

7. בפעם הראשונה ב- עץ התהליכים, תסתכלו על עמודה אורך החיים שמראה בפורמט גרפי את אורך הזמן של כל תהליך. ניתן גם להבחין במרווחי זמן על ידי השוואת עמודות זמן התחלה ו- זמן סיום בתצוגה זו.

Lifetime Column

פתרון בעיות שליישראל

כמה ארגונים משתמשים בשירות App-V של Microsoft כדי להווירטואליז ולהפיץ יישומים למשתמשים סופיים. אם אתה משתמש ב-App-V, יש לך מקום מועיל (ולא מתועד) שאתה צריך לדעת עליו בשם /externalcapture.

השימוש ב-.\procmon.exe /ExternalCapture יכול לתפוס יותר פעילות ברישות סביב היישומים של App-V. נסה להשתמש במזהה זה אם אתה לא מוצא את מה שאתה מחפש בעת פיתרון בעיות של יישומים App-V!

נראה כי המזהה /HookRegistry משמש למטרה זהה כמו /ExternalCapture, אך זה כבר לא עובד על מכונות ביטים 64.

סיום

אז זהו; מדריך מקיף על כל הנוגע ל- procmon! אף שלמדת המון על procmon, תמיד יש עוד אבני חן לגלות עם כלי זה.

אם יש לך הצעות לעדכונים או שינויים למדריך האולטימטיבי הזה, אני זמין ב-Twitter ושמח לשמוע!

Source:
https://adamtheautomator.com/procmon/