PracticU

יצירת Payload - Shellcode

בלי כתוביותעם כתוביות
PracticU › קורס סייבר למתחילים - Hacking - בדיקות חוסן תשתיתי ופריצה ל-Windows 10/11 - קורס זה נדרש למבחן ההסמכה היוקרתי OSCP › יצירת Payload - Shellcode
מילון מושגים:
פרמטר - ערך שמועבר לפונקציה או לפקודה כקלט, ומשפיע על אופן פעולתן ועל התוצאה שהן מחזירות.
חולשה - פגם או חולשה במערכת או בתוכנה שעלול לאפשר פגיעה באבטחה אם לא יטופל.
סקריפט - קובץ המכיל רצף פקודות שמבוצעות על ידי מפרש, לרוב כדי להפוך משימות לאוטומטיות.
מעטפת - תוכנה שמפרשת פקודות של המשתמש ומעבירה אותן למערכת ההפעלה, למשל Bash או PowerShell.
מעבד - יחידת העיבוד המרכזית של המחשב, שמבצעת את הפקודות של התוכניות ומנהלת את החישובים.
מערכת הפעלה - התוכנה הבסיסית שמנהלת את חומרת המחשב ומשאביו ומריצה את שאר התוכנות, למשל Windows או Linux.
פרוטוקול - מערכת כללים מוסכמת שקובעת כיצד מכשירים או תוכנות מתקשרים ומחליפים מידע, למשל HTTP או TCP.
HTTP - פרוטוקול להעברת דפי אינטרנט ונתונים בין דפדפן לשרת. הגרסה המאובטחת שלו היא HTTPS.

יצירת Payload - Shellcode

בשיעור זה אנו ממשיכים את סדרת ההרצאות על חולשת גלישת חוצץ, ברמה מושגית בלבד. אנו מבינים מהו payload ומהו shellcode, מכירים את החלוקה של הפיילודים המוכנים בכלי החדירה המוכרים, לומדים מה הפרמטרים שקובעים את יצירת פיילוד מותאם, ומבינים מדוע דרוש קידוד מיוחד שמסיר את התווים האסורים של החולשה הספציפית לפני שמשלבים את התוכן בסקריפט הבדיקה.
נושאי הסיכום המוצגים בשיעור:
1. מהו payload ומהו shellcode: ה-payload הוא התוכן שנשלח אל מחשב המטרה דרך החולשה, וה-shellcode הוא קוד קצר שמורץ בזיכרון בעקבות גלישת החוצץ. בהקשר של הקורס מדובר בקוד שמייצר חיבור חזרה ממחשב המטרה אל התוקף, מנגנון המכונה reverse shell, שבאמצעותו מתקבלת שליטה על המחשב המטרה.
2. המקום שהוכן בשיעורים הקודמים: בשיעורים הקודמים שלטנו באוגר ה-EIP והפנינו אותו אל כתובת סטטית של ספריית מערכת ההפעלה שמקפיצה את המעבד אל ראש המחסנית, שם יוצב ה-shellcode. כעת יש לבנות את ה-shellcode הזה, שיש לו גודל מוגדר, ולדאוג בתוך הסקריפט לכך שיישמר לו מקום מתאים בזיכרון.
3. כלים ליצירת פיילודים: קיימים כלים מוכרים ליצירת פיילודים מוכנים, ובראשם מסגרת העבודה Metasploit Framework שמכילה מאות פיילודים מסווגים. החלוקה המרכזית היא לפי שפת היעד או מערכת ההפעלה שאליה הפיילוד מיועד, ולפי שיטת החיבור: bind shell שבו המטרה פותחת שירות וממתינה, או reverse שבו המטרה עצמה מתקשרת אל התוקף. יש גם פיילודים של סביבת Metasploit עצמה שמאפשרים הרצת פקודות מתקדמות, ופיילודים פשוטים כמו חלון פקודה של Windows.
4. הפרמטרים ליצירת הפיילוד: ביצירת פיילוד מותאם קובעים כמה פרמטרים: לאיזו מערכת הפעלה וארכיטקטורה הוא מיועד, איזו שיטת חיבור רוצים, לאיזו כתובת IP של התוקף המטרה תתקשר בחזרה, מאיזו יציאה, ובאיזה שפת פלט לקבל את התוצאה, למשל שפת C כאשר היישום המטרה כתוב בשפה זו. הפיילוד שנוצר מציג את גודלו הסופי, שבמקרה ההדגמה הוא כמה מאות בתים, ואת כל ההגדרות מקודדות בתוך רצף התווים שלו.
5. הבעיה של התווים האסורים: לפיילוד הגולמי יש בעיה: הוא מכיל תווים אסורים, bad characters, שנבעו מהחולשה הספציפית. היישום הנבדק כתוב בשפת C ומשתמש בפרוטוקול HTTP, ולכן התווים שזוהו בשיעורים הקודמים בניסוי וטעייה חייבים להיעלם מהתוכן, אחרת ההעברה תיקטע באמצע.
6. קידוד הפיילוד: הפתרון הוא ליצור את הפיילוד מחדש בתוספת קידוד. קיימות שיטות קידוד שנועדו לארכיטקטורת המעבד x86, והן מקבלות כפרמטר את רשימת התווים האסורים של החולשה הספציפית, מפני שלכל חולשה יש רשימת תווים אסורים משלה. התוצאה היא shellcode מקודד שאינו מכיל אף תו אסור, ואותו משלבים במקום ה-shellcode הישן בסקריפט הבדיקה, שבו כבר מוגדרים המילוי, כתובת החזרה הסטטית וההיסט שמוביל אל ראש המחסנית.
בסיום השיעור הבנו מהו payload ומהו shellcode בהקשר של גלישת חוצץ, הכרנו את חלוקת הפיילודים בכלי החדירה המוכרים לפי שפת יעד ושיטת חיבור, למדנו אילו פרמטרים מעצבים פיילוד מותאם למערכת, לכתובת וליציאה של התוקף ולפורמט הפלט, והבנו את חשיבות הקידוד שמסיר את התווים האסורים של החולשה הספציפית לפני שילוב התוכן בסקריפט. תודה רבה, ולהתראות בשיעור הבא.
בשיעור הבא נעסוק בנושא הסבר על התקפה - buffer overflow.
SR12067HE

פרקי ההרצאה: יצירת Payload - Shellcode

  1. 00:00

    מהו ה-shellcode

  2. 00:39

    קפיצה לראש המחסנית

  3. 01:12

    הכלי msfvenom ליצירת פיילוד

  4. 01:53

    בחירת reverse shell ל-Windows

  5. 02:29

    הפקת הפיילוד בפורמט C

תמלול ההרצאה: יצירת Payload - Shellcode

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

  1. 00:02

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

  2. 00:27

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

  3. 00:41

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

  4. 00:59

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

  5. 01:12

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

  6. 01:44

    שהוא שייך למטרפריטר ששם אפשר לראות מה אפשר לעשות בסרט הזה אנחנו נקבל של windows cmd פה php כל מיני שפות וכל מיני מערכות שאני יכול לכתוב אליהן את הפלוט הזה יש ביינדשל ויש רוורס וכרגע רוצה לרשום את הפלוט שלנו אז אני משתמש עם הכלי של msfvenom זה הכלי עצמו מינוס p payload בסיסי פשוט סוג שמתאים למערכת windows ועושה לי reverse כשהקורבן צאליים מתקשר למחשב התוקף ואיזה פרוטוקול tcp hellhost למי הוא יתקשר

  7. 02:22

    ליד הכתובת IP אז לכלילינוקס שלנו כהנה לתוקף זו הכתובת של התוקף תמרור שלוש זה הכתובת שהתוקף קיבל ו-lport זה ה-port 443 מינוס F באיזה פורמט? בשפה שפת C. אז בואו נחולל את הפיילוד.

  8. 02:42

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

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

ההרצאה הקודמת: מציאת כתובת סטטית להרצת קוד מתוך ה-STACK

ההרצאה הבאה: הסבר על התקפה - buffer overflow

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

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