Table of Contents
מבוא ל-Data Analysis in Reverse Engineering
הנדסה הפוכה היא תהליך של פיזור תוכנה או מערכת חומרה כדי להבין את העיצוב, ההתנהגות שלה, העבודה הפנימית. כאשר מערכת זו מסתמכת על הצפנה - בין אם להגן על נתונים, לוגיקה obscate, או תקשורת מאובטחת - המהנדס ההפוך עומד בפני מחסום חד-משמעי, נתונים מוצפנים, אם נשאר ללא-אמין, יכול להסתיר פונקציונליות זדונית, אלגוריתמים קנייניים, או פרמטרים קריטיים ניתוח אבטחה הוא ניתוח הצפנה, ולכן הוא משמש ניתוח אבטחה מוצפנת, אשר משמש שיטות אבטחה מתקדמות.
להבין מדוע הצפנה מופיעה ב-Reverse Engineering Targets
הצפנה אינה רק תכונה אבטחה; היא בחירה עיצובית מכוונת שנעשו על ידי מפתחים. בהקשרים הנדסיים הפוכה, הצפנה מופיעה מסיבות רבות:
- (FLT:0) קידום נתונים רגישים FLT:1, מפתחות רישיון, אסימוני אימות, אישורי משתמש ומידע פיננסי מוצפנים לעתים קרובות כאשר מאוחסנים או מועברים.
- (FLT:0) הנדסה הפוכה הנדסה לאחור (FLT:1) - שגרות הצפנה אישית משמשים לקוד obfuscate, להסתיר מיתרים, ולסבך ניתוח סטטי.
- (FLT:0Networking and ProtocolciosFLT:1) - יישומים רבים מצפים את התנועה ברשת באמצעות TLS, שכבות הצפנה אישית, או תוכניות obfuscation.
- (FLT:0Media ו-Fire ProtectionFLT:1) - מערכות ניהול זכויות דיגיטליות (DRM) מצפיפות קבצים מדיה, המחייבות פענוח לפני משחק.
- (ב) ,0) תקשורת מלוטין (Malware CommunicationsveFLT:1) - ערוצים של Command-and-control (C2) משתמשים לעתים קרובות הצפנה כדי להתחמק מזיהוי ולהסתיר את פעילותם.
ההכרה בכוונות מאחורי ההצפנה עוזרת למהנדס ההפוך לבחור את הדרך האנליטית הנכונה.בין אם ההצפנה מבוססת על אלגוריתמים ידועים (AES, RSA, ChaChaCha20) או ciphers שנבנו בהתאמה אישית, המטרה נשארת זהה: לגלות היכן וכיצד הנתונים משתנים, ולאחר מכן לשחזר את הטקסט הפשוט.
רנסנס ראשוני: זיהוי הצפנה ב Binary
לפני צלילה לפענוח, האנליסט חייב לאשר כי הצפנה אכן קיימת ולקבוע את טבעה.שלב הראשון של הרנסנס מבוסס על היוריסטים סטטיים ופשוטים:
ניתוח וחתימה סורק
(הכוללים כגון IDA Pro ו- Ghidra יכולים לשמש לסרוק את בינארי עבור מיתרים המתייחסים לספריות קריפטוגרפיים או הודעות שגיאה כגון "הקריפט נכשל", "Key Short" או "Initialization" (כמו FLT:0Detect It Easy (D)FLT:1 ו-Fapary) LT2:2DPEILT3 יכול לזהות את החתימות של Windows (SAP) אם הוא פתוח (DR)
ניתוח Entropy Analysis
(הופנה מהדף 7.8 bits per byte) בהשוואה לקוד טקסט או מכונה. השתמש בכלים כמו FLT:0BinwalkphFLT:1 או FLT:2010 EditorcioFLT 3 (עם נוף דחוס שלה) כדי לאתר חלקים גבוהים ב-Birary או ב-Memories.
ראשי תיבות של Magic Bytes and File Headers
תוכניות הצפנה רבות עוזבות את הקסם המוכר או כותרות הקבצים.לדוגמה, קובץ zip מוצפן מתחיל עם FLT:0, TLS התנועה מתחילה עם FLT:1 (handshake), ו קידוד BitLocker מוצפן יש קידוד:2 חתימה.
לאחר זיהוי ראשוני, האנליסט ממשיך לנתח סטטי ודינמי מפורט יותר.
ניתוח סטטי: מחיקת ההצפנה אלגוריתאם ללא הוצאה להורג
ניתוח סטטי נועד להבין את אלגוריתם ההצפנה על ידי בחינת הקוד שמיישם אותו.גישה זו בטוחה יותר כי היא נמנעת מלהפעיל כל לוגיקה אנטי-דיבוקטיבית או אנטי-אנליזה.
דיסecting Cryptographic Routines in a Disa להרכיבr
באמצעות IDA Pro או Ghidra, המהנדס לאחור מאתר את הפונקציות ההצפנה. אינדיקטורים מרכזיים כוללים:
- (FLT:0) טבלאות בולטות (FLT:1) - אלגוריתמים רבים (למשל, AES S-boxes, DES substitution Box, CRC טבלאות) מסתמכים על שולחנות תצפית קבועים.מציאת שולחן 256-בייט עם ערכים אקראיים לכאורה הוא רמז חזק.
- (FLT:0Shift and XOR תפעולי XOR) 1 - בלוק ciphers בדרך כלל להשתמש סדרה של שינויים, XORs, ו- substitutions.חפש לולאות כי הוא מתרומם מעל גדלים קבועים בלוק (16 ע"י תיבות עבור AES, 8 על ידי DES).
- (ב) [15] פעולות לא-לינאריות (לא-לינאריות) 1:1 - תיבות S-boxes ו- Multiplication בשדות Galois משמשים ב-AES.
- (FLT:0Key לוח הזמנים של LT:1) - התרחבות מפתח AES, הדור המרכזי של RSA, פונקציות ייצור מפתח (PBKDF2, bcrypt) ליצור מפתחות נגזר.
כאשר האלגוריתם הוא סטנדרטי, האנליסט יכול לזהות אותו לעתים קרובות על ידי התאמת קבועים ורצף פעולה נגד יישום ידוע (למשל, השוואת OpenSSL או TinyAES).
לחלץ את המפתחות הקודמים וההתחילה
ניתוח סטטי לפעמים מגלה את מפתח ההצפנה המאוחסן ישירות בקרן בינארית, עשוי להיות מוטבע כערכים קבועים, ערכי XOR-encoded, או שנוצר מאלגוריתם פשוט. השתמש בחיפוש hex עבור בלוקים נצפים גבוהים של אורך המפתח הצפוי (16, 24, או 32 על ידי AES). אם המפתח הוא XOR-obfuscated, התקפה ידוע-סביר עשוי לעזור לשחזר אותו.
הגבלות של ניתוח סטטי טהור
obfuscation חזק, קוד ארוז, ודור מרכזי תלוי בסביבה יכול לעשות ניתוח סטטי טהור ללא די.במקרים כאלה, ניתוח דינמי הופך חיוני.
ניתוח דינמי: שמירה על הצפנה ב- Runtime
ניתוח דינמי מבצע את המטרה בסביבה מבוקרת, ומאפשר למהנדס הפוך להתבונן בשגרת הצפנה בפעולה.גישה זו היא חזקה במיוחד עבור לחלץ מפתחות, גרסאות אלגוריתמים, ו מצבי טקסט ביניים.
שימוש ב-Debuggers to Hook Encrypt
(ב) , (ב) ,2GDBIRLT:0)x64dbgigbgigtureFLT:1 (Windows) ו- IVFLT:2GDBIRFLT 3 (לינוקס) מאפשר לאנליסט להגדיר נקודות על שיחות הצפנה נפוצות (למשל, ניתוח הצפנה 3, FLT:4, FLT:5) לפני ששבר ולאחר שיחת טלפון, יכול לבדוק את האנליסט (למשל, פרדוקס) ו- (הת) ולת) לחיקוי (הת) ולתחילהת מתרגם (התחילהתחילהת) ולתחילהת [15].
ניתוח זיכרון
לאחר ביצוע תפקיד ההצפנה, הסימון או מפתח ההצפנה עדיין עשויים להיות קיימים בזיכרון. כלים כמו FLT:0 (VolatilityFLT:1) (עבור זיכרון לרגישים), FLT:2ReClass.NETOVAFLT 3:0, ו-FLT:4Cheat EngineFLT:5 יכול לסרוק את תהליך הזיכרון לדפוסים ספציפיים (למשל, ידוע, אורך נתונים מחרוזת או מחרוזת).
ניתוח דינמי ו Instrumentation
(ה) כלים מתקדמים כמו FLT:0; FridaFLT:1hil מאפשר כלי דינמית (האנליסט יכול לכתוב קובצי JavaScript שעוקבים אחר זרימת נתונים באמצעות פונקציות הצפנה.לדוגמה, ®UFLT 6 או FLT 7 כדי ליצור כל מידע אשר מאוחר יותר XORed עם ערך קבוע - סימן משותף של רצף מותאם אישית.
פיגועים בצד (Timing, Power, and Cache)
בעוד פחות נפוץ בהנדסת תוכנה הפוכה, התקפות צד יכול לחשוף מפתחות הצפנה על ידי מדידת זמן ביצוע או דפוסי גישה זיכרון.לדוגמה, התקף תזמון על AES יכול להתבצע על ידי נהיגה המטרה עם קלטות ידועות ודידדת זמן הפענוח. בפועל, זה דורש הרבה מדידות וסביבה מבוקרת בדיוק, אבל זה נשאר טכניקה חשובה עבור חומרה או הנדסה הפוכה.
כלים חיוניים לניתוח נתונים מוצפן
השולחן הבא של כלים מאורגן על ידי קטגוריה, מדגיש את נקודות החוזק הספציפיות שלהם לניתוח נתונים מוצפנים:
ניתוח רשת
- (FLT:0) WiresharkofLT:1 - לוכד ובודק חבילות רשת; יכול לפענח TLS אם מסופק עם מפתחות הפגישה (באמצעות SSLKEYLOGFILE) שימושי לזיהוי הצפנה אישית על TCP/UDP.
- (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
ניתוח סטטי ודיסמבדנות
- (FLT:0)IDA ProveFLT:1 - מפיץ סטנדרטי בתעשייה עם תמיכה בתוספים נרחבים (מצא קריפטוסקאנר, חתימות).
- (ב) [13]:0)GhidraphigFLT:1 - מופץ קוד פתוח פתוח ופתוח מ-NSA; כולל ניתוח רב עוצמה ותסריטאי.
- (ב) GNU Binutils (objdump, Readelf) 1FLT - בדיקה מהירה של אלF בינאריות.
ניתוח דינמי ווויכוח
- (FLT:0)x64dbiggFLT:1 - bugger עשיר תכונה עבור Windows, עם מסד נתונים מובנה עבור קובצי API קריפטו.
- (FLT:0)Fridaph:1 - ערכת כלי דינמית; אידיאלי עבור קידוד הצפנה מותאם אישית באפליקציות Native ואנדרואיד.
- (FLT:0)Unicorn EngineFLT:1 - CPU חיקוי שיכול להוציא חלקים מהבתים בבידוד; שימושי עבור מיצוי שגרות זעזוע מבלי להפעיל את התוכנית המלאה.
- (ב) ⁇ (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
זיכרון סריקה ועריכה
- (FLT:0Cheat EngineveFLT:1) - סורק זיכרון עם ערך חיפוש, סריקה דפוס ותכונות מהירות-הכיפוף; לעתים קרובות משמש למצוא מפתחות או צריפים טקסט.
- (ה) ,0)ReClass.NETFLT:1 - מסייע לפרוטוקולים של הנדסה לאחור ומבנים זיכרון; יכול לדמיין שדות מוצפנים.
- (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
ניתוח Cryptographic ולמידה
- (FLT:0CrypTool 2FLT:103) כלי גרפי לניסויים באלגוריתמים קריפטוגרפיים; מועיל להבנת ciphers סטנדרטיים.
- (ב) ויקרא י"א): "ה', ויקרא י', ויקרא י', ויקרא י"ד, ו"ה', ויקרא י" (בראשית כ"ד).
- (FLT:010 EditorigtureFLT:1) - עורך הקס עם תסריט, ויזואליזציה אנטרופית, ו parsing מבוסס תבנית של מבני קבצים.
אסטרטגיות מתקדמות: Emulation, Symbolic Execution ו-Fuzing
כאשר ניתוח סטטי ודינמי קונבנציונלי לא מצליח לחשוף את אלגוריתם ההצפנה או מפתח, טכניקות מתוחכמות יותר מגיעות למשחק.
מיצוי מבוסס Emulation
באמצעות Unicorn Engine, אנליסט יכול לחלץ את ההוראות הגלומות של תפקוד חשוד פענוח ולבצע אותם בסביבה מבוקרת עם קלט ידוע. על ידי מתן ciphertext ידוע והתבוננות בפלט, האלגוריתם יכול להיות הפוך בכיוון מואץ על ידי שלב.טכניקה זו הוא שימושי במיוחד עבור הגנה מבוססת וירטואלית מבוססת מכונה וירטואלית (למשל, VMProt, VMProt, Theidam).
הוצאה להורג סמלית עם Angr
(FLT:0) AngrigofLT:1) הוא מסגרת ניתוח בינארית המשתמשת בביצוע סימבולי כדי לחקור מספר מסלולים.זה יכול לשמש כדי לחקור באופן אוטומטי את המרחב הממלכתי של פונקציה הצפנה, מעקב אחר ההשפעה של המפתח על הפלט.לדוגמה, אם ההצפנה משתמשת XOR פשוט עם מפתח, Angr יכול לחלץ את המפתח על ידי פתרון זה סימבולי גם תומך ביצוע concolicion (exeation) כדי להתמודד עם תנאים מורכבים.
« « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « «
כלים כמו FLT:0 (American Fuzzy Lop) (AFL) LT:1 או FLT:2LibFuzzerveFLT 3 יכול להיות מותאם להאכיל קלטים מעובד לתוך בינארי, מכוון לגרום שגרות הצפנה כי הם בדרך כלל רק תחת תנאים הנדסיים ספציפיים.
Best Practices for a Methodical Workflow
זרימת עבודה מובנת מבטיחה עומק ולהפחית את הסיכוי של מידע ביקורתי חסר:
- (ב) [ה]התייחס לסביבה:0 [לעשות] את הסביבה הנראית לעין: מערכת ההפעלה, החומרה וכל הגנה נגד מחיקתה.תמיד השתמש במכונה וירטואלית מבוקרת או בתיבת חול.
- (FLT:0)Start with סטטי reconnaissanceFLT:1) - סריקות, אנטרופיה וחתימות קבצים.
- (FLT:0) ניתוח דינמי מוקדם של תחילתFLT:1 - אם דוכני ניתוח סטטיים, להפעיל את בינארי ולהשתמש debuggers / intrument כדי ללכוד התנהגות בזמן ריצה.
- (FLT:0) אוטומטי שבו ניתן ל-FLT:1 - כותב תסריטים עבור פרידה, מזהה, או Ghidra כדי להתחבר שוב ושוב פונקציות הצפנה יומן.
- (ב) ויקרא י"א: "בפעם אחת מפתח ואלגוריתם הם צבועים, כותבים שגרת פענוח קטנה (למשל, בפייתון באמצעות ספריית FLT:8) ולבחון אותו נגד הטבלה הנתפסת.
- (FLT:0) שמור מחברת מעבדה מ-FLT:1 - להקליט כל גרסה כלי, פקודה, התחלה והתבוננות. הנדסה הפוכה היא הרבה על ניהול נתונים כפי שהוא על מיומנות טכנית.
- (ב) ,0) הישארו אתית'ראטל 1:1 - רק תוכנה הפוכה מהנדס שיש לכם רשות לנתח את הממצאים שלכם באחריות.
שיקולים מוסריים ומשפטיים
מנגנוני הצפנה הנדסיים מקיפים קיימים בנוף משפטי מורכב.ברוב תחומי השיפוט, הנדסה הפוכה עבור אינטראופרציה, מחקר אבטחה או מטרות חינוכיות מוגן תחת שימוש הוגן או פטורים דומים.עם זאת, משיכת הצפנה במיוחד כדי לשבור את הגנת זכויות היוצרים (למשל, DRM) עלולה להפר חוקים כגון Digital Millennium Act (DMCA) בארצות הברית או האיחוד האירופי להבטיח תמיד זכויות יוצרים אישורים מראש.
מקרה מחקר: הפקת גרף מבוסס XOR מאפליקציית Legacy Application
דמיינו יישום מורשת של Windows המצפין את קובץ התצורה שלו באמצעות אלגוריתם מותאם אישית.הקובץ מתחיל עם שדה באורך 4-byte, ואחריו ניתוח ciphertext. Static Analysis in IDA Pro מגלה פונקציה כי XORs כל אחד עם מפתח יחיד שמקורו בגודל הקובץ. על ידי הגדרת נקודת שבר ב X64dbg לאחר ה- XOR, האנליסט מזרק את ה-DIPOT.F הוא המפתח ל-DImp.F כדי להציג את ה-DImp.F הפשוט הזה באופן מלא עם קובץ ה-DImp.F.F.
מסקנה
ניתוח נתונים מוצפנים בפרויקטים הנדסיים הפוכה דורש מערך מיומנות מגוון: ידע של אלגוריתמים קריפטוגרפיים, מיומנות עם כלים ניתוח סטטי ודינמי, גישה שיטתית. על ידי הבנת מטרת הצפנה, זיהוי נוכחותה באמצעות אנטרופיה וחתימות, בדיקת קוד באופן סטטי, ולאחר מכן התבוננות או תמצית מפתחות בקריפטפטציה, מהנדס הפוך יכול לשחזר טקסט פשוט ממטרות מתקדמות אפילו כמו חיקוי, שימוש אנליסטים, והיכולת הזו מופעלת, לעתים קרובות.