Android Applications Pentesting

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Приєднуйтесь до HackenProof Discord сервера, щоб спілкуватися з досвідченими хакерами та мисливцями за багами!

Інсайти щодо хакінгу Взаємодійте з контентом, який досліджує захоплення та виклики хакінгу

Новини про хакінг у реальному часі Будьте в курсі швидкозмінного світу хакінгу завдяки новинам та інсайтам у реальному часі

Останні оголошення Будьте в курсі найновіших баг-баунті, які запускаються, та важливих оновлень платформи

Приєднуйтесь до нас на Discord та почніть співпрацювати з найкращими хакерами вже сьогодні!

Основи Android-додатків

Дуже рекомендується почати читати цю сторінку, щоб дізнатися про найважливіші частини, пов'язані з безпекою Android та найнебезпечніші компоненти в Android-додатку:

pageAndroid Applications Basics

ADB (Android Debug Bridge)

Це основний інструмент, який вам потрібно підключитися до пристрою Android (емульованого або фізичного). ADB дозволяє керувати пристроями через USB або мережу з комп'ютера. Ця утиліта дозволяє копіювати файли у обидва напрямки, встановлювати та видаляти додатки, виконувати команди оболонки, робити резервні копії даних, читати журнали та інші функції.

Подивіться наступний список Команд ADB, щоб дізнатися, як використовувати adb.

Smali

Іноді цікаво змінити код додатка, щоб отримати доступ до прихованої інформації (можливо, добре замаскованих паролів або прапорців). Тоді може бути цікаво декомпілювати apk, змінити код і знову скомпілювати його. У цьому посібнику ви можете дізнатися, як декомпілювати APK, змінити код Smali та знову скомпілювати APK з новою функціональністю. Це може бути дуже корисно як альтернатива для кількох тестів під час динамічного аналізу, які будуть представлені. Тоді завжди пам'ятайте про цю можливість.

Інші цікаві трюки

adb shell pm list packages
com.android.insecurebankv2

adb shell pm path com.android.insecurebankv2
package:/data/app/com.android.insecurebankv2-Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk

adb pull /data/app/com.android.insecurebankv2- Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk

Статичний аналіз

По-перше, для аналізу APK вам слід подивитися на Java-код за допомогою декомпілятора. Будь ласка, читайте тут, щоб дізнатися про різні доступні декомпілятори.

Пошук цікавої інформації

Просто подивившись на рядки APK, ви можете шукати паролі, URL-адреси (https://github.com/ndelphit/apkurlgrep), ключі API, шифрування, UUID Bluetooth, токени та все цікаве... навіть шукайте задні входи для виконання коду або задні входи аутентифікації (жорстко закодовані облікові дані адміністратора для додатка).

Firebase

Приділіть особливу увагу URL-адресам Firebase та перевірте, чи вони погано налаштовані. Додаткова інформація про те, що таке Firebase та як його експлуатувати, тут.

Основне розуміння додатка - Manifest.xml, strings.xml

Перевірка файлів додатка _Manifest.xml** та **strings.xml_** може розкрити потенційні вразливості безпеки**. Ці файли можна отримати за допомогою декомпіляторів або перейменувавши розширення файлу APK на .zip, а потім розпакувавши його.

Виявлені вразливості з Manifest.xml включають:

  • Відлагоджувані додатки: Додатки, встановлені як відлагоджувані (debuggable="true") у файлі Manifest.xml, становлять ризик, оскільки дозволяють підключення, які можуть призвести до експлуатації. Для подальшого розуміння того, як експлуатувати відлагоджувані додатки, див. посібник з пошуку та експлуатації відлагоджуваних додатків на пристрої.

  • Налаштування резервного копіювання: Атрибут android:allowBackup="false" повинен бути явно встановлений для додатків, що працюють з чутливою інформацією, щоб запобігти несанкціонованому резервному копіюванню даних через adb, особливо коли увімкнено відлагодження через USB.

  • Безпека мережі: Налаштування власної безпеки мережі (android:networkSecurityConfig="@xml/network_security_config") у res/xml/ можуть вказувати деталі безпеки, такі як піни сертифікатів та налаштування трафіку HTTP. Наприклад, дозвіл трафіку HTTP для конкретних доменів.

  • Експортовані дії та служби: Виявлення експортованих дій та служб у маніфесті може підкреслити компоненти, які можуть бути зловживані. Подальший аналіз під час динамічного тестування може розкрити, як експлуатувати ці компоненти.

  • Постачальники вмісту та FileProviders: Викриті постачальники вмісту можуть дозволити несанкціонований доступ або зміну даних. Також слід детально розглянути конфігурацію FileProviders.

  • Приймачі мовлення та URL-схеми: Ці компоненти можуть бути використані для експлуатації, з особливою увагою до того, як керуються URL-схеми для вразливостей введення.

  • Версії SDK: Атрибути minSdkVersion, targetSDKVersion та maxSdkVersion вказують на підтримувані версії Android, підкреслюючи важливість не підтримки застарілих, вразливих версій Android з погляду безпеки.

З strings.xml можна виявити чутливу інформацію, таку як ключі API, власні схеми та інші нотатки розробника, що підкреслює необхідність уважного перегляду цих ресурсів.

Tapjacking

Tapjacking - це атака, коли зловмисний додаток запускається і розміщується поверх додатка жертви. Після того, як він видимо затемнює додаток жертви, його інтерфейс користувача розроблений таким чином, щоб обманути користувача взаємодіяти з ним, тоді як він передає взаємодію додатку жертви. По суті, це приховує користувача від знання, що він фактично виконує дії в додатку жертви.

Докладніша інформація:

pageTapjacking

Перехоплення завдань

Діяльність з параметром launchMode, встановленим на singleTask без визначеного taskAffinity, вразлива до перехоплення завдань. Це означає, що додаток може бути встановлений і, якщо запущений перед справжнім додатком, він може перехопити завдання справжнього додатка (таким чином, користувач буде взаємодіяти з зловмисним додатком, думаючи, що використовує справжній).

Додаткова інформація:

pageAndroid Task Hijacking

Небезпечне зберігання даних

Внутрішнє сховище

У Android файли, збережені в внутрішньому сховищі, призначені бути доступними виключно додатком, який їх створив. Ця захисна міра забезпечується операційною системою Android і, як правило, є достатньою для потреб безпеки більшості додатків. Однак розробники іноді використовують режими, такі як MODE_WORLD_READABLE та MODE_WORLD_WRITABLE, щоб дозволити файли спільною використанням між різними додатками. Однак ці режими не обмежують доступ до цих файлів іншими додатками, включаючи потенційно зловмисні.

  1. Статичний аналіз:

  • Переконайтеся, що використання MODE_WORLD_READABLE та MODE_WORLD_WRITABLE ретельно перевіряється. Ці режими можуть потенційно викрити файли для ненавмисного або несанкціонованого доступу.

  1. Динамічний аналіз:

  • Перевірте дозволи, встановлені для файлів, створених додатком. Зокрема, перевірте, чи які-небудь файли встановлені як доступні для читання або запису всесвітньо. Це може становити значний ризик безпеки, оскільки це дозволить будь-якому додатку, встановленому на пристрої, незалежно від його походження або наміру, читати або змінювати ці файли.

Зовнішнє сховище

При роботі з файлами на зовнішньому сховищі, таких як SD-карти, слід дотримуватися певних заходів:

  1. Доступність:

  • Файли на зовнішньому сховищі глобально доступні для читання та запису. Це означає, що будь-який додаток або користувач може отримати доступ до цих файлів.

  1. Питання безпеки:

  • З огляду на легкість доступу, рекомендується не зберігати чутливу інформацію на зовнішньому сховищі.

  • Зовнішнє сховище може бути видалено або доступне для будь-якого додатку, що робить його менш безпечним.

  1. Обробка даних з зовнішнього сховища:

  • Завжди виконуйте перевірку введення на дані, отримані з зовнішнього сховища. Це критично, оскільки дані походять з ненадійного джерела.

  • Зберігання виконуваних файлів або файлів класів на зовнішньому сховищі для динамічного завантаження настійно не рекомендується.

  • Якщо ваш додаток повинен отримувати виконувані файли з зовнішнього сховища, переконайтеся, що ці файли підписані та криптографічно перевірені перед їх динамічним завантаженням. Цей крок є важливим для збереження безпеки вашого додатка.

До зовнішнього сховища можна отримати доступ за адресами /storage/emulated/0, /sdcard, /mnt/sdcard

Починаючи з Android 4.4 (API 17), на SD-картці є структура каталогів, яка обмежує доступ з додатка до каталогу, який спеціально призначений для цього додатка. Це запобігає зловмисному додатку отримувати доступ на читання або запис до файлів іншого додатка.

Чутливі дані, збережені у відкритому вигляді

  • Спільні налаштування: Android дозволяє кожному додатку легко зберігати файли XML за шляхом /data/data/<packagename>/shared_prefs/, і іноді можна знайти чутливу інформацію у відкритому вигляді в цій папці.

  • Бази даних: Android дозволяє кожному додатку легко зберігати бази даних SQLite за шляхом /data/data/<packagename>/databases/, і іноді можна знайти чутливу інформацію у відкритому вигляді в цій папці.

Порушення TLS

Прийняття всіх сертифікатів

Часом розробники приймають всі сертифікати навіть у випадку, коли, наприклад, ім'я хоста не відповідає рядкам коду, подібним до такого:

SSLSocketFactory sf = new cc(trustStore);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

Порушена криптографія

Погані процеси управління ключами

Деякі розробники зберігають чутливі дані в локальному сховищі та шифрують їх за допомогою ключа, який зашитий/передбачуваний в коді. Цього не слід робити, оскільки деяке розкриття може дозволити зловмисникам видобути конфіденційну інформацію.

Використання небезпечних та/або застарілих алгоритмів

Розробники не повинні використовувати застарілі алгоритми для виконання перевірок авторизації, зберігання або відправлення даних. Деякі з цих алгоритмів: RC4, MD4, MD5, SHA1... Якщо для зберігання паролів, наприклад, використовуються хеші, то слід використовувати хеші, які стійкі до перебору з використанням солі.

Інші перевірки

  • Рекомендується затемнити APK, щоб ускладнити роботу реверс-інженерів зловмисникам.

  • Якщо додаток чутливий (наприклад, банківські додатки), він повинен виконувати свої власні перевірки, щоб переконатися, що мобільний пристрій має рут-доступ і діяти відповідно.

  • Якщо додаток чутливий (наприклад, банківські додатки), він повинен перевірити, чи використовується емулятор.

  • Якщо додаток чутливий (наприклад, банківські додатки), він повинен перевірити свою цілісність перед виконанням, щоб переконатися, що він не був змінений.

  • Використовуйте APKiD, щоб перевірити, який компілятор/упаковувальник/затемнювач використовувався для побудови APK

Додаток React Native

Прочитайте наступну сторінку, щоб дізнатися, як легко отримати доступ до коду JavaScript додатків React:

pageReact Native Application

Додатки Xamarin

Прочитайте наступну сторінку, щоб дізнатися, як легко отримати доступ до коду C# додатків Xamarin:

pageXamarin Apps

Додатки Superpacked

Згідно з цим постом у блозі, superpacked - це метаалгоритм, який стискає вміст додатка в один файл. У блозі йдеться про можливість створення додатка, який розпаковує цей тип додатків... та швидший спосіб, який включає виконання додатка та збір розпакованих файлів з файлової системи.

Автоматизований статичний аналіз коду

Інструмент mariana-trench здатний знаходити вразливості, скануючи код додатка. Цей інструмент містить ряд відомих джерел (які показують інструменту місця, де вхід контролюється користувачем), стоки (які показують інструменту небезпечні місця, де зловмисний ввід користувача може завдати шкоди) та правила. Ці правила показують комбінацію джерел-стоків, яка вказує на вразливість.

З цими знаннями mariana-trench перегляне код та знайде можливі вразливості в ньому.

Витік секретів

Додаток може містити секрети (ключі API, паролі, приховані URL-адреси, піддомени...) всередині, які ви можете виявити. Ви можете використовувати інструмент, такий як https://github.com/dwisiswant0/apkleaks

Обхід біометричної аутентифікації

pageBypass Biometric Authentication (Android)

Інші цікаві функції

Інші хитрощі

pagecontent:// protocol

Приєднуйтесь до HackenProof Discord сервера, щоб спілкуватися з досвідченими хакерами та мисливцями за багами!

Інсайти щодо взлому Взаємодійте з контентом, який досліджує захоплення та виклики взлому

Новини про взломи в реальному часі Будьте в курсі швидкозмінного світу взлому завдяки новинам та інсайтам в реальному часі

Останні оголошення Будьте в курсі найновіших баг-баунті, які запускаються, та важливих оновлень платформи

Приєднуйтесь до нас на Discord та почніть співпрацювати з топовими хакерами вже сьогодні!


Динамічний аналіз

По-перше, вам потрібне середовище, де ви зможете встановити додаток та всі середовище (сертифікат Burp CA, Drozer та Frida головним чином). Тому рекомендується використовувати пристрій з рут-доступом (емульований або ні).

Онлайн динамічний аналіз

Ви можете створити безкоштовний обліковий запис на: https://appetize.io/. Ця платформа дозволяє вам завантажувати та виконувати APK-файли, тому вона корисна для перегляду поведінки apk.

Ви навіть можете переглядати журнали вашого додатка в Інтернеті та підключатися через adb.

Завдяки підключенню ADB ви можете використовувати Drozer та Frida всередині емуляторів.

Локальний динамічний аналіз

Використання емулятора

  • Android Studio (Ви можете створювати пристрої x86 та arm, і згідно з цим останніми x86 версіями підтримують бібліотеки ARM без необхідності повільного ARM-емулятора).

  • Дізнайтеся, як налаштувати його на цій сторінці:

pageAVD - Android Virtual Device
  • Genymotion (Безкоштовна версія: Personal Edition, вам потрібно створити обліковий запис. Рекомендується завантажити версію З VirtualBox для уникнення можливих помилок.)

  • Nox (Безкоштовно, але не підтримує Frida або Drozer).

При створенні нового емулятора на будь-якій платформі пам'ятайте, що чим більший екран, тим повільніше працюватиме емулятор. Тому вибирайте невеликі екрани, якщо це можливо.

Для встановлення служб Google (наприклад, AppStore) в Genymotion вам потрібно натиснути на червону кнопку на наступному зображенні:

Також зверніть увагу, що в конфігурації Android VM в Genymotion ви можете вибрати режим мережі моста (це буде корисно, якщо ви будете підключатися до Android VM з іншої VM з інструментами).

Використання фізичного пристрою

Вам потрібно активувати параметри налагодження, і краще, якщо ви зможете його роутнути:

  1. Налаштування.

  2. (З Android 8.0) Виберіть Система.

  3. Виберіть Про телефон.

  4. Натисніть Номер збірки 7 разів.

  5. Поверніться назад, і ви знайдете Параметри розробника.

Після встановлення додатка першим кроком буде його випробування та дослідження, що він робить, як він працює, і зручність в користуванні ним. Я рекомендую виконати цей початковий динамічний аналіз, використовуючи динамічний аналіз MobSF + pidcat, щоб ми могли дізнатися, як працює додаток, поки MobSF захоплює багато цікавих даних, які ви зможете переглянути пізніше.

Ненавмисна витікання даних

Логування

Розробники повинні бути обережні при публічному викладанні інформації для налагодження, оскільки це може призвести до витоку чутливих даних. Рекомендовано використовувати інструменти pidcat та adb logcat для моніторингу журналів додатків для ідентифікації та захисту чутливої інформації. Pidcat відзначається своєю простотою використання та читабельністю.

Зверніть увагу, що починаючи з новіших версій Android пізніше, ніж 4.0, додатки можуть отримувати доступ лише до своїх власних журналів. Таким чином, додатки не можуть отримувати доступ до журналів інших додатків. У будь-якому випадку рекомендується не реєструвати чутливу інформацію.

Буфер обміну копіювання/вставки

Фреймворк буфера обміну Android дозволяє функцію копіювання-вставки в додатках, але створює ризик, оскільки інші додатки можуть отримати доступ до буфера обміну, що потенційно може викласти чутливі дані. Важливо вимкнути функцію копіювання/вставки для чутливих розділів додатка, наприклад, для даних кредитних карт, щоб запобігти витоку даних.

Журнали аварій

Якщо додаток аварійно завершується і зберігає журнали, ці журнали можуть допомогти зловмисникам, особливо коли додаток не може бути розібраний зворотньо. Щоб зменшити цей ризик, уникайте реєстрування при аваріях, і якщо журнали повинні бути передані через мережу, переконайтеся, що вони надсилаються через канал SSL для забезпечення безпеки.

Як пентестер, спробуйте переглянути ці журнали.

Аналітичні дані, відправлені третім сторонам

Додатки часто інтегрують послуги, такі як Google Adsense, що ненавмисно можуть витікати чутливі дані через неправильну реалізацію розробниками. Для виявлення можливих витоків даних рекомендується перехоплювати трафік додатка та перевіряти, чи відправляється чутлива інформація стороннім службам.

Бази даних SQLite

Більшість додатків використовуватимуть внутрішні бази даних SQLite для збереження інформації. Під час пентесту слід переглянути створені бази даних, назви таблиць та стовпців та всі дані, які зберігаються, оскільки ви можете знайти чутливу інформацію (що може бути уразливістю). Бази даних повинні знаходитися в /data/data/ім'я.пакета/бази даних, наприклад /data/data/com.mwr.example.sieve/databases

Якщо база даних зберігає конфіденційну інформацію і шифрована, але ви можете знайти пароль всередині додатка, це все ще уразливість.

Перелічіть таблиці, використовуючи .tables, та перелічіть стовпці таблиць, виконавши .schema <ім'я_таблиці>

Drozer (Експлуатація дій, постачальників контенту та служб)

З Документів Drozer: Drozer дозволяє вам припустити роль Android додатка та взаємодіяти з іншими додатками. Він може робити будь-що, що може робити встановлене додаток, таке як використання механізму міжпроцесного зв'язку Android та взаємодія з базовою операційною системою. . Drozer є корисним інструментом для експлуатації експортованих дій, експортованих служб та постачальників контенту, як ви дізнаєтеся в наступних розділах.

Експлуатація експортованих дій

Прочитайте це, якщо ви хочете оновити, що таке дія Android. Також пам'ятайте, що код дії починається в методі onCreate.

Обхід авторизації

Коли дія експортується, ви можете викликати її екран з зовнішнього додатка. Таким чином, якщо дія з чутливою інформацією експортується, ви можете обійти механізми аутентифікації, щоб отримати до неї доступ.

Дізнайтеся, як експлуатувати експортовані дії за допомогою Drozer.

Ви також можете запустити експортовану дію з adb:

  • PackageName - com.example.demo

  • Експортоване ім'я дії - com.example.test.MainActivity

adb shell am start -n com.example.demo/com.example.test.MainActivity

ПРИМІТКА: MobSF виявить як шкідливе використання singleTask/singleInstance як android:launchMode в активності, але через це, це, здається, є небезпечним лише на старих версіях (версії API < 21).

Зверніть увагу, що обхід авторизації не завжди є вразливістю, це буде залежати від того, як працює обхід та яка інформація викривається.

Витік чутливої інформації

Активності також можуть повертати результати. Якщо вам вдасться знайти експортовану та незахищену активність, яка викликає метод setResult та повертає чутливу інформацію, це може призвести до витоку чутливої інформації.

Tapjacking

Якщо tapjacking не запобіжено, ви можете зловживати експортованою активністю, щоб змусити користувача виконувати неочікувані дії. Для отримання додаткової інформації про що таке Tapjacking перейдіть за посиланням.

Експлуатація постачальників контенту - Доступ та маніпулювання чутливою інформацією

Прочитайте це, якщо ви хочете оновити, що таке постачальник контенту. Постачальники контенту в основному використовуються для обміну даними. Якщо додаток має доступні постачальники контенту, ви можете витягти чутливі дані з них. Також цікаво перевірити можливі SQL ін'єкції та перехоплення шляхів, оскільки вони можуть бути вразливими.

Дізнайтеся, як експлуатувати постачальників контенту за допомогою Drozer.

Експлуатація служб

Прочитайте це, якщо ви хочете оновити, що таке служба. Пам'ятайте, що дії служби починаються в методі onStartCommand.

Служба в основному є чимось, що може отримувати дані, обробляти їх та повертати (або ні) відповідь. Тому, якщо додаток експортує деякі служби, вам слід перевірити код, щоб зрозуміти, що він робить, та тестувати його динамічно для вилучення конфіденційної інформації, обхіду заходів аутентифікації... Дізнайтеся, як експлуатувати служби за допомогою Drozer.

Експлуатація приймачів трансляцій

Прочитайте це, якщо ви хочете оновити, що таке приймач трансляцій. Пам'ятайте, що дії приймача трансляцій починаються в методі onReceive.

Приймач трансляцій буде чекати на певний тип повідомлення. Залежно від того, як приймач обробляє повідомлення, він може бути вразливим. Дізнайтеся, як експлуатувати приймачі трансляцій за допомогою Drozer.

Експлуатація схем / Глибокі посилання

Ви можете шукати глибокі посилання вручну, використовуючи інструменти, такі як MobSF або скрипти, наприклад цей. Ви можете відкрити заявлений схему за допомогою adb або браузера:

adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?param=value" [your.package.name]

Зверніть увагу, що ви можете пропустити назву пакету і мобільний пристрій автоматично викличе додаток, який повинен відкрити це посилання.

<!-- Browser regular link -->
<a href="scheme://hostname/path?param=value">Click me</a>
<!-- fallback in your url you could try the intent url -->
<a href="intent://hostname#Intent;scheme=scheme;package=your.package.name;S.browser_fallback_url=http%3A%2F%2Fwww.example.com;end">with alternative</a>

Виконаний код

Для пошуку коду, який буде виконуватися в додатку, перейдіть до активності, викликаної глибинним посиланням, та знайдіть функцію onNewIntent.

Чутлива інформація

Кожного разу, коли ви знаходите глибинне посилання, перевірте, що воно не отримує чутливі дані (наприклад, паролі) через параметри URL, оскільки будь-яке інше додаток може відіграти глибинне посилання та вкрасти ці дані!

Параметри в шляху

Ви також повинні перевірити, чи використовує глибинне посилання параметр всередині шляху URL, наприклад: https://api.example.com/v1/users/{username}, у цьому випадку ви можете змусити обхід шляху, отримавши доступ до чогось на зразок: example://app/users?username=../../unwanted-endpoint%3fparam=value. Зверніть увагу, що якщо ви знайдете правильні кінцеві точки всередині додатку, ви можете спричинити Відкритий Перенаправлення (якщо частина шляху використовується як ім'я домену), захоплення облікового запису (якщо ви можете змінювати дані користувачів без токена CSRF та вразлива кінцева точка використовує правильний метод) та будь-яку іншу вразливість. Додаткова інформація тут.

Додаткові приклади

Цікавий звіт про винагороду за виявлення помилок щодо посилань (/.well-known/assetlinks.json).

Перевірка та Порушення Верифікації Транспортного Шару

  • Сертифікати не завжди перевіряються належним чином Android-додатками. Часто ці додатки нехтуватимуть попередженнями та прийматимуть самопідписані сертифікати або, у деяких випадках, повертатимуться до використання HTTP-з'єднань.

  • Переговори під час рукостискання SSL/TLS іноді є слабкими, використовуючи небезпечні шифрувальні набори. Ця вразливість робить з'єднання вразливим до атак типу "чоловік посередині" (MITM), дозволяючи зловмисникам розшифрувати дані.

  • Витікання приватної інформації є ризиком, коли додатки аутентифікуються за допомогою безпечних каналів, а потім спілкуються через незахищені канали для інших транзакцій. Цей підхід не захищає від перехоплення чутливих даних, таких як сесійні файли cookie або дані користувачів, зловмисними сутностями.

Перевірка Сертифікатів

Ми зосередимося на перевірці сертифікатів. Інтегрітет сертифіката сервера повинен бути перевірений для підвищення безпеки. Це критично, оскільки небезпечні конфігурації TLS та передача чутливих даних через незашифровані канали можуть становити значний ризик. Для докладних кроків з перевірки сертифікатів сервера та вирішення вразливостей, цей ресурс надає вичерпні вказівки.

Прикріплення SSL

Прикріплення SSL - це захисний захід, коли додаток перевіряє сертифікат сервера порівняно з відомою копією, збереженою всередині самого додатка. Цей метод є важливим для запобігання атак типу "чоловік посередині". Рекомендується рішуче впроваджувати прикріплення SSL для додатків, які обробляють чутливу інформацію.

Інспекція Трафіку

Для інспекції HTTP-трафіку необхідно встановити сертифікат інструменту проксі (наприклад, Burp). Без встановлення цього сертифіката зашифрований трафік може бути невидимим через проксі. Для керівництва з встановленням власного сертифіката ЦС, натисніть тут.

Додатки, які спрямовані на рівень API 24 і вище, вимагають модифікацій конфігурації мережевої безпеки для прийняття сертифіката ЦС проксі. Цей крок є критичним для інспекції зашифрованого трафіку. Для інструкцій з модифікації конфігурації мережевої безпеки, зверніться до цього посібника.

Обхід Прикріплення SSL

Коли впроваджено прикріплення SSL, обхід цього стає необхідним для інспекції HTTPS-трафіку. Для цієї мети доступні різні методи:

  • Автоматично змініть apk, щоб обійти прикріплення SSL за допомогою apk-mitm. Головна перевага цієї опції полягає в тому, що вам не потрібно мати root-права для обходу прикріплення SSL, але вам доведеться видалити додаток і перевстановити новий, і це не завжди працюватиме.

  • Ви можете використовувати Frida (розглянуто нижче), щоб обійти цей захист. Ось посібник з використання Burp+Frida+Genymotion: https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/

  • Ви також можете спробувати автоматично обійти прикріплення SSL за допомогою objection: objection --gadget com.package.app explore --startup-command "android sslpinning disable"

  • Ви також можете спробувати автоматично обійти прикріплення SSL за допомогою динамічного аналізу MobSF (пояснено нижче)

  • Якщо ви все ще вважаєте, що є якийсь трафік, який ви не захоплюєте, ви можете спробувати перенаправити трафік на burp за допомогою iptables. Прочитайте цей блог: https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62

Пошук Загальних Вразливостей Веб

Також важливо шукати загальні вразливості веб-додатків. Докладна інформація про виявлення та пом'якшення цих вразливостей виходить за межі цього огляду, але широко описана в інших джерелах.

Frida

Frida - це набір інструментів для динамічної інструментування для розробників, реверс-інженерів та дослідників з безпеки. Ви можете отримати доступ до запущеного додатку та підключити методи під час виконання для зміни поведінки, зміни значень, вилучення значень, виконання різного коду... Якщо ви хочете провести тестування на проникнення додатків Android, вам потрібно знати, як використовувати Frida.

Витягнення Пам'яті - Fridump

Перевірте, чи додаток зберігає чутливу інформацію всередині пам'яті, яку не повинно зберігати, наприклад паролі або мнемоніки.

За допомогою Fridump3 ви можете витягти пам'ять додатка за допомогою:

# With PID
python3 fridump3.py -u <PID>

# With name
frida-ps -Uai
python3 fridump3.py -u "<Name>"

Це виведе пам'ять у папці ./dump, де ви зможете використовувати grep, наприклад:

strings * | grep -E "^[a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+$"

Чутлива інформація в сховищі ключів

У Android сховище ключів - це найкраще місце для зберігання чутливої інформації, однак за достатньо високих привілеїв все ще можливо отримати до нього доступ. Оскільки додатки зазвичай зберігають тут чутливі дані у відкритому вигляді, тести на проникнення повинні перевірити це, оскільки користувач з правами root або хтось з фізичним доступом до пристрою може вкрасти ці дані.

Навіть якщо додаток зберігає дані в сховищі ключів, ці дані повинні бути зашифровані.

Для доступу до даних всередині сховища ключів можна використовувати цей скрипт Frida: https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js

frida -U -f com.example.app -l frida-scripts/tracer-cipher.js

Обхід відбитка пальця/біометрії

За допомогою наступного скрипту Frida можливо обійти аутентифікацію відбитком пальця , яку можуть виконувати додатки Android для захисту певних чутливих областей:

frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app.package>

Фонові зображення

Коли ви перекладаєте додаток у фоновий режим, Android зберігає знімок додатка, тому коли він відновлюється на передній план, він починає завантажувати зображення перед додатком, щоб виглядало так, ніби додаток завантажувався швидше.

Однак, якщо цей знімок містить чутливу інформацію, людина з доступом до знімка може вкрасти цю інформацію (зверніть увагу, що для доступу до неї потрібен root).

Знімки зазвичай зберігаються за адресою: /data/system_ce/0/snapshots

Android надає можливість запобігти захопленню знімків екрану, встановивши параметр FLAG_SECURE макету. Використовуючи цей прапорець, вміст вікна розглядається як безпечний, що запобігає його відображенню на знімках екрану або перегляду на небезпечних дисплеях.

getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);

Аналізатор додатків для Android

Цей інструмент може допомогти вам управляти різними інструментами під час динамічного аналізу: https://github.com/NotSoSecure/android_application_analyzer

Впровадження намірів

Розробники часто створюють проксі-компоненти, такі як дії, служби та отримувачі трансляцій, які обробляють ці наміри та передають їх методам, таким як startActivity(...) або sendBroadcast(...), що може бути ризиковано.

Небезпека полягає в тому, що дозволяється зловмисникам викликати некомпоненти програми, які не експортуються, або отримувати доступ до чутливих постачальників контенту, перенаправляючи ці наміри. Прикладом є компонент WebView, який перетворює URL-адреси на об'єкти Intent через Intent.parseUri(...) та виконує їх, що потенційно може призвести до зловмисних впроваджень намірів.

Основні висновки

  • Впровадження намірів схоже на проблему відкритого перенаправлення веб-сайтів.

  • Використання Intent об'єктів як додаткових параметрів може призвести до виконання небезпечних операцій.

  • Це може розкрити некомпоненти та постачальників контенту, які не експортуються, зловмисникам.

  • Перетворення URL-адрес на Intent у WebView може сприяти непередбаченим діям.

Впровадження на стороні клієнта Android та інші

Можливо, ви знаєте про ці типи вразливостей з Вебу. Ви повинні бути особливо обережні з цими вразливостями в додатку для Android:

  • SQL Injection: При роботі з динамічними запитами або постачальниками контенту переконайтеся, що використовуєте параметризовані запити.

  • JavaScript Injection (XSS): Перевірте, що підтримка JavaScript та плагінів вимкнена для будь-яких WebViews (за замовчуванням вимкнено). Додаткова інформація тут.

  • Локальне включення файлів: У WebViews доступ до файлової системи повинен бути вимкнений (увімкнено за замовчуванням) - (webview.getSettings().setAllowFileAccess(false);). Додаткова інформація тут.

  • Вічні куки: У декількох випадках, коли додаток для Android завершує сеанс, куки не анулюються або навіть можуть бути збережені на диск.


Приєднуйтесь до HackenProof Discord, щоб спілкуватися з досвідченими хакерами та мисливцями за вразливостями!

Інсайти щодо взлому Взаємодійте з контентом, який досліджує захоплення та виклики взлому

Новини про взломи в реальному часі Будьте в курсі швидкозмінного світу взлому завдяки новинам та інсайтам в реальному часі

Останні оголошення Будьте в курсі нових програм нагород за вразливості та важливих оновлень платформи

Приєднуйтесь до нас на Discord та почніть співпрацювати з найкращими хакерами вже сьогодні!

Автоматичний аналіз

Статичний аналіз

Оцінка вразливостей додатка за допомогою зручного веб-інтерфейсу. Ви також можете виконати динамічний аналіз (але вам потрібно підготувати середовище).

docker pull opensecurity/mobile-security-framework-mobsf
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest

Зверніть увагу, що MobSF може аналізувати Android(apk), IOS(ipa) та Windows(apx) додатки (Для аналізу Windows-додатків потрібно встановити MobSF на хості з Windows). Також, якщо ви створите ZIP-файл із вихідним кодом Android або IOS додатка (перейдіть до кореневої папки додатка, виберіть все і створіть ZIP-файл), MobSF зможе також його проаналізувати.

MobSF також дозволяє вам порівнювати аналіз та інтегрувати VirusTotal (вам потрібно встановити свій API-ключ у MobSF/settings.py та активувати його: VT_ENABLED = TRUE VT_API_KEY = <Ваш API-ключ> VT_UPLOAD = TRUE). Ви також можете встановити VT_UPLOAD на False, тоді хеш буде відправлений замість файлу.

Допоміжний динамічний аналіз з MobSF

MobSF також може бути дуже корисним для динамічного аналізу в Android, але в цьому випадку вам потрібно встановити MobSF та genymotion на вашому хості (віртуальна машина або Docker не підійдуть). Примітка: Вам потрібно спочатку запустити віртуальну машину в genymotion, а потім MobSF. Динамічний аналізатор MobSF може:

  • Витягти дані додатка (URL-адреси, журнали, буфер обміну, знімки екрану, зроблені вами, знімки екрану, зроблені "Exported Activity Tester", електронні листи, бази даних SQLite, XML-файли та інші створені файли). Все це відбувається автоматично, за винятком знімків екрану, вам потрібно натиснути, коли ви хочете зробити знімок екрану, або вам потрібно натиснути "Exported Activity Tester", щоб отримати знімки всіх експортованих дій.

  • Захоплювати HTTPS-трафік

  • Використовувати Frida для отримання інформації під час виконання

Починаючи з версії Android > 5, він автоматично запускає Frida та встановлює глобальні налаштування проксі-сервера для захоплення трафіку. Він буде захоплювати трафік лише з тестованого додатка.

Frida

За замовчуванням він також використовуватиме деякі скрипти Frida для обхіду SSL-пінінгу, виявлення рута та виявлення відладчика та для відстеження цікавих API. MobSF також може викликати експортовані дії, захоплювати знімки екрану та зберігати їх для звіту.

Для початку динамічного тестування натисніть зелену кнопку: "Start Instrumentation". Натисніть "Frida Live Logs", щоб переглянути журнали, створені скриптами Frida, та "Live API Monitor", щоб побачити всі виклики до підключених методів, передані аргументи та повернені значення (це з'явиться після натискання "Start Instrumentation"). MobSF також дозволяє завантажувати свої власні скрипти Frida (щоб надіслати результати ваших скриптів у п'ятницю до MobSF, використовуйте функцію send()). Він також має кілька написаних скриптів, які можна завантажити (ви можете додати більше в MobSF/DynamicAnalyzer/tools/frida_scripts/others/), просто виберіть їх, натисніть "Load" та натисніть "Start Instrumentation" (ви зможете побачити журнали цих скриптів всередині "Frida Live Logs").

Крім того, у вас є деякі допоміжні функції Frida:

  • Перелічити завантажені класи: Виведе всі завантажені класи

  • Захоплення рядків: Виведе всі захоплені рядки під час використання додатка (дуже шумно)

  • Захоплення порівнянь рядків: Може бути дуже корисним. Покаже 2 порівняні рядки та результат True або False.

  • Перелічити методи класу: Введіть назву класу (наприклад, "java.io.File"), і він виведе всі методи класу.

  • Пошук шаблону класу: Пошук класів за шаблоном

  • Відстеження методів класу: Відстеження цілого класу (перегляд входів та виходів всіх методів класу). Пам'ятайте, що за замовчуванням MobSF відстежує кілька цікавих методів Android Api.

Після вибору допоміжного модуля, який ви хочете використовувати, вам потрібно натиснути "Start Intrumentation", і ви побачите всі виводи в "Frida Live Logs".

Shell

Mobsf також надає вам оболонку з деякими adb командами, командами MobSF та загальними командами оболонки внизу сторінки динамічного аналізу. Деякі цікаві команди:

help
shell ls
activities
exported_activities
services
receivers

Інструменти HTTP

Коли захоплюється http-трафік, ви можете побачити некрасивий вигляд захопленого трафіку внизу "HTTP(S) Traffic" або кращий вигляд в "Start HTTPTools" зеленій кнопці. З другого варіанту ви можете надіслати захоплені запити до проксі, таких як Burp або Owasp ZAP. Для цього увімкніть Burp --> вимкніть Intercept --> виберіть запит в MobSB HTTPTools --> натисніть "Send to Fuzzer" --> виберіть адресу проксі (http://127.0.0.1:8080\).

Після завершення динамічного аналізу з MobSF ви можете натиснути "Start Web API Fuzzer" для фаззінгу http-запитів та пошуку вразливостей.

Після виконання динамічного аналізу з MobSF налаштування проксі можуть бути неправильно налаштовані, і ви не зможете виправити їх з GUI. Ви можете виправити налаштування проксі, виконавши:

adb shell settings put global http_proxy :0

Допоміжний динамічний аналіз за допомогою Inspeckage

Ви можете отримати інструмент з Inspeckage. Цей інструмент використовує деякі Hooks, щоб ви могли дізнатися, що відбувається в додатку, під час виконання динамічного аналізу.

Це чудовий інструмент для виконання статичного аналізу з GUI

Цей інструмент призначений для пошуку кількох пов'язаних з безпекою вразливостей додатків для Android, як у вихідному коді, так і у упакованих APK. Інструмент також здатний створювати "доказ концепції" APK для розгортання та команди ADB, для експлуатації деяких знайдених вразливостей (відкриті дії, наміри, tapjacking...). Як і з Drozer, немає потреби рутувати тестовий пристрій.

pip3 install --user qark  # --user is only needed if not using a virtualenv
qark --apk path/to/my.apk
qark --java path/to/parent/java/folder
qark --java path/to/specific/java/file.java

  • Показує всі видобуті файли для легкого посилання

  • Автоматично декомпілює файли APK у формат Java та Smali

  • Аналіз AndroidManifest.xml на предмет загальних вразливостей та поведінки

  • Статичний аналіз вихідного коду на предмет загальних вразливостей та поведінки

  • Інформація про пристрій

  • та інше

reverse-apk relative/path/to/APP.apk

SUPER - це консольний додаток, який може бути використаний в Windows, MacOS X та Linux, що аналізує .apk файли в пошуках вразливостей. Він робить це шляхом розпакування APK-файлів та застосування серії правил для виявлення цих вразливостей.

Усі правила зосереджені в файлі rules.json, і кожна компанія або тестувальник може створити свої власні правила для аналізу того, що їм потрібно.

Завантажте останні бінарні файли на сторінці завантаження

super-analyzer {apk_file}

StaCoAn - це кросплатформенний інструмент, який допомагає розробникам, мисливцям за багами та етичним хакерам виконувати статичний аналіз коду мобільних додатків.

Ідея полягає в тому, що ви перетягуєте файл вашого мобільного додатку (файл .apk або .ipa) на додаток StaCoAn, і він згенерує для вас візуальний та портативний звіт. Ви можете налаштувати параметри та словники, щоб отримати індивідуальний досвід.

Завантажте останню версію:

./stacoan

AndroBugs Framework - це система аналізу вразливостей Android, яка допомагає розробникам або хакерам знаходити потенційні вразливості безпеки в додатках Android. Випуски для Windows

python androbugs.py -f [APK file]
androbugs.exe -f [APK file]

Androwarn - це інструмент, метою якого є виявлення та попередження користувача про потенційно шкідливу поведінку, розроблену Android-додатком.

Виявлення виконується за допомогою статичного аналізу байткоду Dalvik додатку, представленого у вигляді Smali, за допомогою бібліотеки androguard.

Цей інструмент шукає загальну поведінку "поганих" додатків, таку як: витік ідентифікаторів телефонії, перехоплення аудіо/відеопотоку, модифікація даних PIM, виконання довільного коду...

python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3

MARA - це Mобільний Aналіз та Rеверс інженерії додатків. Це інструмент, який об'єднує часто використовувані засоби реверс-інженерії та аналізу мобільних додатків, щоб допомогти в тестуванні мобільних додатків на вразливості безпеки OWASP. Його мета - зробити це завдання простішим та зручнішим для розробників мобільних додатків та фахівців з безпеки.

Він може:

  • Видобувати Java та Smali код за допомогою різних інструментів

  • Аналізувати APK-файли за допомогою: smalisca, ClassyShark, androbugs, androwarn, APKiD

  • Видобувати приватну інформацію з APK за допомогою регулярних виразів.

  • Аналізувати Маніфест.

  • Аналізувати знайдені домени за допомогою: pyssltest, testssl та whatweb

  • Деобфускувати APK через apk-deguard.com

Koodous

Корисно для виявлення шкідливих програм: https://koodous.com/

Обфускація/Деобфускація коду

Зверніть увагу, що в залежності від сервісу та конфігурації, яку ви використовуєте для обфускації коду, секрети можуть бути або не бути обфускованими.

З Вікіпедії: ProGuard - це відкритий інструмент командного рядка, який стискає, оптимізує та обфускує Java-код. Він може оптимізувати байт-код, а також виявляти та видаляти не використані інструкції. ProGuard є вільним програмним забезпеченням та поширюється під ліцензією GNU General Public License, версія 2.

ProGuard постачається як частина Android SDK та запускається при побудові додатка в режимі релізу.

Знайдіть пошаговий посібник з деобфускації apk за посиланням https://blog.lexfo.fr/dexguard.html

(З цього посібника) Останній раз, коли ми перевірили, режим роботи Dexguard був такий:

  • завантажити ресурс як InputStream;

  • передати результат класу, що успадковується від FilterInputStream для розшифрування його;

  • зробити деяку непотрібну обфускацію, щоб витратити кілька хвилин часу реверсера;

  • передати розшифрований результат в ZipInputStream для отримання файлу DEX;

  • нарешті завантажити отриманий DEX як ресурс за допомогою методу loadDex.

DeGuard розгортає процес обфускації, виконаний інструментами обфускації Android. Це дозволяє проводити численні аналізи безпеки, включаючи інспекцію коду та передбачення бібліотек.

Ви можете завантажити обфускований APK на їхню платформу.

Це загальний деобфускатор для Android. Simplify практично виконує додаток, щоб зрозуміти його поведінку, а потім намагається оптимізувати код, щоб він працював ідентично, але був зрозуміліший для людини. Кожен тип оптимізації є простим і загальним, тому не має значення, який саме тип обфускації використовується.

APKiD надає вам інформацію про той спосіб, як було створено APK. Він ідентифікує багато компіляторів, упаковувальників, обфускаторів та інші дивні речі. Це PEiD для Android.

Manual

Прочитайте цей посібник, щоб дізнатися деякі хитрощі щодо реверс-інженерії власної обфускації

Лабораторії

AndroL4b - це віртуальна машина безпеки Android на основі ubuntu-mate, яка включає колекцію останніх фреймворків, посібників та лабораторій від різних гіків з безпеки та дослідників для реверс-інженерії та аналізу шкідливих програм.

Посилання

Ще не спробував

Приєднуйтесь до HackenProof Discord сервера, щоб спілкуватися з досвідченими хакерами та мисливцями за багами!

Інсайти щодо Хакінгу Взаємодійте з контентом, який досліджує захоплення та виклики хакінгу

Новини про Хакінг у Реальному Часі Будьте в курсі швидкозмінного світу хакінгу завдяки новинам та інсайтам у реальному часі

Останні Оголошення Будьте в курсі нових баг-баунті, які запускаються, та важливих оновлень платформи

Приєднуйтесь до нас на Discord та почніть співпрацювати з топовими хакерами вже сьогодні!

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated