החשיבות הגוברת של יישום הנדסה הפוכה

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

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

מה זה הנדסה הפוכה של יישומי מובייל?

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

מטרות הנדסה הפוכה כוללות:

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

הנדסה הפוכה חל על כל הערימה הניידת: קוד Java / Kotlin עבור אנדרואיד, קוד אובייקטיבי-C / Swift עבור iOS, בתוספת כל ספריות, נכסים וקבצי תצורה ארוז בתוך החבילה.

למה מהנדס הפוך Apps?

גילוי Vulnerability

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

תכונות נסתרות ו Capabilities

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

תחרותי וניתוח שוק

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

Malware Analysis

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

כלים וטכניקות ליבה

ניתוח סטטי

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

  • (ב) [ה]ב]: [ה] [ה] [ה]] [ה]] [ה]], [ה], [ה], [ה]], [ה]]]], [ה'], [ה']'[ה']'[ה']'[ה']'[ה']']'[ה']']'[ה'[ה']']'[ה'[ה']']']'[ה']'[ה'[ה'[ה'[ה'[ה'[ה'[ה']']'[ה'[ה']'[ה'[ה']']']']']']'[ה'[ה'[ה'[ה']']']']']'[ה'[ה']']'[ה'[ה'[ה']']']'[ה'[ה']'[ה'[ה']'[ה']']'[ה']']'[ה'[ה'[ה'[ה'[ה
  • (FLT:0)ApktualeFLT:1 - כלי המפענח את המשאבים בינאריים אנדרואיד (XML, AndroidManifest) בצורתם המקורית ומפרק את DEX להתאספות Smali.It is חיוני למיצוי משאבים ושינויים קטנים לפני אריזות.
  • (FLT:0enjarify / dex2jarFearLT:1) - להמיר קבצים לקבצי JAR, אשר ניתן לנתח עם Java decompilers כמו JD-GUI או CFR.
  • (FLT:0 Hopper / Ghidra / IDA ProcioFLT:1) - עבור ספריות Native (C / C + ++) בתוך אנדרואיד ו- iOS יישומים. אלה מאגדים מאפשרים ניתוח של קוד מכונה ARM או x86 כדי להבין אלגוריתמים, קריפטוגרפיה או פרוטוקולים מותאמים אישית.
  • (FLT:0)-dump / otoolFirLT:1) - עבור קבצי iOS IPA, מחלקת מחלקת מחלקת מידע בכיתה-C של מחלקת היעד-O בינארי, גילוי שמות שיטות ודוגמה משתנים.

ניתוח דינמי

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

  • (ב) ⁇ :0 (Fridaph1) - ערכת כלי דינמית המאפשרת לך להזריק את קטעי JavaScript לתוך יישום פועל לפונקציות, לשנות טיעונים, להערות, לקרוא זיכרון:2FLT:2Frida רשמי SiteIRFLT 3: זה עובד על אנדרואיד ו- iOS והוא תקן דה- Facto לניתוח בזמן ריצה.
  • (FLT:0)ObjectionFLT:1 - כלי חיפוש נייד בריצה שנבנה על גבי פרידה כי שותפים אוטומטית משימות נפוצות רבות כמו עקיפה SSL, לשפוך זיכרון, ולחקור היררכיות בכיתה.
  • (FLT:0)Xposed FrameworkFLT:1 - עבור אנדרואיד, Xposed (או הגרסה המודרנית שלה LSPosed) מאפשר קובצי קבוע על ידי החלפת תהליך היישום בסטארט-אפ.זה שימושי לשינוי מערכת ההתנהגות.
  • (ב) ,0) , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇

ניתוח רשת

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

  • (FLT:0 שרוף SuiteFLT:1) - ה- Proxy הסטנדרטי בתעשייה להטמעת התנועה HTTP / HTTPS. ניתן להגדיר כגבר-ב-המידה על ידי התקנת תעודה CA במכשיר. תכונות כמו חזור ו- Intruder לעזור לשלוח בקשות לבנות בדיקות לוגיקה בצד השרת.
  • (FLT:0)mitmpriroxyFLT:1 - טקסט חופשי ופתוח של HTTPS Proxy אינטראקטיבי.זה תומך בתסריט ב- Python כדי לבצע ניתוח תנועה אוטומטי או לשנות תגובות על זבוב.
  • (FLT:0)WiresharkFLT:1 - לניתוח חבילות ברמה נמוכה יותר, שימושי במיוחד כאשר יישומים משתמשים בפרוטוקולים שאינם HTTP (למשל, WebSocket, TCP מותאם אישית או UDP).
  • (ב) [15] צ'ארלס פרובייט 1 (FLT:0) , חלופה ידידותית למשתמש ל- Burp Suite עם יכולות SSL ופסוט רוחב פס.

טכניקות למניעת הנדסה אנטי-verse Engineering

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

  • (FLT:0)DexGuard / ProguardFLT:1 (אנדרואיד) - כיתות, שיטות ושדות לתוויתות חסרות משמעות, ויכול להוסיף הצפנה מיתרית.
  • (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (FLT:0) מחיקת פרידה / מכשירים מושרשים של LT:1) - Apps עשויים להתקשר ללא קישורים () על חוט הראשי או לבדוק עבור קבצים מערכת משותפת. עקפי בדיקות אלה לעתים קרובות דורשות כתמים מותאמים אישית או באמצעות תסריטים מתקדמים (למשל, פרידה-גאדג'ט).
  • (FLT:0) הפעלת הצפנה ואריזות משאבים 1R) - תכונות נסתרות ושיחות API מוצפנים לעתים קרובות עד הפעלת ניתוח דינמי עם פרידה יכול לפענח את המחרוזת האלה כפי שהם משמשים בזיכרון.

Uncovering Features

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

כיצד למצוא תכונות נסתרות

  • (FLT:0)Scan AndroidManifest או Info.plistsphal 1:1 - חפש פעילויות, שירותים או תוכניות כתובות שלא פורסמו.עבור Android, להשיק פעילויות נסתרות באמצעות ADB: FLT:0.
  • (ב) ,0) ניתוח סטטי של דגלי בוז'ר (Felote flagFIRLT:1) - תכונות רבות מושערות על ידי משתנה פשוט של בוז (למשל, FLT:1).
  • (FLT:0) קידוד דינמי של טביעות דגלים תכונה 1RIRLT 1) - השתמש ב-Fda כדי להתגבר על הערך של החזרה של שיטות אשר בודקות הרשאות משתמש או A/B משימות בדיקות.לעתים קרובות, תכונות מוסתרות נשלטות על ידי ניסויים בצד השרת - שתמש בשיטה שקוראת את התוצאה של הניסוי וחייבת אותו להחזיר ערך ספציפי.
  • תוכנית FLT:0URL enumerationFLT:1 ; יישומים רבים לרשום תוכניות כתובות מותאמות אישית עבור תקשורת בין-app. שליחת תוכניות שונות אפליקציה יכול לחשוף נקודות צריכת מוסתרות או ממשקי debug.

דוגמאות לתכונות נסתרות שנמצאו באמצעות הנדסה הפוכה

  • (FLT:0 Android Developer OptionsureFLT:1) - מוסתרת כברירת מחדל אבל ניתן לאפשר על ידי שימוש ב"מספר בנייה"; זה היה במקור ביצה הפסחא הנסתר.
  • (FLT:0) כלי אבחון של אפל (FLT:1) - אפליקציית הודעות אפל מכילה תפריט bug מוסתר נגיש על ידי כניסה לרצף מסוים בתחום הטקסט.
  • דוח ה"דוח האפל" של פייסבוק (Field Report) של פייסבוק: דף הגדרות חבוי המציג מידע מפורט של חיבור וניהול נתונים מקופל.
  • (FLT:0)Uber Driver app "מצב VIP"(VIP Mode) ,VIP) ,בכמה גרסאות, דגל לא מוצף אפשר מצב מיוחד עבור רוכבים בעלי פרופיל גבוה, שהתגלה באמצעות פיזור.

זיהוי Vulnerabilities

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

כיתות Vulnerability נפוצות שנמצאו באמצעות הנדסה הפוכה

  • (FLT:0) סודות קודמו של ה-APFLT:1 - מפתחי API, מפתחות הצפנה, סיסמאות, אסימונים המוטבעים בקוד המקור או בקבצי משאבים.אלה ניתן להוציא באופן סטטי מקוד מחוספס או דינמי מזרקות זיכרון.
  • (FLT:0) אחסון נתונים בלתי מאובטחים של NSFLT:1 - איסוף מידע רגיש במונחי סלקציה על המכשיר (SharedPreferences, מסדי נתונים של SQLite, NSUserDefaults) יכול לקרוא את הקבצים האלה ישירות לאחר קבלת גישה למערכת הקבצים.
  • (FLT:0)Improper SSL /TLS אימותationph:1) - Apps אשר בוטחים בכל האישורים או יש תעודת מוגבלות סיכה יכול להיות במעקב טריוויאלי.
  • (FLT:0) איסוף ממשקי API פנימיים של ההרחבה 1 (Endpoints) המיועדים לשימוש פנימי אך נגישים מהאינטרנט.
  • (FLT:0) הצפנה והצפנה של Weak או הצפנה אישית של CryptoFLT:1, מפתחים לפעמים ליישם את ההצפנה שלהם, אשר כמעט תמיד פגומה. ניתוח סטטי יכול לחשוף את האלגוריתם וכיצד המפתח הוא נגזר.
  • (FLT:0) תקשורת בין-אחריות של תקשורת בין-תחומית: 1) על אנדרואיד, רכיבים מייצאים (פעולות, מקלטים, שירותים) ניתן לנצל אם הם לא מאמתים כראוי כוונות.
  • (FLT:0) אופטימיזציה של נתונים רגישים FLT:1 - יומני דביג כי דליפות סיסמאות, אסימונים, או מידע אישי ניתן לכופף על ידי יישומים אחרים או באמצעות יומן ADB.

דוגמאות אמיתיות בעולם

  • (FLT:0) מפתחות API של Hidden באפליקציות לשיתוף רכב, ההרחבה 1 - בשנת 2018 חוקרים חשפו אפליקציה לשיתוף אופניים פופולרית ומצאו אישורים קודמו לאחסון בענן, חשיפת נהג ונתוני הרוכב.
  • (ב) ל-[[1924]], [[1924]]]], היה ל[[1924]] [[1924]] [[1924]] [[1924]]]] [[1924]], [[1924]]]], [[1924]]]]]], [[1924]]]]]], [[1924]]]]]]]]
  • (FLT:0) עקף של גילוי שובר בית הסוהר 1 (FLT:1), כמה יישומים בנקאיים היו גילוי שוברי בית פשטני שניתן לסווג תוך שניות באמצעות פרידה, מה שמאפשר לאפליקציית לרוץ על מכשירים שנפגעו.

שיקולים משפטיים ואתיים

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

  • (FLT:0תנאים של שירות (ToS)FIRLT:1) - יישומים רבים אוסרים במפורש הנדסה הפוכה ב-ToS שלהם, בעוד הפרות של טוס אינן חוקיות באופן אוטומטי, הם יכולים להוביל לאיסור על חיובים או תביעות אזרחיות.
  • (FLT:0 זכויות יוצרים ו- Trade Secretsof 1) - קוד Decompiling עשוי לשחזר חומר מוגן בזכויות יוצרים. DMCA (Digital Millennium Copyright Act) בארה"ב אוסרת על אספקת "צעדים הגנה טכנולוגית" עבור יצירות זכויות יוצרים, אך פטורים קיימים למחקר אבטחה.
  • (FLT:0) מחקר סודיות יוצא דופן (FLT:1 ), בתחומים רבים, הנדסה לאחור למטרת מחקר אבטחה מותר במפורש, בתנאי שהוא אינו כרוך בפגיעה או גישה בלתי מורשית.הצו של האיחוד האירופי 2019/7 כולל יוצא דופן מוגבל עבור טקסט וכריית נתונים והנדסה הפוכה עבור יכולת הדדית.
  • (FLT:0)Obtain PermissionFLT:1, הגישה הבטוחה ביותר היא רק יישום מהנדס הפוך שיש לך או שיש לך אישור מפורש לבדוק (למשל, באמצעות תוכנית בודה באגים או הסכם חוזי).
  • (ב) אם אתה מגלה פגיעה, לדווח על כך למוכר באופן פרטי ולתת להם זמן סביר לתקן אותו לפני ביצוע כל פרטים לציבור.

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

  • (FLT:0) שימוש במכשירי בדיקה ייעודיים או חיקויים 1) – להימנע משימוש במכשיר הראשי שלך כדי למזער את הסיכון לזיהום נתונים או נזק מקרי.
  • (FLT:0) שמור על סביבת מעבדה FLT:1 - אני מסלק את הבדיקות שלך מרשתות ייצור ושירותים. השתמש ב-VPN או בהגדרות Proxy שאינן מפריעות במערכות אחרות.
  • (FLT:0) אל תארגן מחדש או להפיץ יישומים שונים של ההרחבה 1 (אלא אם כן אתה הבעלים של האפליקציה, אריזה ושיתוף גרסאות משתנות יכולים להפר זכויות יוצרים וייתכן כי פיראטיות או יצירת קוד זדוני.
  • (FLT:0) ראוות פרטיות (ראה להלן: אם אתה חושף מידע משתמש (למשל, מזרקות זיכרון או יירוט תנועה), לא לאחסן אותו או לשתף אותו.
  • (הופנה מהדף מתודולוגיית המתודולוגיה שלך:0) שמור על הערות של אילו כלים וטכניקות השתמשת בהם.זה עוזר לשחזר את הממצאים, ולדווח על פגיעת ברורה לספק.
  • (ב) אם אתה חלק מתוכנית בודה, לדבוק אך ורק בהיקף התוכנית ובחוקים.

מסקנה

יישומים הנדסיים הפוכה היא משמעת קפדנית המאחדת מיומנות טכנית עם אחריות אתית.כאשר מבוצעת כראוי, היא מגלה תכונות נסתרות, מחזקת את האבטחה, ומעמיקה את ההבנה של מערכות אקולוגיות תוכנה מודרניות.הכלים - מ-JADX ו-Freda ועד Burp Suite - מעולם לא היו חזקים יותר או נגישים, המאפשרים גם מתחילים וגם חוקרים מנוסים לבחון את העבודה הפנימית של האפליקציות המעצבות את חיי היומיום שלנו.

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