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/tapjacking.md'
This commit is contained in:
parent
f018f802f5
commit
50878b80cc
@ -4,12 +4,12 @@
|
||||
|
||||
## **Основна інформація**
|
||||
|
||||
**Tapjacking** - це атака, коли **шкідлива** **додаток** запускається і **розташовується поверх додатку жертви**. Як тільки він видимо закриває додаток жертви, його інтерфейс користувача спроектований таким чином, щоб обманути користувача взаємодіяти з ним, в той час як він передає взаємодію до додатку жертви.\
|
||||
В результаті, це **осліплює користувача, не даючи йому знати, що він насправді виконує дії в додатку жертви**.
|
||||
**Tapjacking** - це атака, коли **зловмисний** **додаток** запускається і **розташовується поверх додатку жертви**. Як тільки він видимо закриває додаток жертви, його інтерфейс користувача спроектований таким чином, щоб обманути користувача взаємодіяти з ним, в той час як він передає взаємодію до додатку жертви.\
|
||||
Таким чином, він **осліплює користувача, не даючи йому знати, що він насправді виконує дії в додатку жертви**.
|
||||
|
||||
### Виявлення
|
||||
|
||||
Щоб виявити додатки, вразливі до цієї атаки, ви повинні шукати **експортовані активності** в маніфесті android (зверніть увагу, що активність з intent-filter автоматично експортується за замовчуванням). Як тільки ви знайдете експортовані активності, **перевірте, чи потребують вони будь-яких дозволів**. Це пов'язано з тим, що **шкідливий додаток також потребуватиме цього дозволу**.
|
||||
Щоб виявити додатки, вразливі до цієї атаки, ви повинні шукати **експортовані активності** в маніфесті android (зверніть увагу, що активність з intent-filter автоматично експортується за замовчуванням). Як тільки ви знайдете експортовані активності, **перевірте, чи потребують вони будь-яких дозволів**. Це пов'язано з тим, що **зловмисний додаток також потребуватиме цього дозволу**.
|
||||
|
||||
Ви також можете перевірити мінімальну версію SDK додатку, перевіряючи значення **`android:minSdkVersion`** у файлі **`AndroidManifest.xml`**. Якщо значення **менше 30**, додаток вразливий до Tapjacking.
|
||||
|
||||
@ -52,13 +52,55 @@ android:filterTouchesWhenObscured="true">
|
||||
> [!CAUTION]
|
||||
> Схоже, що цей проект зараз не підтримується, і ця функціональність більше не працює належним чином
|
||||
|
||||
Ви можете використовувати [**qark**](https://github.com/linkedin/qark) з параметрами `--exploit-apk` --sdk-path `/Users/username/Library/Android/sdk` для створення шкідливого додатку для тестування на можливі **Tapjacking** вразливості.\
|
||||
Ви можете використовувати [**qark**](https://github.com/linkedin/qark) з параметрами `--exploit-apk` --sdk-path `/Users/username/Library/Android/sdk` для створення шкідливого додатку для перевірки можливих вразливостей **Tapjacking**.\
|
||||
|
||||
Пом'якшення є відносно простим, оскільки розробник може вибрати не отримувати події дотику, коли видимість перекрита іншим. Використовуючи [Android Developer’s Reference](https://developer.android.com/reference/android/view/View#security):
|
||||
Пом'якшення є відносно простим, оскільки розробник може вибрати не отримувати події дотику, коли вид покритий іншим. Використовуючи [Довідник розробника Android](https://developer.android.com/reference/android/view/View#security):
|
||||
|
||||
> Іноді важливо, щоб додаток могло перевірити, що дія виконується з повним усвідомленням і згодою користувача, наприклад, надання запиту на дозвіл, здійснення покупки або натискання на рекламу. На жаль, шкідливий додаток може спробувати обманути користувача, змусивши його виконати ці дії, не усвідомлюючи цього, приховуючи справжню мету вигляду. Як засіб вирішення, фреймворк пропонує механізм фільтрації дотиків, який можна використовувати для покращення безпеки виглядів, що надають доступ до чутливої функціональності.
|
||||
> Іноді важливо, щоб додаток могло перевірити, що дія виконується з повним усвідомленням і згодою користувача, наприклад, надання запиту на дозвіл, здійснення покупки або натискання на рекламу. На жаль, шкідливий додаток може спробувати обманути користувача, змусивши його виконати ці дії, не усвідомлюючи цього, приховуючи справжню мету виду. Як засіб, фреймворк пропонує механізм фільтрації дотиків, який можна використовувати для підвищення безпеки видів, що надають доступ до чутливої функціональності.
|
||||
>
|
||||
> Щоб увімкнути фільтрацію дотиків, викликайте [`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29) або встановіть атрибут макета android:filterTouchesWhenObscured в true. Коли це увімкнено, фреймворк відкине дотики, які отримуються, коли вікно вигляду перекрито іншим видимим вікном. В результаті вигляд не отримає дотики, коли над вікном вигляду з'являється toast, діалог або інше вікно.
|
||||
> Щоб увімкнути фільтрацію дотиків, викликайте [`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29) або встановіть атрибут макета android:filterTouchesWhenObscured в true. Коли це увімкнено, фреймворк відкине дотики, які отримуються, коли вікно виду закрите іншим видимим вікном. В результаті вид не отримає дотики, коли над вікном виду з'являється тост, діалог або інше вікно.
|
||||
|
||||
---
|
||||
|
||||
## Фішинг через накладення доступності (варіант банківського трояна)
|
||||
|
||||
Окрім класичного Tapjacking, сучасні сімейства банківського шкідливого ПЗ для Android (наприклад, **ToxicPanda**, BrasDex, Sova тощо) зловживають **Службою доступності**, щоб розмістити повноекранний WebView **накладення** над легітимним додатком, при цьому все ще маючи можливість **пересилати введення користувача** до виду під ним. Це значно підвищує правдоподібність і дозволяє зловмисникам красти облікові дані, OTP або навіть автоматизувати шахрайські транзакції.
|
||||
|
||||
### Як це працює
|
||||
1. Шкідливий APK запитує дуже чутливий дозвіл `BIND_ACCESSIBILITY_SERVICE`, зазвичай приховуючи запит за фальшивим діалогом Google/Chrome/PDF-переглядача.
|
||||
2. Як тільки користувач увімкне службу, шкідливе ПЗ програмно симулює натискання, необхідні для надання додаткових небезпечних дозволів (`READ_SMS`, `SYSTEM_ALERT_WINDOW`, `REQUEST_INSTALL_PACKAGES`, …).
|
||||
3. **WebView** створюється і додається до менеджера вікон, використовуючи тип вікна **`TYPE_ACCESSIBILITY_OVERLAY`**. Накладення може бути повністю непрозорим або напівпрозорим і може бути позначене як *“прозоре”*, щоб оригінальні дотики все ще надходили до фонової активності (отже, транзакція дійсно відбувається, поки жертва бачить лише фішингову форму).
|
||||
```java
|
||||
WebView phishingView = new WebView(getApplicationContext());
|
||||
phishingView.getSettings().setJavaScriptEnabled(true);
|
||||
phishingView.loadUrl("file:///android_asset/bank_login.html");
|
||||
|
||||
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
|
||||
WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
|
||||
WindowManager.LayoutParams.MATCH_PARENT,
|
||||
WindowManager.LayoutParams.MATCH_PARENT,
|
||||
WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY, // <-- bypasses SYSTEM_ALERT_WINDOW prompt
|
||||
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
|
||||
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, // «through» flag → forward touches
|
||||
PixelFormat.TRANSLUCENT);
|
||||
wm.addView(phishingView, lp);
|
||||
```
|
||||
### Типовий робочий процес, що використовується банківськими троянами
|
||||
* Запитати встановлені пакети (`QUERY_ALL_PACKAGES`), щоб з'ясувати, який банківський / гаманцевий додаток наразі відкритий.
|
||||
* Завантажити **HTML/JS накладку** з C2, яка ідеально імітує цей конкретний додаток (логотип, кольори, рядки i18n…).
|
||||
* Відобразити накладку, зібрати облікові дані/PIN/шаблон.
|
||||
* Використовувати **Accessibility API** (`performGlobalAction`, `GestureDescription`), щоб автоматизувати перекази у фоновому режимі.
|
||||
|
||||
### Виявлення та пом'якшення
|
||||
* Аудит списку встановлених додатків за допомогою `adb shell pm list packages -3 -e BIND_ACCESSIBILITY_SERVICE`.
|
||||
* З боку додатку (банк / гаманець):
|
||||
- Увімкнути **`android:accessibilityDataSensitive="accessibilityDataPrivateYes"`** (Android 14+) на чутливих елементах, щоб заблокувати сервіси, що не є Play Store.
|
||||
- Поєднати з `setFilterTouchesWhenObscured(true)` та `FLAG_SECURE`.
|
||||
* Ускладнення системи:
|
||||
- Вимкнути *Встановлення з невідомих джерел* та *Доступність для ненадійних додатків*.
|
||||
- Застосувати PlayProtect та актуальні пристрої.
|
||||
|
||||
## Посилання
|
||||
* [Bitsight – ToxicPanda Android Banking Malware 2025 Study](https://www.bitsight.com/blog/toxicpanda-android-banking-malware-2025-study)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user