לדלג לתוכן

מבוא ל-Volatility - איך חוקרים פורצים לתוך זיכרון המחשב

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

למה בכלל לחקור זיכרון, ולא רק דיסק

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

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

איך Volatility עובד בפועל

השלב הראשון בכל חקירת זיכרון הוא לקחת "תמונה" (dump) של הזיכרון של המכונה החשודה - קובץ בינארי אחד ענק שמכיל את כל תוכן ה-RAM באותו רגע. Volatility עצמו לא לוקח את התמונה הזאת, הוא הכלי שמנתח אותה אחרי שהיא כבר קיימת.

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

הפלאגינים המרכזיים שכדאי להכיר

Volatility בנוי כמסגרת עבודה (framework) עם עשרות פלאגינים, כל אחד חושף זווית אחרת של המידע החבוי:

  • רשימת תהליכים. מציג את כל התהליכים שרצו במכונה בזמן הצילום, כולל כאלה שניסו להסתתר מרשימת התהליכים הרגילה של מערכת ההפעלה.
  • חיבורי רשת. חושף אילו חיבורים היו פתוחים, לאן, ובאיזה תהליך - מידע קריטי לזיהוי תקשורת עם שרת תקיפה (command and control).
  • זיהוי קוד מוזרק. תהליכים לגיטימיים לפעמים "נחטפים" כשקוד זדוני מוזרק לתוכם כדי להסתתר בתוך תהליך תמים. Volatility יודע להשוות בין מה שאמור לרוץ בתהליך לבין מה שבאמת רץ בו, ולחשוף פערים חשודים.
  • חילוץ קבצים ומחרוזות. לפעמים אפשר לחלץ קבצים שלמים, סיסמאות, או מפתחות הצפנה ישירות מתוך הזיכרון, גם אם הם נמחקו כבר מהדיסק.

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

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

מעבר לעולם המקצועי, פורנזיקת זיכרון היא גם אחד התחומים המרתקים ביותר באתגרי CTF. אתגרי forensics רבים נותנים לכם קובץ dump ומבקשים למצוא בו דגל חבוי, ו-Volatility הוא הכלי הראשון שכל פותר אתגרים כאלה פותח.

מה אפשר ללמוד מזה גם בלי לחקור פשעים

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

לסיכום

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

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