לדלג לתוכן

מבוא לכלי Ghidra - הצעדים הראשונים בהנדסה לאחור

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

מה זה בעצם Ghidra

Ghidra הוא כלי הנדסה לאחור שפותח על ידי סוכנות הביטחון הלאומי האמריקאית (NSA), ושוחרר לציבור הרחב בחינם ב-2019. זה מהלך יוצא דופן - כלי ברמה מקצועית שלוקח שנות פיתוח, ובמקום למכור אותו הוא פשוט ניתן לכולם. התוצאה היא שהיום, מתחיל בתחום יכול להשתמש באותו כלי בדיוק שחוקרים מקצועיים משתמשים בו, בלי לשלם שקל.

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

איך מתקינים אותו

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

הצעדים הראשונים בפועל

כשפותחים את Ghidra בפעם הראשונה, התהליך הבסיסי נראה כך:

  1. יוצרים פרויקט חדש. Ghidra מארגן את העבודה שלכם בתוך "פרויקטים" - תיקייה שמכילה את כל הקבצים שאתם מנתחים ואת ההערות שכתבתם עליהם.
  2. מייבאים קובץ בינארי. גוררים את הקובץ שרוצים לנתח לתוך הפרויקט. Ghidra מזהה אוטומטית את סוג הקובץ, הארכיטקטורה (למשל x86 או ARM), ומערכת ההפעלה שלו.
  3. מריצים ניתוח אוטומטי. בשלב הזה Ghidra סורק את כל הקובץ, מזהה פונקציות, בונה קריאות ביניהן, ומזהה מחרוזות ומבני נתונים. זה יכול לקחת כמה שניות עד כמה דקות, תלוי בגודל הקובץ.
  4. נכנסים לתצוגת ה-Code Browser. כאן קורית העבודה בפועל - יש רשימת פונקציות בצד אחד, תצוגת אסמבלי במרכז, ותצוגת ה-decompiler (הקוד ה"דמוי C") לצידה. אתם יכולים ללחוץ על כל פונקציה ולראות מיד את שני הייצוגים במקביל.

מה עושים עם זה בפועל

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

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

למה זה חשוב למי שלומד מחקר חולשות

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

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

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

הצטרפו לקהילה בדיסקורד

לסיכום

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