crackmes.one מוסבר - תרגול הנדסה לאחורה על אלפי קבצים¶
בכל אתגר CTF רגיל תמצאו בדרך כלל קטגוריה אחת או שתיים של הנדסה לאחורה, ולפעמים אפילו פחות. זה בעיה, כי הנדסה לאחורה היא בדיוק הסוג של מיומנות שבונים רק דרך חזרתיות - כמה שיותר קבצים, כמה שיותר טכניקות, כמה שיותר "רגעי אור" שבהם משהו סוף סוף נדלק לכם בראש.
בדיוק בשביל זה קיים crackmes.one.
מה זה בעצם crackme¶
בניגוד לאתגר CTF קלאסי שבו אתם מחפשים "דגל" (מחרוזת טקסט שמוכיחה שפתרתם את האתגר), crackme הוא תרגיל אחר לגמרי. מישהו כתב תוכנה קטנה - לרוב פשוט לצורך התרגול - שמכילה איזשהו מנגנון בדיקה: בקשת סיסמה, בדיקת רישיון, נעילה שצריך לעקוף. המטרה שלכם היא לפרק את התוכנה, להבין איך הבדיקה הזו עובדת, ולמצוא דרך לעבור אותה - בין אם על ידי גילוי הסיסמה הנכונה ובין אם על ידי שינוי (פאץ') של הקובץ עצמו כך שהבדיקה תמיד תעבור.
אין כאן מערכת ניקוד במובן הקלאסי. אין דירוג ארצי, אין תחרות בזמן אמת. יש רק אתכם, הקובץ, והסיפוק שבפירוק שלו. משתמשים אחרים יכולים לדרג כל קובץ לפי רמת קושי ואיכות, כך שתדעו למה להיכנס.
עם אילו קבצים תתמודדו¶
האתר מארח אלפי crackmes שהועלו על ידי הקהילה במשך שנים ארוכות. תמצאו קבצים ל-Windows בפורמט PE, קבצי ELF ללינוקס, ולפעמים גם קבצים לאנדרואיד. רמת הקושי משתנה מאוד - מקבצים פשוטים בני כמה שורות קוד שנועדו למתחילים ממש, ועד קבצים עם הצפנה, אובפוסקציה ומנגנוני הגנה מתוחכמים שנועדו לאתגר אפילו חוקרים מנוסים.
בגלל שהאתר בעצם ארכיון מצטבר ולא פלטפורמה עם נתיב לימודי מובנה, כדאי לסנן לפי רמת קושי ולהתחיל מהבסיס. אין שום בושה להתחיל מקבצי "easy" - הם קיימים בדיוק בשביל זה.
אילו כלים תצטרכו¶
כדי לפרק בינארי צריך שני סוגי כלים עיקריים. הראשון הוא דיסאסמבלר או דהקומפיילר - כלי שהופך את הקוד המכונה חזרה לצורה קריאה יותר, כמו קוד אסמבלי או משהו שדומה ל-C. Ghidra ו-IDA הן דוגמאות נפוצות לכלים מהסוג הזה, וכדאי להכיר לפחות אחד מהם היטב.
השני הוא דיבאגר - כלי שמריץ את התוכנה צעד אחר צעד ומאפשר לכם לעצור בנקודות מסוימות ולראות מה קורה בזיכרון ובאוגרים בזמן אמת. x64dbg נפוץ מאוד לעולם Windows, ו-gdb הוא הבחירה הסטנדרטית בלינוקס. שילוב של דיסאסמבלר לניתוח סטטי ודיבאגר לניתוח דינמי הוא בעצם מתכון העבודה הבסיסי של כל חוקר הנדסה לאחורה.
למה זה שווה את הזמן¶
לכל crackme יש בדרך כלל דף פורום נלווה שבו אנשים אחרים כתבו כיצד הם פתרו אותו. זה משאב מצוין - אחרי שפתרתם קובץ בעצמכם, כדאי מאוד לקרוא איך אחרים ניגשו לאותה בעיה. לפעמים תגלו טכניקה או כלי שלא הכרתם. אבל בדיוק כמו בכל תרגול אחר, הציצה הזו צריכה לבוא אחרי הניסיון העצמאי, לא לפניו - אחרת אתם מפספסים בדיוק את החלק שבונה את היכולת.
ההבדל הגדול בין crackmes.one לבין תרגול RE במסגרת CTF רגיל הוא הנפח. ב-CTF תתרגלו שניים-שלושה קבצים בתחרות שלמה. כאן יש לכם גישה למאות ואלפי קבצים ברמות קושי הולכות וגדלות, מה שהופך אותו לכלי הכי טוב שיש כדי לבנות שריר הנדסה לאחורה אמיתי לאורך זמן.
אם אתם רוצים להבין את התמונה הרחבה יותר של איך פורצים ובודקים מערכות, לא רק את פרק ה-RE, תבנו את הבסיס עם קורס בדיקות החדירה שלנו.
יש לכם שאלה על כלי ספציפי או תקועים על קובץ מסוים? בואו לשתף.
לסיכום¶
crackmes.one לא מנסה להיות פלטפורמת CTF מגוונת - הוא מתמקד בדבר אחד ועושה אותו טוב מאוד. אם הנדסה לאחורה מעניינת אתכם באמת, זה המקום שבו תבנו את המיומנות הזו לאט, קובץ אחרי קובץ.