תחקור USB ומציאת ראיות (Windows Forensics)

האם ניתן למצוא רמזים למתקפות? מהו "שביל הפירורים" הדיגיטלי? האם באירועי סייבר (Incident) מוצאים לבסוף (RCA Incident) כמו שציפינו? האם התחקור מגיע לרמות עומק מירביות?

במאמר שביל הפירורים… Windows Forensics ניתן לראות את האפשרויות הרבות שדרכן ניתן לאסוף מידע, ובעיקר דרך Windows Forensics Analysis Evidence המספק את המיקומים והנתיבים הנדרשים לכל פיסת מידע.

המאמר הנוכחי יתמקד בתחקור התקני אחסון שחוברו לתחנת קצה ומציאת ראיות במערכת הפעלה מבוססת Windows 10.

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

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

פירורי מידע של התקני אחסון

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

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

חיבור התקן חיצוני

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

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

רישום ברמת Event – כל התקן אשר מחובר אל תחנת הקצה מספק רישום ברמת Event Viewer של סוג החיבור, סוג התקן חיצוני, מצב קיים, ניתוק התקן חיצוני. הרישום נעשה אל הלוגים של הבאים:

  • מספר לוג 20001 (System) – ניסון להתקנת התקן וכולל מידע לגבי סוג, גרסה, מצב.
  • מספר לוג 6416 (Security) – זיהוי התקן חיצוןני חדש במערכת
  • מספר לוג 6419 (Security) – בקשה לביטל התקן חיצוני
  • מספר לוג 6420 (Security) – ביטול התקן חיצוני
  • מספר לוג 6421 (Security) – בקשה להפעלה מחדש של התקן חיצוני
  • מספר לוג 6422 (Security) – הפעלה מחדש של התקן חיצוני
  • מספר לוג 6423 (Security) – התקנת התקן חיצוני בוטלה ע"י פוליסי
  • מספר לוג 6424 (Security) – התקנת התקן חיצוני אושרה ע"י פוליסי
  • מספר לוג 98 (System) – חיבור מוצלח של התקן מבוסס NTFS (נרשם גם בערך USBSTOR)
  • מספר לוג 10000 (System) – חיבור ראשוני שלח התקן חיצוני מבוסס (UserMode)
  • מספר לוג 20003 (System) – חיבור ראשוני שלח התקן חיצוני (UserPnp)
  • מספר לוג 112 (Microsoft-Windows-DeviceSetupManager/Admin) – חיבור התקן ראשוני
  • מספר לוג 300, 301 (Microsoft-Windows-DeviceSetupManager/Operational) – חיבור התקן ראשוני לפורט אחר
  • מספר לוג 400, 410, 420 (Microsoft-Windows-Kernel-PnP/Device Configuration) – חיבור התקן חיצוני (נרשם גם בערך USBSTOR)
  • מספר לוג 4663 (Microsoft-Windows-Security-Auditing) – כל חיבור התקן חיצוני

ישנם מספרי הודעות נוספים שניתן לעבוד עמם כדוגמת 4556, 4660 ונוספים שניתן לדעת מהן איזה קובץ הועתק ולאיזה מיקום, לוגים אלה מצריכים הפעלה ברמת Audit File System.

רישום Key Identification – מספק מידע לגבי התקן שחובר לתחנה לפי חלקי המידע הבאים:

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

המידע נמצא במיקום הבא:

  • SYSTEM\CurrentControlSet\Enum\USBSTOR
  • SYSTEM\CurrentControlSet\Enum\USB

רישום פעולות מסוג First/Last Times – חיבור התקן חיצוני לתחנת קצה נעשה לפי מספר שלבים של זיהוי התקן, ביצוע התקנה אוטומטי ולאחר מכן תחילת שימוש בהתקן חיצוני. בכל אחת מאותן פעולות נעשה רישום מול קובץ לוג אשר מתאשר בפרטים את כל אותן שלבים.

מיקום הלוגים נעשה למספר מקומות:

  • התקנת התקן חיצוני בקובץ לוג setupapi.dev.log בנתיב C:\Windows\inf
  • התקנת אפליקציה עם התקן חיצוני בקובץ לוג setupapi.app.log בנתיב C:\Windows\inf
  • רישום נוסף ברמת System Hive בנתיב הבא  \CurrentControlSet\Enum\USBSTOR\Ven_Prod_Version\USBSerial#\Properties\ {83da6326-97a6-4088-9453-a19231573b29}\####

בדוגמה שלפנינו ניתן לראות את חיבור והתקנת התקן USB

רישום מידע לגבי כוננים (Drive & Volume) – כל חיבור של התקן חיצוני למערכת מקבל אות כונן, מזהים שונים כדוגמת Serial Number וכן הלאה. מכיוון שאנו כבר יודעים מהם המזהים השונים (על סמך קטגוריות קודמות של זיהוי) אנו יכולים להתחיל ולבצע התאמה.

ברישום כוננים ניתן לראות את רישום התקנים חיצונים שחוברו כולל ID ובהתאם לכך נוכל לבצע התאמה של אות כונן מול סוג התקן ומול מזהה ID.

זיהוי לפי המיקומים הבאים:

  • SOFTWARE\Microsoft\Windows Portable Devices\Devices
  • \HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices

בדוגמה שלפנינו ניתן לראות אות כונן של אותו התקן USB שחיברנו קודם לכן.

חשוב להדגיש כי המזהה של GUID מתוך התיקיה של MountedDevices תוכל לשמש אותנו בכדי לדעת מיהו המשתמש אשר הפעיל או השתמש באותו התקן חיצוני.

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

זיהוי לפי מיקום:

  • \HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices

רישום Serial Number – פירורי מידע נוספים שניתן למצוא הם של המספר הסריאלי של אותו התקן חיצוני, וכאן ניתן למצוא מידע מסוג: מספר סריאלי של אותו Partition, אות כונן ספציפית אשר משויכת אליו, שם הכונן. הדבר המעניין שכאן נכנס לתמונה מידע הקשור אל הקישורים והקבצים אהחרונים שבהם נעשה שימוש.

קבצים אחרונים – מידע נוסף שזמין הוא קבצים אחרונים שהיו בשימוש (Recent), ולכן כל קובץ שעובר שינוי כלשהוא נרשם באופן אוטומטי בתיקיות Recent עם סיומת LNK.

  • יצירת הקובץ Shortcut .lnk נשרמת לאחר השינויים הבאים: יצירת קובץ, פתיחת קובץ, שינוי שם קובץ, שינוי ערך או נתון בתוך הקובץ.
  • המידע שאנו יכולים לקבל הוא בעיקר זמן יצירת הקובץ, זמן שינוי הקובץ, מיקום מקורי, מיקום קיים, פרטי Serial Number.

ישנם שני מיקומים מרכזיים לקבצים אחרונים (Recent)

  • %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Recent
  • USERPROFILE%\AppData\Roaming\Microsoft\Office\Recent

רישום התקנים – מידע נוסף אשר נרשם בכל חיבור התקן ויכול לספק לנו מידע נוסף הוא DeviceClasses (בחלקו דומה לרישומים הקודמים) והמידע אשר זמין הוא בין היתר interface GUID, Hardware Id, and device class.

  • מיקום המידע נמצא בנתיב הבא HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses\

מידע נוסף – ישנו מידע נוסף שניתן לנטר מול התקני אחסון, אך מצריכים הפעלה של Trace Log וחלקם על גבי ETW. מידע נוסף בקישור הבא USB Event Tracing for Windows.

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

תחקור אירוע ומציאת ראיות

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

תרחיש גילוי התקן USB

ישנם מספר דרכים לגשת למידע ולבניית תהליך פעולה של משתמש, השלבים המובאים בדוגמה שלפנינו היא אחת מתוך ארבע אפשרויות המתבססות על USBStore.

שלב זיהוי ראשוני – בשלב הראשון נבדוק בממשק Event Viewer האם ישנו לוג מספר 20001 ולאחר שנמצא אחד כזה אנו צריכים לקחת את המידע הבא:

  • לוודא שאכן מדובר על ערך UserPnp מתוך Source
  • ערך DeviceInstanceID (לשלב מאוחר יותר כאשר נבצע קורלציה)
  • ערך SetupClass (אופציונלי – לשלב מאוחר יותר כאשר נבצע קורלציה)

מידע שהשגנו עד כה:

  • לוג 20001 לגבי חיבור התקן חיצוני
  • סוג ההתקן אשר כולל את:
    • מיקום ענף שהוא דיפולטי בערך USBStore
    • שם התקן Disk&Ven_SanDisk&Prod_Cruzer_Blade&Rev_1.00
    • Serial Number שהוא 4C531001570125119323
    • ערך Class שהוא eec5ad98-8080-425f-922a-dabf3de3f69a

שלב זיהוי התקן כללי (Key Identification) – בשלב זה נקח את המידע שיש ברשותינו עד כה ונבצע קורלציה למציאת מידע נוסף מול USBStore, ולכן ניגש אל הנתיב הבא בממשק Regedit.

במיקום USBStore ניתן לראות את כלל התתקנים אשר חוברו עד כה, מיקום המידע נמצב בנתיב הבא Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR.

אפשר לשים לב כי ישנם מספר התקנים אך אנו מתסמכים על אותו Serial Number מתוך לוג מספר 20001, ולאחר מכן משייכים את המידע הנדרש ברמת הערכים מתוך USBStore.

נוכ להריץ גם פקודת PowerShell בכדי לקבל את המידע הנ"ל (יש לשנות בהתאם את ערך PSChildName לערך הנדרש:

Get-ItemProperty -Path ’HKLM:\SYSTEM\CurrentControlSet\Enum\USBSTOR\*\*’ | ? {$_.PSChildName -eq "4C531001570125119323&0"}

ישנו פרמטר נוסף אשר נדרש לשלב הבא והוא DiskId שנמצא בתיקיה PartMGR.

בשלב זה המידע שיש לנו מאומת והמידע שיש ברשותינו עד כה הוא:

  • לוג 20001 לגבי חיבור התקן חיצוני
  • סוג ההתקן אשר כולל את:
    • מיקום ענף שהוא דיפולטי בערך USBStore
    • שם התקן Disk&Ven_SanDisk&Prod_Cruzer_Blade&Rev_1.00
    • Serial Number שהוא 4C531001570125119323
    • ערך Class שהוא eec5ad98-8080-425f-922a-dabf3de3f69a
    • ערך DiskID שהוא {afda4f30-56d0-11e9-b1e1-5cea1d6fe14f} – זהו למעשה ערך GUID בנוסף ואותו נצטרך בהמשך.

שלב זיהוי אות כונן – בשלב זה אנו צריכים לשייך את המידע שהושג עד כה מול פעולות שבוצעו ע"י המשתמש וכללות בנוסף את פרמטרים נוספים אל אותו התקן USB.

בתיקיית Windows Portable Devices נוכל לדעת מהו שם הכונן לפי המיקום הבא:

Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Portable Devices\Devices

על סמך הפרמטרים של Friendly Name ושל Device ID ניתן לראות כי אות כונן היא F.

בכדי לאמת את המידע נוכל לבצע בדיקה מול תיקיית MountedDevices על סמך הפרמטרים הבאים:

  • DiskId – על סמך השוואת הפרמטר נוכל לדעת איזה Volume Number הינו הערך הנדרש
  • Serial Number – על סמך הערך של DiskId וכן הפרמטר של Serical Number נוכל לוודא שאכן אות הכונן היא F

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

מידע שיש לנו עד כה:

  • לוג 20001 לגבי חיבור התקן חיצוני
  • סוג ההתקן אשר כולל את:
    • מיקום ענף שהוא דיפולטי בערך USBStore
    • שם התקן Disk&Ven_SanDisk&Prod_Cruzer_Blade&Rev_1.00
    • Serial Number שהוא 4C531001570125119323
    • ערך Class שהוא eec5ad98-8080-425f-922a-dabf3de3f69a
    • ערך DiskID שהוא {afda4f30-56d0-11e9-b1e1-5cea1d6fe14f} – זהו למעשה ערך GUID בנוסף ואותו נצטרך בהמשך
    • אות כונן שהוא פרמטר – F

שלב זיהוי המשתמש – בשלב זה נזהה את את המשתמש אשר חיבר את אותו התקן USB לפי הערכים שנבדקו עד כה והערך החשוב הוא ערך DiskId\Guid. בכדי לזהות מיהו המשתמש יש לבצע את הפעולות הבאות:

  • תחילה יש לטעון את קובץ NTUser.dat של המשתמש הנדרש
  • בדיקת GUID – הבדיקה תבוצע מול תיקיית MountPoints2 בנתיב הבא: 

Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2

לסיכום

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

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

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

1 Response

מה דעתך?

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