רודמאפ למחקר חולשות למתחילים - מאיפה מתחילים באמת¶
אחד השאלות שאני מקבל הכי הרבה זה "אני רוצה להיכנס לניצול בינארי, מאיפה מתחילים?" והתשובה הכנה היא שאין קיצור דרך, אבל יש בהחלט סדר הגיוני. בואו אני אבנה לכם את המפה המלאה, שלב אחר שלב, בלי לדלג על שום דבר חשוב.
שלב 0 - לפני שבכלל מתחילים¶
לפני שנוגעים בחולשה אחת, כדאי שיהיה לכם בסיס בשלושה דברים:
- תכנות בסיסי, בעדיפות ב-Python. לא בשביל לכתוב אקספלויטים בשלב הזה, אלא כדי לפתח חשיבה לוגית - משתנים, לולאות, תנאים, פונקציות.
- הבנה בסיסית של איך מחשב עובד. מה זה זיכרון, מה זה מעבד, מה ההבדל בין RAM לדיסק. לא צריך תואר בהנדסת מחשבים, אבל צריך אינטואיציה בסיסית.
- נוחות עם טרמינל לינוקס. רוב עולם הניצול הבינארי קורה בלינוקס. פקודות בסיסיות, ניווט בתיקיות, הרשאות קבצים - זה הבסיס שעליו הכל נבנה.
זה שלב שרוב האנשים מדלגים עליו כי הם רוצים "כבר להגיע לחלק המגניב". אל תדלגו. זה בדיוק ההבדל בין למידה שמרגישה זורמת לבין למידה שמרגישה כמו קיר.
שלב 1 - שפת C וזיכרון¶
זה השלב שבו נכנסים לעומק. שפת C היא השפה שבה כתובות רוב התוכנות שיש בהן חולשות מהסוג שאנחנו מדברים עליו, ובניגוד לפייתון, ב-C אתם מנהלים את הזיכרון בעצמכם - מה שאומר שאתם חייבים להבין בדיוק איך הוא בנוי. משתנים, מצביעים (pointers), הקצאת זיכרון, ההבדל בין הסטאק ל-Heap. השלב הזה לוקח זמן, ואי אפשר לקצר אותו.
שלב 2 - אסמבלי ואיך מעבד באמת עובד¶
ברגע שאתם מבינים C, השלב הבא הוא לרדת רמה אחת עמוקה יותר ולהבין מה בדיוק קורה כשקוד C מתורגם להוראות מכונה. רגיסטרים, הוראות בסיסיות, איך פונקציה נקראת ומחזירה ערך (calling conventions). אין צורך "לדעת לכתוב" תוכניות שלמות באסמבלי - אבל אתם חייבים להיות מסוגלים לקרוא אותו בנוחות.
שלב 3 - החולשות הבסיסיות על הסטאק¶
עכשיו, סוף סוף, מגיעים לחלק המרכזי - גלישת חוצץ. מבינים איך היא נוצרת, איך דורסים כתובת החזרה, ומריצים ניצול ראשון על תוכנית בלי שום הגנות מופעלות. זה הרגע שבו הרבה אנשים "מתאהבים" בתחום, כי פתאום הכל מתחבר.
שלב 4 - הגנות מודרניות וטכניקות עקיפה¶
בעולם האמיתי, תוכנות לא רצות בלי הגנות. השלב הזה עוסק בהבנת ASLR, Stack Canary, ו-NX/DEP, ואיך עוקפים אותן - כאן נכנסת לתמונה טכניקת ROP, שהיא אחת הכישורים המרכזיים בתחום.
שלב 5 - Heap וחולשות מתקדמות יותר¶
אחרי שהסטאק כבר לא מפחיד, עוברים לניצול Heap - use-after-free, double-free, וחולשות שדורשות הבנה של המנגנון הפנימי של מנהל הזיכרון. זה השלב שמפריד בין מתחילים לחוקרים ברמה גבוהה יותר.
שלב 6 - כלים לניתוח, וכלי עבודה מקצועיים¶
במקביל לכל השלבים האלה (לא רק בסוף), חשוב לרכוש שליטה בכלים כמו GDB לניתוח דינמי, Ghidra להנדסה לאחור, וספריית pwntools לכתיבת אקספלויטים בפייתון. הכלים האלה הופכים תהליך שלוקח שעות לתהליך שלוקח דקות.
שלב 7 - תרגול על אתגרי CTF אמיתיים¶
כל התיאוריה בעולם לא מחליפה תרגול. אתגרי CTF בקטגוריית Pwn נבנו בדיוק כדי לתת לכם התנסות מבוקרת בניצול חולשות אמיתיות, בסביבה חוקית ובטוחה. ככל שתפתרו יותר אתגרים, כך תפתחו אינטואיציה מהירה יותר לזיהוי חולשות.
שלב 8 - fuzzing ומחקר CVE אמיתי¶
השלב המתקדם ביותר - למידת fuzzing כדי למצוא חולשות באופן אוטומטי, והבנת תהליך מחקר CVE אמיתי בפרויקטי קוד פתוח. זה השלב שבו הופכים מסטודנט לחוקר בפועל.
כמה זמן זה באמת לוקח¶
בכנות - זה תלוי כמה זמן אתם משקיעים, אבל תכננו על בסיס איתן, ולא על קיצורי דרך. הבסיס (שלבים 0 עד 3) לוקח בדרך כלל כמה חודשים של למידה עקבית. הגעה לרמה שבה אתם פותרים אתגרי CTF ברמה בינונית עצמאית לוקחת בין חצי שנה לשנה. זו לא ריצת ספרינט, זו ריצת מרתון - אבל כל שלב בדרך מתגמל בפני עצמו.
איך עושים את זה בפועל, ולא רק כרודמאפ על נייר¶
הבניתי את כל השלבים האלה לכדי מסלול לימוד מלא ומסודר בקורס מחקר חולשות, חינם ובעברית, עם תרגול מעשי בכל שלב ופתרונות מלאים. אתם לא צריכים לנחש מה הצעד הבא - הוא כבר בנוי בשבילכם.
ואל תעשו את זה לבד. בדיסקורד שלנו יש קהילה שלמה שנמצאת בדיוק בשלבים השונים של המסלול הזה, ומוכנה לעזור כשאתם נתקעים.
לסיכום¶
הדרך למחקר חולשות בינארי היא ברורה כשמפרקים אותה לשלבים - תכנות, C, אסמבלי, חולשות בסיסיות, הגנות מודרניות, heap, כלים, ותרגול. אין קיצור דרך אמיתי, אבל יש סדר נכון שחוסך לכם תסכול מיותר. תתחילו מהשלב הראשון, תהיו סבלניים, ותנו לעצמכם את הזמן שהתחום הזה דורש.