PracticU

התקנת Ghidra ותוסף JNI

בלי כתוביותעם כתוביות
PracticU › קורס סייבר והאקינג ל-Android - פריצה לטלפונים ואפליקציות אנדרואיד - בודק חוסן - Mobile App Pentesting › התקנת Ghidra ותוסף JNI
מילון מושגים:
קוד פתוח - תוכנה שקוד המקור שלה זמין לציבור לצפייה, לשימוש ולשינוי, לרוב לפי רישיון מתאים.
JDK - ערכת הפיתוח של Java, הכוללת מהדר, סביבת ריצה וכלים לבניית תוכנות Java.
קוד מקור - הקוד שמפתחים כותבים בשפת תכנות, לפני הידור, המגדיר את פעולת התוכנה.
דפדפן - תוכנה שמציגה דפי אינטרנט ומריצה את הקוד שבהם, ומאפשרת לגלוש בין אתרים, למשל Chrome או Firefox.
מעטפת - תוכנה שמפרשת פקודות של המשתמש ומעבירה אותן למערכת ההפעלה, למשל Bash או PowerShell.
הקסדצימלי - שיטת ספירה בבסיס 16, המשתמשת בספרות 0-9 ובאותיות A-F, ונפוצה לייצוג ערכים בינאריים בקצרה.
הוק - נקודת חיבור שמאפשרת להריץ קוד מותאם בשלב מסוים של תהליך. ב-React, מנגנון לניהול מצב ויכולות ברכיבים.
GUI - ממשק משתמש גרפי: ממשק מבוסס חלונות, אייקונים וכפתורים, בניגוד לשורת פקודה טקסטואלית.

התקנת Ghidra ותוסף JNI
בשיעור זה אנו מתקינים את Ghidra, מתחרתה החינמית של IDA שפותחה על ידי הסוכנות לביטחון לאומי האמריקאית, מפתחים את קובץ הספרייה של האפליקציה ומתקינים תוסף ניתוח JNI. אנו לומדים לקמפל את התוסף בעזרת Gradle, לייבא אותו אל Ghidra ולהריץ אותו כדי שהפונקציה שבספרייה החיצונית תהיה ברורה, ומגיעים עד לפונקציית ההשוואה של הקוד הסודי.
נושאי הסיכום המוצגים בשיעור:
1. מהו Ghidra: כלי להנדס לאחור של קבצים וניתוח סטטי, המתחרה הגדול של IDA. לא נשתמש בו כדבאגר כי אנו עובדים עם FRIDA, אלא להבנת מה קורה בקובץ בצורה סטטית.
2. הרקע של הכלי: Ghidra פותחה על ידי הסוכנות לביטחון לאומי האמריקאית, שוחררה לציבור לפני מספר שנים, עד היום מתוחזקת על ידם וזמינה בחינם כקוד פתוח בגיטהאב.
3. התקנת JDK: Ghidra דורשת JDK גרסה 11 במקום גרסאות חדשות יותר, ומורידים את חבילת ההתקנה עבור ווינדוס 64 ביט. הבדל חשוב בין JRE שהוא סביבת הרצה בלבד לבין JDK שכולל גם כלי פיתוח.
4. הורדה והרצה של Ghidra: מורידים את הריליס האחרון מדף הריליסים כקובץ זיפ, מחלצים אותו, מריצים את קובץ ההפעלה של Ghidra ויוצרים קיצור דרך בשולחן העבודה.
5. יצירת פרויקט: יוצרים פרויקט חדש מסוג שאינו משותף, כדי לא להסתבך עם שיתופים, ורואים ש-Ghidra יוצרת בתיקייה שנבחרה את קבצי הפרויקט.
6. יכולות הפרויקט: בתוך הפרויקט אפשר לעבור על קוד מקור בדפדפן הקוד, להתחבר בדיבאגר לתוכנה שרצה בטלפון ולראות את הזיכרון שלה, וקיים גם מעקב גרסאות.
7. איתור הספרייה בטלפון: נכנסים בעזרת מעטפת ה-ADB לתוך הטלפון, מזהים את תהליך האפליקציה האמיתי, ובתיקיית התהליך קוראים את קובץ המיפויים שמציג את כל מיפויי הזיכרון ובתוכם את הספריות שנטענו.
8. זיהוי סוג המעבד: מהמיפויים רואים שהספרייה שלנו נטענה בגרסת x86, וזה קובע איזה עותק של הספרייה מתוך תיקיית ה-lib בקובץ שפורק צריך לפתוח.
9. פתיחת הספרייה בניתוח: לאחר פענוח קובץ ה-APK בעזרת הכלי המוכר מהרצאות קודמות, גוררים את קובץ הספרייה אל דפדפן הקוד, מאשרים ניתוח מיידי ו-Ghidra מריצה סקריפטי ניתוח.
10. הבעיה בפענוח: הפונקציה מוצגת בשפת מכונה ובפענוח לשפת C, אבל הפענוח בלתי ברור כי Ghidra לא זיהתה שהפרמטר הראשון הוא סביבת JNI, ולפי התקן הוא חייב להיות משתנה סביבת ה-JNI ולא מספר פשוט.
11. מנהל הסקריפטים: בחלון מנהל הסקריפטים יש מלא סקריפטים מובנים לניתוחים שונים, אבל אין תוסף JNI מוכן, ולכן מורידים מהאינטרנט סקריפט ניתוח JNI חינמי וקוד פתוח ל-Ghidra.
12. התקנת Gradle וקימפול התוסף: קוד התוסף אינו מקומפל, ולשם הקימפול מתקינים את Gradle, כלי אוטומציה שגם הוא כתוב בג'אווה, מריצים את קובץ ה-Gradle מתוך תיקיית התוסף ומעבירים לו כפרמטר את נתיב ההתקנה של Ghidra. הקימפול אורך כעשרה שניות ומייצר תיקיית הפצה חדשה עם קובץ זיפ מקומפל.
13. ייבוא התוסף ל-Ghidra: מחלון הפרויקט הראשי בוחרים התקנת הרחבות, מצביעים על קובץ הזיפ שנוצר בתיקיית ההפצה, מאשרים ייבוא ומפעילים מחדש את Ghidra כדי שהשינויים ייכנסו לתוקף.
14. הרצת תוסף JNI: לאחר ההפעלה מחדש מופיע במנהל הסקריפטים תוסף ה-JNI החדש. מריצים אותו, הוא מבקש את קובץ ה-APK הסגור המקורי, מנתח אותו ומסיים, ופתאום הפונקציה כולה נהיית ברורה.
15. קריאת הקוד המפוענח: משנים שם משתנה למשמעותו האמיתית, מאתרים את קריאת השוואת המחרוזות שמקבלת שלושה פרמטרים, ומבינים שאורך הקלט חייב להיות בדיוק עשרים ושלושה תווים, שהם שבע עשרה בבסיס הקסדצימלי.
16. היעד הבא: בקריאת ההשוואה מחרוזת אחת היא הקלט שלנו והשנייה היא הקוד הסודי, ושם מתבצעת ההשוואה. בהרצאה הבאה נעשה הוק אל תוך הפונקציה הזאת ונציץ לזיכרון כדי לקלוט את הקוד הסודי.
בשיעור הבא נעסוק בנושא פריצה של UnCrackable-Level2 עם GUI FRIDA.
בסוף השיעור התקנו את Ghidra ואת תוסף ניתוח ה-JNI שלה, פתחנו את קובץ הספרייה החיצונית של האפליקציה והגענו עד לפונקציית ההשוואה שמסתירה את הקוד הסודי.
SR12601HE

פרקי ההרצאה: התקנת Ghidra ותוסף JNI

  1. 00:00

    הכרת הכלי Ghidra

  2. 00:57

    התקנת JDK 11

  3. 02:11

    הבדל בין JDK ל-JRE

  4. 03:09

    חילוץ הכלי והפעלתו

  5. 04:13

    יצירת פרויקט חדש

  6. 05:48

    איתור ספריית ה-SO

  7. 07:23

    פתיחת הקובץ לניתוח

  8. 09:36

    הוספת סקריפט ל-JNI

תמלול ההרצאה: התקנת Ghidra ותוסף JNI

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

  1. 00:02

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

  2. 00:29

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

  3. 01:00

    jdk11 בוא נעשה קונטרול קליק נוריד פה jdk 11 שימו לב יש גם 16-17 הם רוצים 11 נתקין 11 זה ללינוקס זה לווינדוס אבל x86 וזה לווינדוס 64 ביט יופי זה פה ואנחנו צריכים jdk שימו לב לא gre אלא את jdk jre זה java runtime environment זה סביבת הרצה מאוד קטנה זה רק מה שצריך בשביל להריץ את הקובץ

  4. 01:32

    JDK זה כולל את ההרצה של הקובץ וגם כלי פיתוח. ה-D הזה זה Java Development Kit, ערכה למתכנת של Java.

  5. 01:43

    ה-D הזה זה Java Development Kit, ערכת מתכנת, וזה Java Runtime Environment, רק להריץ את הקוד של Java. אם הייתי רוצה רק להריץ את הקוד של Java, הייתי משתמש בזה.

  6. 01:55

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

  7. 02:08

    MSI, יש לי פה MSI ואני מתקין אותו. Next, Next, Next, לא משנה כלום. עושה על הכל Next, Next, Next. התקנתי את ה-JDK, שירוץ פה. זה מה שהם ביקשו, Install JDK, אני מזכיר לכם, אנחנו בגידרה.

  8. 02:24

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

  9. 02:53

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

  10. 03:21

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

  11. 03:44

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

  12. 04:02

    איפה הקובץ של הפרויקט יהיה? שיהיה בתיקייה הזאת זה לא משנה ונקרא לו Uncrackable 2. יופי, עכשיו תראו פה בתוך תיקיית אלכס הזאת, see users, אלכס, תראו מה יקרה, כרגע אין פה אף קובץ, ברגע שאני אלחץ finish, אתם רואים פה, הוא יוצר לי פה קובץ Uncrackable,

  13. 04:27

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

  14. 04:37

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

  15. 04:57

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

  16. 05:10

    אני מניח שאני לא יודע מה השם של הספרייה. אז מה אני עושה? אני עושה CMD, אני עושה ADB Shell, נכנס לתוך הטלפון, והדבר היחיד שאני יודע זה שם של האפליקציה, Uncrackable 2. אז אני אעשה פה קופי, פייסט, ואני רואה שיש לי שניים Uncrackable, מעניין אותי הראשון.

  17. 05:30

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

  18. 05:57

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

  19. 06:12

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

  20. 06:25

    הנה, ליפ פו, נכון, הנה ככה היא נקראת ליפ פו, ואני רואה שזה x86, זה מה שבאתי להראות לכם. ככה אני יודע בדיוק איזה ספרייה אני צריך לפתוח, אם זה x86 או לא אוקיי אחרי זה אני בא לקובץ apk עושה לו לקובץ npk אני פותח אותו מחפש עם apk-tool-debug אני עושה apk-tool-debug אולי צריך לכשום פה apk-tool-debug לקובץ הזה זה נקרא get-so-file אני עושה לו debug

  21. 06:57

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

  22. 07:23

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

  23. 07:42

    אני עושה לו אוקיי. Would you like to analyze it now? האם אתה רוצה לנתח ולהבין את המשמעות של כל הפקודות שיש פה? הוא אומר לי איזה סקריפטים יינתחו אותו, איך אתה רוצה לנתח אותו.

  24. 07:56

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

  25. 08:09

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

  26. 08:37

    פונקציית בר והוא מראה לי אותה כאן על המסך נהדר עכשיו, אני רואה את הפונקציה הזאת גם בשפת מכונה, אתם רואים פה, וגם בשפת C++ הוא עושה לזה Decompile, הופך את זה משפת מכונה, מפקודות כאלו של שפת מכונה, איפה זה?

  27. 08:59

    הנה, מכל מיני פושי ב-X ופקודות של שפת מכונה לשפת C++ שאני מנסה להבין אותה. אני רואה שאני לא מבין כלום פה. למה אני לא מבין כלום?

  28. 09:11

    אני רואה פה שהוא לא זיהה שזה הפרמטר הראשון הוא gni הוא לא זיהה שזה gni שזה java native interface ובגלל זה הוא לא יודע לפרש וכותב לי פה כל מיני דברים שהם מסובכים לי מדי להבין אז במקום לשבור את הראש אני רוצה להפעיל לו סקריפט נוסף שיודע לעשות analyze לקוד של gni זאת אומרת להוסיף לו עוד כלי אנליזה נוסף שידע לזהות שזה gni ואיך אני יודע שזה הוא לא זיהה כי כי הפרמטר הראשון ב-GNI

  29. 09:43

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

  30. 09:53

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

  31. 10:11

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

  32. 10:42

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

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

ההרצאה הקודמת: עקיפה של זיכוי ROOT בעזרת GUI FRIDA

ההרצאה הבאה: פריצה של UnCrackable-Level2 עם GUI FRIDA

הרצאות קשורות מקורסים אחרים

  • התקנת MongoDB
  • התקנת HAXM
  • התקנת eclipse
  • התקנת Material UI

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

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