PracticU

פריצה של UnCrackable-Level1 - חלק 1

בלי כתוביותעם כתוביות
PracticU › קורס סייבר והאקינג ל-Android - פריצה לטלפונים ואפליקציות אנדרואיד - בודק חוסן - Mobile App Pentesting › פריצה של UnCrackable-Level1 - חלק 1
מילון מושגים:
פונקציה - קטע קוד בעל שם שמבצע משימה מוגדרת, מקבל ערכי קלט (פרמטרים) ויכול להחזיר תוצאה. מאפשרת לארגן קוד ולהשתמש בו שוב.
משתנה - שם שמפנה למקום בזיכרון שבו נשמר ערך שיכול להשתנות במהלך ריצת התוכנית, כמו מספר, טקסט או אובייקט.

פריצה של UnCrackable-Level1 - חלק 1
הרצאה זו מתחילה ניתוח סטטי של אפליקציית אתגר לימודית (UnCrackable Level 1), שמטרתה ללמד קריאת קוד מפורק וזיהוי מקום שבו מוחבא "סוד" בתוך אפליקציה.
מה הרעיון
באמצעות כלי לפירוק קוד (decompiler) אפשר לעקוב בקוד המקור אחרי זרימת הנתונים: איפה המשתמש מזין טקסט, לאיזו פונקציה הוא מועבר, ואיפה הוא משווה לערך "נכון" שמוחבא בקוד. בהרצאה מראים איך לאתר, בעזרת קריאת הקוד וחיפוש טקסט, את הפונקציות הרלוונטיות ואת מבנה ההשוואה בין קלט המשתמש לערך הסודי.
איך מתקדמים בניתוח
מגלים שהערך הסודי לא כתוב ישירות בקוד, אלא מתקבל מפונקציה נפרדת שמחזירה אותו - כלומר צריך "לתפוס" את מה שהפונקציה הזו מחזירה כדי לגלות את הסוד, ולא רק לקרוא משתנה קבוע.
למה זה חשוב
התרגיל מדגים שיטת עבודה בסיסית בניתוח אבטחה של אפליקציות: הבנת מבנה הקוד וזרימת הנתונים בלי להריץ דבאגר (ניתוח סטטי), כבסיס לשלב הבא שבו נדרש לכתוב קוד שיתפוס בפועל את הערך המוחזר.
השיעור הבא בקורס: פריצה של UnCrackable-Level1 - חלק 2

פרקי ההרצאה: פריצה של UnCrackable-Level1 - חלק 1

  1. 00:00

    מעבר למחשב הפיזי

  2. 00:40

    חיבור הטלפון דרך ה-Bridge

  3. 01:35

    הסתרת התפריט הצדדי

  4. 02:32

    בדיקת חיבור ADB

  5. 03:42

    התקנת האפליקציה בטלפון

  6. 05:13

    חזרה על עקיפת זיהוי ה-Root

  7. 07:21

    זיהוי ה-Package וה-Class

  8. 09:08

    הצורך בשרת Frida במכשיר

תמלול ההרצאה: פריצה של UnCrackable-Level1 - חלק 1

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

  1. 00:02

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

  2. 00:24

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

  3. 00:40

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

  4. 00:54

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

  5. 01:13

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

  6. 01:27

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

  7. 01:41

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

  8. 01:51

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

  9. 01:59

    אוקיי, באדוונס של הטלפון אני רואה שהוא קיבל כתובת 168. נהדר. אנחנו יכולים לעשות cmd ולבדוק פינג לכתובת הזאת 10 100 102 168 אתם רואים זאת הכתובת הזאת פה 168 בואו נראה אם יש לנו תקשורת מתוך מכונה וירטואלית יש לנו תקשורת לטלפון זה מצוין עכשיו נעשה adb connect ונחבר את הadb שלנו שזה android debug bridge הנה הוא

  10. 02:30

    אומר successfully connected to... בואו נבדוק שזה יתחבר נרשום adb device ADB Devices ואנחנו רואים שזה מחובר שימו לב אנחנו יכולים לחבר כמה טלפונים למחשב הזה ADB יהיה מחובר לכמה טלפונים במקביל ואם יש לנו כמה טלפונים אנחנו במקום לכתוב

  11. 02:53

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

  12. 03:12

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

  13. 03:24

    יופי. עכשיו אנחנו רוצים להתקין את ה-Uncrackable, זוכרים האפליקציה שאז הצלחנו להתגבר על ה-Root שלה שהיא דורשת את ה-Root?

  14. 03:35

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

  15. 03:50

    טוב, בואו נתקין אותה, ניקח את השם שלה, ניכנס פה ל-CMD ונרשום ADB install ואת השם. שימו לב, זה לא אכפת לו ש-ADB מתחבר לטלפון מרוחק, זה לא מעניין אותו.

  16. 04:04

    בואו נראה שזה באמת עבר התקנה, הנה הוא, Uncrackable. בואו אני אראה לכם עוד פעם, אני יכול לקחת, לעשות לו uninstall. תראו איזה יופי זה עובד על המחשב הפיזי, והנה זה הופיע לנו פה עוד פעם.

  17. 04:16

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

  18. 04:36

    רוצה notepad++ אני לוקח את הגרסה האחרונה יורד למטה פה איפה הוא מחפש גרסת 64 ביט installer ומתקין אותו זה הכל מאוד מאוד זריז כי זאת תוכנה קטנה וממש נוחה זה כתבן כזה פשוט יותר נוח מנותפד הרגיל זהו עדכנתי אותו עכשיו אני עושה right click edit with notepad++ אז מה עשינו אז אז עשינו דבר כזה שהוא מתגבר

  19. 05:06

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

  20. 05:23

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

  21. 05:33

    אתם רואים כמו שכתוב פה רוט דטקטד, זה מה שאני כותב גם בחיפוש detect ted וסימן קריאה שיחפש לי בדיוק את הטקסט הזה שיחפש את זה בקוד הנה הוא מצא לי איפה זה נמצא בקוד וכתבנו פונקציה שמחליפה את הפונקציות a b וc אתם רואים זה class נקודה פונקציה אז במקום שהפונקציות האלו יבדקו משהו ויחזירו true אמרנו לכולם להחזיר false ואז התוכנה

  22. 06:01

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

  23. 06:13

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

  24. 06:28

    סליחה, עכשיו כבר לא צריך את ה-usb כי זה לא דרך usb. applications ו-installed, אה, זה צריך ככה? כן, טוב, read APS זה מראה לי את הפרוצסים שרצים ואנחנו רואים פה שהפרוצס שלנו זה Uncrackable1 השם שלו האנדיטיפייר המזהה שלו זה זה זה השם של האפליקציה ככה אני מזהה

  25. 06:51

    אותה אז תדעו שזה כאילו השם שאנחנו נשתמש בו בסקריפט אז אנחנו גילינו את המזהה גילינו את האפליקציה עכשיו אנחנו רוצים להפעיל את הסקריפט שלנו מה הסקריפט שלנו עשה אני מזכיר לכם עוד פעם מצאנו את הקלאס שלנו את הקלאס C הזה איך ידעתי שזה קלאסי אתם רואים פה c נקודה a c נקודה b המילה הראשונה זה כאילו הקלאס

  26. 07:16

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

  27. 07:41

    אז העתקתי את השם של הפקאג', הוספתי את השם של הקלאס ובפנים יושבת הפונקציה. אז זה שם של הפקאג', זה שם של הקלאס וכל זה package.class נכנס למשתנה מייקלאס.

  28. 07:56

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

  29. 08:05

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

  30. 08:18

    תמיד אני מחזיר false, כאילו שהבדיקה נכשלה, לא מעניין אותי מה הוא בודק, אני אומר false. אותו דבר עשיתי עבור b ו-c, זאת אומרת שתמיד אני מחזיר פה false, זה אומר שזה לא טלפון פרוץ.

  31. 08:31

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

  32. 08:39

    זה מה שעשיתי בפעם שעברה, והרצנו את זה על ידי הפקודה הזאת. זאת אומרת, באנו לתיקייה של הדבר הזה. כתבתי לכם פה את הפקודה, שלא תהיו בלחץ. frida -u -l, השם של הסקריפט, -f, השם של האפליקציה, זה המזהה של האפליקציה, no pause.

  33. 09:00

    דרך אגב, לדעתי כבר לא צריך מינוס u. אוקיי. הוא אומר לי, הכל בסדר, רק מה? fail to spawn, הוא לא הצליח ליצור את האובייקט. למה? כי שכחנו להפעיל בתוך טלפון את השרת.

  34. 09:14

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

  35. 09:30

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

  36. 09:50

    זהו, הוא רץ בפנים. יש לנו שם עכשיו שרת שרץ, כאילו עשינו ADB של פנימה והרצנו את השרת

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

ההרצאה הקודמת: האזנה ל-PayPal עם Frida SSL Unpinning

ההרצאה הבאה: פריצה של UnCrackable-Level1 - חלק 2

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

  • פריצה ל-SSH עם Hydra
  • XSS - פריצה לאתר עם Javascript
  • גילוי פריצה עם ETW - SilkETW
  • פריצה לאתר דרך כתובת URL

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

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