Пентест лабораторія Android в Linux

Створюємо пентест-лабораторію смартфонів на Android в OS Linux

Покроковий гайд як розгорнути програмний пакет Android SDK Command Line Tools в командному рядку Linux, без встановлення габаритного пакету Android Developer Studio, щоб виконувати тестування та reverse-аналіз мобільних додатків з допомогою інструменту Burp Suite.

Частина 1. Встановлення і налаштування Android Emulator

Увага: необхідно мати попередньо встановлений і налаштований Java SDK. Перевірити його наявність можна командою: java -version. Встановити останню версію Java: sudo apt update && sudo apt install openjdk-17-jdk

1) Завантажуємо з офіційного веб-сайту Android пакет Command Line Tools only (для Linux):

Android Command Line Tools

2) Розпаковуємо архів. Вміст папки cmdline-tools копіюємо в /opt/android-sdk/cmdline-tools/latest/(якщо такого шляху нема, необхідно створити):

  • sudo mkdir -p /opt/android-sdk/cmdline-tools/latest/
  • sudo cp -r ~/Downloads/cmdline-tools/* /opt/android-sdk/cmdline-tools/latest/

3) Переходимо у папку cd /opt/android-sdk/cmdline-tools/latest/bin і перевіряємо роботу утиліти SDK Manager, виконавши команду:

  • sudo ./sdkmanager

SDKmanager command example

Примітка: У разі, якщо виникне помилка, треба оновити Java (див. вище).

4) Отримуємо список доступних пакетів Android:

  • sudo ./sdkmanager --list

sdkmanager list packages

5) Далі отримуємо список образів емулятора Android:

  • sudo ./sdkmanager platform-tools emulator

Необхідно погодитись з умовами використання (Terms of use) – тиснемо Yes. Відбудеться завантаження емулятора.

6) Тепер обираємо компоненти та встановлюємо бажаний образ емулятора OS Android:

  • sudo ./sdkmanager "platforms;android-32" "system-images;android-32;google_apis;x86_64" "build-tools;32.0.0"

Примітка: Номер “32” – це рівень API в системі Android, який відповідає певній версії ОС Android. У даному випадку 32 – це Android 12. Ви можете обрати будь-яку версію. Детальніше про специфікацію тут.

Знову погоджуємося з діалогом – Yes. Запуститься завантаження образу.

7) Створюємо віртуальний мобільний пристрій з допомогою утиліти, яка теж знаходиться в папці /bin – AVD Manager:

  • sudo ./avdmanager create avd -n android32 -k "system-images;android-32;google_apis;x86_64"

Погоджуємося з діалогом – No (у подальшому конфігурацію пристрою можна змінювати у файлі config.ini).

За потреби, видалити створений емулятор можна командою:

  • sudo ./avdmanager delete avd -n "emulator_name"

Детальніше про AVD Manager в довідці Android SDK: https://developer.android.com/tools/avdmanager

8) Переходимо в папку з утилітою Emulator cd /opt/android-sdk/emulator і запускаємо віртуальний мобільний пристрій, вказавши назву необхідного образу Android:

  • sudo ./emulator -avd "android32"

Емулятор запустився. Спостерігаємо за помилками в консолі. Щоби все успішно запрацювало, мають налагодитись мережеві порти для серверів ADB і GRPC.

Android Emulator command line

Альтернативний варіант: Можна також відмовитись від ручного використання емулятора Android через Command Line Tools й встановити повнофункціональне робоче середовище з веб-інтерфейсом (IDE) – Android Studio. Однак, це потребує додаткових системних ресурсів та місця на диску. Для встановлення необхідно завантажити пакет з офіційного сайту, розпакувати його, перейти в папку bin і запустити файл ./android.sh. Після цього почнеться автоматичне розгортання. Необхідно просто дотримуватись інструкцій.

Налаштування, виправлення багів і помилок

Перше налаштування, яке слід виконати – увімкнути клавіатуру панелі керування емулятором, а саме кнопки навігації – “назад, додому, вперед” та інші. В іншому випадку вони не будуть працювати. Длля цього треба перейти у директорію з віртуальним образом: /root/.android/avd/android32.avd/ і відкрити файл config.ini, у ньому знайти параметр hw.keyboard та просто змінити значення “no” на “yes”. Зберегти зміни і перезапустити емулятор.

ЧИТАЙТЕ ТАКОЖ:  Як оцінити рейтинг домену?

Якщо помітили глюк з чорним екраном в браузері Google Chrome, то раджу зробити наступне:

1. Перейти в налаштування емулятора (натиснути три цятки на боковій панелі інструментів), відкрити Settings -> Advanced і виставити всі значення “Автоматично”.

2. Перейти в директорію /root/.android і створити або відредагувати файл advancedFeatures.ini, вставивши рядки:

Vulkan = off
GLDirectMem = on

Якщо проблема не зникла, можна зайти відредагувати файл nano /root/.android/avd/android34.avd/config.iniі вказати значення для наступних полів:

hw.gpu.enabled=yes
hw.gpu.mode=software

Додатково можна ще перейти в налаштування самого емулятора Settings -> Advanced й змінити налаштування OpenGL ES Renderer, переключивши на SwiftShader.

3. Тепер ще раз запустити емулятор і глюків не повинно бути.

Якщо у консолі з’являються проблеми графічним прискорювачем, а сам емулятор працює дуже повільно, рекомендую додати ключ -gpu host:

./emulator -avd "android32" -gpu host

Також деякі проблеми вирішуються перенесення файлів і каталогів емулятора з папки адміністратора root в папку простого користувача і подальший запуск без sudo (рекомендується):

sudo chown -R <user>:<user> /opt/android-sdk
mkdir -p /home/acyber/.android/avd
sudo sh -c 'mv /root/.android/avd/* /home/acyber/.android/avd/'
sudo chown -R acyber:acyber /home/acyber/.android
./emulator -list-avds

Інші ключі запуску:

  • ./emulator -avd "android32" -no-metrics – запуск емулятора без телеметрії Google.
  • ./emulator -avd "android32" -no-snapshot – запуск емулятора без снапшота (збереження стану)

Посилання на команди Android SDK: https://developer.android.com/studio/run/emulator-commandline

Як налаштувати проксі?

Щоб емулятор Android працював через проксі, необхідно запустити його, натиснути на значок три цятки на панелі керування й перейти на вкладку Settings -> Proxy, куди вписати адресу проксі-сервера:

Android emulator proxy settings

Альтернативний варіант: запустити команду emulator з ключем -http-proxy http://X.X.X.X:XXXX, наприклад:

sudo ./emulator -avd "android32" -http-proxy http://X.X.X.X:XXXX

або

adb shell settings put global http_proxy X.X.X.X:XXXX

Детальніше в довідці Set up Android Emulator Networking >>

Частина 2. Налаштування проксі Burp Suite на Android

Увага: Необхідно попередньо мати встановлений ліцензійний Burp Suite PRO.

1. Запускаємо Burp Suite.

2. Переходимо на вкладку Proxy і далі в налаштування Options. Тут треба експортувати сертифікат. Натискаємо на кнопку “Import/Export CA certificate”.

Далі відкриється діалогове меню, обираємо “Certificate in DER format”. Вказуємо шлях збереження і вказуємо назву файлу, наприклад: ~/Downloads/cacert.der

3. Тепер потрібно цей сертифікат адаптувати під Android й конвертувати в PEM-формат з допомогою команди:

ЧИТАЙТЕ ТАКОЖ:  Експлуатуємо WordPress XML-RPC Attack на практиці

openssl x509 -inform DER -in cacert.der -out cacert.pem

4. Захешуємо файл:

openssl x509 -inform PEM -subject_hash_old -in cacert.pem | head -1

5. І останнє – перейменувати його:

mv cacert.pem 9a5ba575.0

Додатково можна ще перевірити його валідність:

openssl x509 -in 9a5ba575.0 -text -noout

6. Тепер треба переслати цей сертифікат на віртуальний мобільний пристрій.

Запускаємо емулятор з ключем -writabe-system, щоб отримати доступ до розділу /system:

sudo ./emulator -avd "android32" -writable-system

Далі скористаємося командами ADB:

adb devices
adb root
adb remount
adb reboot
adb root
adb remount
adb push 9a5ba575.0 /system/etc/security/cacerts
adb shell "chmod 664 /system/etc/security/cacerts/9a5ba575.0"
adb shell "chown root:root /system/etc/security/cacerts/9a5ba575.0

Примітка: Для роботи команд необхідно попередньо встановити пакет Linux – ADB Tools: sudo apt install adb

7. Тепер треба перевірити коректність встановлення сертифікату від Burp Suite. Для цього переходимо в налаштування віртуального пристрою емулятора Android: Settings -> Security -> More security settings -> Encryption and Credentials -> Trusted Credentials. Тут має з’явитися сертифікат PortSwigger CA. Гортаємо в самий низ, він може буде в кінці списку.

Увага: в останніх версіях Android (14+) місцерозташування сертифікатів змінено (/apex/com.android.conscrypt/cacerts), а процес їх додавання обмежено. Потрібно попередньо рутувати пристрій через Magisk або шукати обхідні шляхи. Розробники HTTP Toolkit створили скрипт, який покроково показує як додати сертифікат BurpSuite на рутованих смартфонах Android 14.

8. Тепер заходимо в BurpSuite на вкладку Proxy -> Options – там має стояти: *:8085 (all interfaces) – буде слухати порт 8085 і доступний на всіх мережевих інтерфейсах. Ви також можете обрати будь-який інший порт, а також окремий мережевий інтерфейс зі списку Burpsuite – Proxy -> Options -> Proxy listereners -> Specific address, а потім вказати його для віртуального пристрою.

9. Перезапускаємо емулятор Android:

./emulator -avd "android32" -writable-system

10. Тепер переходимо в налаштування інтернету Wi-Fi на віртуальному мобільному пристрої Android, обираємо поточне інтернет-з’єднання і тиснемо на його редагування, де обираємо пункт Advanced і додаємо налаштування проксі:

  • Host: 10.0.2.2  – це хост Android Emulator, він повинен бути в одній локальній мережі з BurpSuite.
  • Port: 8085  – це порт який слухає проксі Burp.

Burp Suite proxy configuration on Android emulator

11. Відкриваємо браузер Google Chrome на віртуальному мобільному пристрої. Повертаємося в Burp Suite, на вкладку Proxy -> Intercept і вмикаємо режим Intercept On. Тепер у браузері просто відкриваємо будь-який сайт. Запит має перехопитися й відобразитися у Burp Suite:

ЧИТАЙТЕ ТАКОЖ:  Як напряму завантажувати відео з Youtube в Linux?

BurpSuite Reverse Android emulator

Ось і все. Тепер можна проводити пентест веб-сайтів на Android.

Як розгорнути Genymotion в Linux?

В якості альтернативного Android-емулятора замість SDK можна також використати умовно-безкоштовний додаток Genymotion. Але для професійної роботи він потребує платної ліцензії. Genymotion добрий тип, що гарно зібраний і відлагоджений (майже відсутні баги і помилки), а також в ньому легко змоделювати прототип практично будь-якого реального мобільного пристрою. В базі доступні більше 20-ти моделей готових смартфонів. В преміум-тарифі смартфони рутовані, що звільняє від додаткових дій. В Genymotion також присутня підтримка гіпервізорів QEMU / VirtualBox, функцій Shared Clipboard та Drag’n’Drop – достатньо просто перетягнути файл у вікно емулятора, наприклад apk, й він автоматично встановиться.

Покрова інструкція розгортання:

  1. Завантажити скрипт Genymotion з офіційного сайту і встановити його.
  2. Запустити додаток, увійти в обліковий запис (вказавши email/password) або зареєструватись в Genymotion (обравши “Personal use only”).
  3. Створити новий віртуальний пристрій конкретної моделі смартфону і запустити його.
  4. Встановити Magisk.
  5. Встановити модуль Move Certificates для Magisk: adb push move_certificates_v2.0.0.zip /sdcard/Download
  6. Перезавантажитись. Прописати проксі до Wi-Fi-з’єднання, згідно Burp Proxy Listeners.
  7. Встановити браузер firefox. Почати перехоплювати. MITM-працює.

Як підключити смартфон до ПК через спільну мережу Wi Fi (ADB over Wi-Fi)

0. Під’єднати смартфон і комп’ютер до спільної Wi-Fi мережі.

1. Встановити середовище командного рядка для Android – Termux з репозиторію F-Droid.

2. Встановити необхідні пакунки, запустити віповідну службу та відкрити порт:

pkg install android-tools
su
setprop service.adb.tcp.port 5555
stop adbd
start adbd

2. Підключитися з ПК до вказаного порту Android, наприклад:

adb connect 192.168.1.100:5555

3. Перевірити доступні пристрої:

adb devices

Альтернативний спосіб: встановити додаток wifi adb (root) з Google Play.

Окрема документація “adb over Wi-Fi” для мобільних пристроїх з Lineage OS>>

Джерела та посилання

  1. Configuring an Android device to work with Burp Suite Professional
  2. CorSecure. Using Burp Suite with an Android Emulator.
  3. Awakened Blog. Install a trusted CA in Android N.
  4. Ropnop Blog. Configuring Burp Suite With Android Nougat
  5. GitHub. Running headless android emulator on AWS EC2 Ubuntu instance.
  6. Webkul. Configure Android Device With BurpSuite
  7. Youtube. Proxying Android Traffic through Burp Suite (incl credential fuzzing & IDORs)
  8. ZonkSec. Android reversing to find JWT Key
  9. Codeby. Розгортання genymotion.
  10. GitHub. PenAndro – automatization script for Android pentest.
  11. YesWeHack. Building an Android Bug Bounty lab: the ultimate guide to configuring emulators, real devices, proxies and other mobile hacking tools (featuring Magisk, Burp, Frida)
  12. Evan Connelly. My iOS Web Hacking Setup – Surge, Termius, and Caido

Автор: © Konrad Ravenstone, KR. Laboratories Research

Konrad Ravenstone// про автора

Кібермольфар, хакер, лінуксоїд, дослідник безпеки в KR. Labs Research

Сподобалася стаття? Поділитися в соцмережах:
KR. Labs Research
Рекомендоване:
У цій статті я розкажу як з допомогою Python та Selenium можна автоматизувати деякі…