From d8935aa511020065d5beab62dbb1a9367eed0499 Mon Sep 17 00:00:00 2001 From: Translator Date: Sat, 5 Oct 2024 13:17:24 +0000 Subject: [PATCH] Translated ['mobile-pentesting/android-app-pentesting/android-applicatio --- .../android-applications-basics.md | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/mobile-pentesting/android-app-pentesting/android-applications-basics.md b/mobile-pentesting/android-app-pentesting/android-applications-basics.md index 2425e4a02..aff542dad 100644 --- a/mobile-pentesting/android-app-pentesting/android-applications-basics.md +++ b/mobile-pentesting/android-app-pentesting/android-applications-basics.md @@ -34,7 +34,7 @@ ### Пісочниця **Пісочниця Android-додатків** дозволяє запускати **кожен додаток** як **окремий процес під окремим ідентифікатором користувача**. Кожен процес має свою віртуальну машину, тому код додатка виконується в ізоляції від інших додатків.\ -З Android 5.0(L) **впроваджено SELinux**. В основному, SELinux забороняє всі взаємодії процесів, а потім створює політики, щоб **дозволити лише очікувані взаємодії між ними**. +З Android 5.0(L) **SELinux** є обов'язковим. В основному, SELinux забороняє всі взаємодії процесів, а потім створює політики, щоб **дозволити лише очікувані взаємодії між ними**. ### Дозволи @@ -54,7 +54,7 @@ ## Попередньо встановлені додатки -Ці додатки зазвичай знаходяться в каталогах **`/system/app`** або **`/system/priv-app`**, і деякі з них **оптимізовані** (ви навіть можете не знайти файл `classes.dex`). Ці додатки варто перевірити, оскільки іноді вони **працюють з надто багатьма дозволами** (як root). +Ці додатки зазвичай знаходяться в каталогах **`/system/app`** або **`/system/priv-app`**, і деякі з них є **оптимізованими** (ви навіть можете не знайти файл `classes.dex`). Ці додатки варто перевірити, оскільки іноді вони **працюють з надто багатьма дозволами** (як root). * Ті, що постачаються з **AOSP** (Android OpenSource Project) **ROM** * Додані виробником **пристрою** @@ -62,7 +62,7 @@ ## Рутування -Щоб отримати доступ root на фізичному пристрої Android, вам зазвичай потрібно **експлуатувати** 1 або 2 **вразливості**, які зазвичай є **специфічними** для **пристрою** та **версії**.\ +Щоб отримати доступ root на фізичному пристрої Android, вам зазвичай потрібно **використати** 1 або 2 **вразливості**, які зазвичай є **специфічними** для **пристрою** та **версії**.\ Після того, як експлуатація спрацювала, зазвичай бінарний файл Linux `su` копіюється в місце, вказане в змінній середовища PATH користувача, наприклад, `/system/xbin`. Після налаштування бінарного файлу su використовується інший Android-додаток для взаємодії з бінарним файлом `su` та **обробки запитів на доступ root**, таких як **Superuser** та **SuperSU** (доступні в Google Play Store). @@ -74,7 +74,7 @@ ### ROM Можливо **замінити ОС, встановивши власне програмне забезпечення**. Це дозволяє розширити корисність старого пристрою, обійти програмні обмеження або отримати доступ до останнього коду Android.\ -**OmniROM** та **LineageOS** є двома з найпопулярніших прошивок для використання. +**OmniROM** та **LineageOS** є двома найпопулярнішими прошивками для використання. Зверніть увагу, що **не завжди необхідно рутувати пристрій**, щоб встановити власне програмне забезпечення. **Деякі виробники дозволяють** розблокування своїх завантажувачів у добре задокументований і безпечний спосіб. @@ -97,7 +97,7 @@ - lib/ - Містить рідні бібліотеки, розділені за архітектурою ЦП в підкаталогах. - `armeabi`: код для процесорів на базі ARM -- `armeabi-v7a`: код для процесорів ARMv7 та вище +- `armeabi-v7a`: код для процесорів ARMv7 і вище - `x86`: код для процесорів X86 - `mips`: код лише для процесорів MIPS - assets/ @@ -107,7 +107,7 @@ ### **Dalvik & Smali** -У розробці Android використовується **Java або Kotlin** для створення додатків. Замість використання JVM, як у настільних додатках, Android компілює цей код у **Dalvik Executable (DEX) байт-код**. Раніше цим байт-кодом займалася віртуальна машина Dalvik, але тепер Android Runtime (ART) бере на себе цю функцію в новіших версіях Android. +У розробці Android використовується **Java або Kotlin** для створення додатків. Замість використання JVM, як у настільних додатках, Android компілює цей код у **Dalvik Executable (DEX) байт-код**. Раніше байт-код обробляв віртуальна машина Dalvik, але тепер Android Runtime (ART) бере на себе цю функцію в новіших версіях Android. Для реверс-інжинірингу **Smali** стає критично важливим. Це читабельна людиною версія DEX байт-коду, яка діє як асемблерна мова, перетворюючи вихідний код на інструкції байт-коду. Smali та baksmali відносяться до інструментів асемблювання та розбирання в цьому контексті. @@ -115,7 +115,7 @@ Інтенти є основним засобом, за допомогою якого Android-додатки спілкуються між своїми компонентами або з іншими додатками. Ці об'єкти повідомлень також можуть переносити дані між додатками або компонентами, подібно до того, як використовуються запити GET/POST у HTTP-комунікаціях. -Отже, Інтент - це, по суті, **повідомлення, яке передається між компонентами**. Інтенти **можуть бути спрямовані** на конкретні компоненти або додатки, **або можуть бути надіслані без конкретного отримувача**.\ +Отже, Інтент — це, по суті, **повідомлення, яке передається між компонентами**. Інтенти **можуть бути надіслані** конкретним компонентам або додаткам, **або можуть бути надіслані без конкретного отримувача**.\ Простими словами, Інтент можна використовувати: * Для запуску Activity, зазвичай відкриваючи інтерфейс користувача для додатку @@ -128,13 +128,13 @@ ### Фільтр Інтентів -**Фільтри Інтентів** визначають **як активність, сервіс або приймач трансляцій можуть взаємодіяти з різними типами Інтентів**. По суті, вони описують можливості цих компонентів, такі як дії, які вони можуть виконувати, або типи трансляцій, які вони можуть обробляти. Основне місце для оголошення цих фільтрів - це файл **AndroidManifest.xml**, хоча для приймачів трансляцій також є можливість їх кодування. +**Фільтри Інтентів** визначають **як Activity, сервіс або Broadcast Receiver можуть взаємодіяти з різними типами Інтентів**. По суті, вони описують можливості цих компонентів, такі як дії, які вони можуть виконувати, або типи трансляцій, які вони можуть обробляти. Основне місце для оголошення цих фільтрів — це **файл AndroidManifest.xml**, хоча для Broadcast Receiver також є можливість їх кодування. Фільтри Інтентів складаються з категорій, дій та фільтрів даних, з можливістю включення додаткових метаданих. Ця конфігурація дозволяє компонентам обробляти конкретні Інтенти, які відповідають оголошеним критеріям. -Критичним аспектом Android-компонентів (активності/сервіси/постачальники контенту/приймачі трансляцій) є їх видимість або **публічний статус**. Компонент вважається публічним і може взаємодіяти з іншими додатками, якщо він **`експортується`** зі значенням **`true`** або якщо для нього в маніфесті оголошено фільтр Інтентів. Однак є спосіб для розробників явно зберегти ці компоненти приватними, забезпечуючи їх ненавмисну взаємодію з іншими додатками. Це досягається шляхом встановлення атрибута **`експортується`** на **`false`** у їхніх визначеннях маніфесту. +Критичним аспектом Android-компонентів (активності/сервіси/постачальники контенту/трансляційні приймачі) є їх видимість або **публічний статус**. Компонент вважається публічним і може взаємодіяти з іншими додатками, якщо він **`exported`** зі значенням **`true`** або якщо для нього в маніфесті оголошено фільтр Інтентів. Однак є спосіб для розробників явно зберегти ці компоненти приватними, забезпечуючи їх ненавмисну взаємодію з іншими додатками. Це досягається шляхом встановлення атрибута **`exported`** на **`false`** у їхніх визначеннях маніфесту. -Більше того, розробники мають можливість додатково захистити доступ до цих компонентів, вимагаючи специфічних дозволів. Атрибут **`permission`** може бути встановлений, щоб забезпечити доступ лише для додатків з призначеним дозволом, додаючи додатковий рівень безпеки та контролю над тим, хто може з ним взаємодіяти. +Більше того, розробники мають можливість додатково захистити доступ до цих компонентів, вимагаючи специфічних дозволів. Атрибут **`permission`** може бути встановлений, щоб забезпечити доступ лише для додатків з призначеним дозволом, додаючи додатковий рівень безпеки та контролю над тим, хто може взаємодіяти з ним. ```java @@ -146,9 +146,9 @@ ```java Intent email = new Intent(Intent.ACTION_SEND, Uri.parse("mailto:")); ``` -The **Action** of the previously declared intent is **ACTION\_SEND** and the **Extra** is a mailto **Uri** (the Extra if the extra information the intent is expecting). +The **Action** of the previously declared intent is **ACTION\_SEND** and the **Extra** is a mailto **Uri** (додаткова інформація, яку очікує намір). -Цей намір повинен бути оголошений у маніфесті, як у наступному прикладі: +This intent should be declared inside the manifest as in the following example: ```xml @@ -167,7 +167,7 @@ The **Action** of the previously declared intent is **ACTION\_SEND** and the **E ```java Intent downloadIntent = new (this, DownloadService.class): ``` -В інших додатках, щоб отримати доступ до раніше оголошеного наміру, ви можете використовувати: +В інших додатках для доступу до раніше оголошеного наміру ви можете використовувати: ```java Intent intent = new Intent(); intent.setClassName("com.other.app", "com.other.app.ServiceName"); @@ -185,7 +185,7 @@ context.startService(intent); Існує **два типи** широкомовлень: **Звичайні** (асинхронні) та **Упорядковані** (синхронні). **Порядок** базується на **налаштованому пріоритеті в елементі отримувача**. **Кожен додаток може обробляти, передавати або відхиляти широкомовлення.** -Можливо **відправити** **широкомовлення** за допомогою функції `sendBroadcast(intent, receiverPermission)` з класу `Context`.\ +Можна **відправити** **широкомовлення**, використовуючи функцію `sendBroadcast(intent, receiverPermission)` з класу `Context`.\ Ви також можете використовувати функцію **`sendBroadcast`** з **`LocalBroadCastManager`**, яка забезпечує, що **повідомлення ніколи не покидає додаток**. Використовуючи це, вам навіть не потрібно експортувати компонент отримувача. ### Sticky Broadcasts @@ -198,9 +198,9 @@ context.startService(intent); ## Deep links / URL schemes -У додатках Android **глибокі посилання** використовуються для ініціювання дії (Intent) безпосередньо через URL. Це робиться шляхом оголошення конкретної **схеми URL** в межах активності. Коли пристрій Android намагається **доступитися до URL з цією схемою**, вказана активність в додатку запускається. +У додатках Android **глибокі посилання** використовуються для ініціювання дії (Intent) безпосередньо через URL. Це робиться шляхом оголошення конкретного **схеми URL** в межах активності. Коли пристрій Android намагається **доступитися до URL з цією схемою**, вказана активність в додатку запускається. -Схема повинна бути оголошена в файлі **`AndroidManifest.xml`**: +Схема повинна бути оголошена у файлі **`AndroidManifest.xml`**: ```xml [...] @@ -212,9 +212,9 @@ context.startService(intent); [...] ``` -Схема з попереднього прикладу - `exampleapp://` (також зверніть увагу на **`category BROWSABLE`**) +Схема з попереднього прикладу - `examplescheme://` (також зверніть увагу на **`категорія BROWSABLE`**) -Тоді в полі даних ви можете вказати **host** та **path**: +Тоді в полі даних ви можете вказати **хост** та **шлях**: ```xml @@ -266,7 +266,7 @@ android:host="example" ``` Однак доступ до активності з іншого додатку не завжди є ризиком для безпеки. Проблема виникає, якщо чутливі дані передаються неналежним чином, що може призвести до витоків інформації. -Життєвий цикл активності **починається з методу onCreate**, налаштовуючи UI та готуючи активність до взаємодії з користувачем. +Життєвий цикл активності **починається з методу onCreate**, налаштовуючи інтерфейс користувача та готуючи активність до взаємодії з користувачем. ### Підклас додатку @@ -358,7 +358,7 @@ JavaScript "Bridge" дозволяє Java об'єктам взаємодіяти ### **Цифровий підпис додатків** -- **Цифровий підпис** є обов'язковим для Android додатків, забезпечуючи їх **автентичне авторство** перед установкою. Цей процес використовує сертифікат для ідентифікації додатка і повинен бути перевірений менеджером пакетів пристрою під час установки. Додатки можуть бути **самопідписаними або сертифікованими зовнішнім CA**, захищаючи від несанкціонованого доступу та забезпечуючи, щоб додаток залишався незмінним під час доставки на пристрій. +- **Цифровий підпис** є обов'язковим для Android додатків, забезпечуючи їх **автентичне авторство** перед установкою. Цей процес використовує сертифікат для ідентифікації додатка і повинен бути перевірений менеджером пакетів пристрою під час установки. Додатки можуть бути **самопідписаними або сертифікованими зовнішнім CA**, захищаючи від несанкціонованого доступу та забезпечуючи, щоб додаток залишався незмінним під час його доставки на пристрій. ### **Перевірка додатків для підвищення безпеки**