PracticU

Meterpreter EXE vs Windows Defender

בלי כתוביותעם כתוביות
PracticU › קורס סייבר למתחילים - Hacking - בדיקות חוסן תשתיתי ופריצה ל-Windows 10/11 - קורס זה נדרש למבחן ההסמכה היוקרתי OSCP › Meterpreter EXE vs Windows Defender
מילון מושגים:
חולשה - פגם או חולשה במערכת או בתוכנה שעלול לאפשר פגיעה באבטחה אם לא יטופל.
אנטי וירוס - תוכנה שמזהה, חוסמת ומסירה תוכנות זדוניות מהמחשב, ומנטרת פעילות חשודה.
וירוס - תוכנה זדונית שמשכפלת את עצמה ומתפשטת ממחשב למחשב, ועלולה לפגוע בקבצים או בפעולת המערכת.
PowerShell - סביבת שורת פקודה ושפת סקריפטים של מיקרוסופט לניהול אוטומטי של מערכות Windows ושירותים.
הקסדצימלי - שיטת ספירה בבסיס 16, המשתמשת בספרות 0-9 ובאותיות A-F, ונפוצה לייצוג ערכים בינאריים בקצרה.
סשן - פרק זמן של פעילות רציפה בין משתמש למערכת, שבו נשמר מידע על מצבו, למשל לאחר התחברות לאתר.
ביט - יחידת המידע הקטנה ביותר במחשב, שערכה 0 או 1. שמונה ביטים מרכיבים בייט.
קרנל - ליבת מערכת ההפעלה, שמנהלת את החומרה, הזיכרון והתהליכים ומתווכת בינם לבין התוכנות.

Meterpreter EXE vs Windows Defender
בשיעור זה מתבצע חקר ממוקד של הפגיעות שבקובץ ההרצה שנבנה: הקובץ מחולק לחתיכות זעירות, סריקת האנטי וירוס מצביעה על החתיכה הבעייתית, מוזהה הבית המדויק שמפריע, ומתגלה בסוף שהבעיה הגדולה אינה בקובץ אלא בשלב השני של התקשורת. השיעור מדגים גם את ההבדל בין זיהוי חתימות לזיהוי התנהגות.
נושאי הסיכום המוצגים בשיעור:
1. הכנה ב PowerShell: הסקריפט שמחלק את הקובץ כתוב ב PowerShell, והרצתו דורשת הרשאות מנהל והגדרת מדיניות הרצת סקריפטים למצב לא מוגבל, שכן כברירת מחדל ווינדוס אוסרת הרצת סקריפטים. אחר כך מייבאים את המודול.
2. חלוקת הקובץ לחתיכות: הסקריפט לוקח את קובץ ההרצה, שגודלו כשבעה קילובייט, וחותך אותו כל ארבעה בייטים לקובץ נפרד, ובסך הכל כ 1800 קבצים זעירים בתיקייה ייעודית. כל קובץ מחזיק את הבייטים מאפס עד מספרו.
3. הסריקה שמצביעה על המיקום: מריצים סריקה על התיקייה והאנטי וירוס מדווח על סוס טרויאני בקובץ אחד בלבד, הקובץ שמכסה את הבייטים 6900 עד 6904. כל הקבצים הבאים כוללים את מה שלפניהם, ולכן הבעיה נמצאת בתוך אותם ארבעה בייטים.
4. קריאת התוכן לזיכרון: ב PowerShell קוראים את כל הבייטים של הקובץ אל משתנה. המשתנה מכיל את כל המספרים, ואפשר להציג בית ספציפי לפי אינדקס שלו, ולהציגו בעשרוני או בהקסדצימלי, למשל 86 עשרוני הוא 56 הקסדצימלי.
5. הדפסת ארבעת הבייטים החשודים: בעזרת לולאה מדפיסים את הבייטים 6901 עד 6904 בהקסדצימלי, עם ריפוד אפסים משמאל כדי שלכל בית יהיו שתי ספרות. מתקבל הרצף 56 FF D5 20.
6. ניסוי איפוס בזיכרון: מאפסים את ארבעת הבייטים בתוך המשתנה, בלי לשנות את גודל הקובץ, וכותבים את כל הבייטים אל קובץ חדש. סריקה של הקובץ החדש אינה מוצאת דבר, כלומר אחד מארבעת הבייטים הוא שמפריע.
7. צמצום החיפוש בחצייה: חוזרים וקוראים את הקובץ, מאפסים רק את שניים הראשונים וסורקים, ואז רק את שניים האחרונים, ולבסוף בית בודד. בכל מקרה האנטי וירוס אינו תופס. המסקנה המפתיעה, די באיפוס של בית אחד מהארבעה כדי לשבור את החתימה.
8. הבנת הפקודה שנפגעה: מחפשים את הרצף בעורך ההקסדצימלי ומגלים שהוא מופיע פעם אחת, בסוף הקובץ. בדיסאסמבלר רואים ש FFD5 היא הפקודה האחרונה, וה 56 שייך לפקודה שלפניה. מחליטים לאפס רק את הפקודה האחרונה ולא לגעת בשאר, כדי לא להרוס פקודה נוספת.
9. בדיקת הקובץ המתוקן: הקובץ החדש נסרק ואינו מזוהה, רץ ופותח חיבור אל המאזין, וניתן להיכנס אל הסשן ולהריץ פקודות. כלומר הפקודה האחרונה שאופסה לא הייתה חיונית לפעולת ה payload.
10. הפתעה עם ההגנה בזמן אמת: מפעילים את ההגנה בזמן אמת של Defender ללא בדיקות ענן, מריצים את הקובץ, והפעם אין התרעה והסשן נפתח. כלומר הבעיה לא הייתה בקובץ עצמו אחרי התיקון אלא בשלב השני, תוכן שה payload שולח דרך החיבור בטקסט גלוי, שהאנטי וירוס מזהה בזיכרון.
11. הפתרון לשלב השני, קידוד: בהגדרות המתקדמות של המאזין ניתן להפעיל קידוד של השלב השני ולבחור מתוך רשימת המקודדים של 64 ביט. קידוד אינו הצפנה עם מפתח, אלא הצגת התוכן בצורה אחרת, למשל בייצוג בסיס 64, כך שהאנטי וירוס אינו מזהה אותו בזיכרון. לאחר הקידוד הסשן נפתח בלי שום התרעה.
12. זיהוי התנהגות ולא רק חתימות: האנטי וירוס עוקב אחר פניות אל הליבה של מערכת ההפעלה. פקודות מסוכנות כמו העלאת הרשאות לרמת המערכת עצמה גורמות לו לדווח על התנהגות חשודה, לא על וירוס שמצא, ולמחוק את הקובץ. כך מודגם ההבדל בין זיהוי חתימות לזיהוי התנהגות.
13. בדיקה רחבה מול אנטי וירוסים אחרים: הגרסה המתוקנת נשלחת לשירות בדיקה מרובה מנועים, ו 19 מתוך 26 מנועים מזהים אותה. הם בודקים לא רק את הקובץ אלא גם את התנהגותו, ומכאן שהעברת שלב החתימות אינה מספיקה.
14. שני שלבי ההתחמקות והכיוון הבא: השלב הראשון, חתימות, נפתר בחלוקה לחתיכות ואיפוס בית. השלב השני, התנהגות, מחייב לזהות שהקוד רץ בתוך מכונה וירטואלית או ארגז חול ולהתנהג בשקט כשכן המקרה. כיוון שלא מוסיפים קוד ישירות אל שפת מכונה, ה payload יעוטף ב wrapper שכתוב בשפה נוחה, וזה נושא השיעור הבא.
בשיעור זה חולק קובץ ההרצה לחתיכות זעירות עד לזיהוי הבית המדויק שמפריע, הוסרה הפקודה האחרונה באיפוס בית, הובהר שהזיהוי האמיתי בא משלב השני בטקסט גלוי וטופל בקידוד, והודגם זיהוי התנהגות של האנטי וירוס גם מול עשרות מנועי סריקה אחרים.
בשיעור הבא נעסוק בנושא התקנה של Visual Studio.
SR12503HE

פרקי ההרצאה: Meterpreter EXE vs Windows Defender

  1. 00:00

    פיצול הקובץ לחלקים קטנים

  2. 00:57

    הגדרת Execution Policy

  3. 01:34

    חיתוך הקובץ לחלקים קטנים

  4. 02:30

    סריקת הקבצים הקטנים

  5. 03:08

    איתור הבייטים הבעייתיים

  6. 04:06

    קריאת בייטים ב-PowerShell

  7. 05:06

    הצגת הערכים בקסדצימלי

  8. 06:24

    איפוס בייטים לבדיקה

תמלול ההרצאה: Meterpreter EXE vs Windows Defender

הטקסט המלא של הדקות הראשונות בהרצאה «Meterpreter EXE vs Windows Defender» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

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

  2. 00:23

    עכשיו אני מייבא את המודול שלו, כי הוא בנוי כמו מודול אז אני מייבא אותו, אבל כרגע אי אפשר להפעיל אותו למה? כי יש פה הגבלה ברמת Execution Policy.

  3. 00:38

    Execution Policy זה זכות להריץ סקריפטים, ואני עושה לו Unrestricted, כברירת מחדל שאי אפשר להריץ סקריפטים. והוא גם לא נותן לי לעשות את זה, למה? כי אין לי הרשאה, Access is Denied.

  4. 00:51

    אין לי הרשאה וחבל מאוד שלא הפעלתי את זה עם הרשאות אדמיניסטרטור, אז אני עושה PowerShell, Run as Administator ומוריד את ההרשאה ל-Unrestricted, וזהו, עכשיו אני אוכל להפעיל את המודול שלי, אחרי שהפוליסי ב-unrestricted, Execution Policy במצב Unrestricted.

  5. 01:14

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

  6. 01:34

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

  7. 01:47

    אז אנחנו עושים פה תיקייה שקוראים לה small files. אנחנו הולכים לחתוך את הקובץ הזה למלא מלא חתיכות קטנות. בואו נראה איך כל זה מתבצע.

  8. 01:57

    זה די פשוט האמת. תחשבו שקובץ זה הרבה מספרים בפנים. בואו נראה מה הוא עשה לנו. הוא עשה לנו מקובץ אחד של 7 קילו בייט של 7168 בייט.

  9. 02:12

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

  10. 02:27

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

  11. 02:38

    אנחנו יכולים לקחת ולהריץ על התיקייה הזאת scan, סריקה ולראות בדיוק איזה קובץ הוא יתפוס ולפי השם של הקובץ שהוא תופס אנחנו נדע באיזה בייט יש לנו בעיה בואו ניתן לו לעשות סריקה על 1800 קבצים הנה הוא מצא שיש לנו סוס טרויאני ואנחנו עושים לו c details ורואים פה שקובץ 6904

  12. 03:04

    זה הבית, 6904, זה מה שמפריע לו. הבאים כוללים את כל מה שלפניו, אז אנחנו יודעים שזה פה, אז בין 6900 ל-6904, אחד המספרים האלו.

  13. 03:16

    אז בואו נכתוב פה 6900, אני כותב לי פה בצד, 6900 עד 6904, זה איפשהו כאן, בטווח הזה. בואו ניתן לו למחוק, בינתיים תתחיל למחוק את כל מה שמצאת, אין בעיה.

  14. 03:34

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

  15. 03:53

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

  16. 04:06

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

  17. 04:17

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

  18. 04:31

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

  19. 04:47

    תראה לי רק מה שיש בבית 901, מספר 86, 902, 903, 904, ככה אני יכול להגיד לו בדיוק מה אני רוצה לראות. עכשיו, אם אני רוצה לראות את זה בצורה של אקסה ולא של יסרוני רגיל, אז אני עושה לו כזה דבר והוא מראה לי את אותו המספר ב-901 במקום 86, 56.

  20. 05:14

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

  21. 05:36

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

  22. 05:48

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

  23. 06:01

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

  24. 06:21

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

  25. 06:41

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

  26. 06:57

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

  27. 07:07

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

  28. 07:30

    ועכשיו אנחנו עושים write all bytes, לכתוב

לקורס המלא: קורס סייבר למתחילים אונליין

ההרצאה הקודמת: Meterpreter & Powershell

ההרצאה הבאה: התקנה של Visual Studio

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

  • ביצוע Pivoting ב-Windows - עם Meterpreter ב-MSFconsole
  • התקנה של קובץ EXE על כל התחנות
  • EC2-Windows
  • Ansible on Windows

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

  • קורס SOC - מיישם הגנת סייבר
  • קורס פריצה ומבדקי חדירה לתשתית ארגונית - בדיקות חוסן מתקדמות ל-Active Directory - קורס זה נדרש למבחן ההסמכה היוקרתי OSCP
  • קורס פריצה ומבדקי חדירה לאתרי אינטרנט - בדיקות חוסן לאתרים - Web Pentesting - קורס זה נדרש למבחן ההסמכה היוקרתי OSCP
  • קורס סייבר והאקינג ל-Android - פריצה לטלפונים ואפליקציות אנדרואיד - בודק חוסן - Mobile App Pentesting