PracticU

פקודת Get-WinEvent
חלק 4 - Filter

בלי כתוביותעם כתוביות
PracticU › קורס PowerShell › פקודת Get-WinEvent חלק 4 - Filter
מילון מושגים:
XML - שפת סימון לייצוג נתונים מובְנים בעזרת תגיות, המשמשת להחלפת מידע בין מערכות ולקובצי הגדרות.
DLL - קובץ ספרייה ב-Windows המכיל קוד ופונקציות שתוכנות שונות יכולות לטעון ולהשתמש בהן במשותף.
.NET - פלטפורמת פיתוח של מיקרוסופט להרצת יישומים בשפות כמו C#, הכוללת ספריות וסביבת ריצה משותפות.
לוג - רישום מתועד של אירועים ופעולות שמתרחשים במערכת או בתוכנה, המשמש למעקב ולאיתור תקלות.
Sysmon - כלי של מיקרוסופט שמתעד פעילות מפורטת במערכת Windows ביומן האירועים, לצורכי ניטור ואבחון אבטחה.
אירוע - התרחשות שהמערכת מזהה ויכולה להגיב לה, כמו לחיצת עכבר, הקשה או סיום פעולה.
CLR - סביבת הריצה של .NET שמריצה את הקוד, מנהלת את הזיכרון ומטפלת בשגיאות (Common Language Runtime).
תחביר - אוסף הכללים של שפת תכנות הקובעים כיצד לכתוב קוד תקין. הפרתם גורמת לשגיאת תחביר.

פקודת Get-WinEvent חלק 4 - Filter
תרגול מלא של סינון XML: איתור תוכנות שטוענות DLL-ים של .NET מתוך יומן Sysmon, כולל התמודדות עם מקרה שבו הפילטר "לא מוצא כלום".
השלבים העיקריים
1. בניית שאילתת XML: מגדירים משתנה (למשל $query) עם פילטר שמחפש אירוע מספר 7 (טעינת DLL) מתוך יומן Sysmon, עם שם ה-DLL הרצוי (mscore.dll, clr.dll - סימן ל-.NET), ומכניסים אותו ל-Get-WinEvent.
2. מעבר שורה-שורה: הפלט מועבר ל-ForEach-Object שמדפיס כל אירוע מתאים (אפשר גם לבצע פעולות אחרות במקום הדפסה).
3. כשהפילטר לא מחזיר כלום: אם הפקודה מחזירה "No events were found", הסיבה היא לרוב בנתונים ולא בתחביר - כדאי לבדוק זאת גם בממשק הגרפי (Filter לפי Event ID) ולפשט את הפילטר שלב אחר שלב.
4. הפעלת תיעוד DLL ב-Sysmon: טעינת DLL לא מתועדת כברירת מחדל. בקובץ ההגדרות של Sysmon צריך להחליף בחלק ImageLoad את include ל-exclude (ריק), ואז לטעון את ההגדרות החדשות מחדש כדי שיתחיל לתעד אירועי טעינת DLL.
5. אימות: מריצים תוכנה שמשתמשת ב-.NET, מרעננים את היומן, ורואים שאירוע מספר 7 מופיע.
6. הרצת הפילטר הסופי: עם התיעוד פעיל, השאילתה המקורית מחזירה רק את האירועים הרלוונטיים - במקרה המודגם, רק שתי תוכנות שטוענות את ה-DLL המבוקש.
שימו לב
תחביר הפילטר ב-XML מורכב ולא תמיד זכור בעל-פה. אפשר להיעזר בחיפוש או בכלי AI לעיצוב השאילתה הנכונה.
הסטודנט מבין עכשיו למה פילטר "ריק" לא בהכרח שגיאת תחביר, ויודע להפעיל תיעוד DLL ב-Sysmon כתנאי מקדים לסינון כזה.
השיעור הבא בקורס: פקודת Get-WinEvent עם סינון דינמי ב-Powershell 7

פרקי ההרצאה: פקודת Get-WinEvent חלק 4 - Filter

  1. 00:00

    סינון עם XML והמשתנה query

  2. 00:41

    הרצת הדוגמה על שרת תרגול

  3. 01:19

    זיהוי טעינות DLL של .NET

  4. 01:59

    הצגת יומנים מוחבאים ב-Event Viewer

  5. 03:30

    טיפול בשגיאת No events found

תמלול ההרצאה: פקודת Get-WinEvent חלק 4 - Filter

הטקסט המלא של הדקות הראשונות בהרצאה «פקודת Get-WinEvent חלק 4 - Filter» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    שלום לכולם. בהרצאה הזו אנחנו נלמד לעשות פילטר בעזרת XML על Event Viewer, על יומן האירועים של Windows. אנחנו קודם כל מכריזים על משתנה dollar query.

  2. 00:15

    יכלנו לתת לו כל שם שרוצים. כותבים את הפילטר שאנחנו רוצים בצורה מסוימת שצריך להכיר אותה, ואז מכניסים את המשתנה הזה לתוך הפקודה של Get-WindowsEvents. אחרי שאנחנו לוקחים את כל האירועים שמתאימים לפילטר, אנחנו עוברים אירוע אירוע, for each object, עוברים שורה שורה, ועבור כל שורה מה אנחנו עושים כאן בדוגמה?

  3. 00:41

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

  4. 00:51

    קודם כל אני מעתיק את ה-dollar query, נכנס ל-remote desktop בשרת שלהם. התחברתי ב-VPN לשרתים של Hack The Box ועושה דוגמה על השרת שלהם. שימו לב איזה query פה.

  5. 01:05

    הוא מסנן רק אירועים מספר שבע, event ID שבע, מתוך יומן של Sysmon, שאירוע מספר שבע זה טעינת DLL ואיזה DLL אנחנו רוצים, mscore.dll ו-clr.dll. זאת אומרת טעינה של .NET.

  6. 01:21

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

  7. 01:36

    כמובן שזה אותו דבר גם ב-Windows 11, גם ב-Windows 7, גם ב-Windows 8. כל הווינדוסים זה עובד אותו דבר. יש יומן אירועים גם בגרפי וגם ב-PowerShell. אנחנו כרגע מתמקדים ב-PowerShell, אבל חשוב שתזכרו שאפשר להיכנס לזה גם בממשק גרפי.

  8. 01:55

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

  9. 02:11

    אפשר לבוא פה ב-view, ב-show analytics and debug logs, להוסיף עוד יומני אירועים. הנה, הוא מוסיף לי את זה בממשק הגרפי, אבל ב-Sysmon אני לא רואה אותם. כנראה שאין ב-Sysmon עוד יומני אירועים.

  10. 02:24

    הנה ב-stop port יש עוד יומני אירועים, אתם רואים? והיומנים האלו הם לא פעילים עד שאני לא אעשה right click enable log. זאת אומרת הוא גם מוחבא וגם לא פעיל.

  11. 02:36

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

  12. 02:50

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

  13. 03:01

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

  14. 03:10

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

  15. 03:27

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

  16. 03:40

    מריצים ומקבלים שגיאה. No events were found. אין אירועים שמתאימים לפילטר שלי. קודם כל זה לא שגיאת כתיב, זה לא איזו שגיאה בפקודה.

  17. 03:51

    הוא פשוט לא רואה event-ים, no events. זאת אומרת הפילטר לא טוב. בואו ננסה לבדוק מה לא טוב בפילטר שלי. נעשה אותו יותר פשוט. ננסה להוריד את כל ה-andים האלו ולראות רק אירוע מספר שבע.

לקורס המלא: קורס PowerShell אונליין

ההרצאה הקודמת: פקודת Get-WinEvent - חלק 3 - XML

ההרצאה הבאה: פקודת Get-WinEvent - עם סינון דינמי ב-Powershell 7

הרצאות קשורות מקורסים אחרים

  • map & filter
  • Get Requests
  • Angular 4 - Filter and Pipe
  • פקודת Select

קורסים נוספים במסלול

  • קורס AWS - ניהול מכונה וירטואלית בענן
  • קורס Terraform - DevOps - Azure & AWS
  • קורס קוברנטיקס - Kubernetes
  • קורס Docker - עם Swarm Cluster
  • קורס DevOps - Ansible
  • קורס Git ו-GitHub עם Visual Studio