
הטקסט המלא של הדקות הראשונות בהרצאה «התקפה Buffer Overflow - בדיקת היתכנות - Fuzzer» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם, בהרצאה הזו אנחנו רוצים לבדוק האם יש היתכנות לפריצה דרך תוכנת סינג בריז שעובדת על השרת של הקורבן שלי זאת אומרת, עשיתי סריקת רשת, עשיתי nmap, סרקתי את הרשת של הקורבן שלי וגיליתי שיש לו תוכנת סינג בריז עכשיו אני הולך למחשב האישי שלי, מקים לי מכונה וירטואלית עם Windows 10 ועם קאלי ואני רוצה לדעת האם אני אוכל לפרוץ לשרת
לפני שאני ניגש לרשת האמיתית אני מנסה לעשות את זה בתנאי המעבדה לבדוק היתכנות לפריצה דרך תוכנת סינגבריז האם יש לה חור באבטחה מסוג באפר אוברפלואו והאם נוכל לפרוץ דרכו נתקין את זה זה סינגבריז בגרסה 32 סיביות גרסה 10.0.0.28 הורדתי את זה מהאינטרנט זו תוכנה יחסית חדשה 2017 לא משהו משנות ה-90 שימו לב זה 32 ביט, היא מאזינה בפורט 80,
סרבר Web Access פורט 80, אנחנו ננצל את זה, ויש גם Service Control Port 9121 Web Port 80. Next, הוא מתקין את זה, רנסינג בריז ולשים לי דסקטופ אייקון, יאללה.
הנה הקליינט, שימו לב זה הקליינט, שאני יכול דרכו לנהל, והקליינט הזה מחובר ל-Admin Windows 10 Connected.
אוקיי, אבל הקליינט הזה פחות מעניין אותי. זה פחות מעניין אותי. מה שמעניין אותי שיש לנו גם צד של השרת. בואו נראה את זה.
יש לנו פה תוכנת סינג בריז נכנסה לסרוויסים ואנחנו יכולים לראות שהיא ראנינג. אנחנו יכולים לעשות דאבל קליק ולראות שזה קובץ אקס, זה שלה סינג בריז סרוויס נקודה אקס שנמצא פה בתיקייה וזה עובד ומחכה לחיבורים.
בואו נבדוק ש-HTTP באמת עובד. פותח דפדפן ונראה שאנחנו יכולים להתחבר ב-HTTP, נקודה טיים סלש סלש מ-27-001. אני רואה שהוא לא עובד, הוא לא עובד.
למה הוא לא עובד? כי פה בסינג בריס קליינט צריך להיכנס ל-Options ודרך הקליינט להפעיל את ה-Web Server. אתם רואים?
צריך פה לשים v, Enable Web Server on port 80. זאת אומרת הקליינט הזה דרך 9.1.2.1 ישלח פקודה לשרת, שיאזין גם בפורט 80. יש? שמתי פה v, זה כל מה שאני עשיתי.
עושה סייב, בוא נראה עכשיו. הופה, יש לנו פה לוגין. אנחנו אמורים להכניס פה לוגין. בוא ננסה לעשות aaa ו-password bbb. לוגין, לא מצליח.
יופי, עכשיו דרך העמוד הזה של הלוגין אני רוצה לנסות לפרוץ. אז בואו נעבור לקאלי לינוקס, זה אנחנו כבר לא צריכים אותו. ככה, אני צריך את ה-IP שלו קודם כל.
IP קונפיג 122 129 בוא ננסה מתוך קאלי לגשת לשם נפתח Firefox ונראה שקודם כל הגישה עובדת HTTP אני רואה שאני לא מצליח להתחבר כנראה יש פה firewall שמפריע אני לא רוצה עכשיו להסתבך עם firewall אז אני פשוט אוריד אותו אני אעשה פה turn off ואני אכבה את הfirewall לחלוטין
הוא כרגע לא מעניין אותי זה לא משחק תפקיד כי אני בא לפרוץ את הservice FireWall רק צריך לאשר לי להגיע לסרוויס הזה. הנה, אנחנו מצליחים להגיע לסרוויס.
עכשיו אני רוצה לנסות ולפרוץ דרך העמוד הזה ולראות מה בדיוק נשלח פה מאחורי הקלעים. אנחנו יכולים לעשות את זה דרך פרוקסי, נכון? לשים פרוקסי על עצמנו ולראות מה עובר בכבל תכלס.
אנחנו יכולים לעשות וייר שארק, גם לראות מה יש על הכבל. בואו נעשה וייר שארק. הוא מבקש פספורט של אדמיניסטרטור, זה קל לי. זה מכונה מוכנה שהורדתי VM מוכן שהורדתי ישירות מאתר של קאלי מכונה מוכנה והסיסמה זה קאלי ETH0 זה הכרטיס היחיד שיש פה אני לא מעוניין בלופבק אני מאזין על כבל אמיתי רואים שאין פה שום דבר כותבים
A A A A A A A A A A A A ו-12345 סתם אני מנסה בוא נראה מה קרה עכשיו פה בכבל הנה עברו פה כל מיני פאקטים טוב בואו נעצור את זה אנחנו צריכים לסנן רק htp כן אנחנו לא רוצים לראות את הכל אנחנו רוצים רק htp לראות ויש פה פוסט פוסט לוגין זה נשמע לי בדיוק מה שאנחנו רוצים אנחנו רואים פה פוסט לוגין אנחנו לא ניכנס לרמת פאקט עצמו אנחנו
רוצים לראות את כל השיחה ביניהם אז לכן אנחנו עושים follow תעקוב אחרי כל השיחה של tcp stream תוציא לי מכל הפאקטים את כל השיחה ותחבר לי את הטקסט והנה הוא נותן לי מה שאני שלחתי לו ומה שהוא שלח לי הוא שלח לי את ה-HTML הזה כתשובה וזה מה שאני שלחתי
לו אתם רואים פה את כל זה זה בדיוק מה שאני רוצה לזייף לו ואני רוצה לפרוץ דרך ה-AAA הזה דרך היוזרניים הזה אתם רואים יש פה יוזרניים AAA אני רוצה לתת לו פה יוזרניים עם מאות ואלפי אותיות במקום 5, 6, 20 לתת לו איזה כמה מאות אותיות בתוך היוזרניים ולראות האם זה פורץ, האם יש לו פה חור אבטחה.
אבל אני לא יכול לשלוח סתם יוזרנם, אני צריך לזייף כאילו זה כניסה רגילה מאתר. רק במקום להקיש באתר הרבה פעמים אות aea, אנחנו נעשה את כל זה בסקריפט. כן, פשוט ניקח את כל זה ונעתיק לתוך סקריפט.
האמת שאני כבר עשיתי, אני צריך לשלוח את זה בדיוק, כאילו זה אתר אינטרנט שמתחבר. אז אחרי שאני מוציא את זה, אני כותב סקריפט קטן בפייתון, אל תיבהלו מפייתון.
סך הכל זאת שפה די פשוטה, והסקריפט נראה ככה. בואו נעבור עליו בשתי מילים. קודם כל, אני מייבא באימפורט ספריות חיצוניות שיודעות לעזור לי.
אימפורט של ספריות זה כמו DLLים חיצוניים בווינדוס. ככה אני מייבא ספריות חיצוניות. לדוגמה, ספריית סוקט יודעת לשלוח לי מידע בכבל רשת.
לדוגמה. השתיים האחרות, האמת, יכלתי גם להסתדר בלעדיהן. אוקיי, אני צריך האמת רק את הסוקט. טוב, בואו נמשיך.
לא משנה, הבאתי פה כמה דברים מיותרים. סייז 1000 או 10,000. אני מנסה לשלוח 10,000 תווים. אז אני עושה ככה, אני עושה משתנה שקוראים לו סייז, נותן לו 10,000. אחרי זה אני אתן לו מספרים אחרים.
נניח שזה עכשיו תא בזיכרון שנכנס אליו, מספר 10,000. עכשיו אני עושה תא חדש בזיכרון, משתנה שקוראים לו מני aaa, ודוחף אות A כפול 10,000 פעמים. פשוט מאוד, במשתנה הזה בזיכרון יישב אות A 10,000 פעמים.
ככה בא לי, לנסות לפרוץ דרך המספר 10,000, נראה אם זה עובד או לא. אם זה עובד, ננסה לחפש את המספר המדויק. הלאה, HTTP קונטנט זה מה שיישלח בתוך הפוסט, בתוך הגוף.
נכון כשאנחנו שולחים פאקט, יש לנו ב-HTTP, יש לנו את ההדרים ויש לנו את הגוף, את הבפנוכו. אז את ה-בפנוכו, כבר סגרתי את הווייר שארק?
חבל, הייתי מראה לכם. אז אני שותל שם user name שווה את כל ה-a ו-password גם כן a. אני יכול לכתוב פה password 1, 2, 3, 4, 5, זה לא משנה.
העיקר שפה אני שולח 10,000 פעמים אות a. ועכשיו יש לנו משתנה חדש לחלוטין שקוראים לו HTTP request, ואני מכניס לפה את כל ה-headers שהעתקנו מווייר שארק, כולל לאיזה IP אני מתחבר, כולל לאיזה עמוד בדיוק אני רוצה להתחבר.
זה, כל זה לקחתי מתוך הפאקטים של וויירשארק. כאשר פה נכנס האורך של הפוסט, האורך של ה-HTTP פוסט הזה, האורך שלו נכנס כאן. אוקיי.
אחרי זה יש לנו שורת רווח, ככה מפרידים בין ההדרים של הבקשה לגוף, לקונטנט של הפוסט. בפרוטוקול ה-HTTP חייב להיות פה רווח, זה למעשה הרווח הזה שמפריד ביניהם.
ועכשיו אנחנו מכניסים את ה-HTTP פוסט קונטנט, את התוכן של המשתנה הזה, ואני מזכיר לכם, זה יוזרנם ופסוורד. כל זה לקחתי מאיפה?
מתוך הווייר שארק. חבל שסגרתי אותו, בואו נפתח אותו עוד פעם. אני אראה לכם שזה בדיוק מה שקורה בווייר שארק. נפעיל אותו שוב, נעשה את זה שוב, קל לי.
עוד פעם, תופסים את הפאקטים, נכנסים לאתר אינטרנט, שולחים aaa12345, מסננים, עכשיו אחרי ששלחנו את זה מסננים רק את HTTP ופה בפוסט אנחנו ממש יכולים לראות פה בואו נעשה follow stream כדי לראות את זה בצורה אתם רואים פה כל ההדרים מרווח ריק אתם רואים מרווח פנוי ואז את הbody הכחול זה התשובות שלו זה פחות מעניין אותי התשובה שלו אני
רוצה להתרכז באדום אתם רואים יש את המרווח שמפריד בין ההדרים לגוף של הפוסט בגלל שזו הודעת פוסט יש לה גוף ומה אנחנו רואים פה user name שווה וpassword שווה אז כל הheadרים האלו הגיעו למעלה אחרי זה רווח ואחרי זה הגוף הדבר היחיד שהייתי צריך לעשות זה לכתוב פה את כמה תווים יש בדבר הזה כמה content יש בדבר הזה הייתי צריך לעלות על זה שזה 35 אז
במקום לחשב את זה ידנית עשינו את זה על ידי הפקודה הפקודה אומרת length של http post content יפה אחרי שבנינו את המשתנה HTTP רקווסט שזה למעשה כל הבקשה אנחנו פותחים סוקט סוקט זה חיבור ב-TCP IP ל-IP ופורט אנחנו אומרים לו לפי איזה תקן אנחנו פותחים את הסוקט הזה זאת למעשה שורה די קבועה כזאת שאתם מעתיקים
כדי לפתור חיבור ואז אומרים לו לאיזה IP להתחבר ובאיזה פורט להתחבר ושולחים את ה-HTTP רקווסט הזה שבנינו פה וסוגרים את החיבור זה הכל אתם רואים תכלס אני צריך רק את ספרי הסוקט אני לא צריך את הטיים בסיס את זה אני אצטרך אחרי זה לדברים יותר מתוחכמים בוא ננסה לעשות את זה ולראות האם זה עובד אני פותח פה
טרמינל לא רגיל אני מעדיף מת טרמינל למה מת כי יש לו אותיות יותר גדולות האלה יותר קל לעשות לו אותיות יותר גדולות אני נכנס פה לדסקטופ ומריץ סקריפט בפייטון שימו לב הסקריפט עצמו טקסט זה טקסט פשוט זאת אומרת הקובץ הזה זה למעשה קובץ פשוט אם אני אעשה cut לראות את בפנוכו אתם תראו שזה קובץ טקסט מאוד פשוט כדי
להריץ את הפקודות האלו ולהפוך אותן למשהו שהמחשב יבין אני צריך להגיד לו שזה בשפת פייתון ואז לציין לו את השם של הקובץ מה היה השם שלנו פייזר פייזר v1 אז אני מריץ תוכנת פייתון ואומר לה לקחת את כל הפקודות מהקובץ פייזר v1 פייתון אוקיי נעשה קונטרול l ננקה את המסך ונריץ אותו זהו, הוא רץ, תוך שנייה הוא רץ.
בואו נראה מה קרה פה.