כיצד פועלות התקפות הצפת מאגר? הולך מאחורי הקלעים בתור האקר

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

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





איפור של סרטון היום גלול כדי להמשיך עם התוכן

מהי הצפת מאגר?

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





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





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

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



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

כיצד לתקן חשבון פייסבוק פרוץ





קוד הרכבה





שפת תכנות ברמה נמוכה , כלומר קרוב לשפת מכונה.

בַּלָם

גודל קבוע שטח זיכרון מוקצה .

קוד בייט

צורת קוד בשפת ביניים הניתנת להידור הכתובה בשפה ברמה גבוהה.

מַהְדֵר

תוכנה הממירה שפת תכנות לקוד מכונה.

ערימה

שטח זיכרון דינמי ומשתנה.

כיצד ליצור פרופיל קיטור טוב

יסודות תורת הזיכרון

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

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

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

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

בזמן יצירת המחסנית, הזיכרון משתמש בכתובות זיכרון גבוהות. כתובות זיכרון גבוהות אומרות אזור הזיכרון המורחב. אז ערכי הכתובות מתחילים לרדת. מחסנית הזיכרון משתמשת בשיטה הנקראת LIFO (Last In, First Out) במהלך השימוש בזיכרון. משתנים בזיכרון מחסנית תקפים רק בטווח שבו הם מוגדרים. אם הם מחוץ לתחום זה, תתרחש שגיאה.

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

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

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

  • ESP (Extended Stack Pointer): פנקס זה מחזיק את הכתובת בראש הערימה.
  • EBP (Extended Base Pointer): זה מחזיק את מצביע הבסיס.
  • EIP (Extended Instruction Pointer): והפנקס הזה מכיל את הכתובת של ההוראה הבאה שתתבצע.

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

כיצד פועלות התקפות הצפת מאגר?

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

איך לשחק משחקים מקומיים באינטרנט
  תרשים המראה את מרחב החיץ שנמצא איפשהו בין ESP ל-EBP

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

  תרשים המציג את הנתונים ב-ESP הממקדים לכתובת ההחזרה

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

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

כיצד להתגונן מפני התקפות הצפת מאגר

אז איך מונעים מזה לקרות?

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

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

בצע פעולה נגד הצפת מאגר

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