מדיניות ביקורת אבטחה ב-Windows וחקירת יומן אירועים בפועל — איך להפוך לצוות IT שיודע לקרוא את 4625

· · Windows, אבטחה, יומן אירועים, מדיניות ביקורת, תכנון יומנים, PowerShell, מערכות מידע

«חשבון ננעל שוב ושוב מאמש. תבררו למה.» «רוצה לבדוק אם מישהו ניסה להיכנס עם חשבון של עובד שעזב.» «אפשר לדעת מי עשה מה, ומתי, בשרת הזה?» — אלה הבקשות שאנשי מערכות מידע בעסקים קטנים ובינוניים, או מפתחים שמסרו מערכת ללקוח, מקבלים פתאום ביום אחד. והדבר שהם נשענים עליו הוא יומן האירועים Security של Windows.

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

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

איור 1: «לא נרשם» או «קבור ולא ניתן לקרוא». בשני המקרים הסיבה היא שלא תכננו את טווח הרישום.

המאמר מסדר את מנגנון מדיניות הביקורת (שתי המערכות — בסיסית ומתקדמת), את תת-הקטגוריות שכדאי להפעיל לפחות בסביבה קטנה-עד-בינונית, איך לקרוא את מזהי האירוע הסטנדרטיים — 4624/4625/4740/4688 ואחרים — תכנון קיבולת יומן Security, ואיך חוקרים ב-PowerShell, על בסיס מקורות ראשוניים נכון לאוגוסט 2026. אם מאמרי ביקורת NTLM, חתימת SMB, BitLocker וחומת האש באתר הזה הם כולם על «חיזוק ההגנות», המאמר הזה הוא על «לאפשר לאשר אחר כך מה קרה» — המשך שקושר אותם יחד.

1. השורה התחתונה קודם

  • למדיניות ביקורת יש שתי מערכות — «בסיסית» ו«מתקדמת (Advanced Audit Policy)» — ואסור לערבב אותן. Microsoft קובעת במפורש ששימוש בשתיהן משאיר את תוצאות הביקורת במצב בלתי צפוי. מאחדים לצד המתקדם (יותר מ-40 תת-קטגוריות).1
  • את המצב הנוכחי בודקים ב-auditpol /get /category:*. זו רשימה של מה שבתוקף עכשיו בפועל, בלי קשר אם זה הגיע מ-GPO או מהגדרה מקומית.2
  • «להפעיל הכול» זה דבר שאסור לעשות. הפעלת תת-קטגוריות שמייצרות נפח אירועים עצום קוברת את האירועים שחשובים באמת תחת רעש, ופוגעת גם בביצועים. מתחילים מהמלצות הבסיס של Microsoft ומוסיפים רק מה שצריך.34
  • כניסה מוצלחת היא 4624; כניסה שנכשלה היא 4625. ב-4624 קוראים «איזה סוג כניסה זו הייתה» מסוג הכניסה (2 = Interactive, 3 = Network, 10 = RemoteInteractive, וכן הלאה).5
  • ב-4625, קוד Status/Sub Status אומר את סיבת הכישלון. הסטנדרטיים הם 0xC0000064 = שם משתמש שאינו קיים, 0xC000006A = סיסמה שגויה, 0xC0000072 = חשבון מושבת, ו-0xC0000234 = החשבון נעול.6
  • איפה אירוע נרשם קבוע. 4624/4625 נרשמים במכונה שאליה ניגשו; אימות אישורים (4776) וכישלון קדם-אימות Kerberos (4771) נרשמים בבקר הדומיין. מסתכלים במכונה הלא נכונה ומסיקים בטעות «אין יומן».678
  • חצי מתכנון יומן Security הוא המיכל עצמו — גודל מרבי ושמירה. אם השמירה מוגדרת לדריסה, אירועים ישנים נעלמים ראשונים. בודקים גודל מרבי ומספר רשומות ב-Get-WinEvent -ListLog Security, ומרחיבים בחישוב לאחור ממספר הימים שצריך באמת לשמור.910
  • רישום שורת פקודה ליצירת תהליך (4688) חזק, אבל המחיר הוא שסודות נוחתים ביומן בטקסט גלוי. בודקים את הסקריפטים לפני שמפעילים.1112

2. יסודות מדיניות הביקורת — לא לערבב «בסיסית» ו«מתקדמת»

למדיניות הביקורת של Windows יש שתי מערכות.1

  • מדיניות ביקורת בסיסית: תשע הגדרות הקטגוריה תחת «מדיניות מקומית > מדיניות ביקורת». זו המערכת הישנה, מלפני Windows Vista.
  • תצורת מדיניות ביקורת מתקדמת (Advanced Audit Policy Configuration): יותר מ-40 הגדרות תת-קטגוריה תחת «הגדרות אבטחה > תצורת מדיניות ביקורת מתקדמת». היא מפרקת כל קטגוריה בסיסית לכמה תת-קטגוריות — למשל, הקטגוריה הבסיסית היחידה «ביקורת אירועי כניסה לחשבון» מקבילה לארבע תת-קטגוריות בצד המתקדם. הפעלת קטגוריה בסיסית אחת שקולה להפעלת כל תת-הקטגוריות המתאימות, וזה רושם נפח גדול של אירועים שאולי כלל לא מעניינים אתכם.1

הנקודה החשובה היא ששתי המערכות האלה אינן תואמות זו לזו. Microsoft אומרת בפשטות: «אל תשתמשו גם במדיניות ביקורת בסיסית וגם במתקדמת — זה יכול להוביל לתוצאות ביקורת בלתי צפויות.» כשמדיניות ביקורת מתקדמת מוחלת דרך Group Policy, הגדרות הביקורת הקיימות במחשב מנוקות תחילה ואז מוחלות ההגדרות המתקדמות; משם והלאה רק הצד המתקדם יכול לשלוט בביקורת באופן אמין. בסביבות שמשתמשות בצד המתקדם, מפעילים את אפשרות האבטחה «ביקורת: אכיפת הגדרות תת-קטגוריית מדיניות ביקורת כדי לדרוס הגדרות קטגוריית מדיניות ביקורת» כדי שההגדרות הבסיסיות לא יוכלו לדרוס אותה (במכונות עצמאיות זה מופעל כברירת מחדל).14

הקשר בין מדיניות ביקורת בסיסית למתקדמתמדיניות ביקורת בסיסית ומדיניות ביקורת מתקדמת אינן תואמות, ושימוש בשתיהן משאיר תוצאות ביקורת במצב בלתי צפוי, לכן מאחדים לצד המתקדם ומפעילים אכיפת תת-קטגוריות כדי למנוע דריסה מצד הבסיסכןלאמדיניות ביקורת בסיסית(9 קטגוריות)משתמשים בשתיהן?מדיניות ביקורת מתקדמת(40+ תת-קטגוריות)תוצאות ביקורת בלתי צפויותאיחוד לצד המתקדםהפעלת אכיפת תת-קטגוריותמונע דריסה מצד הבסיס

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

בדיקת המצב הנוכחי היא פקודה אחת, משורת פקודה מוגבהת.2

rem רשימת הגדרות הביקורת שבתוקף כעת, לפי תת-קטגוריה
auditpol /get /category:*

rem גיבוי (CSV) לפני שינוי ושחזור
auditpol /backup /file:C:\logs\auditpol-backup.csv
auditpol /restore /file:C:\logs\auditpol-backup.csv

הפלט של auditpol הוא «המדיניות שבתוקף בפועל», בלי קשר אם המקור הוא GPO או הגדרה מקומית. הוא שימושי גם להצלבה כשהגדרה שחולקה ב-GPO נראית שלא נכנסה לתוקף. שימו לב ששינוי בהגדרות הביקורת עצמן נרשם כאירוע 4719, כך שגם «הביקורת כובתה בלי שאף אחד שם לב» ניתן לעקוב אחריו בדיעבד.12

מה ש-auditpol מראה הוא המדיניות שבתוצאההפלט של auditpol הוא מדיניות הביקורת שבתוקף בפועל בלי קשר אם המקור הוא GPO או הגדרה מקומית, והוא שימושי להצלבה כש-GPO לא חלה, ושינוי במדיניות הביקורת עצמה נשאר באירוע 4719הגדרה שחולקה ב-GPOהמדיניות שבתוקף בפועלהגדרה מקומיתרשימה ב-auditpol /getשימושי כש-GPO לא חלהשינוי מדיניות הביקורת עצמה4719 נרשם ואפשר לעקוב

איור 3: auditpol מחזיר את «ההגדרה שבתוקף» בלי קשר למקור. שינוי במדיניות הביקורת עצמה נשאר ב-4719.

3. טבלת החלטה לתת-הקטגוריות המינימליות להפעלה

ברור למה «פשוט נפעיל הכול, ליתר ביטחון» הוא מהלך גרוע. למשל, Microsoft מזהירה שביקורת הצלחה לתת-קטגוריות של שימוש בהרשאות מייצרת נפח אירועים כה עצום עד שקשה למצוא ערכים אחרים ביומן האבטחה, ושיש גם השפעה משמעותית על הביצועים.4 מיכל היומן (פרק 5) סופי, ולכן ככל שרושמים יותר רעש, כך נאכל יותר מטווח השמירה של האירועים שבאמת צריך. תכנון ביקורת הוא בעצם להחליט מה לא לרשום.

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

איור 4: «להפעיל הכול» קובר את האירועים החשובים. תכנון ביקורת הוא להחליט מה לא לרשום.

Microsoft מפרסמת המלצות בסיס והמלצות מחמירות לפי תחנת עבודה ושרת, ואלה נקודת הפתיחה.3 משם, הטבלה שלמטה מסודרת סביב נקודת המבט של סביבה קטנה-עד-בינונית: «מה אנחנו רוצים להיות מסוגלים לקרוא לפחות בזמן אירוע».

תת-קטגוריה (קטגוריה) מזהי אירוע עיקריים מה זה אומר המלצה לסביבה קטנה-עד-בינונית
כניסה (Logon/Logoff) 4624 / 4625 הצלחה/כישלון כניסה, סוג כניסה, מקור הצלחה + כישלון. מ-Windows 10 1809 ואילך הצלחה וכישלון מופעלים כברירת מחדל בכל מקרה3
כניסה מיוחדת (אותה) 4672 / 4964 התרחשות כניסה עם הרשאות מנהל הצלחה
נעילת חשבון (אותה) 4625 ניסיון כניסה שנכשל מול חשבון שנעול כרגע כישלון (4625 הוא אירוע כישלון; לתת-קטגוריה הזאת אין אירועי הצלחה)13
ניהול חשבונות משתמש (ניהול חשבונות) 4720 / 4726 / 4738 / 4740 יצירה, מחיקה, שינוי ונעילה של חשבון הצלחה + כישלון
ניהול קבוצות אבטחה (אותה) 4728 / 4732 / 4756 (נוסף), 4729 / 4733 / 4757 (הוסר) חברים שנוספו לקבוצות מנהלים ואחרות או הוסרו מהן (גלובלית/מקומית/אוניברסלית) הצלחה (לתת-קטגוריה הזאת אין אירועי כישלון)14
אימות אישורים (כניסה לחשבון) 4776 הצלחה או כישלון של אימות NTLM. בחשבון דומיין נרשם ב-DC7 הצלחה + כישלון
שירות אימות Kerberos (אותה, DC בלבד) 4768 / 4771 הנפקת TGT וכישלון קדם-אימות (סיסמה שגויה וכו’)8 הצלחה + כישלון, ב-DC
יצירת תהליך (מעקב מפורט) 4688 מי הרץ מה, מאיזה תהליך אב הצלחה. קוראים את אזהרת פרק 7 לפני הפעלת רישום שורת פקודה
אירועי גישה אחרים לאובייקטים (גישה לאובייקטים) 4698 יצירת משימה מתוזמנת (טכניקה נפוצה להתמדה)15 שוקלים להפעיל הצלחה
שינוי מדיניות ביקורת (שינוי מדיניות) 4719 שינויים בהגדרות הביקורת עצמן הצלחה + כישלון

ולהפך, בדרך כלל בטוח ביותר לא לגעת כברירת מחדל בביקורת גישה לאובייקטים של מערכת קבצים או רישום, בשימוש בהרשאות, או בתת-קטגוריות של מסנן מנות (5152 ודומיהן). אלה מועילות כשמצמצמים אותן לתצורת SACL ממוקדת או לחקירה מוגבלת בזמן, לא כמשהו שמשאירים פתוח תמיד על כל הלוח — כך תאכלו את היומן חי.4

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

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

4. איך לקרוא את מזהי האירוע הסטנדרטיים

4.1. 4624 — כניסות מוצלחות ממוינות לפי סוג כניסה

4624, «חשבון נכנס בהצלחה», נרשם במכונה שבה נוצרה הפעלת הכניסה (המכונה שאליה ניגשו).5 משום שזה אירוע בנפח גבוה, הצעד הראשון בקריאה הוא למיין לפי סוג כניסה (Logon Type).5

סוג כניסה שם מה זה אומר בפועל
2 Interactive כניסה במסוף של אותו מחשב
3 Network גישה דרך הרשת (תיקיות משותפות, כלי ניהול וכו’). הנפוץ ביותר, כי הוא נורה פעם לכל מכונה
4 Batch הרצה באצווה (משימות מתוזמנות וכו’)
5 Service שירות שמתחיל (דרך מנהל בקרת השירותים)
7 Unlock ביטול נעילת המסך
8 NetworkCleartext כניסת רשת שבה הסיסמה הועברה לחבילת האימות בטקסט גלוי
9 NewCredentials שכפול של אסימון קיים עם אישורים חלופיים (מקביל ל-runas /netonly)
10 RemoteInteractive שולחן עבודה מרוחק
11 CachedInteractive כניסה עם אישורים שמורים במטמון (כשלא היה אפשר להגיע ל-DC)

שדות נוספים שכדאי לבדוק לצד זה הם שם החשבון תחת «כניסה חדשה», כתובת המקור תחת «מידע רשת», «חבילת האימות» (NTLM או Kerberos), ו«אסימון מוגבה» (האם להפעלה יש הרשאות מנהל). אם רוצים לעקוב רק אחרי כניסות עם הרשאות מנהל, גם אירוע 4672 (הרשאות מיוחדות הוקצו לכניסה חדשה), שנרשם תחת אותו Logon ID, שימושי.5

סדר הקריאה המבדיל של 46244624 שנרשם בכמויות ממוין קודם לפי סוג כניסה, אחר כך בודקים שם חשבון ומקור, חבילת אימות ואסימון מוגבה, וכניסה עם הרשאות מנהל מצליבים עם 4672 של אותו Logon ID4624 כניסה מוצלחתמיון לפי סוג כניסהבדיקת שדות עיקרייםשם חשבון ומקורחבילת אימותאסימון מוגבהמעקב אחרי הרשאות מנהל4672 עם אותו Logon ID

איור 6: ב-4624 ממיינים לפי סוג כניסה ואז קוראים שדות. כניסה עם הרשאות מנהל מצליבים עם 4672.

4.2. 4625 — קובעים את סיבת הכישלון בקוד Status/Sub Status

4625, «חשבון נכשל בכניסה», נרשם במכונה שבה ניסו להיכנס.6 במקום לסמוך על ניסוח השדה «סיבת הכישלון», הדרך האמינה לקרוא היא לפי קוד Status/Sub Status ההקסדצימלי. הסטנדרטיים הם כדלקמן.6

  • 0xC0000064: שם משתמש שאינו קיים. רצף מהיר של אלה בחלון קצר יכול להצביע על התקפת מניית חשבונות
  • 0xC000006A: סיסמה שגויה. כשלונות חוזרים מול חשבון מסוים יכולים להצביע על התקפת ניחוש סיסמה
  • 0xC000006D: שם משתמש או מידע אימות לא חוקיים
  • 0xC000006F: מחוץ לשעות הכניסה המותרות
  • 0xC0000070: מתחנת עבודה שאינה מותרת
  • 0xC0000072: חשבון שהושבת בידי מנהל (ניסיונות מול חשבון של עובד שעזב מופיעים כאן)
  • 0xC000015B: סוג הכניסה המבוקש אינו מותר במכונה הזאת
  • 0xC0000193: חשבון שפג תוקפו
  • 0xC0000234: נעול

«מי, מאיפה, ולמה זה נכשל» נקבע בשלישייה של חשבון היעד, המקור (שם תחנת עבודה / כתובת IP), והקוד הזה. פרק 6 כולל PowerShell ששולף את שלושתם יחד בפעם אחת.

זרימת קביעת סיבת הכישלון של 4625סיבת הכישלון של 4625 נקבעת לפי קוד Status/Sub Status ההקסדצימלי, מגמת הקוד נקראת כסימן להתקפה, ואז מזהים בשלישייה של חשבון יעד, מקור והקודרצף 0xC0000064רצף 0xC000006A0xC00000724625 כניסה שנכשלהבדיקת קוד Sub Statusמה מגמת הקוד?סימן למניית חשבונותסימן לניחוש סיסמהניסיון בחשבון עובד שעזבקובעים בשלישייהחשבון יעד+מקור+קוד

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

4.3. 4740 — מקור הנעילה הוא «שם מחשב הקורא»

4740, «חשבון משתמש ננעל» (תת-קטגוריה: ניהול חשבונות משתמש). השדה המרכזי באירוע הזה הוא «שם מחשב הקורא (Caller Computer Name)», שרושם את המחשב שממנו יצא ניסיון הכניסה שהפעיל את הנעילה.16 ההליך הסטנדרטי הוא לזהות את מכונת המקור מהשדה הזה, ואז לחפש אישורים ישנים שעדיין שמורים באותה מכונה. ברוב המקרים הסיבה היא משהו שממשיך להשתמש באישורים ישנים אחרי החלפת סיסמה — אישורים שמורים, הפעלת RDP מנותקת שנשארה תלויה, או שירות ומשימה מתוזמנת שהוגדרו עם הסיסמה הישנה.

סדר החקירה הקבוע של נעילת חשבוןמזהים את מחשב המקור משם מחשב הקורא ב-4740, ואז שוטפים במחשב הזה אישורים שמורים, הפעלת RDP מנותקת שנשארה, ושירות או משימה עם סיסמה ישנה4740 נעילה התרחשהבדיקת שם מחשב הקוראזיהוי מחשב המקורשטיפת אישורים ישניםאישורים שמוריםהפעלת RDP מנותקת שנשארהשירות או משימה עם סיסמה ישנה

איור 8: מזהים את מקור הנעילה מ«שם מחשב הקורא» ב-4740, ושוטפים אישורים ישנים באותו מחשב.

יש דבר אחד להיזהר ממנו. 4625 נרשם במחשב שקיבל את ניסיון הכניסה. אם הסיבה היא כניסת רשת ממכונת המקור אל, למשל, שרת קבצים, אין 4625 ביומן Security של מכונת המקור עצמה; במקום זה העקבות נשארות ב-4625 בשרת היעד, או בחשבון דומיין ב-4776 (NTLM) או 4771 (כישלון קדם-אימות Kerberos) ב-DC.78 כש«אין דבר ביומן במכונת המקור», הולכים להסתכל בצד המקבל.

המכונה שבה נשארות עקבות הכישלוןכישלון כניסת רשת אינו נשאר במחשב המקור עצמו אלא נרשם ב-4625 של שרת היעד שקיבל את הניסיון, ובחשבון דומיין גם ב-4776 או 4771 בצד ה-DCכניסת רשתאימות חשבון דומייןמחשב מקור(אין בו 4625)שרת היעד4625 נרשםבקר דומיין4776(NTLM)/4771(Kerberos)

איור 9: 4625 נשאר בצד שקיבל. אם במחשב המקור אין דבר, בודקים את שרת היעד ואת צד ה-DC.

4.4. משפחת 4720 — יצירת חשבון, שינוי והוספה לקבוצה

אירועי ניהול החשבונות יוצרים רצף של מספרים סמוכים: 4720 (חשבון משתמש נוצר)17, 4726 (נמחק), 4738 (שונה), ובצד הקבוצה, חבר נוסף/הוסר. שימו לב שאיזה מזהה אירוע נורה לשינוי חברות בקבוצה תלוי בסוג הקבוצה. זה 4732/4733 לקבוצות מקומיות, 4728/4729 לקבוצות גלובליות, ו-4756/4757 לקבוצות אוניברסליות.14 Domain Admins היא קבוצה גלובלית, ולכן הוספה אליה מופיעה כ-4728 — אם מתריעים רק על 4732, מחמיצים בדיוק את האירוע שרוצים לתפוס ביותר. ביום-יום זה בעיקר תיעוד של עבודת תמיכה, אבל «משתמש רגיל נוסף פתאום לקבוצת מנהלים» או «נוצר חשבון שאף אחד לא מכיר» מצדיקים חקירה גם כמופע בודד. Microsoft עצמה נותנת הוספות בלתי צפויות של חברים לקבוצות מורשות כדוגמה לאירוע שכדאי להתריע עליו בנפרד.3

סוג הקבוצה ומזהה אירוע הוספת חברהוספת חבר לקבוצה מתפצלת לפי סוג הקבוצה למזהה אירוע, מקומית ב-4732, גלובלית ב-4728 ואוניברסלית ב-4756, ולכן הוספה ל-Domain Admins שהיא קבוצה גלובלית נראית ב-4728מקומיתגלובליתאוניברסליתהוספת חבר לקבוצהמה סוג הקבוצה?נרשם ב-4732נרשם ב-4728נרשם ב-4756הוספה ל-Domain Admins כאןניטור 4732 בלבד מחמיץ

איור 10: מזהה האירוע של הוספת חבר מתפצל לפי סוג הקבוצה. הוספה ל-Domain Admins היא 4728.

4.5. 4688 — יצירת תהליך. רישום שורת פקודה הוא מתג נפרד

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

כברירת מחדל, עם זאת, ארגומנטי שורת הפקודה אינם נרשמים. רק אחרי שמפעילים בנפרד את הגדרת Group Policy «כלול שורת פקודה באירועי יצירת תהליך» (תבניות ניהול > מערכת > ביקורת יצירת תהליך) השדה «שורת הפקודה של התהליך» ב-4688 מתמלא בארגומנטים.1112 זה למעשה חיוני למעקב אחרי הרצות חשודות כמו powershell -EncodedCommand ..., אבל מפעילים רק אחרי שמבינים את סיכון חשיפת הסודות שמתואר בפרק 7.

הקשר בין 4688 לרישום שורת פקודההפעלת ביקורת יצירת תהליך רושמת ב-4688 חשבון, נתיב קובץ הרצה ותהליך אב, אבל ארגומנטי שורת הפקודה נרשמים רק אחרי הפעלת Group Policy נפרדת, עם סיכון שסודות ייכנסו בטקסט גלויברירת מחדלהפעלת GPO נוספתהפעלת ביקורת יצירת תהליך4688 נרשםחשבון, נתיב, תהליך אברוצים גם ארגומנטים?שורת הפקודה ריקההארגומנטים נרשמיםסיכון שסודות בטקסט גלוי

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

4.6. 4698 — יצירת משימה מתוזמנת

4698, «משימה מתוזמנת נוצרה», רושם את שם המשימה ואת XML המלא של הגדרת המשימה (כולל הפקודה שהיא מריצה). משום שרישום משימה מתוזמנת הוא טכניקה נפוצה שנוזקה משתמשת בה כדי לשרוד הפעלה מחדש, Microsoft ממליצה לנטר אירועי יצירת משימות.15 גם בסביבות שמשתמשות במשימות מתוזמנות בכבדות לצרכים עסקיים, היצירה עצמה אינה דבר שקורה כל יום, ולכן רמת הרעש נשארת נמוכה יחסית.

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

איור 12: רישום משימה, אמצעי ההתמדה הנפוץ, נשאר ב-4698. אפשר לעקוב עד פקודת ההרצה ב-XML המלא.

עוד אחד שכדאי לזכור הוא 1102, «יומן הביקורת נוקה.» ניקוי יומן Security תמיד משאיר את האירוע הזה מאחור, כך שאם מוצאים ש«היומן ריק», אפשר להבחין בין אירוע לבין פעולה שגרתית.18

הפרדה של מחיקת יומן לפי 1102ניקוי יומן Security תמיד משאיר 1102, לכן כשהיומן ריק בודקים אם 1102 קיים כדי להפריד בין פעולת מחיקה לבין תאונה אפשריתישאיןהיומן ריקניקוי תמיד משאיר 1102יש 1102?הייתה פעולת מחיקהחושדים בתאונה

איור 13: ניקוי יומן Security תמיד משאיר 1102. יומן ריק מפרידים בין תאונה לפעולה לפי נוכחות 1102.

5. תכנון מיכל היומן — גודל מרבי ושמירה

לפני שמוסיפים עוד מדיניות ביקורת, בודקים את המיכל המקבל. ליומן Security יש גודל מרבי ומצב שמירה: במצב דריסה (התצורה הטיפוסית), ברגע שמגיעים לגודל המרבי, אירועים חדשים דורסים את הישנים ביותר. ולהפך, במצב שמירה (בלי דריסה), ברגע שהיומן מתמלא, האירועים החדשים הם אלה שמושלכים.10 כל אחת מההתנהגויות יכולה להשאיר אתכם עם «היומן שהייתי צריך פשוט אינו שם», לכן הבנת המצב הנוכחי קודמת.

# בדיקת כלי הקיבול של יומן Security: מצב שמירה, גודל מרבי, מספר הרשומות כעת
Get-WinEvent -ListLog Security |
    Select-Object LogName, LogMode, MaximumSizeInBytes, RecordCount

# כמה ימים באמת נשמרים עכשיו (חותמת הזמן של האירוע הישן ביותר)
Get-WinEvent -LogName Security -Oldest -MaxEvents 1 |
    Select-Object TimeCreated

Get-WinEvent -ListLog מחזיר יחד את תצורת היומן ואת מספר הרשומות.9 ההפרש בין «חותמת הזמן של האירוע הישן ביותר» לבין הזמן הנוכחי הוא טווח השמירה בפועל; אם זה נופל מהדרישה שלכם (כמה ימים אחורה רוצים להיות מסוגלים לחקור), מרחיבים את הגודל המרבי. אפשר להגדיר זאת ב-wevtutil sl Security /ms:<מספר בתים>, או לחלק דרך Group Policy.10

תכנון קיבולת בחישוב לאחור מימי שמירהבודקים תצורה ומספר ב-ListLog של Get-WinEvent, מחשבים את ימי השמירה בפועל מחותמת הזמן של האירוע הישן ביותר, ואם זה לא מספיק לימים שרוצים לחזור אחורה בחקירת אירוע מגדילים את הגודל המרבימספיקלא מספיקאישור תצורה ומספר ב-ListLogבדיקת זמן האירוע הישן ביותרחישוב ימי שמירה בפועלמספיק לדרישה?שומרים על הגודל הנוכחימגדילים את הגודל המרביהגדרה ב-wevtutil sl או GPO

איור 14: מאשרים כמה ימים באמת נשארים, ומחשבים לאחור את הגודל המרבי לפי מספר הימים שרוצים לחזור אחורה.

יש גם אפשרות אבטחה בשם «ביקורת: כבה את המערכת מיד אם לא ניתן לרשום ביקורות אבטחה» (ידועה בכינוי CrashOnAuditFail). כשהיא מופעלת, אם המערכת אינה יכולה לרשום אירוע ביקורת, היא נעצרת בשגיאת STOP C0000244. היא קיימת לדרישות אימות שלא יכולות להרשות לעצמן לאבד עקבות ביקורת, וכבויה כברירת מחדל. Microsoft עצמה מזהירה שזה יכול להפוך ל-DoS, כשתוקף מייצר במכוון שיטפון אירועים כדי לעצור שרת — לכן זה אינו דבר שמפעילים בקלות בסביבה קטנה-עד-בינונית טיפוסית.19

ההתנהגות כשהיומן מתמלאתצורת השמירה היא מצב דריסה או מצב בלי דריסה, ובמצב בלי דריסה כשאי אפשר לרשום ביקורת, אם CrashOnAuditFail שהוא הגדרה נפרדת מופעל המערכת נעצרת בשגיאת STOP C0000244מצב דריסהבלי דריסהכןיומן Security הגיע לגודל המרבימה תצורת השמירה?האירוע הישן ביותר נדרסאירועים חדשים מושלכיםבשניהם הסיבה ל«אין יומן»גם CrashOnAuditFail פעיל?עצירה ב-STOP C0000244

איור 15: תצורת השמירה היא דריסה או השמדה. CrashOnAuditFail הוא הגדרה נפרדת שעוצרת כשאי אפשר לרשום.

6. חקירה מעשית — סינון, Get-WinEvent וייצוא

6.1. צמצום במציג האירועים

לחקירה חד-פעמית, מציג האירועים מספיק. פותחים את יומן Security ומציינים מזהה אירוע (למשל 4625) וטווח זמן ב«סנן יומן נוכחי». תנאים שבודקים שוב ושוב שומרים כ«תצוגה מותאמת», כך שבפעם הבאה הם בלחיצה אחת. אם רוצים לצמצם לפי חשבון מסוים ולא רק לפי מזהה אירוע, אפשר לערוך את שאילתת ה-XPath ישירות בלשונית XML של תיבת הסינון.

6.2. חילוץ עם Get-WinEvent

לחקירות עם מספר רשומות גדול, כמה תנאים, או הרצות מתוזמנות, עוברים ל-Get-WinEvent של PowerShell. הנקודה המרכזית היא להשתמש ב--FilterHashtable, שמחיל את הסינון בצד השרת.9

בחירת אמצעי החקירהחקירה חד-פעמית מספיקה בסינון מציג האירועים, תנאי שחוזרים אליו שומרים בתצוגה מותאמת, וחקירה עם הרבה רשומות או כמה תנאים או הרצה מחזורית עוברת ל-Get-WinEventחד-פעמיתנאי שחוזרים אליוכמות / כמה תנאים / מחזוריאיזה סוג חקירה?צמצום במציג האירועיםשמירה בתצוגה מותאמתמעבר ל-Get-WinEventצמצום ב-FilterHashtable

איור 16: חד-פעמי במציג האירועים, חוזר — בתצוגה מותאמת, הרבה רשומות — ב-Get-WinEvent.

# שליפת כשלונות כניסה (4625) מ-24 השעות האחרונות
Get-WinEvent -FilterHashtable @{
    LogName   = 'Security'
    Id        = 4625
    StartTime = (Get-Date).AddDays(-1)
}

# לעצב «מי, מאיפה ולמה» לטבלה
Get-WinEvent -FilterHashtable @{
    LogName   = 'Security'
    Id        = 4625
    StartTime = (Get-Date).AddDays(-1)
} | ForEach-Object {
    $x = [xml]$_.ToXml()
    $d = @{}
    $x.Event.EventData.Data | ForEach-Object { $d[$_.Name] = $_.'#text' }
    [pscustomobject]@{
        Time      = $_.TimeCreated
        Account   = "$($d.TargetDomainName)\$($d.TargetUserName)"
        LogonType = $d.LogonType
        Source    = "$($d.WorkstationName) $($d.IpAddress)"
        Status    = $d.Status
        SubStatus = $d.SubStatus
    }
} | Group-Object Account, Status, SubStatus, Source |
    Sort-Object Count -Descending |
    Format-Table Count, Name -AutoSize

ברגע שיש את התבנית הזאת של שליפת EventData מייצוג ה-XML של אירוע, אפשר לעשות בה שימוש חוזר כפי שהיא ל-4624 או ל-4688. תכנון הסינון של Get-WinEvent — מתי להשתמש ב-FilterHashtable מול XPath, ואיך לתקן שאילתה איטית — מכוסה בפירוט ב«חקירת יומני אירועים בפועל עם Get-WinEvent — מהירות הסינון קובעת את זמן החקירה».

תבנית העיצוב ששולפת EventDataממירים אירוע שהתקבל ב-Get-WinEvent לייצוג XML, שולפים כל שדה מ-EventData ומעצבים לטבלה, ותבנית זו ניתנת לשימוש חוזר באותו אופן גם ב-4624 וגם ב-4688 ולא רק ב-4625שליפה ב-Get-WinEventהמרה לייצוג XMLשליפת EventDataעיצוב לטבלה וסיכוםאותו אופן גם ב-4624 ו-4688

איור 17: התבנית ששולפת EventData מה-XML ומעצבת טבלה ניתנת לשימוש חוזר גם כשמזהה האירוע משתנה.

6.3. ייצוא עם wevtutil

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

rem שימור יומן Security כולו כ-evtx
wevtutil epl Security C:\logs\security-20260801.evtx

rem ייצוא אירועי 4625 בלבד, מצומצמים ב-XPath
wevtutil epl Security C:\logs\security-4625.evtx /q:"*[System[(EventID=4625)]]"

קובץ .evtx שיוצא אפשר לנתח במכונה אחרת באותו אופן בדיוק, עם Get-WinEvent -Path C:\logs\security-20260801.evtx.9 ההרגל לשמר לפני שמנתחים הוא אותה גישה כמו «קודם מבטיחים את ה-dump» בחקירת קריסה (ראו «מבוא לאיסוף crash dump ב-Windows - WER/ProcDump/WinDbg»).

הזרימה של שימור ואחר כך ניתוחמייצאים את יומן Security של מכונת היעד לקובץ evtx ב-wevtutil epl כדי להבטיח אותו, ואז מנתחים באותו אופן במכונה אחרת עם Path של Get-WinEventמכונת היעד לחקירהשימור ל-evtx ב-wevtutil eplהוצאה למכונה אחרתניתוח ב-Get-WinEvent -Pathהבטחה לפני דריסה

איור 18: קודם משמרים, אחר כך מנתחים. אם הבטחתם ב-evtx אפשר לבדוק באותו אופן במכונה אחרת.

7. מלכודות — ארבע שקל לדרוך עליהן בשטח

(1) סודות נוחתים בשורת הפקודה של 4688. הפעלת רישום שורת פקודה מכניסה את הארגומנטים של כל תהליך ליומן Security בטקסט גלוי. Microsoft קובעת במפורש ש«כל משתמש עם גישת קריאה לאירועי אבטחה יוכל לקרוא את ארגומנטי שורת הפקודה של כל תהליך שנוצר בהצלחה. ארגומנטי שורת פקודה עלולים להכיל מידע רגיש או פרטי כמו סיסמאות.» 12 אם אפילו אפליקציה עסקית אחת או סקריפט אחד מריצים משהו כמו myapp.exe /user:admin /password:P@ssw0rd, זה סוד שנחשף לכל מי שיכול לצפות ביומן. לפני שמפעילים, ממפים מקומות שמעבירים סודות כארגומנטי שורת פקודה ומתקנים אותם. גם המקום שאליו מייצאים או מעבירים את היומן צריך טיפול באותה רמת סודיות.

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

איור 19: רישום שורת פקודה הוא «למפות, לתקן, ואז להפעיל». סדר הפוך הופך לסוד גלוי.

(2) מפעילים בלי לדעת מה קורה כשהיומן מתמלא. במצב דריסה ראיות ישנות נעלמות בשקט; במצב בלי דריסה אירועים חדשים מושלכים; ועם CrashOnAuditFail מופעל המערכת כולה נעצרת (פרק 5).1019 הגישה הנכונה היא לדעת איזו התנהגות בחרתם, ולשים מנגנון — ייצוא מתוזמן, או פלטפורמת איסוף יומנים — שאוסף את הנתונים לפני שהם נדרסים.

(3) בקרי דומיין ותחנות עבודה דורשים להסתכל ביומנים שונים. 4624/4625 נרשמים במכונה שאליה ניגשו.56 אימות אישורים לחשבון דומיין (4776 של NTLM), לעומת זאת, נרשם במכונה שיש לה סמכות על האישור — לחשבון דומיין זה ה-DC7 — וכישלון קדם-אימות Kerberos (4771) נרשם רק ב-DC.8 «אין 4625 בשרת הקבצים» אינו אומר «לא הייתה התקפה»; את התמונה המלאה מקבלים רק אחרי שמצליבים גם 4776/4771 ב-DC. ראו «NTLM ו-Kerberos בתרשימים — למה האימות נופל ל-NTLM» לאיך כל פרוטוקול אימות באמת זורם.

(4) סחיפת שעון שוברת הצלבה. סידור יומנים מכמה מכונות כדי לעקוב אחרי «באיזו תחנה יצא 4625 ממש לפני ה-4740 הזה» עובד רק אם השעון של כל מכונה מסכים. בסביבת דומיין, Kerberos עצמו מטיל חסם עליון על סחיפת שעון (5 דקות כברירת מחדל), ומעבר לו האימות עצמו מתחיל להיכשל.20 מבחינה חקירתית, סטייה של אפילו כמה שניות — שלא לדבר על חמש דקות — יכולה לגרום לקרוא לא נכון את סדר האירועים, לכן בדיקת מצב הסנכרון של w32time צריכה להיות הצעד הראשון ממש בהליך החקירה. זכרו גם שחותמות זמן של אירועים נשמרות ב-UTC ומוצגות לפי אזור הזמן של מכונת הצפייה, לכן ממירים אזורי זמן כשקוראים evtx שהובא מאתר בחו״ל או משרת שמוגדר ל-UTC.

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

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

8. סיכום

  • למדיניות ביקורת יש שתי מערכות, «בסיסית» ו«מתקדמת», וערבוב שלהן מייצר תוצאות בלתי צפויות. מאחדים לצד המתקדם, בודקים את המצב הנוכחי ב-auditpol /get /category:*, ומתכננים משם.
  • «להפעיל הכול» הורג את החקירה ברעש ובניפוח. מתחילים מהמלצות הבסיס של Microsoft ועובדים דרך טבלת ההחלטה בפרק 3, שנבנתה סביב כניסה, ניהול חשבונות ויצירת תהליך.
  • 4624 נקרא לפי סוג כניסה, 4625 לפי קוד Status/Sub Status, 4740 לפי Caller Computer Name, ו-4688 לפי תהליך אב ושורת פקודה — לכל אירוע יש שדה מסוים שצריך לבדוק.
  • מיכל היומן (גודל מרבי ומצב שמירה) הוא חצי מתכנון הביקורת. בודקים כמה ימים באמת נשמרים, מתאימים גודל בחישוב לאחור מהדרישה, ומייצאים או אוספים לפני דריסה.
  • בודקים את סיכון חשיפת הסודות לפני הפעלת רישום שורת פקודה ל-4688. איפה כל אירוע נרשם, וסנכרון שעון, הם תנאים מוקדמים להצלבה בין מכונות.
  • מתחילים חקירה בסינון של מציג האירועים; עוברים ל-Get-WinEvent -FilterHashtable לכל דבר שחוזר; משמרים ב-wevtutil epl. לא שוברים את הסדר של «קודם משמרים, אחר כך מנתחים».

מאמרים קשורים

תחומי ייעוץ קשורים

KomuraSoft LLC מטפלת בייעוץ על מדיניות ביקורת ותכנון יומנים בסביבת Windows, בחקירת «מתי, מי ומה» על בסיס יומן האירועים, ובניתוח סיבות לתקלות שקשורות לאימות ולביקורת באפליקציות עסקיות. בסדר להתחיל משלב «אמרו לי להסתכל ביומנים, ואני לא יודע מאיפה להתחיל».

מקורות

  1. Microsoft Learn, Advanced security auditing FAQ. על ההבדל בין מדיניות ביקורת בסיסית (תשע ההגדרות תחת מדיניות מקומית) למדיניות ביקורת מתקדמת; על כך שהפעלת קטגוריה בסיסית אחת שקולה להפעלת כל תת-הקטגוריות המתאימות; על כך ששתי המערכות אינן תואמות, ושימוש בשתיהן משאיר תוצאות ביקורת במצב בלתי צפוי ולכן אסור לערבב אותן; על כך שהחלת הצד המתקדם דרך Group Policy מנקה הגדרות ביקורת קיימות; על הצורך להפעיל «ביקורת: אכיפת הגדרות תת-קטגוריית מדיניות ביקורת כדי לדרוס הגדרות קטגוריית מדיניות ביקורת»; ועל מזעור נפח האירועים בזיהוי וצמצום למשאבים, לפעילויות ולמשתמשים שחשובים.  2 3 4

  2. Microsoft Learn, auditpol. על כך שפקודת auditpol יכולה להציג (/get), להגדיר (/set), לגבות ל-CSV (/backup), לשחזר (/restore) ולנקות (/clear) את מדיניות הביקורת של המערכת.  2

  3. Microsoft Learn, System Audit Policy recommendations. על טבלת ערכי ברירת המחדל של Windows, המלצות בסיס והמלצות מחמירות לפי תחנת עבודה ושרת; על כך שההמלצות הן רק נקודת פתיחה, שיש לבחון ולבדוק מול האיומים וסובלנות הסיכון של כל ארגון; על כך שתת-קטגוריית הכניסה מופעלת להצלחה ולכישלון כברירת מחדל מ-Windows 10 1809 ואילך; על כך שניטור תחנות עבודה חשוב כמו ניטור שרתים; על דוגמאות לאירועים שכדאי להתריע עליהם בנפרד, כמו הוספות בלתי צפויות של חברים לקבוצות מורשות; ועל זיהוי קפיצות בכניסות שנכשלו בהשוואה לבסיס.  2 3 4

  4. Microsoft Learn, Audit: Force audit policy subcategory settings (Windows Vista or later) to override audit policy category settings. על היכולת לנהל ביקורת במדויק על פני יותר מ-40 תת-קטגוריות ביקורת; על כך שהשארת ההגדרה הזאת מופעלת היא שיטה מומלצת, עם ערך ברירת מחדל Enabled ללקוחות, לשרתי חברים ולבקרי דומיין כאחד; ועל האזהרה שהגדרות שמייצרות נפח אירועים עצום, כמו הפעלת ביקורת הצלחה לכל תת-קטגוריית השימוש בהרשאות, מקשות למצוא ערכים אחרים ביומן האבטחה ויכולות לפגוע משמעותית בביצועים.  2 3 4

  5. Microsoft Learn, 4624(S): An account was successfully logged on. על כך ש-4624 נרשם במכונה שאליה ניגשו בזמן יצירת הפעלת כניסה; על רשימת סוגי הכניסה (2 = Interactive, 3 = Network, 4 = Batch, 5 = Service, 7 = Unlock, 8 = NetworkCleartext, 9 = NewCredentials, 10 = RemoteInteractive, 11 = CachedInteractive); על דגל Elevated Token; על חבילת האימות (NTLM/Kerberos/Negotiate) ועל Package Name של NTLM (NTLM V1/V2/LM); ועל הצלבה דרך Logon ID עם אירועים כמו 4672.  2 3 4 5

  6. Microsoft Learn, 4625(F): An account failed to log on. על כך ש-4625 נרשם במחשב שבו התרחש ניסיון הכניסה (לניסיון בתחנת משתמש, אותה תחנה); על כך שתת-הקטגוריות הן נעילת חשבון וכניסה; על משמעות קודי Status/Sub Status (0xC0000064 = שם משתמש שגוי, 0xC000006A = סיסמה שגויה, 0xC000006D = שם משתמש או מידע אימות שגויים, 0xC000006F = מחוץ לשעות הכניסה המותרות, 0xC0000070 = תחנת עבודה אסורה, 0xC0000072 = חשבון מושבת, 0xC000015B = סוג כניסה אסור, 0xC0000193 = חשבון שפג תוקפו, 0xC0000234 = נעול); ועל כך שמופעים חוזרים של 0xC0000064 עלולים להצביע על התקפת מניית חשבונות.  2 3 4 5

  7. Microsoft Learn, 4776(S, F): The computer attempted to validate the credentials for an account. על כך ש-4776 נרשם בכל אימות אישורים שמבוצע לאימות NTLM; על כך שהוא נרשם רק במחשב שיש לו סמכות על האישור — בקר הדומיין לחשבון דומיין, או המחשב המקומי לחשבון מקומי; ועל כך שנרשמים גם הצלחה וגם כישלון.  2 3 4

  8. Microsoft Learn, 4771(F): Kerberos pre-authentication failed. על כך ש-4771 נרשם בכל כישלון של ה-KDC להנפיק TGT של Kerberos (סיסמה שגויה, פקיעה וכו’); ועל כך שהאירוע הזה נוצר רק בבקרי דומיין.  2 3 4

  9. Microsoft Learn, Get-WinEvent (Microsoft.PowerShell.Diagnostics). על שליפת תצורת יומן (LogMode, MaximumSizeInBytes, RecordCount) דרך -ListLog; על סינון יעיל דרך -FilterHashtable שמוגדר כ-hashtable של LogName, Id, StartTime וכן הלאה; על קריאת קובץ .evtx שמור דרך -Path; ועל שליפת אירועים מהישן ביותר ולפי מספר דרך -Oldest / -MaxEvents.  2 3 4

  10. Microsoft Learn, wevtutil. על הגדרת גודל מרבי (/ms) ומצב שמירה (/rt) דרך set-log (sl); על כך שמצב שמירה true אומר שאירועים קיימים נשמרים ואירועים חדשים מושלכים ברגע שהיומן מלא, ואילו false אומר שאירועים חדשים דורסים את הישנים ביותר הקיימים; על ייצוא יומן אירועים לקובץ דרך export-log (epl), עם אפשרות /q לצמצום בשאילתת XPath; ועל הרצת שאילתה דרך query-events (qe).  2 3 4 5

  11. Microsoft Learn, 4688(S): A new process has been created. על כך ש-4688 נרשם בכל התחלת תהליך חדש; על כך שהוא כולל את חשבון היוצר, את נתיב קובץ ההרצה של התהליך החדש, את שם תהליך היוצר (האב), ואת סוג הגבהת האסימון; ועל כך שהשדה Process Command Line ריק כברירת מחדל, ומתמלא רק אחרי הפעלת הגדרת Group Policy «כלול שורת פקודה באירועי יצירת תהליך».  2 3

  12. Microsoft Learn, Command line process auditing. על כך שרישום שורת פקודה דורש גם ביקורת יצירת תהליך במדיניות הביקורת המתקדמת וגם «כלול שורת פקודה באירועי יצירת תהליך» (תבניות ניהול > מערכת > ביקורת יצירת תהליך, לא מוגדר כברירת מחדל); על האזהרה שברגע שההגדרה מופעלת, מידע שורת הפקודה של כל תהליך נרשם ליומן אירועי האבטחה בטקסט גלוי, וכל משתמש עם גישת קריאה לאירועי אבטחה יוכל לקרוא את ארגומנטי שורת הפקודה של כל תהליך שנוצר בהצלחה, שעשויים להכיל מידע רגיש כמו סיסמאות; ועל כך שמדיניות ביקורת מתקדמת שנדרסת בהגדרות בסיסיות מייצרת אירוע 4719, שהגדרת «האכיפה» מונעת.  2 3 4

  13. Microsoft Learn, Audit Account Lockout. על כך שתת-קטגוריית נעילת חשבון מבקרת ניסיונות כניסה שנכשלו מול חשבון שנעול כרגע; על כך שהאירוע שנוצר הוא 4625(F); על כך שלתת-קטגוריה הזאת אין אירועי הצלחה, ולכן אין תועלת בהפעלת ביקורת הצלחה עליה; ועל כך שביקורת כישלון מומלצת בכל סוגי המחשבים. 

  14. Microsoft Learn, Audit Security Group Management. על כך שתת-קטגוריה זו מבקרת יצירה, שינוי ומחיקה של קבוצות אבטחה, והוספות והסרות של חברים; על כך שמזהי האירוע להוספה/הסרה של חבר נבדלים לפי סוג הקבוצה — 4732/4733 לקבוצות מקומיות, 4728/4729 לקבוצות גלובליות, ו-4756/4757 לקבוצות אוניברסליות; על כך שיש אירועים ייעודיים לקבוצות דומיין כמו 4728; ועל כך שלתת-קטגוריה הזאת אין אירועי כישלון, ולכן ביקורת הצלחה מומלצת בכל סוגי המחשבים.  2

  15. Microsoft Learn, 4698(S): A scheduled task was created. על כך ש-4698 נרשם בכל משימה מתוזמנת שנוצרה; על כך שתת-הקטגוריה היא אירועי גישה אחרים לאובייקטים; על כך שהוא רושם את שם המשימה ואת XML המלא של הגדרת המשימה, כולל הפקודה להרצה; ועל כך שניטור אירועי יצירת משימות, במיוחד במכונות חשובות, מומלץ כי נוזקה נוהגת להשתמש במשימות מתוזמנות כדי להתמיד מעבר להפעלה מחדש.  2

  16. Microsoft Learn, 4740(S): A user account was locked out. על כך ש-4740 נרשם בכל נעילת חשבון משתמש; על כך שתת-הקטגוריה היא ניהול חשבונות משתמש; ועל כך שהשדה Caller Computer Name רושם את שם המחשב שממנו יצא ניסיון הכניסה שגרם לנעילה. 

  17. Microsoft Learn, 4720(S): A user account was created. על כך ש-4720 נרשם בבקרי דומיין, בשרתי חברים ובתחנות עבודה בכל אובייקט משתמש חדש שנוצר; ועל כך שתת-הקטגוריה היא ניהול חשבונות משתמש. 

  18. Microsoft Learn, 1102(S): The audit log was cleared. על כך שאירוע 1102 נרשם בכל ניקוי של יומן ביקורת האבטחה של Windows. 

  19. Microsoft Learn, Audit: Shut down system immediately if unable to log security audits. על כך שהמערכת נעצרת בהודעת STOP של C0000244 {Audit Failed} אם ההגדרה הזאת מופעלת ואי אפשר לרשום ביקורות אבטחה; על כך שערך ברירת המחדל הוא Disabled; על כך שזה עלול להפוך ל-DoS דרך יצירה מכוונת של נפח גדול של אירועי אבטחה כדי לכפות כיבוי; ועל הסיכון שנתוני אפליקציה יהפכו לבלתי שמישים בגלל עצירה פתאומית.  2

  20. Microsoft Learn, Maximum tolerance for computer clock synchronization. על כך ש-Kerberos v5 משתמש בחותמות זמן כהגנה מפני התקפות replay, ולכן מוגדרת סובלנות מרבית (5 דקות גם כברירת מחדל וגם כהמלצה) לסחיפת שעון בין לקוח לבקר דומיין, שמעבר לה חותמת זמן כבר אינה נחשבת אותנטית. 

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

העמודים האלה ממקמים את הנושא בהקשר רחב יותר של שירותים והחלטות.

המאמר קשור ישירות לשירותים הבאים.

שאלות נפוצות

שאלות נפוצות בפניות בנושא המאמר.

לא הגדרנו שום מדיניות ביקורת, אז למה 4624 ו-4625 כבר מופיעים ביומן Security?
כי ב-Windows יש תת-קטגוריות ביקורת שמופעלות כברירת מחדל. תת-הקטגוריה «כניסה» (Logon), למשל, מופעלת להצלחה ולכישלון יחד מאז Windows 10 גרסה 1809, ולכן 4624 (הצלחה) ו-4625 (כישלון) נרשמים גם בלי שהגדרתם דבר. עם ברירת המחדל כפי שהיא, עם זאת, רבים מהאירועים שבאמת רוצים בחקירה — אימות אישורים (4776) או יצירת תהליך (4688), למשל — אינם נרשמים. אפשר לבדוק מה מופעל בסביבה שלכם ב-`auditpol /get /category:*`. משם, הפרקטיקה הסטנדרטית היא להפעיל במפורש את תת-הקטגוריות החסרות בצד מדיניות הביקורת המתקדמת.
אני רוצה לחקור כניסה שנכשלה, אבל איני מוצא את אירוע 4625 ביומן Security של שרת היעד. איפה להסתכל?
קודם מאשרים את העיקרון: 4625 נרשם ב«מחשב שבו ניסו להיכנס». כניסה שנכשלה בתחנת המשתמש — זו התחנה; ניסיון גישה שנכשל מול שרת קבצים — זה שרת הקבצים. אחר כך בודקים ב-`auditpol /get /category:*` אם ביקורת כישלון מופעלת לתת-הקטגוריה «כניסה». בחשבונות דומיין העקבות מופיעות לעיתים קרובות באימות אישורים (4776) או בכישלון קדם-אימות Kerberos (4771) בבקר הדומיין, וכשאי אפשר לנעוץ איזו תחנה מעורבת, לרוב מהיר יותר להתחיל מצד ה-DC. אם עדיין אין דבר, בודקים אם אירועים ישנים כבר נדרסו (משווים את הגודל המרבי של היומן לחותמת הזמן של האירוע הישן ביותר).
האם להפעיל רישום שורת פקודה ליצירת תהליך (4688)?
הערך החקירתי גבוה מאוד, אבל זו הגדרה שמפעילים רק אחרי שמבינים את הסיכון. ברגע שהיא מופעלת, ארגומנטי שורת הפקודה של כל תהליך נרשמים ביומן Security בטקסט גלוי. אם אפילו סקריפט אחד או אפליקציה עסקית אחת מעבירים סיסמה או מפתח API כארגומנט, הסוד הזה נראה לכל מי שיכול לקרוא את יומן Security. Microsoft עצמה מתעדת את האזהרה הזאת במפורש. הסדר המומלץ הוא קודם לבדוק אם הסקריפטים שלכם מעבירים סודות כארגומנטים, לתקן כל מקום שכן, ורק אז להפעיל.
מה צריך להיות הגודל המרבי של יומן Security?
הגישה הנכונה היא לחשב לאחור מ«כמה ימים רוצים להשאיר בהישג יד», לא לבחור מספר אחד שמתאים לכולם. את ההגדרה הנוכחית ואת ההתנהגות בפועל בודקים ב-`Get-WinEvent -ListLog Security`; ההפרש בין חותמת הזמן של האירוע הישן ביותר לבין הזמן הנוכחי הוא «כמה ימים באמת נשמרים עכשיו». הוספת תת-קטגוריות ביקורת מגדילה את נפח האירועים, לכן תמיד בודקים מחדש את טווח השמירה בפועל אחרי שינוי הגדרות. בטיפול באירוע לא נדיר שצריך יומנים משבועות או חודשים אחורה, ולכן מרגיע לייצא את היומן באופן קבוע לפני שהוא נדרס, או לאסוף אותו למכונה נפרדת במנגנון איסוף יומנים.
איך חוקרים את סיבת נעילת חשבון (4740)?
הרמז הראשון הוא השדה «שם מחשב הקורא (Caller Computer Name)» באירוע 4740. הוא רושם את המחשב שממנו יצא ניסיון הכניסה שנכשל והפעיל את הנעילה. שימו לב, עם זאת, שרשומת הכישלון עצמה (4625) נשארת בצד שקיבל את ניסיון הכניסה, לא במכונת המקור. אם המקור הוא כניסת רשת, עוקבים לפי סדר הזמן דרך 4625 בשרת היעד, או בחשבון דומיין דרך 4776/4771 בבקר הדומיין. אחרי שזיהיתם את מכונת המקור, בודקים בה כל דבר שעדיין מחזיק אישורים ישנים מלפני החלפת הסיסמה — אישורים שמורים, הפעלת שולחן עבודה מרוחק מנותקת שנשארה תלויה, או שירות ומשימה מתוזמנת שהוגדרו עם הסיסמה הישנה. אם הנעילות חוזרות, בודקים גם אם סנכרון השעון נסחף.

פרופיל הכותב

עמוד היכרות עם כותב המאמר.

Go Komura

מנהל KomuraSoft LLC

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

קישורים ציבוריים

חזרה לבלוג