PracticU

התקפה Buffer Overflow - בדיקת היתכנות - Fuzzer

בלי כתוביותעם כתוביות
PracticU › קורס סייבר למתחילים - Hacking - בדיקות חוסן תשתיתי ופריצה ל-Windows 10/11 - קורס זה נדרש למבחן ההסמכה היוקרתי OSCP › התקפה Buffer Overflow - בדיקת היתכנות - Fuzzer
מילון מושגים:
חולשה - פגם או חולשה במערכת או בתוכנה שעלול לאפשר פגיעה באבטחה אם לא יטופל.
שירות - תוכנה שרצה ברקע ומספקת פונקציונליות לרכיבים אחרים, לרוב ללא ממשק משתמש, ומופעלת אוטומטית עם המערכת.
ממשק - נקודת מגע בין רכיבים: ממשק משתמש שבו אדם מפעיל תוכנה, או ממשק תכנותי שמגדיר אילו פעולות רכיב אחד חושף לאחר.
שם משתמש - מזהה ייחודי שמשתמש מזין כדי להזדהות במערכת, לרוב יחד עם סיסמה.
סיסמה - מחרוזת תווים סודית שמשמשת לאימות זהות המשתמש בעת כניסה למערכת. ככל שהיא ארוכה ומורכבת יותר, כך קשה יותר לנחש אותה.
בקשה - פנייה שלקוח שולח לשרת כדי לקבל מידע או לבצע פעולה. השרת מחזיר עליה תגובה.
דפדפן - תוכנה שמציגה דפי אינטרנט ומריצה את הקוד שבהם, ומאפשרת לגלוש בין אתרים, למשל Chrome או Firefox.
זיכרון - רכיב מהיר ונדיף שבו המחשב שומר נתונים ותוכניות בזמן ריצתם. תוכנו נמחק עם כיבוי המחשב.

התקפה Buffer Overflow - בדיקת היתכנות - Fuzzer
הסרטון מדגים בתנאי מעבדה מבוקרים כיצד תוכנה שלא בודקת את אורך הקלט שהיא מקבלת יכולה לקרוס, וזו הבסיס לפגיעות מסוג Buffer Overflow.
הרעיון המרכזי
לאחר שסקירת רשת חשפה שעל שרת היעד רצה תוכנת שירות מסוימת, המטרה הייתה לבדוק - עוד לפני כל פעולה על רשת אמיתית - האם יש לתוכנה הזו חור אבטחה. נבדק ממשק הכניסה (שם משתמש וסיסמה) של התוכנה, ונותח מבנה הבקשה שהדפדפן שולח לשרת כדי להבין אילו שדות קיימים בה.
מה קורה כשהקלט חורג מהצפוי
כאשר לשדה שם המשתמש נשלחה כמות גדולה מאוד של תווים במקום קלט רגיל, השירות קרס. הבדיקה המשיכה בצורה שיטתית למצוא את הכמות המדויקת של תווים שגורמת לקריסה, מתוך הבנה שהתכנה לא הגבילה או בדקה את אורך הקלט שהתקבל.
למה זה מסוכן
כלי ניתוח שמריץ את התוכנה תחת מעקב הראה שהקלט החורג "גלש" מהאזור בזיכרון שהיה מיועד לו וכתב מעל אזור נוסף שאחראי על כתובת ההמשך של התוכנה בסיום פעולה. מצב כזה פותח אפשרות עקרונית להשתלט על זרימת ההרצה של התוכנה ולהכוון אותה למקום אחר בזיכרון, ולא רק לגרום לה לקרוס.
הדגמה כזו ממחישה מדוע בדיקת אורך ותקינות קלט בכל תוכנה היא הגנה קריטית, ומדוע שירותים שלא עושים זאת חשופים לפגיעות חמורה.
השיעור הבא בקורס: התקפה buffer overflow - אוגר EIP

פרקי ההרצאה: התקפה Buffer Overflow - בדיקת היתכנות - Fuzzer

  1. 00:00

    סריקת רשת וגילוי שירות עם Nmap

  2. 00:35

    התקנת השירות הנבדק במעבדה

  3. 01:41

    בדיקת תהליך השירות בצד השרת

  4. 02:19

    הפעלת ממשק ה-Web של השירות

  5. 03:56

    ניתוח תעבורת הרשת עם Wireshark

  6. 06:23

    מבנה סקריפט הבדיקה ב-Python

  7. 07:38

    בניית תוכן הבקשה וחישוב אורכה

  8. 11:04

    הרצת סקריפט הבדיקה

תמלול ההרצאה: התקפה Buffer Overflow - בדיקת היתכנות - Fuzzer

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

  1. 00:02

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

  2. 00:30

    לפני שאני ניגש לרשת האמיתית אני מנסה לעשות את זה בתנאי המעבדה לבדוק היתכנות לפריצה דרך תוכנת סינגבריז האם יש לה חור באבטחה מסוג באפר אוברפלואו והאם נוכל לפרוץ דרכו נתקין את זה זה סינגבריז בגרסה 32 סיביות גרסה 10.0.0.28 הורדתי את זה מהאינטרנט זו תוכנה יחסית חדשה 2017 לא משהו משנות ה-90 שימו לב זה 32 ביט, היא מאזינה בפורט 80,

  3. 01:06

    סרבר Web Access פורט 80, אנחנו ננצל את זה, ויש גם Service Control Port 9121 Web Port 80. Next, הוא מתקין את זה, רנסינג בריז ולשים לי דסקטופ אייקון, יאללה.

  4. 01:23

    הנה הקליינט, שימו לב זה הקליינט, שאני יכול דרכו לנהל, והקליינט הזה מחובר ל-Admin Windows 10 Connected.

  5. 01:32

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

  6. 01:42

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

  7. 02:02

    בואו נבדוק ש-HTTP באמת עובד. פותח דפדפן ונראה שאנחנו יכולים להתחבר ב-HTTP, נקודה טיים סלש סלש מ-27-001. אני רואה שהוא לא עובד, הוא לא עובד.

  8. 02:17

    למה הוא לא עובד? כי פה בסינג בריס קליינט צריך להיכנס ל-Options ודרך הקליינט להפעיל את ה-Web Server. אתם רואים?

  9. 02:29

    צריך פה לשים v, Enable Web Server on port 80. זאת אומרת הקליינט הזה דרך 9.1.2.1 ישלח פקודה לשרת, שיאזין גם בפורט 80. יש? שמתי פה v, זה כל מה שאני עשיתי.

  10. 02:45

    עושה סייב, בוא נראה עכשיו. הופה, יש לנו פה לוגין. אנחנו אמורים להכניס פה לוגין. בוא ננסה לעשות aaa ו-password bbb. לוגין, לא מצליח.

  11. 02:58

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

  12. 03:10

    IP קונפיג 122 129 בוא ננסה מתוך קאלי לגשת לשם נפתח Firefox ונראה שקודם כל הגישה עובדת HTTP אני רואה שאני לא מצליח להתחבר כנראה יש פה firewall שמפריע אני לא רוצה עכשיו להסתבך עם firewall אז אני פשוט אוריד אותו אני אעשה פה turn off ואני אכבה את הfirewall לחלוטין

  13. 03:36

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

  14. 03:47

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

  15. 04:04

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

  16. 04:32

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

  17. 05:04

    רוצים לראות את כל השיחה ביניהם אז לכן אנחנו עושים follow תעקוב אחרי כל השיחה של tcp stream תוציא לי מכל הפאקטים את כל השיחה ותחבר לי את הטקסט והנה הוא נותן לי מה שאני שלחתי לו ומה שהוא שלח לי הוא שלח לי את ה-HTML הזה כתשובה וזה מה שאני שלחתי

  18. 05:24

    לו אתם רואים פה את כל זה זה בדיוק מה שאני רוצה לזייף לו ואני רוצה לפרוץ דרך ה-AAA הזה דרך היוזרניים הזה אתם רואים יש פה יוזרניים AAA אני רוצה לתת לו פה יוזרניים עם מאות ואלפי אותיות במקום 5, 6, 20 לתת לו איזה כמה מאות אותיות בתוך היוזרניים ולראות האם זה פורץ, האם יש לו פה חור אבטחה.

  19. 05:53

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

  20. 06:09

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

  21. 06:21

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

  22. 06:34

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

  23. 06:48

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

  24. 06:57

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

  25. 07:10

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

  26. 07:28

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

  27. 07:44

    נכון כשאנחנו שולחים פאקט, יש לנו ב-HTTP, יש לנו את ההדרים ויש לנו את הגוף, את הבפנוכו. אז את ה-בפנוכו, כבר סגרתי את הווייר שארק?

  28. 07:55

    חבל, הייתי מראה לכם. אז אני שותל שם user name שווה את כל ה-a ו-password גם כן a. אני יכול לכתוב פה password 1, 2, 3, 4, 5, זה לא משנה.

  29. 08:07

    העיקר שפה אני שולח 10,000 פעמים אות a. ועכשיו יש לנו משתנה חדש לחלוטין שקוראים לו HTTP request, ואני מכניס לפה את כל ה-headers שהעתקנו מווייר שארק, כולל לאיזה IP אני מתחבר, כולל לאיזה עמוד בדיוק אני רוצה להתחבר.

  30. 08:30

    זה, כל זה לקחתי מתוך הפאקטים של וויירשארק. כאשר פה נכנס האורך של הפוסט, האורך של ה-HTTP פוסט הזה, האורך שלו נכנס כאן. אוקיי.

  31. 08:44

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

  32. 08:58

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

  33. 09:09

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

  34. 09:21

    עוד פעם, תופסים את הפאקטים, נכנסים לאתר אינטרנט, שולחים aaa12345, מסננים, עכשיו אחרי ששלחנו את זה מסננים רק את HTTP ופה בפוסט אנחנו ממש יכולים לראות פה בואו נעשה follow stream כדי לראות את זה בצורה אתם רואים פה כל ההדרים מרווח ריק אתם רואים מרווח פנוי ואז את הbody הכחול זה התשובות שלו זה פחות מעניין אותי התשובה שלו אני

  35. 09:53

    רוצה להתרכז באדום אתם רואים יש את המרווח שמפריד בין ההדרים לגוף של הפוסט בגלל שזו הודעת פוסט יש לה גוף ומה אנחנו רואים פה user name שווה וpassword שווה אז כל הheadרים האלו הגיעו למעלה אחרי זה רווח ואחרי זה הגוף הדבר היחיד שהייתי צריך לעשות זה לכתוב פה את כמה תווים יש בדבר הזה כמה content יש בדבר הזה הייתי צריך לעלות על זה שזה 35 אז

  36. 10:21

    במקום לחשב את זה ידנית עשינו את זה על ידי הפקודה הפקודה אומרת length של http post content יפה אחרי שבנינו את המשתנה HTTP רקווסט שזה למעשה כל הבקשה אנחנו פותחים סוקט סוקט זה חיבור ב-TCP IP ל-IP ופורט אנחנו אומרים לו לפי איזה תקן אנחנו פותחים את הסוקט הזה זאת למעשה שורה די קבועה כזאת שאתם מעתיקים

  37. 10:48

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

  38. 11:11

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

  39. 11:41

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

  40. 12:13

    בואו נראה מה קרה פה.

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

ההרצאה הקודמת: אוגרים במעבד - Stack & Register

ההרצאה הבאה: התקפה buffer overflow - אוגר EIP

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

  • בדיקת גבולות
  • התקפה DNS spoof
  • עצירת התקפה - SOC
  • בדיקת תוכן ג'ייסון

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

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