PracticU

הסבר על JADX

בלי כתוביותעם כתוביות
PracticU › קורס סייבר והאקינג ל-Android - פריצה לטלפונים ואפליקציות אנדרואיד - בודק חוסן - Mobile App Pentesting › הסבר על JADX
מילון מושגים:
Java - שפת תכנות עילית ומונחית עצמים, הרצה על מכונה וירטואלית (JVM) ומשמשת לפיתוח מגוון יישומים.
שם משתמש - מזהה ייחודי שמשתמש מזין כדי להזדהות במערכת, לרוב יחד עם סיסמה.
קוד מקור - הקוד שמפתחים כותבים בשפת תכנות, לפני הידור, המגדיר את פעולת התוכנה.
GitHub - שירות ענן לאחסון מאגרי קוד מבוססי Git, המאפשר שיתוף פעולה, מעקב גרסאות וניהול פרויקטים.
XML - שפת סימון לייצוג נתונים מובְנים בעזרת תגיות, המשמשת להחלפת מידע בין מערכות ולקובצי הגדרות.
Activity - ב-Android, רכיב שמייצג מסך יחיד של האפליקציה שאיתו המשתמש מתקשר.
חבילה - אוסף ארוז של קוד, ספריות או קבצים המופץ כיחידה אחת ומותקן בעזרת מנהל חבילות.
מעטפת - תוכנה שמפרשת פקודות של המשתמש ומעבירה אותן למערכת ההפעלה, למשל Bash או PowerShell.

הסבר על JADX
בשיעור זה ניכנס לקוד של אפליקציית הבנק הפרוצה בעזרת הכלי JADX, מפענח חינמי בעל ממשק גרפי שהופך קובץ APK של אנדרואיד לקוד Java קריא. נכיר את מבנה ה APK, את קובץ ההצהרות שלו, וננצל פרט חשוב שמתגלה בהצהרות כדי לדלג על מסך ההתחברות של האפליקציה בלי שם משתמש וסיסמה.
נושאי הסיכום המוצגים בשיעור:
1. המטרה והכלי: האפליקציה של הבנק הותקנה, אך אין לנו שם משתמש וסיסמה ואנחנו רוצים לעקוף את מסך ההתחברות. נשתמש ב JADX, מפענח חינמי עם קוד מקור גלוי שנמצא ב GitHub, שמייצר קוד Java מקורי מתוך APK של אנדרואיד.
2. הורדת הכלי: מורידים מהעמוד את הגרסה האחרונה של ה Release, שהיא קובץ ההרצה המוכן ולא את קוד המקור של הכלי עצמו, ומבין קבצי ה Assets בוחרים את הגרסה עם JRE מובנה, Java Runtime Environment, סביבת הרצת Java. ניסיון להפעיל את הגרסה החלקה מציג אזהרה על קובץ מהאינטרנט ומודיע שאין Java מותקן במחשב, ובמקום להוריד אותה מחלצים את הגרסה שכוללת את סביבת ה Java, והיא עובדת מיד.
3. פתיחת ה APK: בעזרת Open File פותחים את קובץ ה APK של האפליקציה, והכלי מציג שני עצים. אחד הוא הקוד עצמו, הפקודות שרצות, והשני הוא המשאבים, Resources, שבהם תמונות, צבעים, תפריטים וקובצי XML של הגדרות, שהם הצהרות ולא פקודות לביצוע.
4. קובץ ההצהרות AndroidManifest: בתוך המשאבים יושב קובץ XML חשוב במיוחד בשם AndroidManifest, שמערכת ההפעלה קוראת אותו כדי לדעת אילו הרשאות לתת לאפליקציה. בקובץ הזה מוצהר למשל על גלישה באינטרנט, כתיבה לכרטיס חיצוני, שליחת הודעות SMS, קריאת אנשי קשר, מצב הטלפון ויומני שיחות, וזהו מקור ההתראות המוכרות של בקשת הרשאות בהתקנה.
5. מבנה ה APK: כל הקבצים האלה ארוזים בתוך ה APK שמתנהג כמו קובץ zip, וכל תוכן האפליקציה, הקוד וההצהרות, יושבים בתוכו.
6. מהי Activity: בעולם האנדרואיד כל חלון שרואים נקרא Activity, וההצהרות מפרטות את כל החלונות שקיימים בתוכנה. על אחד מהם מוצהר מסך פעולה של MAIN LAUNCHER, והוא החלון שעולה כברירת מחדל בהפעלת האפליקציה, כאן מסך ההתחברות, וכך מזהים את חלון הפתיחה.
7. העניין שמתגלה: בהצהרות רואים גם חלונות נוספים, התחברות, העברת כספים, מה שקורה אחרי ההתחברות וצפייה בהעברות כספיות, וחלק מהם מוצהרים כ exported true. ההצהרה הזאת אומרת שמותר להפעיל את החלון הזה מבחוץ, וזו בדיוק נקודת התורפה, סביר להניח שהמתכנת שכח לסגור או עשה זאת בטעות, ואפשר לדלג ישירות אל חלון שאחרי ההתחברות בלי לעבור דרך מסך ההתחברות כלל.
8. רכיבים נוספים בהצהרות: מלבד חלונות מופיעים בהצהרות גם Provider, שהוא רכיב שמפיץ מידע אל אפליקציות אחרות שמבקשות אותו, ו Broadcast Receiver, שהוא המקבל של התראות והודעות המגיעות מבחוץ.
9. קריאת הקוד: הקוד של האפליקציה יושב תחת עץ המקורות, בתוך התיקייה ששמה הוא שם החבילה, Package, שהוא שם התוכנה, ולצידו קוד עזר של גוגל ושל ספריות התמיכה של אנדרואיד. שם נמצאים קבצי הקוד של חלון ההתחברות ושל החלון שאחרי ההתחברות, ואפשר לקרוא ולראות ממש איך האפליקציה עובדת.
10. הניצול בפועל: מעתיקים את שם החלון המוצהר, נכנסים בעזרת adb shell אל תוך המכשיר, ומבקשים ממנהל החלונות של אנדרואיד להפעיל חלון ספציפי, בצורה של שם החבילה, סלאש, שם החלון. בלי הסלאש ההפעלה נכשלת, ועם הסלאש החלון נפתח ישירות על מסך העברות הכספים, תוך דילוג מוחלט על ההתחברות. פתיחה רגילה של האפליקציה, להזכיר, מובילה אל מסך ההתחברות כרגיל.
11. המכשול הבא: עקפנו את ההתחברות, ועתה עולה בעיה אחרת, האפליקציה מזהה שהמכשיר פרוץ שורש ומציג התראה על מכשיר Rooted. בשיעור הבא נבין כיצד היא מזהה זאת וכיצד חוסמים את הזיהוי.
בשיעור זה פתחנו את ה APK בעזרת JADX, הכרנו את ההבחנה בין קוד למשאבים, את קובץ ההצהרות ואת ההרשאות שמוצהרות בו, גילינו חלונות מוצהרים כ exported שאפשר להפעיל מבחוץ, ובעזרת adb shell ומנהל החלונות דילגנו ישירות אל מסך העברות הכספים תוך עקיפת מסך ההתחברות. בשיעור הבא נעסוק בנושא התקנה של Frida.
SR12578HE

פרקי ההרצאה: הסבר על JADX

  1. 00:00

    הצורך לעקוף את ההתחברות

  2. 00:38

    הכרת הכלי JADX

  3. 01:18

    הורדת הגרסה המוכנה

  4. 01:58

    התקנה ללא Java

תמלול ההרצאה: הסבר על JADX

הטקסט המלא של הדקות הראשונות בהרצאה «הסבר על JADX» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

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

  2. 00:22

    לפתוח לי את התוכנה ולהראות לי את הקוד שלה ננסה להבין איך בנו הקוד שלה ואולי נצליח לעקוף את זה איכשהו. אז אנחנו נכנסים פה ל-JadEx, יש הרבה כלים שייעודים לפענח, זה כלי חינמי, יש את ה-source code שלו, זה נקרא Decompiler, הוא גם גוי, יש לו ממשק גרפי, הוא עושה source code from Android.

  3. 00:48

    מאפליקציות של אנדרואיד, הוא עושה לנו Java source code from Android APK. בקיצור, זה בדיוק מה שאנחנו רוצים. בואו נוריד אותו.

  4. 00:58

    אני עושה פה Release Latest, אתם רואים בצד ימין? ריליס זה אומר לא את הקוד מקור עצמו, כבר את האקזה שלו. אני עושה פה ריליס, יש פה גרסה, ולמטה יש Assets, נכסים, ואני מחפש פה, Jadak Zgui, No JRE עם Windows ו-MJRE, ש-MJRE, JRE זה Java Runtime Environment.

  5. 01:22

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

  6. 01:42

    יופי, קובץ אקזה, בואו ננסה להתקין אותו. הוא מזהיר אותי פה שהקובץ הזה הגיע מהאינטרנט, אני עושה לו Run Anywhere, והוא כותב לי שאין לי את ה-JRE, Java Run Time Environment, אין לי Java במחשב, והוא מציע לי פה להוריד אותם.

  7. 01:58

    במקום זה אני יכול לעשות פה Unzip, הנה, זה ה-Unzip שלו. עוד פעם הוא נותן לי אזהרה שזה מהאינטרנט, אני עושה לו run anyway, וזה עובד. למה זה עובד? כי היה לו את ה-Java runtime שמה.

  8. 02:12

    אני נותן לו את ה-N-Secure Bank Open File של APK, ואני עושה לו Open File, והוא פותח לי את הקובץ והופך אותו לשפת Java.

  9. 02:23

    יש את הקוד, הפקודות עצמם, ויש רסורסים. מה זה רסורס? רסורס זה כמו תמונות, XMLים, וסורס קוד זה פקודות עצמם.

  10. 02:33

    לדוגמה, ברסורס יש לנו תמונות ויש לנו פה אתם רואים

לקורס המלא: קורס האקינג לאנדרואיד אונליין

ההרצאה הקודמת: התקנה של APK - InsecureBank v2

ההרצאה הבאה: התקנה של Frida

קורסים נוספים במסלול

  • קורס SOC - מיישם הגנת סייבר
  • קורס סייבר למתחילים - Hacking - בדיקות חוסן תשתיתי ופריצה ל-Windows 10/11 - קורס זה נדרש למבחן ההסמכה היוקרתי OSCP
  • קורס פריצה ומבדקי חדירה לתשתית ארגונית - בדיקות חוסן מתקדמות ל-Active Directory - קורס זה נדרש למבחן ההסמכה היוקרתי OSCP
  • קורס פריצה ומבדקי חדירה לאתרי אינטרנט - בדיקות חוסן לאתרים - Web Pentesting - קורס זה נדרש למבחן ההסמכה היוקרתי OSCP