
הטקסט המלא של הדקות הראשונות בהרצאה «התקפת Buffer Overflow שלב 4 - כתובת קפיצה + יצירת Payload» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם בהרצאה הזו אנחנו רוצים לייצר את הפיילוד, את הפצצה שלנו, את הקוד הזדוני שלנו, את הסוס הטרויאני שלנו על ידי msfvenom אבל לפני שאנחנו נעשה את זה אנחנו צריכים למצוא מה להכניס בתוך eip eip אני מזכיר לכם זאת הכתובת של bbb הפקודה הבאה לביצוע מה אנחנו בדיוק נשים פה אנחנו צריכים לשים את הכתובת של ccc שזה יהיה הפיילוד שזה יהיה
msfvenom שלנו ולשם מצביע ESP נכון ה-ESP הרגיסטר ESP מצביע על המקום שבו נמצא הפיילורד שלנו כי רק לשם אנחנו מכניסים נתונים אנחנו מכניסים נתונים לתוך ה-ESP ועכשיו צריך למצוא כתובת בזיכרון שאומרת למעבד לקפוץ ל-ESP אנחנו לא יכולים לדעת מה יהיה ESP בהפעלה הבאה אז בגלל שאנחנו לא יודעים מה יהיה ESP בהפעלה הבאה
אנחנו צריכים למצוא משהו שכבר קיים בזיכרון ואומר תקפוץ ל-ESP. זאת אומרת אנחנו לוקחים את הסקריפט שלנו ואומרים לו תקפוץ למקום אחר קבוע בזיכרון. שימו לב אנחנו נגיד לסקריפט שלנו לקפוץ כאן במקום ביביבין ירשום לו איזושהי כתובת שהיא קבועה בזיכרון היא אף פעם לא משתנה הוא יקפוץ לשם לבצע את הפקודה הבאה לביצוע איפה שנרשום לו
ושם יהיה כתוב לקפוץ חזרה ל-ESP. היתרון של הסיפור הזה שלקפוץ ל-ESP זאת פקודה, אבל אנחנו לא יכולים להכניס פקודה, אנחנו יכולים להכניס רק כתובת לפקודה.
אם הייתי יכול להכניס פה פקודה, הייתי כותב פה jump ל-ESP. הבעיה שאני לא יכול להכניס לפה פקודות. אני יכול להכניס לפה רק כתובות בזיכרון ששם נמצאות הפקודות.
אז אני צריך לחפש כתובת בזיכרון ששם נמצאת פקודת JMP SP. אני צריך את האדרס של משהו בזיכרון שיהיה קבוע ושם יהיה כתוב JMP SP. איך אני אמצא את הכתובת ששם כתובה פקודת JMP SP?
או יש לנו פה מונה שהודעת לחפש פקודת JMP ל-ESP בתוך זיכרון. פשוט למצוא כתובת בזיכרון ששם יש פקודת JMP SP. עכשיו שימו לב אנחנו צריכים גם לציין לו מה אסור לנו להעביר על הקו.
אני לא אמצא לי כתובת שיש בה 0 0 כי אז אני לא אוכל לשלוח את ה-0 0 הזה פה בתוך הכתובת הזאת אסור שבכתובת יהיה תווים אסורים אז אני מחפש כתובת בזיכרון שהמעבד יבצע אותה ובתוך הכתובת יהיה כתוב פקודת ג'אמפ ESP וכשהוא יפוץ ל-ESP יחכה לו הפיילורד הזדוני שלי זה הרעיון אז אנחנו עושים דבר כזה
מונה ג'אמפ מונה תחפשי לי פקודת ג'אמפ ESP בלילות תווים אסורים בואו נחפש את זה אנחנו באים לרימור דסקטופ, איפה התווים האסורים שלנו?
יש לנו פה אותם, הנה יש לנו פה רשימה של כל התווים האסורים אני משאיר אותה, עושה קונטרול וי, יופי, אני אומר למונה תמצאי את זה רק פה, ככה צריך להיות, זו הייתה תקלה, בואו נראה מה היא תמצא לי רק רגע, יש פה עוד משהו קטן, אני לא רואה כלום בדבר הזה, לא רואים כלום פה, אוקיי, 0, 0, 7, 2, 0, יופי, בואו נראה מה מונה מוצאת
לי איפה החלון של הפלט? ווינדו לוג. או, הנה התוצאות של Jump ESP, תראו כמה זה מצא.
כמה מקומות יש בהם פקודת Jump ESP, והנה אחת הכתובות. זאת לדוגמה כתובת שמתאימה לי. זה לא משנה איזה כתובת אני אקח, כי כולם הם Jump ESP. שימו לב, אצל כולם אין ASLR. מה זה אומר ASLR?
הן תמיד נטענות לאותו מקום בזיכרון. אם היה פה ASLR זה היה אומר שכל הפעלה זה היה נטען למקום אחר בזיכרון. אז בסדר, אז הנה יש פה Jump ASP בכתובת כזאת וכזאת.
אז מה אנחנו עושים? מכניסים את הכתובת הזאת לתוך BBB, זה ה-BBB שלנו, זה הפקודה הבאה לביצוע. הוא יקפוץ לכתובת הזאת, יראה שם Jump ASP ויקפוץ לעשות את הקוד הזדוני שלי.
אוקיי, אני יכול להעתיק את זה איכשהו? copy to clipboard address, בוא נראה שהוא באמת העתיק לי את האדרס, סתם מעניין אותי. 62511af, יופי, זאת הכתובת שאני צריך.
עוד פעם right click copy to clipboard address זאת הכתובת יפה ואני מכניס את הכתובת הזאת פה בתוך ה-BBB הזה אוקיי רק שזה לא כזה פשוט למה זה לא כזה פשוט כי הכתובת צריכה להיכנס בסדר הפוך קודם כל האחרון הנה יש לנו את זה כתוב פה אתם רואים אנחנו צריכים לכתוב את זה בצורה כזאת כאשר אם היא מופיעה 1,2,3 ב-immunity אנחנו צריכים לכתוב אותה בסדר הפוך
מאחרון לראשון. למה? כי ככה בנוי הזיכרון, זה נקרא Little Indian, האינדיאני הקטן. זה מבחינת הארכיטקטורה, ככה זה עובד.
אוקיי, אז מה אנחנו עושים? אנחנו לוקחים את האחרון, אתם רואים? זה האחרון, ושמים אותו להיות ראשון. לוקחים אחד לפני האחרון, ושמים אותו להיות שני.
לוקחים את זה שלפניו, והוא שלישי. וזה, הראשון הולך להיות אחרון. זהו. זאת הכתובת של פקודה הבאה לביצוע שהפקודה הזאת זה jump.asp ואז הוא יקפוץ ל-asp ומה יחכה לו ב-asp?
ה-payload שלנו טוב בוא נארגן את ה-payload ונבדוק שזה עובד לנו איך אנחנו מארגנים את ה-payload רגע מה למה לא נשאר יותר משם אוקיי איך אנחנו מארגנים msfn הוא מייצר לנו payload אנחנו אומרים לו שאנחנו רוצים reverse tcp שיתחבר אלינו חזרה הקורבן יתחבר חזרה אלינו אנחנו צריכים לציין לו מה ה-ip שלנו מה הפורט שלנו ומה התווים האסורים.
טוב, בואו ניקח את כל זה. ניקח את זה, נעתיק את זה לכאן, ומה אנחנו צריכים להכניס פה? את ה-IP שלנו, כן?
אנחנו צריכים פה להכניס את ה-IP, Your IP. מה הכתובת IP שלי? שימו לב, אני צריך להכניס את הכתובת של VPN, ifconfig, בואו נגדיל על כל המסך, ifconfig עוד פעם, כתובת של tunnel 0, לא של לופבק ולא של eth0, רק של tunnel 0.
למה? אנחנו רוצים על הרגל שנמצאת ברשת שלהם שהוא יתחבר חזרה אוקיי אז אני מכניס כאן ב-localhost את הזה 444 ותווים אסורים מהם התווים האסורים