PracticU

Metasploit Meterpreter
Reverse Https vs Defender

בלי כתוביותעם כתוביות
PracticU › קורס סייבר למתחילים - Hacking - בדיקות חוסן תשתיתי ופריצה ל-Windows 10/11 - קורס זה נדרש למבחן ההסמכה היוקרתי OSCP › Metasploit Meterpreter Reverse Https vs Defender
מילון מושגים:
HTTPS - הגרסה המאובטחת של HTTP, שמצפינה את התקשורת בין הדפדפן לשרת בעזרת TLS ומאמתת את זהות האתר.
זיכרון - רכיב מהיר ונדיף שבו המחשב שומר נתונים ותוכניות בזמן ריצתם. תוכנו נמחק עם כיבוי המחשב.
מערך - מבנה נתונים שמאחסן אוסף ערכים מאותו סוג ברצף, שאפשר לגשת אליהם לפי מספר מיקום (אינדקס).
מעבד - יחידת העיבוד המרכזית של המחשב, שמבצעת את הפקודות של התוכניות ומנהלת את החישובים.
אנטי וירוס - תוכנה שמזהה, חוסמת ומסירה תוכנות זדוניות מהמחשב, ומנטרת פעילות חשודה.
וירוס - תוכנה זדונית שמשכפלת את עצמה ומתפשטת ממחשב למחשב, ועלולה לפגוע בקבצים או בפעולת המערכת.

Metasploit Meterpreter - Reverse Https vs Defender
בשיעור זה מבוצע בפועל השינוי שתוכנן בניתוחים הקודמים: המספרים הקבועים שעליהם נתפס הקובץ מפוצלים לשתי פקודות מקבילות בתוצאה, הקוד נבדק במנפה שבירות, ונבדק מול ההגנה בזמן אמת של Defender. המטרה להבין כיצד זיהוי חתימות נשבר בפיצול פקודה.
נושאי הסיכום המוצגים בשיעור:
1. הבדיקה במנפה לפני השינוי: רצים את הקוד במנפה עד נקודת העצירה, מבצעים את הפקודה החשודה צעד אחד, ורואים שבאוגר נכנס המספר המלא. מכאן מתוכנן השינוי, במקום שהמספר המלא ייכנס בפקודה אחת, ייכנס חלקו הגדול ואחר כך יתווסף החלק החסר.
2. שינוי הערך שנכנס: בקוד של ה wrapper משנים את הקבוע לחלקו הגדול בלבד, תוך הקפדה על סדר הבייטים ההפוך בזיכרון, בונים מחדש ובודקים במנפה שהאוגר מקבל באמת את הערך החדש.
3. הפקודה המשלימה: כדי להשלים את הערך נדרשת פקודת חיבור לאוגר. את הפקודה כותבים בשפת אסמבלר, למשל הוספת מספר לאוגר, ומשתמשים בכלי אסמבלי ודיסאסמבלי כדי לקבל את הייצוג שלה בשפת מכונה, ואותו מכניסים כמערך בייטים נוסף אל תוך הקוד של ה wrapper, מיד אחרי הפקודה הראשונה.
4. שקילות פונקציונלית: מבחינת התוכנה אין כל שינוי, כי בסוף הרצת שתי הפקודות האוגר מחזיק את אותו ערך שהיה בעבר אחרי פקודה אחת. זה כל הרעיון, אותה תוצאה בשתי פקודות במקום אחת.
5. אימות במנפה: לאחר בנייה מחדש רצים במנפה עד נקודת העצירה, מבצעים צעד צעד ורואים שהערך החלקי נכנס לאוגר ואז פקודת החיבור משלימה אותו לערך המקורי, וההרצה ממשיכה תקינה.
6. פיצול המספר השני: את הקבוע השני שעליו נתפס הקובץ מפצלים באותה שיטה, כאשר חשוב לשים לב לסדר הבייטים ההפוך בזיכרון כדי לשנות בדיוק את הבית הנכון, ולפקודת החיבור של החלק החסר נוספים אפסים בסוף לפי משקל הספרות, בדיוק כמו בחשבון עמודות. הפירוש של הפקודה החדשה נבדק בכלי האסמבלי והערכים מועתקים אל הקוד.
7. אימות נוסף וריצה תקינה: במנפה רואים שהערך החלקי של הקבוע השני נכנס ואז מתווסף החלק החסר, המעבד מקבל את הערך המקורי, וההרצה ממשיכה רגילה ופותחת חיבורים, כלומר הפיצול לא פגע בפעולת ה payload.
8. הכנה לבדיקת האנטי וירוס: בונים את הפרויקט במצב Release, הגרסה המינימלית עם המידע הנלווה המועט, כדי לתת לאנטי וירוס פחות חומר לנתח. טעות מלמדת שנתקלים בה, אם נקודת העצירה שהוכנסה לקוד לא הוסרה, התוכנה תעצור באמצע ריצה בלי מנפה ולא תעבוד. מסירים את נקודת העצירה לפני הבדיקה הסופית.
9. בדיקת סריקה ובדיקת ריצה: אחרי הפיצול של שני הקבועים סריקת הקובץ כבר אינה מזהה אותו, ובהפעלת ההגנה בזמן אמת, שסורקת את הזיכרון בזמן הריצה, הקובץ רץ ופותח חיבור בהצלחה, בזמן שההגנה דולקת בפועל.
10. הסיכום וההקשר: שני המספרים הארוכים שעליהם נבנתה החתימה פוצלו כל אחד לשתי פקודות שקולות, החתימה כבר אינה מופיעה בקובץ, ולכן Defender שהוא האנטי וירוס הנפוץ אצל רוב המשתמשים אינו מזהה את הקובץ. מבחינה הגנתית זו הדגמה לכך שחתימות על קבועים הן שבריריות, ולכן סורקים מודרניים מסתמכים גם על ניתוח התנהגות ולא רק על התאמת רצפים.
בשיעור זה פוצלו שני הקבועים שעליהם נבנתה החתימה לשתי פקודות שקולות כל אחד, השינויים אומתו במנפה שבירות צעד אחר צעד, הקובץ נבנה במצב Release ללא נקודת העצירה, והוכח שגם סריקה וגם הגנה בזמן אמת של Defender אינן מזהות עוד את הקובץ, תוך שהוא ממשיך לפעול ולפתוח חיבורים.
בשיעור הבא נעסוק בנושא כתובות זיכרון באסמבלר ובשפת מכונה.
SR12509HE

פרקי ההרצאה: Metasploit Meterpreter Reverse Https vs Defender

  1. 00:00

    שינוי ערך באוגר בשפת מכונה

  2. 00:39

    בדיקת השינוי בדיבאגר

  3. 01:16

    כתיבת פקודת ADD חדשה

  4. 01:58

    תרגום הפקודה לשפת מכונה

  5. 02:50

    אימות התיאוריה בזיכרון

  6. 03:44

    פיצול מספר גדול לשני חלקים

  7. 04:36

    יצירת הפקודה המשולבת

  8. 05:19

    בדיקת הריצה אחרי השינוי

תמלול ההרצאה: Metasploit Meterpreter Reverse Https vs Defender

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

  1. 00:02

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

  2. 00:17

    מה אני רוצה לעשות? אני רוצה שלא ייכנס 77, אני רוצה שייכנס 70, ונעשה עוד פקודה שמכניסה 7. זה כל הטריק. אז אני עוצר את הכל ואומר לו דבר כזה: תכניס לי פה לא את ה-77 הזה, זוכרים שזה כתוב הפוך?

  3. 00:32

    תכניס לי 70. בואו נהפוך את זה עוד פעם לאקזה הפכנו אותו לאקזה נלך לדבאגר עוד פעם נטעין אותו לזיכרון הוא עוצר לנו פה בנקודה הראשונה נעשה לו run הגיע עד לברק פוינט עד cc עצר בקוד שלנו שימו לב פה כבר לא 77 פה 70 זה בדיוק מה ששיניתי כרגע אני עושה f7 שזה דיבאג לבצע פקודה אחת ובר 14 יש במקום 77 7 זה אומר שזה באמת עובד

  4. 01:06

    השינוי של הקוד אכן עבד נהדר מה נשאר לנו לעשות להוסיף פה עוד פקודה שמוסיפה ל-R14 סתם מספר 7 אז איך אנחנו נעשה את זה אנחנו נלך לאסמבלר שלנו ונגיד לו דבר כזה תהפוך לי פקודת אסמבלר add להוסיף לרגיסטר 14 זה צריך לדעת אסמבלר כן פקודת add תוסיף לרגיסטר 14 מספר 7. כמובן שאנחנו מוסיפים באקסה 0x זה

  5. 01:36

    אקסה. תוסיף לי מספר 7 באקסה אני עושה לו דיסאסמבלי יותר נכון אסמבלי הנה הוא עושה לי את הפקודה הזאת וככה היא נראית בשפת מכונה 49 83 c607 זה פקודה בשפת מכונה להוסיף לרגיסטר 14 סתם מספר 7. בוא נראה אם התיאוריה שלי נכונה או לא רק שאני אקח את המספרים האלו עם 0x בהתחלה אתם רואים זה אותם מספרים שבע, שישה, שמונים ושלוש, ארבעים ותשע,

  6. 02:06

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

  7. 02:26

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

  8. 02:50

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

  9. 03:08

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

  10. 03:29

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

  11. 03:39

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

  12. 03:51

    אנחנו מאפסים את ה-6 הזה, סתם תפסתי את ה-6 הזה. זה אומר שאני מאפס אותו כאן, אתם רואים פה בזיכרון. זאת אומרת, המספר הראשון זה היה 0.7, השני היה 26, נהיה 20, ואחרי זה 77, ארבע סי, אז יופי, אז אני צריך להוסיף את המספר פה שש,

  13. 04:12

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

  14. 04:32

    זאת אומרת שאני מוסיף את השש בדיוק פה במקום הזה, כמו במתמטיקה, נכון? 1, 2, 3, 4, אני לא נוגע בהם, ו-6. זה שה-6 פה נראה לכם לקראת סוף, שלא יבלבל אתכם, כי בזיכרון הוא הפוך.

  15. 04:46

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

  16. 04:57

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

  17. 05:35

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

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

ההרצאה הקודמת: דיבאג של Metasploit Meterpreter עם x64dbg

ההרצאה הבאה: כתובות זיכרון באסמבלר ובשפת מכונה

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

  • חיבור Meterpreter Reverse HTTP - דרך דארקנט - Tor - חלק 1
  • הסבר על HTTPS - צ'ק פוינט
  • Swarm - NGINX Reverse Proxy
  • תעודה דיגיטלית - SSL - HTTPS למתחילים

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

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