בלוג אבטחת מידע

עבודה עם אנדרואיד – התקנת אמולטור

| אין תגובות

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

אילוצים:

  • התקנת האמולטור והקבצים הנחוצים להרצת האפליקציות בלבד. כלומר, ללא Android Studio, שמאפשר לבצע כל זה עם GUI, אבל חוץ מזה לא נדרש וסתם שוקל הרבה.
  • סביבת העבודה – Linux. אבל התהליך דיי דומה ל-Windows.

הורדה והתקנת האמולטור של אנדרואיד

בעמוד https://developer.android.com/studio/#downloads מופיעים הקישורים להורדת כלים ל- SDK (בחלק של Command line tools only). לאחר ההורדה, כדאי לחלץ את ה- zip (תיקיית tools שבפנים) לתיקיה ייעודית, מכיוון שיהיו הורדות נוספות. לצורך הדגמה יצרתי תיקיה ‎~/android-sdk .

לאחר מכן, צריך להתקין חבילות נוספות – adb, system images, ועוד. נעבור לתיקיית bin, שבה נמצא sdkmanager:

cd ~/android-sdk/tools/bin

רשימת חבילות זמינות להתקנה:

sdkmanager --list

sdkmanager --listהחבילה הראשונה שכדאי להתקין זה platform tools, הכוללת adb. אותה צריך להתקין רק פעם אחת.

sdkmanager "platform-tools"‎

לאחר מכן, התקנת ה- system image לגרסת אנדרואיד הנדרשת. אפשר לחשוב על זה כעל מכונות וירטואליות שהאמולטור מריץ. ישנם גם גרסאות של Android Wear ו- Android TV. בהדגמה זו אני מתקין API בגרסה 26 (אנדרואיד 8.0) ללא Play Store. אני חושב שהדגמה זו תהיה הכי שימושית, מכיוון שלא כל הגרסאות של system image מכילות Play Store. לפעמים הבדיקה דורשת גרסת אנדרואיד מסוימת, ולכן יהיה שימושי לדעת איך להתקין Play Store בצורה ידנית, אם יהיה צורך להוריד אפליקציות דרכו.

sdkmanager "system-images;android-26;google_apis;x86_64"‎

והשלב האחרון – יצירת המכונה (AVD – Android Virtual Device) להרצה באמולטור. נקרא למכונה test1 לצורך הדגמה.

avdmanager create avd -n test1 -k "system-images;android-26;google_apis;x86_64"‎

avdmanager createשווה לערוך קובץ ההגדרות של AVD שיצרנו:

‎~/.android/avd/test1.avd/config.ini

הדבר הראשון שאני תמיד מוסיף, זה אפשרות לבצע שיתוף clipboard בין המכונה ל- host:

hw.keyboard=yes

לפעמים גם נדרש להגדיל כמות הזכרון:

hw.ramSize=1024

AVD configרשימת כל ה- AVD המותקנים:

avdmanager list avd

הרצת האמולטור של אנדרואיד

מעבר לתיקיה של האמולטור: cd ~/android-sdk/emulator

הפעלת AVD לפי שם: emulator -avd test1

Android Emulatorבמידה והאמולטור קורס ומקלל משהו לגבי libGL, אפשר לנסות להריץ האמולטור עם דגל ‎-use-system-libs. זה יגרום לאמולטור להשתמש בספריה libstdc++‎ של המערכת הפעלה ולא אחת שמגיעה עם האמולטור.

דגל שימושי נוסף (בהמשך) הנו ‎-writable-system, המאפשר לערוך את המחיצת ה- system של AVD.

התקנת Play Store

Android Debug Bridge (או בקיצור ADB) מאפשר לתקשר עם AVD מה- host. לדוגמה, להתקין אפליקציות, להעביר קבצים, לראות לוגים, לקבל shell, ועוד. במכונה שיצרנו לא קיים Play Store; נתקין אותו (ללא Google services נוספים) ידנית באמצעות ADB.

קודם צריך להוריד את קבצי האפליקציה מהאתר https://opengapps.org. שם צריך לבחור את החבילה שמתאימה לגרסת האנדרואיד והפלטפורמה. בדוגמה זו הפלטפורמה הנה x64 ואנדרואיד גרסה 8.0. כמו כן, החבילה להורדה תהיה pico, מכיוון שצריך רק את Play Store.

Open GApps downloadלאחר מכן, צריך לחלץ את הקובץ Phonesky.apk שנמצא בנתיב הבא בתוך ה- zip שירד:

Core/vending-x86_64.tar.lz/vending-x86_64/240-320-480/priv-app/Phonesky/Phonesky.apk

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

emulator -avd test1 -writable-system

התקנת Phonesky.apk

cd ~/android-sdk/platform-tools/‎
החלפה למשתמש root:
adb root
טיעינת המחיצה מחדש כדי לקבל הרשאות כתיבה:
adb remount
כניסה לשורת פקודה באנדרואיד:
adb shell
יצירת תיקיה ל- Play Store:
mkdir /system/priv-app/Phonesky
יציאה משורת פקודה:
exit
העתקת קובץ האפליקציה:
adb push ~/Phonesky.apk /system/priv-app/Phonesky/‎

Install Phonesky.apk

לאחר מכן צריך להפעיל את Android Shell מחדש:
adb shell stop
adb shell start

עכשיו יש Play Store מותקן:

Phonesky installed

חשוב להדגיש, שזו לא הדרך הנכונה כדי להתקין אפליקציות רגילות, אלא רק מה שנמצא במחיצת system. אפליקציות רגילות אפשק להתקין בקלות עם הפקודה adb install test.apk.

במידה ומשהו השתבש, אפשר לצפות בלוגים עם הפקודה adb logcat.

הגדרת HTTP proxy ו- GPS

את כתובת הפרוקסי אפשר להגדיר ב- GUI של האמולטור (מסך Settings, לשונית Proxy), או להפעיל את האמולטור עם הדגל ‎-http-proxy <host:port>‎.

השלב הבא הוא התקנת תעודת CA של הפרוקסי. ללא התעודה לא יעבדו שירותים של גוגל, חיבור מייל ועוד. לדוגמה, לא תהיה אפשרות להתקין אפליקציות מ- Play Store.

הזהרה: לא ניתן להשתמש בשלב זה ב- OWASP ZAP בגלל האופן שבו עובד האמולטור של אנדרואיד עם הגדרת פרוקסי. בניסיון התחברות לשרת, האמולטור מציב את כתובת ה- IP של השרת בפקודת HTTP CONNECT, במקום להציב שם את ה- hostname. בתורו ZAP מג'נרט את תעודת SSL עם כתובת IP בשדה Issued to של התעודה. וזה כמובן גורם לתעודה להיות לא תקינה, מכיוון שכתובת ה- IP שונה מה- hostname. זו תקלה בצד האמולטור, ולא של ZAP, שעובד כצפוי. הנה דוגמה לניסיונות התחברות כושלים לשרתים של גוגל, מכיוון שהתעודה לא תקנית. שימו לב שבפקודת CONNECT רשומה כתובת IP ולא hostname.

Android emulator proxy HTTP CONNECTכשנתקלתי בתקלה זו בפעם הראשונה, קודם כל בדקתי מה יקרה בעבודה דרך burp. הופתעתי לגלות ש- burp יודע להתמודד עם המצב ומייצר תעודה דיגיטלית תקנית גם עם בפקודת HTTP CONNECT רשומה כתובת IP. הנחתי שהוא לוקח את ה- hostname ממקום אחר. הלכתי לערוץ של burp ב- IRC כדי לקבל ייעוץ. מסתבר שהמפתחים של burp כבר מכירים את הבעיה וטיפלו בה:

<pajswigger> We fixed this a few versions back, now if Burp sees an IP address in the CONNECT header, it sniffs the SNI to determine the domain name

נעבוד עם burp אם כך. שלב ראשון – ייצוא תעודת CA של burp:

Burp export CA certificateשלב שני – העתקת התעודה לאמולטור:

cd android-sdk/platform-tools/‎
adb push burp.cer /sdcard

שלב שלישי – ייבוא התעודה. אנדרואיד יבקש להגדיר PIN לפני התקנת תעודה דיגיטלית, ויבדוק אותו במידה ונרצה להתקין תעודות נוספות.

 

עכשיו הפרוקסי מייצר תעודות תקינות

PortSwigger CAוהאמולטור מעביר תעבורה דרך פרוקסי באופן תקני:

Android emulator burp proxyאת הקואורדינטות GPS ניתן לשנות בהגדרות האמולטור. זה מאוד שימושי לבדיקת אפליקציות הקשורות למיקום.

Android emulator change GPS coordinatesמחיקת AVD

avdmanager delete avd -n test1

כתיבת תגובה

שדות חובה *.