התפקיד הקריטי של הנדסה הפוכה והשתתפות בהגנה על תוכנה

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

הבנה של הנדסה הפוכה: העדנים של היועץ

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

סוגים של הנדסה הפוכה

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

ניתוח סטטי

ניתוח סטטי בוחן את הקוד או בינארי ללא ביצועו של כלי כגון FLT:0IDA ProFLT:1, FLT:2GhidraFLT 3, ו- מכ"ם disa2 להרכיב קוד מכונה לתוך הרכבה או קוד פסאודו-קוד גבוה יותר.com משתמשים אלה כדי למפות פונקציות, מיתרים, ולשלוט בזרם יכול למנוע ניתוח סטטי על ידי פסטהור, במיוחד באמצעות קודים רגישים, באמצעות קודים וטכניקות נוגדות, במיוחד עבור קודים רגישים.com.

ניתוח דינמי

ניתוח דינמי צופה בתוכנה כפי שהיא פועלת. Debuggers כמו x64dbg, GDB, ו WinDbg לאפשר לתוקפים לעבור באמצעות הוראות, לבדוק זיכרון, ולשנות ערכי רישום בזמן אמת. Sandboxing וכלים מטבולים גם ליפול מתחת למטריה זו, כפי שהם גורמים קלטות בלתי צפויות לגלות פרצות מבוססות התרסקות.

בדיקה ועיבוד התנהגות

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

אמנות ההשמצה: כיצד להפוך את ההנדסה הפוכה

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

שם: Obfuscation and Symbol Stripping

הצורה הפשוטה ביותר של שמות obfuscation renames, שיטות, שדות ומשתנים מקומיים של שמות משמעותיים כגון FLT:0 לקיצור, שימוש או אותיות מבלבלות כגון FLT:1, FLT:2, FLT 3:2, FLT 3: כלים מודרניים עבור .NET (ConuserEx, .com Reactor) ו- Java (ProGel Zelixs) תהליך של מוטציות עם כל מוטציות (conrecats) מ-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-of) משלב את כל מוטציות.com.com.

המונחים: Flow Obfuscation

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

  • (ב) [15] ,ב"ה', "הבאה" (ב) ,"ב) ,"ב[[1924]], [[1924]], [[1924]]]]]]]], [[1924]]]]]]]], [[1924]]]]]]]]]]]], [[1924]]]]]]]]]]]]]]]], [[1924]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]], [[1924]]]]]]]], [[1924]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]], [[1924]]]]]]]]]]]]]], [[1924]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
  • (FLT:0)Control Flow Flattening:FreaLT:1) המרת לולאות ותנאים לתוך דפוס המדינה-מכונה עם משתנה שליח, מה שהופך את ההיגיון המקורי של הענף כמעט בלתי אפשרי לעקוב אחריו.
  • (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇

קידוד ו-Data Encryption

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

קוד וירטואליזציה וחבילה

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

ביטחון, ביצועים ותחזוקת

ציות אינו חופשי.כל טרנספורמציה מוסיפה זמן ריצה מעל הראש - הוראות מסורתיות עבור predicates ⁇ , פעמוני פענוח, או מכונת וירטואלית לשלוח לולאות.אם overdone, היישום הופך sluggish, introspective debugging הופך כואב, ודיווחי התרסקות הופכים להיות בלתי סביר.

  • (ב) ,0) לחדור את הנתיבים החמים שלך: FLT:1 , אופטו רק את חלקי הקוד המכילים רכוש אינטלקטואלי הליבה או רישיון - בדיקת לוגיקה, תוך השארת I / O, UI, ו- Data-מעבד קוד מונחה אור.
  • (FLT:0) שמור על מפת סמל: FLT:1 לאחסן מיפוי של שמות מובנים לשמות מקוריים במיקום מאובטח, לא מקוון זה מאפשר לצוותים לתמוך לפענח עקבות מתאונות לקוחות מבלי לחשוף את המיפוי.
  • (FLT:0) ⁇ ביסודיות: 1 Obfuscation יכול להציג באגים עדינים, במיוחד בקוד כבד השתקפות (למשל, סידוריזציה, זריקת תלות) מצטברים בצנרת הבדיקה CI /CD שלך.

השלכות משפטיות ואתיות של הנדסה הפוכה

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

שיטות טובות להגנה על נכסים של תוכנה

אף טכניקה אחת לא מציעה הגנה מלאה.גישה שכבתית משלבת שיטות מרובות של obfuscation עם אבטחה תפעולית:

  1. (FLT:0) Adopt a safe Development Lifecycle (SDLrea): ההרחבה של איום על מודלים ובדיקת קוד כדי לזהות אילו חלקים של בסיס הקוד הם בעלי ערך רב ביותר.
  2. (ב) ⁇ (ב) ⁇ (ב-פתוחים): ⁇ (ב) כלי 1 (FLT:2ProguardigofLT 3 (אנדרואיד/Java), ConfuserEx (C#), ו- Obscator-LLVM (קוד ניטטיבי) הם עדות קרב.
  3. (FLT:0)Combine עם לוגיקה בצד השרת: ההרחבה 1 לעולם לא להסתמך רק על קוד בצד הלקוח עבור רישוי או אלגוריתמים קריטיים.הזיז לוגיקה רגישה לגיבוי מאובטח.אם חישוב בצד הלקוח הוא בלתי נמנע, השתמש בקוד פיצול וגילוי מרחוק.
  4. (FLT:0) בדיקות זמן ריצה:FLT:1 באופן קבוע לאמת את השלמות הקוד על ידי בדיקות מחשוב של פונקציות קריטיות בזיכרון. Detect debuggers, חיקויים, וסביבות שורש עם ספריות אנטי טמפר אמין.
  5. (FLT:0)Prepare for response:FLT:1ir אם התוכנה שלך פצח או משטפת, יש תוכנית לבטל מפתחות, לדחוף עדכונים כפויים, או לשנות את תוכנית obfuscation.

מסקנה

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