PracticU

התקנת ממשק גרפי ל-GUI FRIDA

בלי כתוביותעם כתוביות
PracticU › קורס סייבר והאקינג ל-Android - פריצה לטלפונים ואפליקציות אנדרואיד - בודק חוסן - Mobile App Pentesting › התקנת ממשק גרפי ל-GUI FRIDA
מילון מושגים:
GUI - ממשק משתמש גרפי: ממשק מבוסס חלונות, אייקונים וכפתורים, בניגוד לשורת פקודה טקסטואלית.
GitHub - שירות ענן לאחסון מאגרי קוד מבוססי Git, המאפשר שיתוף פעולה, מעקב גרסאות וניהול פרויקטים.
קוד פתוח - תוכנה שקוד המקור שלה זמין לציבור לצפייה, לשימוש ולשינוי, לרוב לפי רישיון מתאים.
קוד מקור - הקוד שמפתחים כותבים בשפת תכנות, לפני הידור, המגדיר את פעולת התוכנה.
Node.js - סביבת ריצה שמאפשרת להריץ קוד JavaScript מחוץ לדפדפן, בעיקר בצד השרת.
npm - מנהל החבילות של Node.js, המשמש להתקנה ולניהול ספריות JavaScript בפרויקט.
USB - תקן חיבור אוניברסלי לחיבור התקנים למחשב, כמו זיכרון נייד, מקלדת או מדפסת.
אתר אינטרנט - אוסף של דפים ומשאבים מקושרים המתארחים תחת כתובת אחת ומוגשים דרך דפדפן.

התקנת ממשק גרפי ל-GUI FRIDA
בשיעור זה נתקין ממשק גרפי לפרידה, שיאפשר לעבוד כמעט בלי פקודות ובלי לכתוב דבר ידני, ובהרצאות הקרובות נלמד גם על Ghidra, המתחרה החינמי של IDA. אלה שתי התוכנות המובילות בעולם ההנדסה לאחור, וכאן נחזור על אתגר UnCrackable Level 2, אך הפעם בלי לשנות קבצים ובלי טלאים, רק בעזרת שינויים בזיכרון דרך ממשק גרפי.
נושאי הסיכום המוצגים בשיעור:
1. נקודת הפתיחה: איפסנו את הטלפון הווירטואלי ומתקינים עליו את קובץ ה APK המקורי של UnCrackable Level 2, בלי שום טלאי. האפליקציה מזהה שהמכשיר פרוץ ויוצאת החוצה, ואנחנו נפרוץ אותה בלי לשנות אותה, בעזרת פרידה, אך במקום לכתוב פקודות נשתמש בממשק גרפי.
2. הארכיטקטורה של פרידה: ישנו שרת וישנו לקוח. השרת זה הטלפון, והלקוח הוא ה Windows 10 שמתחבר אל הטלפון, והלקוח הוא זה שמריץ את הפקודות, אך הפעם בממשק גרפי שלו.
3. התקנת שרת פרידה באופן אוטומטי: ב GitHub קיים כלי בשם Frida Loader, אפליקציה שמתקינה בתוך הטלפון אוטומטית את הגרסה האחרונה של שרת פרידה ומריצה אותה, במקום מה שעשינו ידנית בעבר, להוריד קובץ, להעביר אותו פנימה, לתת לו הרשאות ולהריצו. מתקינים את האפליקציה בעזרת adb install, היא מבקשת הרשאות רוט ומציעים לה לזכור את הבחירה לתמיד, והיא מציעה להתקין ולהריץ את הגרסה האחרונה של שרת פרידה. אחרי ההתקנה היא עוברת מצב הורדה אל מצב ריצה, ושואלת מה לעשות עם עותק פרידה שכבר רץ, ועונים לה להמשיך. מעתה ישנו שרת פרידה עובד בתוך הטלפון ולא צריך לעשות עמו דבר.
4. הלקוח הגרפי: כעת דרוש לקוח שמריץ את הפקודות בממשק גרפי, וזה הדבר המדהים, שאולי לא נצטרך להסתבך עם כל הדקויות של פרידה. הוא חינמי וקוד פתוח, יש לו קוד מקור, והוא יודע להתחבר גם לאנדרואיד וגם למכשירי iPhone, ובאתר שלו יש גם הדגמה כיצד עושים זאת.
5. דרישות הקדם: מה שמעניין באתר הוא החלק של דרישות הקדם, וראשונה בהן התקנת Node.js. מורידים את גרסת ה Windows של 64 ביט ומתקינים אותה על כל האפשרויות בברירת מחדל. שווה לדעת שיחד עם Node.js מותקנת גם NPM, שהוא התקנת חבילות מוכנות באופן אוטומטי, בדומה לקובצי MSI בווינדוס ול pip של פייתון, והוא תמיד בא יחד עם Node.js.
6. בדיקת פרידה: את ערכת הכלים של פרידה כבר התקנו בהרצאות קודמות ואין טעם להתקין אותם שוב. מבצעים בדיקה מהירה בעזרת הפקודה שרוצה להציג את התהליכים דרך USB, והיא נכשלת, מפני שהיא מנסה להתחבר דרך USB אל הטלפון ואין חיבור כזה. הטלפון החדש והנקי מחובר בגשר אל המחשב הפיזי והמכונה הווירטואלית צריכה להגיע אליו, ולכן מבצעים פינג ואז adb connect עם כתובת ה IP והפורט של הטלפון, ומתקבל מכשיר מחובר. מריצים שוב את רשימת התהליכים והיא עובדת, ובה נראה גם התהליך שנקרא זיגוטה, שהוא תהליך ראשי באנדרואיד שמייצר את התהליכים האחרים, וכל תוכנה שמופעלת יורשת אותו.
7. ההתקנה דרך NPM: הסיבה שהם רצו שנתקין Node.js היא שנוכל להתקין את החבילה של RMS, שנקרא Runtime Mobile Security, בעזרת חבילה מוכנה של NPM. פותחים שורת פקודה, ושימו לב שאין צורך להיות אדמיניסטרטור, ומריצים את פקודת ההתקנה עם הפרמטר של גלובלי, שאומר שההתקנה תהיה לכל המערכת ולא רק בתיקייה הנוכחית. הכלי לבד מוריד, מתקין ומגדיר הכול אוטומטית, כולל הרצת סקריפפים של התקנה מוקדמת, ואנחנו לא נוגעים בכלום.
8. הפעלת הכלי: אחרי ההתקנה נותרו שתי הוראות, לוודא ששרת הפרידה עולה ורץ בטלפון, שכבר בדקנו, ולהפעיל את הכלי בעזרת הפקודה שלו בשורת הפקודה. הוא מפעיל אתר אינטרנט על הפורט 5000 במחשב המקומי וכותב לפתוח דפדפן ולהתחבר.
9. הממשק הגרפי בדפדפן: נכנסים לכתובת ורואים שהכלי מתנהל כולו דרך אתר אינטרנט פנימי מקומי, ודרכו מוצג הטלפון שלנו. ניתן להסתיר את התפריט הצדדי, הכלי שואל אם זה אנדרואיד או iPhone ועונים אנדרואיד, ואז שואל אל איזה חבילה להתחבר. כשעושים לחיצה כפולה על האפליקציה שלנו היא מופעלת, מציגה את ההתראה על זיהוי שורש ויוצאת, ואנחנו דווקא רוצים לעקוף את הזיהוי הזה.
10. גילוי שם החבילה: כבר ראינו כיצד מגלים חבילה, ומי ששכח, בשורת הפקודה מריצים את פרידה עם המתגים של USB ושל כל האפליקציות, שמראה גם את אלה שרצות וגם את אלה שאינן רצות, ולוקחים משם את המזהה של האפליקציה שלנו.
11. spawn מול attach: בממשק מזינים את שם החבילה ובוחרים מה לעשות, להתחבר אליה אם היא רצה או לייצר חדשה. בוחרים לייצר חדשה, spawn, כי בהתחברות רגילה ישנה בעיה בגלל ההגנות שיש שם. בגדול, ההתחברות עובדת כמו דבאגר, ואילו ה spawn מתחבר דרך הזיגוטה, כאילו הוא מכניס את עצמו אל תהליך האב, ואז הוא משוכפל יחד עם הילד אל תוך הילד באופן אוטומטי, ולכן אין לו בעיה לעקוף את ההגנה ההיא.
12. סקריפפי אתחול: בממשק ישנה אפשרות מאוד יפה של טעינת סקריפף מותאם בעת האתחול, כלומר להריץ סקריפף פרידה לפני שהקוד של האפליקציה מתחיל להתבצע. אפשר לכתוב סקריפף ידני, אך קיימים גם סקריפפים מוכנים של ברירת מחדל שהם הכינו, ובהם גם סקריפף שנקרא עקיפת יציאת המערכת.
13. מה עושה סקריפף עקיפת היציאה: אם ניזכר בסיבה שהאפליקציה נופלת, מאחורי הקלעים מופעלת ה MainActivity, ובתוכה onCreate שתמיד מופעלת ראשונה, ישנה בדיקת זיהוי שורש שקוראת לפונקציה פנימית שבסופה קוראת אל System.exit, וזה המקום היחיד שמוציא את התהליך החוצה, וכך ידוע, כי מעתיקים את המילה ומחפשים בכל הקוד. רוצים לבטל את הפונקציה המובנית הזאת של היציאה, לדרוס אותה בתוך זיכרון המכשיר. פרידה אינה משנה שום קובץ בדיסק, היא משנה את הזיכרון לפני שהתוכנה מתחילה לרוץ. כשקובץ מופעל הוא קודם מועתק אל הזיכרון ורק אז מורץ, ושנייה אחרי שהוא מועתק אל הזיכרון ולפני שהוא מתחיל לרוץ אנחנו מחליפים את הזיכרון כאילו זה קובץ אחר שנטען, כלומר עושים טלאים בתוך זיכרון המכשיר. הסקריפף המוכן עושה שימוש ב Java use על המחלקה של המערכת, ובתוכה מחליף את פונקציית היציאה במימוש חדש שכל המימוש שלו הוא לכתוב הודעה על המסך ולא באמת לצאת, כלומר דורס בזיכרון את תהליך היציאה.
14. הסקריפפים הם קבצים אמיתיים: במקום סקריפף פרידה ידני ניתן להתאים סקריפפים מוכנים, והם פשוט קבצים שיושבים בתיקייה מסוימת. אפשר להיכנס אליה, ליצור בה קובץ חדש משלנו, אפילו ריק, ואחרי רענון הוא מופיע ברשימת הסקריפפים בממשק. כך אפשר להוסיף ידנית סקריפפים שיפעלו באופן אוטומטי ברגע שהאפליקציה עולה.
15. הבדיקה בפועל: מפעילים את הכלי, בוחרים אנדרואיד, בוחרים את החבילה שלנו, בוחרים spawn ולא attach, טוענים את סקריפפי הפרידה המוכנים ובוחרים את עקיפת יציאת המערכת, ומפעילים. מוצגת ההתראה על זיהוי שורש, אך בלחיצה על אישור התהליך אינו יוצא, וזה בדיוק מה שרצינו. בשיעור הבא נראה כיצד עושים hooks, כיצד נכנסים אל תוך הזיכרון של המכשיר ומבינים מה קורה שם.
בשיעור זה הותקן שרת פרידה בתוך הטלפון באופן אוטומטי בעזרת אפליקציית Frida Loader, הותקנו Node.js ו NPM כדרישות קדם, חובר הטלפון אל המחשב בעזרת adb connect והכלי עצמו הותקן בעזרת חבילה גלובלית של NPM והופעל כאתר אינטרנט מקומי. דרכו נבחרה האפליקציה בשיטת spawn שמעקפת את ההגנות, נטען סקריפף מוכן שדורס בזיכרון את פונקציית היציאה של המערכת, והאפליקציה כבר אינה יוצאת בעת ההתראה על זיהוי השורש. בשיעור הבא נעסוק בנושא עקיפה של זיהוי ROOT בעזרת הממשק הגרפי של פרידה.
SR12599HE

פרקי ההרצאה: התקנת ממשק גרפי ל-GUI FRIDA

  1. 00:00

    הכרת הממשק הגרפי ל-Frida

  2. 00:56

    הכנת ה-APK המקורי

  3. 01:34

    התקנת Frida Loader

  4. 02:31

    הפעלת שרת ה-Frida אוטומטית

  5. 03:47

    התקנת Node.js כדרישת קדם

  6. 05:05

    בדיקת חיבור עם ADB

  7. 06:01

    מהו תהליך ה-Zygote

  8. 06:38

    התקנת RMS עם NPM

תמלול ההרצאה: התקנת ממשק גרפי ל-GUI FRIDA

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

  1. 00:02

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

  2. 00:26

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

  3. 00:45

    וכל זה נעשה תוך כדי אתגר מעניין של Uncrackable Level 2, מה שעשינו לפני כן עם עאידה, עכשיו נעשה את זה עם פרידה וגידרה. לפני כן הרי מה עשינו? עשינו פאצ'ים ודברים כאלו, עכשיו לא יהיו שום פאצ'ים.

  4. 01:01

    למה לא יהיו שום פאצ'ים? אנחנו לא ניגע בקובץ המקורי בכלל זאת אומרת אנחנו לוקחים קובץ מקורי uncrackable level 2 בלי page המקורי שמים אותו כאן בתוך הטלפון שימו לב פירמטתי את הטלפון הוא מזהה שזה root detected ואני עושה לו אוקיי והוא יוצא החוצה זה קובץ מקורי אנחנו נפרוץ אותו בלי לשנות אותו על ידי פרידה אבל במקום

  5. 01:27

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

  6. 01:56

    מיוחדות אין פה הוראות מיוחדות נחפש רליס ופרידה לואודר APK אני תמיד אני מסתכל אם יש איזה שהם הוראות התקנה מיוחדות אני מעביר את זה פנימה לתוך הטלפון, גורר הוא כותב ADB install הוא מבקש הרשאות של רות אני אומר לו Remember choice forever אל תשאל אותי יותר, תזכור את התשובה שלי

  7. 02:21

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

  8. 02:52

    עכשיו הוא שואל אותי פרידה סטטוס שהוא all ready running שהוא כרגע מופעל האם עוד פעם להוריד ולהתקין האם להרוג את הפרידה שרצה כרגע או לא לעשות כלום קונטיניו אני עושה לו קונטיניו במצב running בקיצור יש לי עכשיו שרת של פרידה שעובד בתוך הטלפון ולא צריך לעשות שום דבר עם זה שזה נהדר

  9. 03:14

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

  10. 03:42

    יש לנו פה גם דמו איך עושים את זה. מה שמעניין אותי זה Pre-Requisites, דרישות קדם. קודם כל אני צריך לעשות Pre-Requisites ואחרי זה אני אעשה את ההתקנה.

  11. 03:52

    מה הדרישות קדם שלו? Node.js צריך להתקין, Node.js. בואו נתקין את זה, לוחצים קונטרול קליק, עוברים לטאב השני, לוקחים את הגרסת Windows 64-Bit ומתקינים.

  12. 04:06

    אני מתקין עכשיו Node.js 64-Bit. נהדר, נכון, הם לא ביקשו משהו מיוחד, הם ביקשו פה Not.js on your computer. אוקיי, בואו נעשה נקסט, נקסט, אני עושה על הכל נקסט, לא נוגע בכלום.

  13. 04:21

    שימו לב, הוא גם מתקין ל-NPM. NPM זה התקנת פקג'ים אוטומטית. זה כמו קבצי MSI בווינדוס, חבילות התקנה מוכנות בעולם של Not.js ופייתון.

  14. 04:33

    אוקיי, בפייתון גם יש PIP, אבל עזבו עכשיו את הדקויות. שתדעו ש-NPM זה חבילות התקנה מוכנות, וזה תמיד בא ביחד עם Node.js. ה-Node.js כאילו כולל אותם.

  15. 04:46

    פיניש, התקנו את ה-Node.js. דרך אגב, איך אנחנו נבדוק ש-Node.js הותקן? אין לנו פה פקודה לבדוק. Node מינוס V, לא חשוב. התקנו את ה-Node.js. עכשיו, פרידה טולס.

  16. 04:58

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

  17. 05:24

    צריכה לעשות פינג עד לטלפון לא חיברנו אותו בגלל זה הוא לא מצליח יש לי פינג עכשיו אני עושה ADB קונקט אחרי אחרי שעשיתי ADB קונקט עם כתובת ה-IP ופורט 555 התחברתי לשרת ADB בתוך הטלפון ויש לי device attached, ADB רואה את ה-device ועכשיו free dps-u עובד.

  18. 05:47

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

  19. 06:03

    טוב, אז עשינו Pre-Requisites, דרישות קדם, ועכשיו אנחנו מגיעים ל-Installation. איך מתבצע ה-Installation? או בעזרת NPM. בגלל זה הם רצו את ה-Node.js שנתקין, כדי שנוכל להתקין את החבילה של RMS, שזה Runtime Mobile Security, ככה הם קוראים לזה.

  20. 06:21

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

  21. 06:42

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

  22. 06:56

    אני עוצר את ההקלטה לכמה דקות. הנה אתם יכולים לראות פה שהוא עושה פה pre-build

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

ההרצאה הקודמת: דיבאג של קובץ so עם IDA ופריצה לתוך UnCrackable-Level2

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

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

  • התקנת ממשק גרפי של msfconsole
  • ממשק גרפי של Git
  • ממשק גרפי של SCOM
  • ממשק גרפי GNOME

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

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