פורנזיקה – Cyber Forensics – הסבר על ASCII, דיסק קשיח – Sector & Clusters,Image
פורניזיקה בתחום המחשבים – מצב בו מבצעים "חקירה" למחשב \ שרתים \ טלפונים שנפגעו מנוזקות או חקירה לשם גילוי של מידע כמו אדם שנחשד בפלילים ומעוניינים לדעת לאיזה אתרים הוא גלש מה הוא ביצע במחשב בזמן האחרון ובכך לעלות על עקבותיו.
צורה נוספת היא תחקור מחשבים בארגון שנפגעו מנוזקות ובכך לבדוק "מהיכן הגיע הנוזקה?" "מתי המשתמש הפעיל אותה?" "איך היא נכנסה לרשת?" ושאלות נוספות שאמורות לעניין אנשי אבטחת מידע.
לרוב הפורניזיקה מבוצעת על ידי אנשי הSOC או ה IR, חקירה כזו לרוב מתנהלת בתצורה בה מעתיקים את הכונן הקשיח של התחנה אל קובץ RAW ובוחנים את המערכת כולה מבלי "לחבל" במערכת ובממצאים הקיימים בה.
בנוסף חקירה גם תבוצע על תעבורת הרשת בכדי לזהות "התקפה" או "סריקה" לקראת התקפה.
זכרו! בחקירה, במקרה אמת בו צריכים לחקור מחשב שהתגלה בו "התקפה" בה הותקן קובץ או מחשב ש"נתפס" לצרכי חקירה פלילית, אין לכבות אותו!! שכן מידע רב נמצא גם בMemory.
נתחיל מהבסיס, תחילה קראו את המאמרים הבאים:
מתחיל מהידע הבסיסי,
File System & OS
File System – מערכת קבצים שאחראית מאחורי הקלעים לניהול,סידור והגדרת הSpace Allocation בדיסק – קיימים כמה מערכות קבצים כמו NTFS, RFS, FAT, EXT וכו' , מערכת הקבצים אחראית לסידור הקבצים והתיקיות בדיסק הקשיח.
OS – התוכנה שאחראית על הפעלת האפליקציות, וניהול החומרה אל מול מערכת ההפעלה והתוכנות המותקנות בה – מערכות הפעלה כמו Windows, Linux, Unix, MACos – מערכת ההפעלה אחראית על הפעלת הקבצים, עריכתם ותפעול את מול החומרה.
בינארי – אפס או אחד 1 או 0 הצורה הבסיסית ביותר שהמחשב "מדבר" בו, גם הדיסק הקשיח בבסיסו הוא 0 ו1
אוקטאל – Octal הוא 8 Base- זאת אומרת מ 0 ל 7
דצימל – Decimal הוא 10 Base וכאן זה מ 0 ל 9
ASCII – American Standard Code for Information Interchange
אסקי הוא Base 16 זאת אומרת שהוא 0-15 והוא כולל בתוכו את 0123456789ABCDEF הוא בתצורת HexaDecimal
הבעיה היא שיש שפות נוספות ולא יכולות להשתמש בASCII ולכן זה הטבלה הנפוצה ביותר לאנגלית אבל שפות אחרות משתמשות בצורה שונה ולא ב ASCII כל שפה משתמשת בUnicode אחר , למשל עברית ב UTF-8 בכללי Unicode יכול להציג 65536 אלף אותיות וסימנים שונים
ניתן להבחין כי לכל אות ב Hex יש מספר
Hex – המספר בנוי מ 4 תווים בבינארי לדוגמה האות A בנויה מ1010 והמספר הדסימלי Decimal הוא 10 שכן ניתן להבחין בטבלה הבאה שהוא ממוקם במקום 10
זו טבלת ה ASCII
אם נבדוק בHexD – עורך Hex ניתן להבחין שה48 לפי טבלת ה ASCII זה האות H (בטור Hex טור שני מימין) וכך כל אות בשורה
כעת נעבור לדיסקים קשיחים
DIsk Structures
מערכת הקבצים הנפוצה ביותר בWindows היא NTFS אך גם FAT32 היה הכי נפוץ לא מזמן
בFAT32 אין לנו את עניין ההרשאות, ולא ניתן להגדיר הרשאות לתיקיות, המערכת מוגבלת לקבצים עד 2GB ודיסק עד 2TB
NTFS נותן המון אפשרויות חדשות לעומת FAT32
תומך בדיסקים עד 2TB כמו ב FAT32 (כאן אין כל כך חידוש)
קבצים בודדים תומך עד 16TB
ניתן ליצור Links בדומה ל Hard Link בלינוקס
תומך בהצפנה של קבצים ותיקיות
תומך ב Ntfs Permissions – הרשאות
Indexing – מאפשר חיפוש מהיר יותר של קבצים במערכת ההפעלה
Journaling – יומן עוקב אחרי כל הכתיבות של מערכת הקבצים, וכל גם מה שמשתנה, אם קרה לקובץ שגיאה או בעיה הוא בודק ביומן ומשווה את מערכת הקבצים ואם הם לא תואמים הוא יודע לתקן את החלק הבעייתי בקובץ
ניתן להגדיר Quata – להגביל משתמש שלא יוכל להשתמש ביותר מX נפח של מקום
Volume Mount Point – ניתן להגדיר סוג של "תיקיה" כדיסק קשיח, זאת אומרת שהדיסק או התקן חיצוני , יופיעו כמו תיקייה
סקטור Sector או בתמונה הוא כתוב כ Track Sector – הוא בגודל של 512 Bytes והוא יחידת המידע הקטנה ביותר שיכול דיסק קשיח לכתוב לדיסק
Cluster – לרוב תיהיה במערכת הקבצים כ- 4 או 8 Track Sectors, כך שנאמר אם כונן D שלנו מוגדר כ Allocation Size של 4096 Bytes
אז ה Track Sector שלנו יהיו כל אחד – 512 Bytes כפול 8 Sectors
Cluster בנוי מ Tracks Cluster למשל 4 Tracks הם Cluster אחד – זאת אומרת ש4 * 512 היא שקובץ טקסט עם אות אחד בפנים תשקול 4KB
ניצור כעת כונן ונגדיר אותו עם 8192 ל Cluster
כעת ניצור קובץ בכונן עם תו אחד ונבדוק מה גודל הקובץ, ניתן להבחין שגודל הקובץ הוא 8192
ואם נשנה ל 16KB
אותו דבר
זאת אומרת שהקובץ שוקל בדיסק 16KB למרות שיש בו תו אחד והמשקל בתכלס הוא 1 Bytes
למשל לכל Cluster ב FAT32 נניח בנפח מ32GB יש 64 סקטורים ל Cluster
ואילו ב Ntfs יש נניח מעל 2GB יש 8 סקטורים ל Cluster
על ידי הפקודה
fsutil fsinfo ntfsinfo c:
נוכל לבדוק מה הגדול שהמערכת מקצה ל Cluster אחד במערכת ההפעלה
Slack Space
הוא האזור הריק שנשאר בין הסוף של הקובץ שכתבתם לבין הסוף של ה Cluster
נניח וקובץ שוקל 1400Byes והCluster הוא 2048 (512Bytes כפול 4 – שהם 4 סקטורים כ Cluster אחד)
RAM Slack – הוא אותו הדבר אבל הוא מתייחס למקום הריק שנותר בין הסוף של הקובץ לסוף של הסקטור
File Slack – הוא המקום הנותר בCluster כולו
*איפה שרשמתי ב Cluster 512 Bytes כמובן שכל Sector בנוי מ 512 ולכן סה"כ ה Cluster הוא 4096 Bytes
Unallocated Space
הוא מקום פנוי בדיסק, מקום בו מערכת הקבצים הגדירה כמקום אליו ניתן לכתוב קבצים
קבצים מחוקים ויצירת קבצים
- כאשר אתם יוצרים קובץ המערכת Allocates Cluster למיקום הפיזי של הקובץ שיצרתם, זאת אומרת שהיא מחפשת Cluster להניח עליו את הקובץ
- כאשר אתם מוחקים קובץ המערכת מגדירה שה Clusters האלו התפנו
- הקובץ שהיה ומחקתם אותם נשאר באותו המיקום , אך אם קובץ חדש יגיע הוא יכתב אל ה Cluster הזה
- לכן ככל שעובר הזמן ונכתבים קבצים חדשים אל המערכת, לא נוכל לשחזר קבצים באותה היעילות אם ישאר אחרי המחיקה או שהמחשב היה כבוי ובכך להוציא את הקבצים המחוקים שה Cluster שלהם לא "נדרס" על ידי קובץ חדש
אבל! אם הקובץ החדש קטן יותר מהגודל של הקובץ הקודם אז המקום הפנוי שהוא הSlack Space בין הקובץ החדש לסוף ה Cluster , את המקום הפנוי הזה אפשר לשחזר.
לדוגמה, תמונה שמחקנו שקלה 1400Bytes ועכשיו שמנו קובץ בגודל 1000Bytes, המרווח שנותר בין הקובץ החדש לסוף ה Cluster הוא הSlack Space ואותו ניתן לשחזר , במקרה שלנו רק 400Bytes אבל בקבצים גדולים זה יכול להגיע לחלק מאוד גדול של הקובץ
אם כך כאשר אתם מבחינים במקום שמוגדר כ Unalocated Space הוא המקום בו יש קבצים שנמחקו (לא תמיד) ואפשר להשיג קבצים חשובים ממיקום זה
File Craving & Fragmentation פרגמנטציה
הוא בדיוק הפעולה בה תוכנה תזהה את אותו Unallocated Space ותוציא את הקבצים שנמצאים שם ובכך "נציל" קבצים מחוקים
פרגמנטציה – היא אותה הפעולה שאז היינו עושים בWindows XP על מנת "לגרום למחשב להיות מהיר יותר" אכן פעולה זו טיפלה גורמת למחשב להיות מהיר יותר. אבל מדוע?
כאשר הדיסק הקשיח כותב את המידע, הוא כותב את המידע לCluster אבל אם נכתבים בו זמנית עוד קבצים, הדיסק יניח את חלק מהקובץ ב Cluster אחר ושאינו נמצא באותו הרצף בTrack ולכן כאשר ה"סיכה" שבדיסק הקשיח רוצה לקרוא את הקובץ היא קוראת אותו נניח מ Cluster 1 -5 אבל Cluster 6 נמצא במיקום אחר בדיסק הקשיח ואז הסיכה צריכה "לזוז" לשם ולכן הקריאה איטית יותר
לכן כאשר אתם מבצעים Fragmentation לדיסק הקשיח, אתם בעצם "מסדרים" את הקובץ להיות מונח ברצף אחד בדיסק הקשיח (מבחינת מיקום פיזי) וכך הקריאה מהירה יותר.
הבעיה היא כאשר התזוזה הזו עולה על Unallocated Space שכן לא נוכל לשחזר קבצים בצורה קלה כי הם "נדרסו" וכמו שהסברתי קודם, ברגע שקובץ חדש "דורס" Cluster שבו היה קובץ ישן, לא ניתן יהיה לשחזר את המידע.
HxD Sectors
אם נרצה להבחין איך המידע ישב במערכת, נוכל לפתוח Image של תחנה ששמרת כקובץ RAW (בהמשך המדריך נלמד דרך FTK) ובו נוכל להבחין במידע שכתוב בכל Sector
להסבר מפורט יותר, היכנסו למאמר