PracticU

דיבאג של Metasploit Meterpreter עם x64dbg

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

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

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

  1. 00:00

    מניתוח סטטי לניתוח דינמי

  2. 00:37

    בניית קובץ ה-EXE מחדש

  3. 01:33

    פתיחת הקובץ בדיבאגר

  4. 02:13

    הליכה פקודה פקודה עם F7

  5. 03:27

    התמודדות עם שגיאות בריצה

  6. 04:42

    הכרת נקודות עצירה Breakpoint

  7. 06:16

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

  8. 07:52

    הגעה לקוד שלנו בזיכרון

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

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

  1. 00:02

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

  2. 00:25

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

  3. 00:46

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

  4. 01:09

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

  5. 01:33

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

  6. 01:50

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

  7. 02:01

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

  8. 02:27

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

  9. 02:54

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

  10. 03:19

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

  11. 03:29

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

  12. 03:53

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

  13. 04:11

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

  14. 04:24

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

  15. 04:37

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

  16. 04:48

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

  17. 05:03

    אני עושה 0XCC. 0XCC זה פקודה למעבד, לעצור את הכל, יש דבאגר שרוצה אותך, זו הנקודה האדומה, זה הדבאגר.

  18. 05:13

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

  19. 05:34

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

  20. 05:44

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

  21. 05:52

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

  22. 06:03

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

  23. 06:34

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

  24. 06:47

    אז אני בסטינגס באקספצ'אנס אומר לו ignore last. הוא אומר are you sure האם אתה בטוח שאתה רוצה להתעלם מהתקלה 4242420 שזה זה 4242420 פה למטה אני אומר לו כן ואני יכול לבחור אותה ולהגיד לו אל תעצור עליה don't break ומי שמטפל בה זה התוכנה עצמה זה לא הדבאגר זה לא אני החיצוני אלא הוא בעצמו שהקוד שלו יטפל בשגיאה

  25. 07:18

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

  26. 07:52

    מה זה הברקפוינט הזה? קודם כל, אני יכול לראות שבאמת יש לנו פה את ה-cc, אחרי זה fc4883, מה זה fc4883?

  27. 08:03

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

  28. 08:23

    הרי הכנסנו לו פקודה לעצור, הוא עצר והוא נתקע עליה,

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

ההרצאה הקודמת: ניתוח קוד סטטי - דִּיסְאָסֶמְבְּלֶר

ההרצאה הבאה: Metasploit Meterpreter - Reverse Https vs Defender

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

  • דיבאג בג'אווה - Debug Mode
  • דיבאג קונטיינר - Debug Container
  • יצירת Golden Ticket עם Metasploit - חלק 1
  • ריאקט דיבאג עם Chrome - React Debugging

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

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