מבוא: כאשר File Corruption Meets Forensic Reverse Engineering

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

מה הנדסה הפוכה פירושה בקונטקסט של שחזור נתונים

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

מדוע כלי התאוששות סטנדרטיים נופלים קצרים

רוב כלי ההחלמה המסחריים פועלים על חתימות קבצים ידועות: הם לסרוק עבור FLT:0 (JPEG), FLT:1, או FLT:2 (WAV) ולאחר מכן להעתיק הכל עד לחתימה הידועה הבאה.

  • (ב) ,0) , קובצים מפורקים בכבדות (ב"ג) 1 (ב) שבהם בלוקים לוגיים מפוזרים על פני התקשורת ולא על ידי רצף.
  • (ב) ,0) , קידוד או דחוסים (מכלים) 1 (לא היו לו סימני טקסט מוכרים.
  • (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) ,0) פורמטים ראשוניים או מעורפלים (FLT:1) שאינם נמצאים במאגר החתימות של כלי ההתאוששות.

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

הבנת מבנה הקבצים ברמה Binary

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

ראשי התיבות של Headers, Footers and Magic Bytes

רוב הקבצים מתחילים עם ראש המכיל "מספר מקמא" (למשל, FLT:3 עבור JPEG) ורגל (למשל, FLT:4) גם לאחר שחיתות, מבנים אלה לעתים קרובות לשרוד כי הם קטנים ומוצבים על ידי מדפים צפויים.

Chunks ו-TLV (Type-Length-Value) Structures

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

נקודות פנימיות וOffsets

פורמטים מורכבים יותר (למשל, PDF, ZIP, מסמכי Office) מכילים מחסומים פנימיים פנימיים.A PDF יש שולחן מעבר (ראה:5) המעדיש את תחילת כל אובייקט.אם ה-xref אבד אך האובייקטים נשארים, ניתן לשחזר את השולחן על ידי חיפוש אחר FLT:6 ו-FLT 7 סמן.

שלב-בי-שלב: הנדסה הפוכה קובץ מושחת

זרימת העבודה הבאה חלה על רוב הניסיונות ההחלמה:

1. קנה עותק עבודה (ואף פעם אל תגע במקור)

תמיד לעשות תמונה של קובץ מושחת. השתמש (FLT:8) או כלים כמו FTK Imager כדי ליצור עותק לקריאה בלבד. לעבוד על הסיכונים המקוריים נזק בלתי הפיך מ overwrites, במיוחד אם אתה מנסה לערוך במקום עם עורך Hex.

בדיקה אחרונה ב-2.Inspect the Raw Binary with a Hex Editor

פתח את העותק בעורך ה- Hex (למשל, HxD, 010 עורך, או hexdump בטרמינל).

  • קסם מדהים מתחיל 0
  • דפוסים חוזרים או ריצות של אפסים (לעתים קרובות ⁇ ).
  • ASCII מיתרים משובצים בינאריים ב- בינארי - שמות קבצים, פעמים, או metadata עשויים להיות מוכנים אנושי.
  • מעברים של ASCII לקריאה לרעש אקראי (מצביע על תחילת השחיתות).

זיהוי מארקים ידועים ו- Boundaries

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

4.הרסו את המבנה הלוגי

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

5.הוציאו נתונים מחוסנים

לאחר שזיהית שברים שלמים, הוציאו אותם לקבצים נפרדים.כלים כמו LT 10 עם ההרחבה:11 ו-FLT:12 פרמטרים הם אידיאליים.עבור מיצויים מורכבים יותר, ייתכן שתכתבו תסריט פייתון הקורא את הקובץ המושחת, מסמן את המבנה שהכנתם לאחור, וכותבים את החלקים התקפים.

6. אימות ו- Rea להרכיב

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

כלים חיוניים לשיקום נתונים

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

עורך דין ו- Binary Data Analysis

  • (ב) [13] ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (FLT:0) ,0010 עורך ההרחבה:2 ;3; תומך בתבניות בינאריות (למשל, JPEG.bt, ZIP.bt) שמגדיר באופן אוטומטי את מבנה הקובץ על פי כללי פורמט.You יכול לכתוב או להוריד תבניות כדי לזהות omalies באופן מיידי.
  • (FLT:0)wxעריכהorFLT:1 - קוד פתוח, מטפל קבצים גדולים מאוד (מאות של GB), ותומכת בעריכה ברמת הדיסק.

עיצוב קבצים Analyzers ו Carvers

  • (FLT:0)FIRLT:1 ,PhotoRecofph:2 ;2 ;3) - מעולה עבור קריקטורה מבוססת חתימה כאשר אין לך זמן להפוך את המהנדס באופן ידני.הוא מצלם מעל 480 סוגי קבצים על ידי סריקה של נתונים גולמיים. השתמש בו כעבר ראשון, ולאחר מכן הפוך מה הוא מפספס.
  • (FLT:0) calpeligFLT:1 - קל משקל, קובץ מהיר המשתמש זוגות ראשי / רגל המוגדרים בקובץ תצורה.You יכול להרחיב אותו עם חתימות מותאמות אישית שנמצאו במהלך הנדסה לאחור.
  • (FLT:0)BinwalkirFLT:1 - במקור ניתוח קושחה, Binwalk יכול לסרוק נפיחות עבור חתימות קבצים מוטבעת לחלץ אותם.

איכות הסביבה

כאשר הכלים מחוץ ל-She-She-She-les כבים, עליך לכתוב את Python עם ה-FLT:14 או FLT:15 ספריות מאפשר לך לעיין בנתונים בינאריים ברמה של bit ו-byte.

  • מצא את כל הסימנים,
  • קרא עד [[1924]]
  • בדוק עבור syntax במילון בתוקף,
  • לכתוב רק את האובייקטים המתוקנים.

כמו כן, עבור מסד נתונים מושחת (למשל, SQLite), אתה יכול לסרוק עבור ראשי דפים תקפים ולבנות מחדש את עץ האינדקס מתאים B-tree יקרי קריאה.

טכניקות מתקדמות: כאשר הנזק הוא חלק

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

קבצים עם מפתחות פגומים

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

תגית: File Systems

כאשר הנתונים של קובץ מפוזרים על גבי הדיסק (הופנה מהדף אחסון פלאש או לאחר deletion), הנדסה הפוכה כרוכה בניתוח תמונות דיסק, לא קבצים בודדים. השתמש בכלים כמו FLT:19 במצב מתקדם, אבל אם זה נכשל, לבדוק באופן ידני את תמונת הדיסק בעורך hex. חפש מבנים מערכת קבצים (MFT ערכים על NTFS, inodes על Ext4) המכילה נקודות נקודה כדי לשלב שברים על ידי הגדרות לוחצים.

חתימות חלקית ובינלאומיות

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

Best Practices for Successful Reverse Engineering Recovery

  • (ב) [ה]התק:0] תמיד עובד על עותק סנסציוני.
  • (ב) ,0) ,לבדק את השערות שלך ולבחון אותם.ראהרומ"ל ( 1:1) השתמש במחברת או קובץ סימון כדי להקליט מדפים, חתימות שנמצאו, והחלטות שהתקבלו.
  • (FLT:0Compare Against a known-Good version of the Same Format.FLT:1 if possible, צור קובץ מבחן קטן (למשל, JPEG עם פיקסל שחור, ZIP מבוסס טקסט עם קובץ יחיד) ושחית אותו בכוונה כדי לראות כיצד המבנה מסתכל ברמה בינארית.
  • (ב) ⁇ :0) גישות ידניות ואוטומטיות.FreaLT:1 [המשימה האוטומטית עם תסריטים, אך לשמור על האדם בלולאה לצורך זיהוי דפוס.
  • (FLT:0)Validate שחזור זה באופן רציונאלי.ראה LT:1 לאחר תמצית קטע, לנסות לפתוח אותו ביישום Native.אם הוא נכשל חלקית, לבחון את הודעת השגיאה - זה לעתים קרובות אומר לך בדיוק מה חסר (למשל, "לשלוח את שולחן הפמן" ב JPEG).
  • (FLT:0) ראו מגבלות זמן.FLT:1 הנדסה הפוכה הוא מתגמל מבחינה אינטלקטואלית אבל יכול להיות זמן שוקעת.קבע גבול: אם לאחר כמה שעות לא התקדמת משמעותית, לחזור לקרון כמו PhotoRec כדי לקבל את מה שאתה יכול, אז להעריך מחדש אם הנתונים הנותרים שווים תשומת לב ידנית.

מלכודות נפוצות וכיצד להימנע מהם

  • (FLT:0Misinterpreting ⁇ as data.archFLT:1) כמה פורמטים (למשל, PNG) עם אפסים כדי להתאים את הגבולות 4byte.אל תתייחסו לאפסים האלה כעומס משמעותי.
  • (FLT:0) אבחון אנדוניזם (FLT):1 שדות ובדיקות נשמרים ב-endian גדול או קטן-endian בהתאם לתבנית.
  • (ב) קובץ מושחת יכול לאבד את הקסם שלו לחלוטין, אבל שאר הנתונים עדיין עשויים להיות שלמים.אם רק מקטורת קסם, אתה מתגעגע לקבצים אלה.תמיד לסרוק עבור סמנים פנימיים.
  • (FLT:0) אכילת כל השחיתות כקוראטיבית.FLT:1 לפעמים השחיתות היא ⁇ סטית - לדוגמה, רק טיפת אחת בזרם PDF ניתן להפוך אם אתה יודע את ה-CRC הצפוי. השתמש בבדיקה אופטימלית / gc32 שבו ניתן להגיע.
  • (FLT:0) שחזור נתונים אך אובדן הקשר.FIRLT:1) ייתכן שתצליח לחלץ שולחן SQLite ממסד נתונים מושחת, אך אם האינדקסים נעלמו, הנתונים הם רק טבלה גולמית.

מסקנה: האמנות והמדע של ההתקוממות הבינארית

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

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