Exploit.education מוסבר - Nebula ו-Protostar לניצול בינארי מהיסוד¶
יש רגע מוכר לכל מי שמתחיל ללמוד ניצול חולשות בינאריות (Binary Exploitation, או בשם הפופולרי - Pwn): קוראים על stack overflow, מבינים את התיאוריה על הנייר, ואז ניגשים לאתגר Pwn אמיתי ב-CTF ומרגישים שהמרחק בין התיאוריה לפתרון בפועל הוא עצום. exploit.education נבנה בדיוק כדי לגשר על הפער הזה.
מה זה בעצם exploit.education¶
exploit.education הוא אוסף קטן ומרוכז של "wargames" - סביבות תרגול מבוססות מכונה וירטואלית, שכל אחת מהן בנויה כרצף של רמות עולות בקושי. הרוח דומה מאוד ל-OverTheWire, שאם התנסיתם בו כבר מכירים את מבנה ה-SSH מרמה לרמה. ההבדל המרכזי הוא הפוקוס - במקום להתמקד בכישורי טרמינל ולינוקס כלליים, exploit.education מתמקד ספציפית בניצול בינארי ובהסלמת הרשאות בלינוקס.
באתר תמצאו כמה wargames שונים, אבל שניים מהם בולטים כנקודת התחלה טבעית: Nebula ו-Protostar.
Nebula - הצעד הראשון להסלמת הרשאות¶
Nebula הוא סדרת רמות שמלמדת הסלמת הרשאות בלינוקס - איך תהליך שרץ עם הרשאות מוגבלות יכול, בגלל תצורה שגויה או קוד לא זהיר, לרכוש הרשאות גבוהות יותר. כל רמה ב-Nebula מלמדת פגם אחר: קובצי SUID שמריצים פקודות מבלי לוודא שהן בטוחות, תנאי מרוץ (race conditions) שבהם הזמן בין בדיקה לביצוע פתוח לניצול, הרשאות קבצים שהוגדרו בצורה רשלנית, ותרחישים דומים.
מה שיפה ב-Nebula הוא שהוא עונה על שאלה שהרבה מתחילים לא באמת עוצרים לשאול: למה בכלל משנה מי מריץ תוכנה מסוימת, ואיך העובדה הזו יכולה להיות מנוצלת לרעה. זו שאלת יסוד בהבנת אבטחת מערכות הפעלה, והתשובה עליה נבנית הרבה יותר טוב דרך ניסיון מעשי מאשר דרך קריאה תיאורטית.
Protostar - יסודות שחיתות הזיכרון¶
Protostar הוא הצעד הבא - סדרת בינארים שנכתבו במיוחד לצורך לימוד, עם סמלי דיבאג (debug symbols) זמינים ומבנה פשוט בהרבה מכל אתגר Pwn אמיתי שתפגשו ב-CTF. כאן לומדים את היסודות: buffer overflow מבוסס מחסנית (stack), פגיעויות מחרוזת פורמט (format string), ומושגים ראשוניים בעולם ה-heap.
זה בדיוק מה שהופך את Protostar לכלי לימוד מצוין - הוא לא מנסה להיות מציאותי או מתוחכם. הוא בנוי בכוונה כדי לבודד כל רעיון בפני עצמו, כך שתוכלו להתמקד בהבנת המנגנון עצמו בלי להיאבק במורכבות מיותרת סביבו. זה שלב שקל לדלג עליו כשרוצים "כבר להגיע לדברים האמיתיים", אבל דילוג עליו הוא בדיוק הסיבה שהרבה אנשים נתקעים מאוחר יותר.
איך מתקינים ומריצים בפועל¶
השימוש באתר פשוט יחסית: מורידים קובץ VM או ISO של ה-wargame הרצוי ומריצים אותו מקומית, למשל בתוכנת וירטואליזציה כמו VirtualBox או VMware. זה מתכתב מצוין עם הרעיון של מעבדת בית - מכונה וירטואלית מבודדת שאתם יכולים לאפס, לגבות ולנסות עליה כל דבר בלי חשש לפגוע במשהו אמיתי.
מכיוון שהכל רץ מקומית, אין תלות בזמינות שרת מרוחק ואין הגבלת זמן. אתם קובעים את הקצב.
למה זה גשר חשוב¶
אחרי שעברתם את Nebula ו-Protostar, המרחק בין "אני מבין את זה בתיאוריה" לבין אתגר Pwn אמיתי בפלטפורמות כמו pwnable.kr או קטגוריית ה-Pwn ב-HackTheBox מצטמצם דרמטית. במקום להתמודד בו זמנית גם עם הרעיון החדש וגם עם בינארי מורכב ומעורפל, כבר יהיו לכם היסודות מוצקים, ותוכלו להתרכז במורכבות האמיתית של האתגר.
זה בדיוק סוג הבסיס שכדאי לבנות לפני שקופצים לעולם מחקר החולשות הרחב יותר. אם אתם רוצים גם את התמונה המלאה של איך תהליך בדיקת חדירה עובד מקצה לקצה, תבנו את הבסיס עם קורס בדיקות החדירה שלנו.
תקועים באחת הרמות או רוצים להשוות גישות? יש לנו קהילה שמדברת בדיוק על זה.
לסיכום¶
exploit.education לא מנסה להרשים אתכם בגודל או במגוון. הוא נותן שני מסלולים ממוקדים וברורים שבנויים בדיוק כדי ללמד יסודות - הסלמת הרשאות ושחיתות זיכרון - בקצב שלכם, על מכונה שאתם שולטים בה לגמרי.