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

האם ניתן למצוא עדויות, ראיות ואף רמזים למתקפות? מהו “שביל הפירורים” הדיגיטלי? האם בניתוח אירועי סייבר ניתן למצוא את מקור התקיפה? פעמים רבות אנו מוצאים רמזים שהם “על יד” או ראיות נסיבתיות וכאלה שאי אפשר להתקדם איתן, אבל עדיין ישנם מצבים אחרים בהם אנו יכולים לבנות תשתית ראייתית מסך הפעולות או לבנות (ביצוע Re-Construct) סדר פעולות שהתרחשו.

במאמר שביל הפירורים… Windows Forensics ניתן לראות את האפשרויות הרבות שדרכן ניתן לאסוף מידע, ובעיקר דרך Windows Forensics Analysis Evidence המספק מידע לגבי המיקומים והנתיבים הנדרשים לכל פעולה ופיסת מידע.המאמר הנוכחי מתמקד בתחקור התקני אחסון (USB) שחוברו לתחנת קצה ומציאת ראיות במערכת הפעלה Winodws 10/11.

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

התקני אחסון יכולים להיות כל התקן אשר מתחבר לתחנת הקצה החל מהתקני 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 ונוספים (נמצא בתיעוד של Windows Forensics) שניתן לדעת מהן, לאיזה קובץ הועתק ולאיזה מיקום הם שייכים עד לרמת מספר סריאלים. לוגים אלה מצריכים הפעלה ברמת Audit File System.

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

רישום 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

2019-04-04_22h25_08.png

רישום מידע לגבי כוננים (Drive & Volume)

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

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

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

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

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

2019-04-04_22h34_01.png

2019-04-04_22h42_41.png

חשוב להדגיש כי המזהה של 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 (אופציונלי – לשלב מאוחר יותר כאשר נבצע קורלציה)

2019-04-05_12h25_152019-04-05_12h27_33

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

  • לוג 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.

2019-04-05_13h14_15.png

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

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

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

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

2019-04-06_09h52_45.png

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

  • לוג 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

2019-04-06_10h02_14.png

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

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

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

2019-04-06_10h23_58

ישנה אפשרות לעבוד עם כלים שמבצעים המרה לערכי 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

2019-04-06_10h41_05.png

לסיכום

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

<

p dir=”rtl”>בשלבים הקצרים שביצענו עד כה אפשר לראות כי במספר שלבים בודדים בלבד אנו יכולים לאסוף מידע וראיות, וע”י כך לבנות תהליך פעילות של משתמש. חשוב מאוד להדגיש כי ישנם מספר אפשרויות שונות לאסוף מידע על חיבור התקנים חיצוניים וזאת רק אחת מהן. חשוב לדעת כי ישנם כלים שיכולים לבצע אוטומציה של הפעולות שבוצעו במאמר זה, אך אנו עדיין חייבים לדעת איך עובד התחקור בכדי לדעת להבין נכון את המידע שניתן להוציא מכלים אלה.

2 Responses

  1. שגיא הגיב:

    תותח על

  1. 03/10/2021

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

השאר תגובה

%d בלוגרים אהבו את זה: